ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGEyMTNlOGUuLmQ5YWRjZTUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNTEsNiArNTEsNyBAQAogZ2l0LWdldC10YXItY29tbWl0LWlkCiBnaXQtZ3JlcAogZ2l0LWhhc2gtb2JqZWN0CitnaXQtaGVscAogZ2l0LWh0dHAtZmV0Y2gKIGdpdC1odHRwLXB1c2gKIGdpdC1pbWFwLXNlbmQKQEAgLTExNyw2ICsxMTgsNyBAQAogZ2l0LXNob3ctYnJhbmNoCiBnaXQtc2hvdy1pbmRleAogZ2l0LXNob3ctcmVmCitnaXQtc3RhZ2UKIGdpdC1zdGFzaAogZ2l0LXN0YXR1cwogZ2l0LXN0cmlwc3BhY2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL01ha2VmaWxlCmluZGV4IDYyMjY5ZTMuLmMzNGMxY2EgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvRG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpAQCAtNiw3ICs2LDcgQEAKIAlnaXRyZXBvc2l0b3J5LWxheW91dC50eHQKIE1BTjdfVFhUPWdpdGNsaS50eHQgZ2l0dHV0b3JpYWwudHh0IGdpdHR1dG9yaWFsLTIudHh0IFwKIAlnaXRjdnMtbWlncmF0aW9uLnR4dCBnaXRjb3JlLXR1dG9yaWFsLnR4dCBnaXRnbG9zc2FyeS50eHQgXAotCWdpdGRpZmZjb3JlLnR4dAorCWdpdGRpZmZjb3JlLnR4dCBnaXR3b3JrZmxvd3MudHh0CiAKIE1BTl9UWFQgPSAkKE1BTjFfVFhUKSAkKE1BTjVfVFhUKSAkKE1BTjdfVFhUKQogTUFOX1hNTD0kKHBhdHN1YnN0ICUudHh0LCUueG1sLCQoTUFOX1RYVCkpCkBAIC00NCw2ICs0NCw3IEBACiBJTlNUQUxMPz1pbnN0YWxsCiBSTSA/PSBybSAtZgogRE9DX1JFRiA9IG9yaWdpbi9tYW4KK0hUTUxfUkVGID0gb3JpZ2luL2h0bWwKIAogaW5mb2Rpcj89JChwcmVmaXgpL3NoYXJlL2luZm8KIE1BS0VJTkZPPW1ha2VpbmZvCkBAIC04Niw3ICs4Nyw5IEBACiAKIGluZm86IGdpdC5pbmZvIGdpdG1hbi5pbmZvCiAKLWluc3RhbGw6IG1hbgoraW5zdGFsbDogaW5zdGFsbC1tYW4KKworaW5zdGFsbC1tYW46IG1hbgogCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVTVERJUikkKG1hbjFkaXIpCiAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQobWFuNWRpcikKIAkkKElOU1RBTEwpIC1kIC1tIDc1NSAkKERFU1RESVIpJChtYW43ZGlyKQpAQCAtMjE5LDcgKzIyMiwxMiBAQAogaW5zdGFsbC13ZWJkb2MgOiBodG1sCiAJc2ggLi9pbnN0YWxsLXdlYmRvYy5zaCAkKFdFQkRPQ19ERVNUKQogCi1xdWljay1pbnN0YWxsOgorcXVpY2staW5zdGFsbDogcXVpY2staW5zdGFsbC1tYW4KKworcXVpY2staW5zdGFsbC1tYW46CiAJc2ggLi9pbnN0YWxsLWRvYy1xdWljay5zaCAkKERPQ19SRUYpICQoREVTVERJUikkKG1hbmRpcikKIAorcXVpY2staW5zdGFsbC1odG1sOgorCXNoIC4vaW5zdGFsbC1kb2MtcXVpY2suc2ggJChIVE1MX1JFRikgJChERVNURElSKSQoaHRtbGRpcikKKwogLlBIT05ZOiAuRk9SQ0UtR0lULVZFUlNJT04tRklMRQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS4xLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEuMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg0NTRjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEuMS50eHQKQEAgLTAsMCArMSw1OSBAQAorR0lUIHYxLjYuMS4xIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjYuMQorLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogImdpdCBhZGQgZnJvdHovbml0Zm9sIiB3aGVuICJmcm90eiIgaXMgYSBzdWJtb2R1bGUgc2hvdWxkIGhhdmUgZXJyb3JlZAorICBvdXQsIGJ1dCBpdCBkaWRuJ3QuCisKKyogImdpdCBhcHBseSIgdG9vayBmaWxlIG1vZGVzIGZyb20gdGhlIHBhdGNoIHRleHQgYW5kIHVwZGF0ZWQgdGhlIG1vZGUKKyAgYml0cyBvZiB0aGUgdGFyZ2V0IHRyZWUgZXZlbiB3aGVuIHRoZSBwYXRjaCB3YXMgbm90IGFib3V0IG1vZGUgY2hhbmdlcy4KKworKiAiZ2l0IGJpc2VjdCB2aWV3IiBvbiBDeWd3aW4gZGlkIG5vdCBsYXVuY2ggZ2l0aworCisqICJnaXQgY2hlY2tvdXQgJHRyZWUiIGRpZCBub3QgdHJpZ2dlciBhbiBlcnJvci4KKworKiAiZ2l0IGNvbW1pdCIgdHJpZWQgdG8gcmVtb3ZlIENPTU1JVF9FRElUTVNHIGZyb20gdGhlIHdvcmsgdHJlZSBieSBtaXN0YWtlLgorCisqICJnaXQgZGVzY3JpYmUgLS1hbGwiIGNvbXBsYWluZWQgd2hlbiBhIGNvbW1pdCBpcyBkZXNjcmliZWQgd2l0aCBhIHRhZywKKyAgd2hpY2ggd2FzIG5vbnNlbnNlLgorCisqICJnaXQgZGlmZiAtLW5vLWluZGV4IC0tIiBkaWQgbm90IHRyaWdnZXIgbm8taW5kZXggKGFrYSAidXNlIGdpdC1kaWZmIGFzCisgIGEgcmVwbGFjZW1lbnQgb2YgZGlmZiBvbiB1bnRyYWNrZWQgZmlsZXMiKSBiZWhhdmlvdXIuCisKKyogImdpdCBmb3JtYXQtcGF0Y2ggLTEgSEVBRCIgb24gYSByb290IGNvbW1pdCBmYWlsZWQgdG8gcHJvZHVjZSBwYXRjaAorICB0ZXh0LgorCisqICJnaXQgZnNjayBicmFuY2giIGRpZCBub3Qgd29yayBhcyBhZHZlcnRpc2VkOyBpbnN0ZWFkIGl0IGJlaGF2ZWQgdGhlIHNhbWUKKyAgd2F5IGFzICJnaXQgZnNjayIuCisKKyogImdpdCBsb2cgLS1wcmV0dHk9Zm9ybWF0OiVzIiBkaWQgbm90IGhhbmRsZSBhIG11bHRpLWxpbmUgc3ViamVjdCB0aGUKKyAgc2FtZSB3YXkgYXMgYnVpbHQtaW4gbG9nIGxpc3RlcnMgKGkuZS4gc2hvcnRsb2csIC0tcHJldHR5PW9uZWxpbmUsIGV0Yy4pCisKKyogImdpdCBkYWVtb24iLCBhbmQgImdpdCBtZXJnZS1maWxlIiBhcmUgbW9yZSBjYXJlZnVsIHdoZW4gZnJlb3BlbiBmYWlscworICBhbmQgYmFyZiwgaW5zdGVhZCBvZiBnb2luZyBvbiBhbmQgd3JpdGluZyB0byB1bm9wZW5lZCBmaWxlaGFuZGxlLgorCisqICJnaXQgaHR0cC1wdXNoIiBkaWQgbm90IGxpa2Ugc29tZSBSRkMgNDkxOCBjb21wbGlhbnQgREFWIHNlcnZlcgorICByZXNwb25zZXMuCisKKyogImdpdCBtZXJnZSAtcyByZWN1cnNpdmUiIG1pc3Rha2VubHkgb3ZlcndyaXR0ZW4gYW4gdW50cmFja2VkIGZpbGUgaW4gdGhlCisgIHdvcmsgdHJlZSB1cG9uIGRlbGV0ZS9tb2RpZnkgY29uZmxpY3QuCisKKyogImdpdCBtZXJnZSAtcyByZWN1cnNpdmUiIGRpZG4ndCBsZWF2ZSB0aGUgaW5kZXggdW5tZXJnZWQgZm9yIGVudHJpZXMgd2l0aAorICByZW5hbWUvZGVsZXRlIGNvbmZsaWN0ZC4KKworKiAiZ2l0IG1lcmdlIC1zIHJlY3Vyc2l2ZSIgY2xvYmJlcmVkIHVudHJhY2tlZCBmaWxlcyBpbiB0aGUgd29yayB0cmVlLgorCisqICJnaXQgbXYgLWsiIHdpdGggbW9yZSB0aGFuIG9uZSBlcnJvcm5lb3VzIHBhdGhzIG1pc2JlaGF2ZWQuCisKKyogImdpdCByZWFkLXRyZWUgLW0gLXUiIGhlbmNlIGJyYW5jaCBzd2l0Y2hpbmcgaW5jb3JyZWN0bHkgbG9zdCBhCisgIHN1YmRpcmVjdG9yeSBpbiByYXJlIGNhc2VzLgorCisqICJnaXQgcmViYXNlIC1pIiBpc3N1ZWQgYW4gdW5uZWNlc3NhcnkgZXJyb3IgbWVzc2FnZSB1cG9uIGEgdXNlciBlcnJvciBvZgorICBtYXJraW5nIHRoZSBmaXJzdCBjb21taXQgdG8gYmUgInNxdWFzaCJlZC4KKworKiAiZ2l0IHNob3J0bG9nIiBkaWQgbm90IGZvcm1hdCBhIGNvbW1pdCBtZXNzYWdlIHdpdGggbXVsdGktbGluZQorICBzdWJqZWN0IGNvcnJlY3RseS4KKworTWFueSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLTEuNi4xLjIudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS4yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzBhYTNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS4yLnR4dApAQCAtMCwwICsxLDM5IEBACitHSVQgdjEuNi4xLjIgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZXMgc2luY2UgdjEuNi4xLjEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIGxvZ2ljIGZvciByZW5hbWUgZGV0ZWN0aW4gaW4gaW50ZXJuYWwgZGlmZiB1c2VkIGJ5IGNvbW1hbmRzIGxpa2UKKyAgImdpdCBkaWZmIiBhbmQgImdpdCBibGFtZSIgaGF2ZSBiZWVuIG9wdGltaXplZCB0byBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lCisgIGJsb2IgcmVwZWF0ZWRseS4KKworKiBXZSBkaWQgbm90IGFsbG93IHdyaXRpbmcgb3V0IGEgYmxvYiB0aGF0IGlzIGxhcmdlciB0aGFuIDJHQiBmb3Igbm8gZ29vZAorICByZWFzb24uCisKKyogImdpdCBmb3JtYXQtcGF0Y2ggLW8gJGRpciIsIHdoZW4gJGRpciBpcyBhIHJlbGF0aXZlIGRpcmVjdG9yeSwgdXNlZCBpdAorICBhcyByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUgd29yayB0cmVlLCBub3QgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQKKyAgZGlyZWN0b3J5LgorCisqIHYxLjYuMSBpbnRyb2R1Y2VkIGFuIG9wdGltaXphdGlvbiBmb3IgImdpdCBwdXNoIiBpbnRvIGEgcmVwb3NpdG9yeSAoQSkKKyAgdGhhdCBib3Jyb3dzIGl0cyBvYmplY3RzIGZyb20gYW5vdGhlciByZXBvc2l0b3J5IChCKSB0byBhdm9pZCBzZW5kaW5nCisgIG9iamVjdHMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHJlcG9zaXRvcnkgQiwgd2hlbiB0aGV5IGFyZSBub3QgeWV0IHVzZWQKKyAgYnkgcmVwb3NpdG9yeSBBLiAgSG93ZXZlciB0aGUgY29kZSBvbiB0aGUgImdpdCBwdXNoIiBzZW5kZXIgc2lkZSB3YXMKKyAgYnVnZ3kgYW5kIGRpZCBub3Qgd29yayB3aGVuIHJlcG9zaXRvcnkgQiBoYWQgbmV3IG9iamVjdHMgdGhhdCBhcmUgbm90CisgIGtub3duIGJ5IHRoZSBzZW5kZXIuICBUaGlzIGNhdXNlZCBwdXNoaW5nIGludG8gYSAiZm9ya2VkIiByZXBvc2l0b3J5CisgIHNlcnZlZCBieSB2MS42LjEgc29mdHdhcmUgdXNpbmcgImdpdCBwdXNoIiBmcm9tIHYxLjYuMSBzb21ldGltZXMgZGlkIG5vdAorICB3b3JrLiAgVGhlIGJ1ZyB3YXMgcHVyZWx5IG9uIHRoZSAiZ2l0IHB1c2giIHNlbmRlciBzaWRlLCBhbmQgaGFzIGJlZW4KKyAgY29ycmVjdGVkLgorCisqICJnaXQgc3RhdHVzIC12IiBkaWQgbm90IHBhaW50IGl0cyBkaWZmIG91dHB1dCBpbiBjb2xvdXIgZXZlbiB3aGVuCisgIGNvbG9yLnVpIGNvbmZpZ3VyYXRpb24gd2FzIHNldC4KKworKiAiZ2l0IGxzLXRyZWUiIGxlYXJuZWQgLS1mdWxsLXRyZWUgb3B0aW9uIHRvIGhlbHAgUG9yY2VsYWluIHNjcmlwdHMgdGhhdAorICB3YW50IHRvIGFsd2F5cyBzZWUgdGhlIGZ1bGwgcGF0aCByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHdvcmtpbmcKKyAgZGlyZWN0b3J5LgorCisqICJnaXQgZ3JlcCIgaW5jb3JyZWN0bHkgc2VhcmNoZWQgaW4gd29yayB0cmVlIHBhdGhzIGV2ZW4gd2hlbiB0aGV5IGFyZQorICBtYXJrZWQgYXMgYXNzdW1lLXVuY2hhbmdlZC4gIEl0IG5vdyBzZWFyY2hlcyBpbiB0aGUgaW5kZXggZW50cmllcy4KKworKiAiZ2l0IGdjIiB3aXRoIG5vIGdyYWNlIHBlcmlvZCBuZWVkbGVzc2x5IGVqZWN0ZWQgcGFja2VkIGJ1dCB1bnJlYWNoYWJsZQorICBvYmplY3RzIGluIHRoZWlyIGxvb3NlIGZvcm0sIG9ubHkgdG8gZGVsZXRlIHRoZW0gcmlnaHQgYXdheS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRiN2NjYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEudHh0CkBAIC0wLDAgKzEsMjg2IEBACitHSVQgdjEuNi4xIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitVcGRhdGVzIHNpbmNlIHYxLjYuMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiBzb21lIGNvbW1hbmRzIChlLmcuICJnaXQgbG9nIiwgImdpdCBkaWZmIikgc3Bhd24gcGFnZXIgaW50ZXJuYWxseSwgd2UKK3VzZWQgdG8gbWFrZSB0aGUgcGFnZXIgdGhlIHBhcmVudCBwcm9jZXNzIG9mIHRoZSBnaXQgY29tbWFuZCB0aGF0IHByb2R1Y2VzCitvdXRwdXQuICBUaGlzIG1lYW50IHRoYXQgdGhlIGV4aXQgc3RhdHVzIG9mIHRoZSB3aG9sZSB0aGluZyBjb21lcyBmcm9tIHRoZQorcGFnZXIsIG5vdCB0aGUgdW5kZXJseWluZyBnaXQgY29tbWFuZC4gIFdlIHN3YXBwZWQgdGhlIG9yZGVyIG9mIHRoZQorcHJvY2Vzc2VzIGFyb3VuZCBhbmQgeW91IHdpbGwgc2VlIHRoZSBleGl0IGNvZGUgZnJvbSB0aGUgY29tbWFuZCBmcm9tIG5vdworb24uCisKKyhzdWJzeXN0ZW1zKQorCisqIGdpdGsgY2FuIGNhbGwgb3V0IHRvIGdpdC1ndWkgdG8gdmlldyAiZ2l0IGJsYW1lIiBvdXRwdXQ7IGdpdC1ndWkgaW4gdHVybgorICBjYW4gcnVuIGdpdGsgZnJvbSBpdHMgYmxhbWUgdmlldy4KKworKiBWYXJpb3VzIGdpdC1ndWkgdXBkYXRlcyBpbmNsdWRpbmcgdXBkYXRlZCB0cmFuc2xhdGlvbnMuCisKKyogVmFyaW91cyBnaXR3ZWIgdXBkYXRlcyBmcm9tIHJlcG8ub3IuY3ogaW5zdGFsbGF0aW9uLgorCisqIFVwZGF0ZXMgdG8gZW1hY3MgYmluZGluZ3MuCisKKyhwb3J0YWJpbGl0eSkKKworKiBBIGZldyB0ZXN0IHNjcmlwdHMgdXNlZCBub25wb3J0YWJsZSAiZ3JlcCIgdGhhdCBkaWQgbm90IHdvcmsgd2VsbCBvbgorICBzb21lIHBsYXRmb3JtcywgZS5nLiBTb2xhcmlzLgorCisqIFNhbXBsZSBwcmUtYXV0by1nYyBzY3JpcHQgaGFzIE9TIFggc3VwcG9ydC4KKworKiBNYWtlZmlsZSBoYXMgc3VwcG9ydCBmb3IgKGFuY2llbnQpIEZyZWVCU0QgNC45LgorCisocGVyZm9ybWFuY2UpCisKKyogTWFueSBvcGVyYXRpb25zIHRoYXQgYXJlIGxzdGF0KDMpIGhlYXZ5IGNhbiBiZSB0b2xkIHRvIHByZS1leGVjdXRlCisgIG5lY2Vzc2FyeSBsc3RhdCgzKSBpbiBwYXJhbGxlbCBiZWZvcmUgdGhlaXIgbWFpbiBvcGVyYXRpb25zLCB3aGljaAorICBwb3RlbnRpYWxseSBnaXZlcyBtdWNoIGltcHJvdmVkIHBlcmZvcm1hbmNlIGZvciBjb2xkLWNhY2hlIGNhc2VzIG9yIGluCisgIGVudmlyb25tZW50cyB3aXRoIHdlYWsgbWV0YWRhdGEgY2FjaGluZyAoZS5nLiBORlMpLgorCisqIFRoZSB1bmRlcmx5aW5nIGRpZmYgbWFjaGluZXJ5IHRvIHByb2R1Y2UgdGV4dHVhbCBvdXRwdXQgaGFzIGJlZW4KKyAgb3B0aW1pemVkLCB3aGljaCB3b3VsZCByZXN1bHQgaW4gZmFzdGVyICJnaXQgYmxhbWUiIHByb2Nlc3NpbmcuCisKKyogTW9zdCBvZiB0aGUgdGVzdCBzY3JpcHRzIChidXQgbm90IHRoZSBvbmVzIHRoYXQgdHJ5IHRvIHJ1biBzZXJ2ZXJzKQorICBjYW4gYmUgcnVuIGluIHBhcmFsbGVsLgorCisqIEJhc2ggY29tcGxldGlvbiBvZiByZWZuYW1lcyBpbiBhIHJlcG9zaXRvcnkgd2l0aCBtYXNzaXZlIG51bWJlciBvZgorICByZWZzIGhhcyBiZWVuIG9wdGltaXplZC4KKworKiBDeWd3aW4gcG9ydCB1c2VzIG5hdGl2ZSBzdGF0L2xzdGF0IGltcGxlbWVudGF0aW9ucyB3aGVuIGFwcGxpY2FibGUsCisgIHdoaWNoIGxlYWRzIHRvIGltcHJvdmVkIHBlcmZvcm1hbmNlLgorCisqICJnaXQgcHVzaCIgcGF5cyBhdHRlbnRpb24gdG8gYWx0ZXJuYXRlIHJlcG9zaXRvcmllcyB0byBhdm9pZCBzZW5kaW5nCisgIHVubmVjZXNzYXJ5IG9iamVjdHMuCisKKyogImdpdCBzdm4iIGNhbiByZWJ1aWxkIGFuIG91dC1vZi1kYXRlIHJldl9tYXAgZmlsZS4KKworKHVzYWJpbGl0eSwgYmVsbHMgYW5kIHdoaXN0bGVzKQorCisqIFdoZW4geW91IG1pc3R5cGUgYSBjb21tYW5kIG5hbWUsIGdpdCBoZWxwZnVsbHkgc3VnZ2VzdHMgd2hhdCBpdCBndWVzc2VzCisgIHlvdSBtaWdodCBoYXZlIG1lYW50IHRvIHNheS4gIGhlbHAuYXV0b2NvcnJlY3QgY29uZmlndXJhdGlvbiBjYW4gYmUgc2V0CisgIHRvIGEgbm9uLXplcm8gdmFsdWUgdG8gYWNjZXB0IHRoZSBzdWdnZXN0aW9uIHdoZW4gZ2l0IGNhbiB1bmlxdWVseQorICBndWVzcy4KKworKiBUaGUgcGFja2ZpbGUgbWFjaGluZXJ5IGhvcGVmdWxseSBpcyBtb3JlIHJvYnVzdCB3aGVuIGRlYWxpbmcgd2l0aAorICBjb3JydXB0IHBhY2tzIGlmIHJlZHVuZGFudCBvYmplY3RzIGludm9sdmVkIGluIHRoZSBjb3JydXB0aW9uIGFyZQorICBhdmFpbGFibGUgZWxzZXdoZXJlLgorCisqICJnaXQgYWRkIC1OIHBhdGguLi4iIGFkZHMgdGhlIG5hbWVkIHBhdGhzIGFzIGFuIGVtcHR5IGJsb2IsIHNvIHRoYXQKKyAgc3Vic2VxdWVudCAiZ2l0IGRpZmYiIHdpbGwgc2hvdyBhIGRpZmYgYXMgaWYgdGhleSBhcmUgY3JlYXRpb24gZXZlbnRzLgorCisqICJnaXQgYWRkIiBnYWluZWQgYSBidWlsdC1pbiBzeW5vbnltIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gc2F5ICJzdGFnZQorICBjaGFuZ2VzIiBpbnN0ZWFkIG9mICJhZGQgY29udGVudHMgdG8gdGhlIHN0YWdpbmcgYXJlYSIgd2hpY2ggYW1vdW50cworICB0byB0aGUgc2FtZSB0aGluZy4KKworKiAiZ2l0IGFwcGx5IiBsZWFybmVkIC0taW5jbHVkZT1wYXRocyBvcHRpb24sIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nCisgIC0tZXhjbHVkZT1wYXRocyBvcHRpb24uCisKKyogImdpdCBiaXNlY3QiIGlzIGNhcmVmdWwgYWJvdXQgYSB1c2VyIG1pc3Rha2UgYW5kIHN1Z2dlc3RzIHRlc3Rpbmcgb2YKKyAgbWVyZ2UgYmFzZSBmaXJzdCB3aGVuIGdvb2QgaXMgbm90IGEgc3RyaWN0IGFuY2VzdG9yIG9mIGJhZC4KKworKiAiZ2l0IGJpc2VjdCBza2lwIiBjYW4gdGFrZSBhIHJhbmdlIG9mIGNvbW1pdHMuCisKKyogImdpdCBibGFtZSIgcmUtZW5jb2RlcyB0aGUgY29tbWl0IG1ldGFpbmZvIHRvIFVURi04IGZyb20gaTE4bi5jb21taXRFbmNvZGluZworICBieSBkZWZhdWx0LgorCisqICJnaXQgY2hlY2stYXR0ciAtLXN0ZGluIiBjYW4gY2hlY2sgYXR0cmlidXRlcyBmb3IgbXVsdGlwbGUgcGF0aHMuCisKKyogImdpdCBjaGVja291dCAtLXRyYWNrIG9yaWdpbi9oYWNrIiB1c2VkIHRvIGJlIGEgc3ludGF4IGVycm9yLiAgSXQgbm93CisgIERXSU1zIHRvIGNyZWF0ZSBhIGNvcnJlc3BvbmRpbmcgbG9jYWwgYnJhbmNoICJoYWNrIiwgaS5lLiBhY3RzIGFzIGlmIHlvdQorICBzYWlkICJnaXQgY2hlY2tvdXQgLS10cmFjayAtYiBoYWNrIG9yaWdpbi9oYWNrIi4KKworKiAiZ2l0IGNoZWNrb3V0IC0tb3Vycy8tLXRoZWlycyIgY2FuIGJlIHVzZWQgdG8gY2hlY2sgb3V0IG9uZSBzaWRlIG9mIGEKKyAgY29uZmxpY3RpbmcgbWVyZ2UgZHVyaW5nIGNvbmZsaWN0IHJlc29sdXRpb24uCisKKyogImdpdCBjaGVja291dCAtbSIgY2FuIGJlIHVzZWQgdG8gcmVjcmVhdGUgdGhlIGluaXRpYWwgY29uZmxpY3RlZCBzdGF0ZQorICBkdXJpbmcgY29uZmxpY3QgcmVzb2x1dGlvbi4KKworKiAiZ2l0IGNoZXJyeS1waWNrIiBjYW4gYWxzbyB1dGlsaXplIHJlcmVyZSBmb3IgY29uZmxpY3QgcmVzb2x1dGlvbi4KKworKiAiZ2l0IGNsb25lIiBsZWFybmVkIHRvIGJlIHZlcmJvc2Ugd2l0aCAtdgorCisqICJnaXQgY29tbWl0IC0tYXV0aG9yPSRuYW1lIiBjYW4gbG9vayB1cCBhdXRob3IgbmFtZSBmcm9tIGV4aXN0aW5nCisgIGNvbW1pdHMuCisKKyogb3V0cHV0IGZyb20gImdpdCBjb21taXQiIGhhcyBiZWVuIHJld29yZGVkIGluIGEgbW9yZSBjb25jaXNlIGFuZCB5ZXQKKyAgbW9yZSBpbmZvcm1hdGl2ZSB3YXkuCisKKyogImdpdCBjb3VudC1vYmplY3RzIiByZXBvcnRzIHRoZSBvbi1kaXNrIGZvb3RwcmludCBmb3IgcGFja2ZpbGVzIGFuZAorICB0aGVpciBjb3JyZXNwb25kaW5nIGlkeCBmaWxlcy4KKworKiAiZ2l0IGRhZW1vbiIgbGVhcm5lZCAtLW1heC1jb25uZWN0aW9ucz08Y291bnQ+IG9wdGlvbi4KKworKiAiZ2l0IGRhZW1vbiIgZXhwb3J0cyBSRU1PVEVfQUREUiB0byByZWNvcmQgY2xpZW50IGFkZHJlc3MsIHNvIHRoYXQKKyAgc3Bhd25lZCBwcm9ncmFtcyBjYW4gYWN0IGRpZmZlcmVudGx5IG9uIGl0LgorCisqICJnaXQgZGVzY3JpYmUgLS10YWdzIiBmYXZvdXJzIGNsb3NlciBsaWdodHdlaWdodCB0YWdzIHRoYW4gZmFydGhlcgorICBhbm5vdGF0ZWQgdGFncyBub3cuCisKKyogImdpdCBkaWZmIiBsZWFybmVkIHRvIG1pbWljIC0tc3VwcHJlc3MtYmxhbmstZW1wdHkgZnJvbSBHTlUgZGlmZiB2aWEgYQorICBjb25maWd1cmF0aW9uIG9wdGlvbi4KKworKiAiZ2l0IGRpZmYiIGxlYXJuZWQgdG8gcHV0IG1vcmUgc2Vuc2libGUgaHVuayBoZWFkZXJzIGZvciBQeXRob24sCisgIEhUTUwgYW5kIE9iakMgY29udGVudHMuCisKKyogImdpdCBkaWZmIiBsZWFybmVkIHRvIHZhcnkgdGhlIGEvIHZzIGIvIHByZWZpeCBkZXBlbmRpbmcgb24gd2hhdCBhcmUKKyAgYmVpbmcgY29tcGFyZWQsIGNvbnRyb2xsZWQgYnkgZGlmZi5tbmVtb25pY3ByZWZpeCBjb25maWd1cmF0aW9uLgorCisqICJnaXQgZGlmZiIgbGVhcm5lZCAtLWRpcnN0YXQtYnktZmlsZSB0byBjb3VudCBjaGFuZ2VkIGZpbGVzLCBub3QgbnVtYmVyCisgIG9mIGxpbmVzLCB3aGVuIHN1bW1hcml6aW5nIHRoZSBnbG9iYWwgcGljdHVyZS4KKworKiAiZ2l0IGRpZmYiIGxlYXJuZWQgInRleHRjb252IiBmaWx0ZXJzIC0tLSBhIGJpbmFyeSBvciBoYXJkLXRvLXJlYWQKKyAgY29udGVudHMgY2FuIGJlIG11bmdlZCBpbnRvIGh1bWFuIHJlYWRhYmxlIGZvcm0gYW5kIHRoZSBkaWZmZXJlbmNlCisgIGJldHdlZW4gdGhlIHJlc3VsdHMgb2YgdGhlIGNvbnZlcnNpb24gY2FuIGJlIHZpZXdlZCAob2J2aW91c2x5IHRoaXMKKyAgY2Fubm90IHByb2R1Y2UgYSBwYXRjaCB0aGF0IGNhbiBiZSBhcHBsaWVkLCBzbyB0aGlzIGlzIGRpc2FibGVkIGluCisgIGZvcm1hdC1wYXRjaCBhbW9uZyBvdGhlciB0aGluZ3MpLgorCisqICItLWNhY2hlZCIgb3B0aW9uIHRvICJnaXQgZGlmZiBoYXMgYW4gZWFzaWVyIHRvIHJlbWVtYmVyIHN5bm9ueW0gIi0tc3RhZ2VkIiwKKyAgdG8gYXNrICJ3aGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGdpdmVuIGNvbW1pdCBhbmQgdGhlCisgIGNvbnRlbnRzIHN0YWdlZCBpbiB0aGUgaW5kZXg/IgorCisqICJnaXQgZm9yLWVhY2gtcmVmIiBsZWFybmVkICJyZWZuYW1lOnNob3J0IiB0b2tlbiB0aGF0IGdpdmVzIGFuCisgIHVuYW1iaWd1b3VzbHkgYWJicmV2aWF0ZWQgcmVmbmFtZS4KKworKiBBdXRvLW51bWJlcmluZyBvZiB0aGUgc3ViamVjdCBsaW5lcyBpcyB0aGUgZGVmYXVsdCBmb3IgImdpdAorICBmb3JtYXQtcGF0Y2giIG5vdy4KKworKiAiZ2l0IGdyZXAiIGxlYXJuZWQgdG8gYWNjZXB0IC16IHNpbWlsYXIgdG8gR05VIGdyZXAuCisKKyogImdpdCBoZWxwIiBsZWFybmVkIHRvIHVzZSBHSVRfTUFOX1ZJRVdFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUKKyAgdXNpbmcgIm1hbiIgcHJvZ3JhbS4KKworKiAiZ2l0IGltYXAtc2VuZCIgY2FuIG9wdGlvbmFsbHkgdGFsayBTU0wuCisKKyogImdpdCBpbmRleC1wYWNrIiBpcyBtb3JlIGNhcmVmdWwgYWdhaW5zdCBkaXNrIGNvcnJ1cHRpb24gd2hpbGUKKyAgY29tcGxldGluZyBhIHRoaW4gcGFjay4KKworKiAiZ2l0IGxvZyAtLWNoZWNrIiBhbmQgImdpdCBsb2cgLS1leGl0LWNvZGUiIHBhc3NlcyB0aGVpciB1bmRlcmx5aW5nIGRpZmYKKyAgc3RhdHVzIHdpdGggdGhlaXIgZXhpdCBzdGF0dXMgY29kZS4KKworKiAiZ2l0IGxvZyIgbGVhcm5lZCAtLXNpbXBsaWZ5LW1lcmdlcywgYSBtaWxkZXIgdmFyaWFudCBvZiAtLWZ1bGwtaGlzdG9yeTsKKyAgImdpdGsgLS1zaW1wbGlmeS1tZXJnZXMiIGlzIGVhc2llciB0byB2aWV3IHRoYW4gd2l0aCAtLWZ1bGwtaGlzdG9yeS4KKworKiAiZ2l0IGxvZyIgbGVhcm5lZCAiLS1zb3VyY2UiIHRvIHNob3cgd2hhdCByZWYgZWFjaCBjb21taXQgd2FzIHJlYWNoZWQKKyAgZnJvbS4KKworKiAiZ2l0IGxvZyIgYWxzbyBsZWFybmVkICItLXNpbXBsaWZ5LWJ5LWRlY29yYXRpb24iIHRvIHNob3cgdGhlCisgIGJpcmRzLWV5ZS12aWV3IG9mIHRoZSB0b3BvbG9neSBvZiB0aGUgaGlzdG9yeS4KKworKiAiZ2l0IGxvZyAtLXByZXR0eT1mb3JtYXQ6IiBsZWFybmVkICIlZCIgZm9ybWF0IGVsZW1lbnQgdGhhdCBpbnNlcnRzCisgIG5hbWVzIG9mIHRhZ3MgdGhhdCBwb2ludCBhdCB0aGUgY29tbWl0LgorCisqICJnaXQgbWVyZ2UgLS1zcXVhc2giIGFuZCAiZ2l0IG1lcmdlIC0tbm8tZmYiIGludG8gYW4gdW5ib3JuIGJyYW5jaCBhcmUKKyAgbm90aWNlZCBhcyB1c2VyIGVycm9ycy4KKworKiAiZ2l0IG1lcmdlIC1zICRzdHJhdGVneSIgY2FuIHVzZSBhIGN1c3RvbSBidWlsdCBzdHJhdGVneSBpZiB5b3UgaGF2ZSBhCisgIGNvbW1hbmQgImdpdC1tZXJnZS0kc3RyYXRlZ3kiIG9uIHlvdXIgJFBBVEguCisKKyogImdpdCBwdWxsIiAoYW5kICJnaXQgZmV0Y2giKSBjYW4gYmUgdG9sZCB0byBvcGVyYXRlICItdiJlcmJvc2VseSBvcgorICAiLXEidWlldGx5LgorCisqICJnaXQgcHVzaCIgY2FuIGJlIHRvbGQgdG8gcmVqZWN0IGRlbGV0aW9uIG9mIHJlZnMgd2l0aCByZWNlaXZlLmRlbnlEZWxldGVzCisgIGNvbmZpZ3VyYXRpb24uCisKKyogImdpdCByZWJhc2UiIGhvbm91cnMgcHJlLXJlYmFzZSBob29rOyB1c2UgLS1uby12ZXJpZnkgdG8gYnlwYXNzIGl0LgorCisqICJnaXQgcmViYXNlIC1wIiB1c2VzIGludGVyYWN0aXZlIHJlYmFzZSBtYWNoaW5lcnkgbm93IHRvIHByZXNlcnZlIHRoZSBtZXJnZXMuCisKKyogImdpdCByZWZsb2cgZXhwaXJlIGJyYW5jaCIgY2FuIGJlIHVzZWQgaW4gcGxhY2Ugb2YgImdpdCByZWZsb2cgZXhwaXJlCisgIHJlZnMvaGVhZHMvYnJhbmNoIi4KKworKiAiZ2l0IHJlbW90ZSBzaG93ICRyZW1vdGUiIGxpc3RzIHJlbW90ZSBicmFuY2hlcyBvbmUtcGVyLWxpbmUgbm93LgorCisqICJnaXQgc2VuZC1lbWFpbCIgY2FuIGJlIGdpdmVuIHJldmlzaW9uIHJhbmdlIGluc3RlYWQgb2YgZmlsZXMgYW5kCisgIG1haWxkaXJzIG9uIHRoZSBjb21tYW5kIGxpbmUsIGFuZCBhdXRvbWF0aWNhbGx5IHJ1bnMgZm9ybWF0LXBhdGNoIHRvCisgIGdlbmVyYXRlIHBhdGNoZXMgZm9yIHRoZSBnaXZlbiByZXZpc2lvbiByYW5nZS4KKworKiAiZ2l0IHN1Ym1vZHVsZSBmb3JlYWNoIiBzdWJjb21tYW5kIGFsbG93cyB5b3UgdG8gaXRlcmF0ZSBvdmVyIGNoZWNrZWQKKyAgb3V0IHN1Ym1vZHVsZXMuCisKKyogImdpdCBzdWJtb2R1bGUgc3luYyIgc3ViY29tbWFuZHMgYWxsb3dzIHlvdSB0byB1cGRhdGUgdGhlIG9yaWdpbiBVUkwKKyAgcmVjb3JkZWQgaW4gc3VibW9kdWxlIGRpcmVjdG9yaWVzIGZyb20gdGhlIHRvcGxldmVsIC5naXRtb2R1bGVzIGZpbGUuCisKKyogImdpdCBzdm4gYnJhbmNoIiBjYW4gY3JlYXRlIG5ldyBicmFuY2hlcyBvbiB0aGUgb3RoZXIgZW5kLgorCisqICJnaXR3ZWIiIGNhbiB1c2UgbW9yZSBzYW5lciBQQVRIX0lORk8gYmFzZWQgVVJMLgorCisoaW50ZXJuYWwpCisKKyogImdpdCBoYXNoLW9iamVjdCIgbGVhcm5lZCB0byBsaWUgYWJvdXQgdGhlIHBhdGggYmVpbmcgaGFzaGVkLCBzbyB0aGF0CisgIGNvcnJlY3QgZ2l0YXR0cmlidXRlcyBwcm9jZXNzaW5nIGNhbiBiZSBkb25lIHdoaWxlIGhhc2hpbmcgY29udGVudHMKKyAgc3RvcmVkIGluIGEgdGVtcG9yYXJ5IGZpbGUuCisKKyogdmFyaW91cyBjYWxsZXJzIG9mIGdpdC1tZXJnZS1yZWN1cnNpdmUgYXZvaWQgZm9ya2luZyBpdCBhcyBhbiBleHRlcm5hbAorICBwcm9jZXNzLgorCisqIEdpdCBjbGFzcyBkZWZpbmVkIGluICJHaXQucG0iIGNhbiBiZSBzdWJjbGFzc2VzIGEgYml0IG1vcmUgZWFzaWx5LgorCisqIFdlIHVzZWQgdG8gbGluayBHTlUgcmVnZXggbGlicmFyeSBhcyBhIGNvbXBhdGliaWxpdHkgbGF5ZXIgZm9yIHNvbWUKKyAgcGxhdGZvcm1zLCBidXQgaXQgdHVybnMgb3V0IGl0IGlzIG5vdCBuZWNlc3Nhcnkgb24gbW9zdCBvZiB0aGVtLgorCisqIFNvbWUgcGF0aCBoYW5kbGluZyByb3V0aW5lcyB1c2VkIGZpeGVkIG51bWJlciBvZiBidWZmZXJzIHVzZWQgYWx0ZXJuYXRlbHkKKyAgYnV0IGRlcGVuZGluZyBvbiB0aGUgY2FsbCBkZXB0aCwgdGhpcyBhcnJhbmdlbWVudCBsZWQgdG8gaGFyZCB0byB0cmFjaworICBidWdzLiAgVGhpcyBpc3N1ZSBpcyBiZWluZyBhZGRyZXNzZWQuCisKKworRml4ZXMgc2luY2UgdjEuNi4wCistLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIG9mIHRoZSBmaXhlcyBpbiB2MS42LjAuWCBtYWludGVuYW5jZSBzZXJpZXMgYXJlIGluY2x1ZGVkIGluIHRoaXMKK3JlbGVhc2UsIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQuCisKKyogUG9yY2VsYWlucyBpbXBsZW1lbnRlZCBhcyBzaGVsbCBzY3JpcHRzIHdlcmUgdXR0ZXJseSBjb25mdXNlZCB3aGVuIHlvdQorICBlbnRlcmVkIHRvIGEgc3ViZGlyZWN0b3J5IG9mIGEgd29yayB0cmVlIGZyb20gc2lkZXdheXMsIGZvbGxvd2luZyBhCisgIHN5bWJvbGljIGxpbmsgKHRoaXMgbWF5IG5lZWQgdG8gYmUgYmFja3BvcnRlZCB0byBvbGRlciByZWxlYXNlcyBsYXRlcikuCisKKyogVHJhY2tpbmcgc3ltYm9saWMgbGlua3Mgd291bGQgd29yayBiZXR0ZXIgb24gZmlsZXN5c3RlbXMgd2hvc2UgbHN0YXQoKQorICByZXR1cm5zIGluY29ycmVjdCBzdF9zaXplIHZhbHVlIGZvciB0aGVtLgorCisqICJnaXQgYWRkIiBhbmQgImdpdCB1cGRhdGUtaW5kZXgiIGluY29ycmVjdGx5IGFsbG93ZWQgYWRkaW5nIFMvRiB3aGVuIFMKKyAgaXMgYSB0cmFja2VkIHN5bWxpbmsgdGhhdCBwb2ludHMgYXQgYSBkaXJlY3RvcnkgRCB0aGF0IGhhcyBhIHBhdGggRiBpbgorICBpdCAod2Ugc3RpbGwgbmVlZCB0byBmaXggYSBzaW1pbGFyIG5vbnNlbnNlIHdoZW4gUyBpcyBhIHN1Ym1vZHVsZSBhbmQgRgorICBpcyBhIHBhdGggaW4gaXQpLgorCisqICJnaXQgYW0iIGFmdGVyIHN0b3BwaW5nIGF0IGEgYnJva2VuIHBhdGNoIGxvc3QgLS13aGl0ZXNwYWNlLCAtQywgLXAgYW5kCisgIC0tM3dheSBvcHRpb25zIGdpdmVuIGZyb20gdGhlIGNvbW1hbmQgbGluZSBpbml0aWFsbHkuCisKKyogImdpdCBkaWZmIC0tc3RkaW4iIHVzZWQgdG8gdGFrZSB0d28gdHJlZXMgb24gYSBsaW5lIGFuZCBjb21wYXJlZCB0aGVtLAorICBidXQgd2UgZHJvcHBlZCBzdXBwb3J0IGZvciBzdWNoIGEgdXNlIGNhc2UgbG9uZyB0aW1lIGFnby4gIFRoaXMgaGFzCisgIGJlZW4gcmVzdXJyZWN0ZWQuCisKKyogImdpdCBmaWx0ZXItYnJhbmNoIiBmYWlsZWQgdG8gcmV3cml0ZSBhIHRhZyBuYW1lIHdpdGggc2xhc2hlcyBpbiBpdC4KKworKiAiZ2l0IGh0dHAtcHVzaCIgZGlkIG5vdCB1bmRlcnN0YW5kIFVSSSBzY2hlbWUgb3RoZXIgdGhhbiBvcGFxdWVsb2NrdG9rZW4KKyAgd2hlbiBhY3F1aXJpbmcgYSBsb2NrIGZyb20gdGhlIHNlcnZlciAodGhpcyBtYXkgbmVlZCB0byBiZSBiYWNrcG9ydGVkIHRvCisgIG9sZGVyIHJlbGVhc2VzIGxhdGVyKS4KKworKiBBZnRlciAiZ2l0IHJlYmFzZSAtcCIgc3RvcHBlZCB3aXRoIGNvbmZsaWN0cyB3aGlsZSByZXBsYXlpbmcgYSBtZXJnZSwKKyAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBkaWQgbm90IHdvcmsgKG1heSBuZWVkIHRvIGJlIGJhY2twb3J0ZWQgdG8gb2xkZXIKKyAgcmVsZWFzZXMpLgorCisqICJnaXQgcmV2ZXJ0IiByZWNvcmRzIHJlbGF0aXZlIHRvIHdoaWNoIHBhcmVudCBhIHJldmVydCB3YXMgbWFkZSB3aGVuCisgIHJldmVydGluZyBhIG1lcmdlLiAgVG9nZXRoZXIgd2l0aCBuZXcgZG9jdW1lbnRhdGlvbiB0aGF0IGV4cGxhaW5zIGlzc3VlcworICBhcm91bmQgcmV2ZXJ0aW5nIGEgbWVyZ2UgYW5kIG1lcmdpbmcgZnJvbSB0aGUgdXBkYXRlZCBicmFuY2ggbGF0ZXIsIHRoaXMKKyAgaG9wZWZ1bGx5IHdpbGwgcmVkdWNlIHVzZXIgY29uZnVzaW9uICh0aGlzIG1heSBuZWVkIHRvIGJlIGJhY2twb3J0ZWQgdG8KKyAgb2xkZXIgcmVsZWFzZXMgbGF0ZXIpLgorCisqICJnaXQgcm0gLS1jYWNoZWQiIHVzZWQgdG8gYWxsb3cgYW4gZW1wdHkgYmxvYiB0aGF0IHdhcyBhZGRlZCBlYXJsaWVyIHRvCisgIGJlIHJlbW92ZWQgd2l0aG91dCAtLWZvcmNlLCBldmVuIHdoZW4gdGhlIGZpbGUgaW4gdGhlIHdvcmsgdHJlZSBoYXMKKyAgc2luY2UgYmVlbiBtb2RpZmllZC4KKworKiAiZ2l0IHB1c2ggLS10YWdzIC0tYWxsICR0aGVyZSIgZmFpbGVkIHdpdGggZ2VuZXJpYyB1c2FnZSBtZXNzYWdlIHdpdGhvdXQKKyAgdGVsbGluZyBzYXlpbmcgdGhlc2UgdHdvIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4KKworKiAiZ2l0IGxvZyAtLWF1dGhvci8tLWNvbW1pdHRlciIgbWF0Y2ggdXNlZCB0byBwb3RlbnRpYWxseSBtYXRjaCB0aGUKKyAgdGltZXN0YW1wIHBhcnQsIGV4cG9zaW5nIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIEFsc28gdGhlc2UgZGlkCisgIG5vdCB3b3JrIHdpdGggLS1maXhlZC1zdHJpbmdzIG1hdGNoIGF0IGFsbC4KKworKiAiZ2l0d2ViIiBkaWQgbm90IG1hcmsgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW1wb3J0ZWQgZnJvbSBleHRlcm5hbCBIVE1MIGZyYWdtZW50cworICBjb3JyZWN0bHkuCisKKy0tCitleGVjID4vdmFyL3RtcC8xCitPPXYxLjYuMS1yYzMtNzQtZ2Y2NmJjNWYKK2VjaG8gTz0kKGdpdCBkZXNjcmliZSBtYXN0ZXIpCitnaXQgc2hvcnRsb2cgLS1uby1tZXJnZXMgJE8uLm1hc3RlciBebWFpbnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCmluZGV4IDM0ZmRjODMuLmJhMDdjOGMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMKKysrIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwpAQCAtNzEsNyArNzEsNyBAQAogCiAoMWEpIFRyeSB0byBiZSBuaWNlIHRvIG9sZGVyIEMgY29tcGlsZXJzCiAKLVdlIHRyeSB0byBzdXBwb3J0IHdpZGUgcmFuZ2Ugb2YgQyBjb21waWxlcnMgdG8gY29tcGlsZQorV2UgdHJ5IHRvIHN1cHBvcnQgYSB3aWRlIHJhbmdlIG9mIEMgY29tcGlsZXJzIHRvIGNvbXBpbGUKIGdpdCB3aXRoLiBUaGF0IG1lYW5zIHRoYXQgeW91IHNob3VsZCBub3QgdXNlIEM5OSBpbml0aWFsaXplcnMsIGV2ZW4KIGlmIGEgbG90IG9mIGNvbXBpbGVycyBncm9rIGl0LgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FzY2lpZG9jLmNvbmYgYi9Eb2N1bWVudGF0aW9uL2FzY2lpZG9jLmNvbmYKaW5kZXggMmRhODY3ZC4uMWU3MzVkZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hc2NpaWRvYy5jb25mCisrKyBiL0RvY3VtZW50YXRpb24vYXNjaWlkb2MuY29uZgpAQCAtNyw2ICs3LDkgQEAKICMgU2hvdyBHSVQgbGluayBhczogPGNvbW1hbmQ+KDxzZWN0aW9uPik7IGlmIHNlY3Rpb24gaXMgZGVmaW5lZCwgZWxzZSBqdXN0IHNob3cKICMgdGhlIGNvbW1hbmQuCiAKK1ttYWNyb3NdCisoP3N1KVtcXF0/KD9QPG5hbWU+bGlua2dpdCk6KD9QPHRhcmdldD5cUyo/KVxbKD9QPGF0dHJsaXN0Pi4qPylcXT0KKwogW2F0dHJpYnV0ZXNdCiBhc3Rlcmlzaz0mIzQyOwogcGx1cz0mIzQzOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibGFtZS1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vYmxhbWUtb3B0aW9ucy50eHQKaW5kZXggNTQyODExMS4uMWFiMWI5NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ibGFtZS1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2JsYW1lLW9wdGlvbnMudHh0CkBAIC00OSw2ICs0OSwxMyBAQAogCVNob3cgdGhlIHJlc3VsdCBpbmNyZW1lbnRhbGx5IGluIGEgZm9ybWF0IGRlc2lnbmVkIGZvcgogCW1hY2hpbmUgY29uc3VtcHRpb24uCiAKKy0tZW5jb2Rpbmc9PGVuY29kaW5nPjo6CisJU3BlY2lmaWVzIHRoZSBlbmNvZGluZyB1c2VkIHRvIG91dHB1dCBhdXRob3IgbmFtZXMKKwlhbmQgY29tbWl0IHN1bW1hcmllcy4gU2V0dGluZyBpdCB0byBgbm9uZWAgbWFrZXMgYmxhbWUKKwlvdXRwdXQgdW5jb252ZXJ0ZWQgZGF0YS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorCWRpc2N1c3Npb24gYWJvdXQgZW5jb2RpbmcgaW4gdGhlIGxpbmtnaXQ6Z2l0LWxvZ1sxXQorCW1hbnVhbCBwYWdlLgorCiAtLWNvbnRlbnRzIDxmaWxlPjo6CiAJV2hlbiA8cmV2PiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY29tbWFuZCBhbm5vdGF0ZXMgdGhlCiAJY2hhbmdlcyBzdGFydGluZyBiYWNrd2FyZHMgZnJvbSB0aGUgd29ya2luZyB0cmVlIGNvcHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL2NvbmZpZy50eHQKaW5kZXggMTEzZDlkMS4uMmVkODY4YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9jb25maWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vY29uZmlnLnR4dApAQCAtMTE3LDYgKzExNywxNyBAQAogCXRoZSB3b3JraW5nIGNvcHkgYXJlIGlnbm9yZWQ7IHVzZWZ1bCBvbiBicm9rZW4gZmlsZXN5c3RlbXMgbGlrZSBGQVQuCiAJU2VlIGxpbmtnaXQ6Z2l0LXVwZGF0ZS1pbmRleFsxXS4gVHJ1ZSBieSBkZWZhdWx0LgogCitjb3JlLmlnbm9yZUN5Z3dpbkZTVHJpY2tzOjoKKwlUaGlzIG9wdGlvbiBpcyBvbmx5IHVzZWQgYnkgQ3lnd2luIGltcGxlbWVudGF0aW9uIG9mIEdpdC4gSWYgZmFsc2UsCisJdGhlIEN5Z3dpbiBzdGF0KCkgYW5kIGxzdGF0KCkgZnVuY3Rpb25zIGFyZSB1c2VkLiBUaGlzIG1heSBiZSB1c2VmdWwKKwlpZiB5b3VyIHJlcG9zaXRvcnkgY29uc2lzdHMgb2YgYSBmZXcgc2VwYXJhdGUgZGlyZWN0b3JpZXMgam9pbmVkIGluCisJb25lIGhpZXJhcmNoeSB1c2luZyBDeWd3aW4gbW91bnQuIElmIHRydWUsIEdpdCB1c2VzIG5hdGl2ZSBXaW4zMiBBUEkKKwl3aGVuZXZlciBpdCBpcyBwb3NzaWJsZSBhbmQgZmFsbHMgYmFjayB0byBDeWd3aW4gZnVuY3Rpb25zIG9ubHkgdG8KKwloYW5kbGUgc3ltYm9sIGxpbmtzLiBUaGUgbmF0aXZlIG1vZGUgaXMgbW9yZSB0aGFuIHR3aWNlIGZhc3RlciB0aGFuCisJbm9ybWFsIEN5Z3dpbiBsL3N0YXQoKSBmdW5jdGlvbnMuIFRydWUgYnkgZGVmYXVsdCwgdW5sZXNzIGNvcmUuZmlsZW1vZGUKKwlpcyB0cnVlLCBpbiB3aGljaCBjYXNlIGlnbm9yZUN5Z3dpbkZTVHJpY2tzIGlzIGlnbm9yZWQgYXMgQ3lnd2luJ3MKKwlQT1NJWCBlbXVsYXRpb24gaXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBjb3JlLmZpbGVtb2RlLgorCiBjb3JlLnRydXN0Y3RpbWU6OgogCUlmIGZhbHNlLCB0aGUgY3RpbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgaW5kZXggYW5kIHRoZQogCXdvcmtpbmcgY29weSBhcmUgaWdub3JlZDsgdXNlZnVsIHdoZW4gdGhlIGlub2RlIGNoYW5nZSB0aW1lCkBAIC00MDIsNiArNDEzLDE1IEBACiBqb3VybmFsbGluZyAodHJhZGl0aW9uYWwgVU5JWCBmaWxlc3lzdGVtcykgb3IgdGhhdCBvbmx5IGpvdXJuYWwgbWV0YWRhdGEKIGFuZCBub3QgZmlsZSBjb250ZW50cyAoT1MgWCdzIEhGUyssIG9yIExpbnV4IGV4dDMgd2l0aCAiZGF0YT13cml0ZWJhY2siKS4KIAorY29yZS5wcmVsb2FkaW5kZXg6OgorCUVuYWJsZSBwYXJhbGxlbCBpbmRleCBwcmVsb2FkIGZvciBvcGVyYXRpb25zIGxpa2UgJ2dpdCBkaWZmJworKworVGhpcyBjYW4gc3BlZWQgdXAgb3BlcmF0aW9ucyBsaWtlICdnaXQgZGlmZicgYW5kICdnaXQgc3RhdHVzJyBlc3BlY2lhbGx5CitvbiBmaWxlc3lzdGVtcyBsaWtlIE5GUyB0aGF0IGhhdmUgd2VhayBjYWNoaW5nIHNlbWFudGljcyBhbmQgdGh1cworcmVsYXRpdmVseSBoaWdoIElPIGxhdGVuY2llcy4gIFdpdGggdGhpcyBzZXQgdG8gJ3RydWUnLCBnaXQgd2lsbCBkbyB0aGUKK2luZGV4IGNvbXBhcmlzb24gdG8gdGhlIGZpbGVzeXN0ZW0gZGF0YSBpbiBwYXJhbGxlbCwgYWxsb3dpbmcKK292ZXJsYXBwaW5nIElPJ3MuCisKIGFsaWFzLio6OgogCUNvbW1hbmQgYWxpYXNlcyBmb3IgdGhlIGxpbmtnaXQ6Z2l0WzFdIGNvbW1hbmQgd3JhcHBlciAtIGUuZy4KIAlhZnRlciBkZWZpbmluZyAiYWxpYXMubGFzdCA9IGNhdC1maWxlIGNvbW1pdCBIRUFEIiwgdGhlIGludm9jYXRpb24KQEAgLTU5MCw2ICs2MTAsMjIgQEAKIAl5b3Ugd2FudCB0byB1c2UgYW4gZXh0ZXJuYWwgZGlmZiBwcm9ncmFtIG9ubHkgb24gYSBzdWJzZXQgb2YKIAl5b3VyIGZpbGVzLCB5b3UJbWlnaHQgd2FudCB0byB1c2UgbGlua2dpdDpnaXRhdHRyaWJ1dGVzWzVdIGluc3RlYWQuCiAKK2RpZmYubW5lbW9uaWNwcmVmaXg6OgorCUlmIHNldCwgJ2dpdC1kaWZmJyB1c2VzIGEgcHJlZml4IHBhaXIgdGhhdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKwlzdGFuZGFyZCAiYS8iIGFuZCAiYi8iIGRlcGVuZGluZyBvbiB3aGF0IGlzIGJlaW5nIGNvbXBhcmVkLiAgV2hlbgorCXRoaXMgY29uZmlndXJhdGlvbiBpcyBpbiBlZmZlY3QsIHJldmVyc2UgZGlmZiBvdXRwdXQgYWxzbyBzd2FwcworCXRoZSBvcmRlciBvZiB0aGUgcHJlZml4ZXM6CisnZ2l0LWRpZmYnOzsKKwljb21wYXJlcyB0aGUgKGkpbmRleCBhbmQgdGhlICh3KW9yayB0cmVlOworJ2dpdC1kaWZmIEhFQUQnOzsKKwkgY29tcGFyZXMgYSAoYylvbW1pdCBhbmQgdGhlICh3KW9yayB0cmVlOworJ2dpdCBkaWZmIC0tY2FjaGVkJzs7CisJY29tcGFyZXMgYSAoYylvbW1pdCBhbmQgdGhlIChpKW5kZXg7CisnZ2l0LWRpZmYgSEVBRDpmaWxlMSBmaWxlMic7OworCWNvbXBhcmVzIGFuIChvKWJqZWN0IGFuZCBhICh3KW9yayB0cmVlIGVudGl0eTsKKydnaXQgZGlmZiAtLW5vLWluZGV4IGEgYic7OworCWNvbXBhcmVzIHR3byBub24tZ2l0IHRoaW5ncyAoMSkgYW5kICgyKS4KKwogZGlmZi5yZW5hbWVMaW1pdDo6CiAJVGhlIG51bWJlciBvZiBmaWxlcyB0byBjb25zaWRlciB3aGVuIHBlcmZvcm1pbmcgdGhlIGNvcHkvcmVuYW1lCiAJZGV0ZWN0aW9uOyBlcXVpdmFsZW50IHRvIHRoZSAnZ2l0LWRpZmYnIG9wdGlvbiAnLWwnLgpAQCAtNTk5LDYgKzYzNSwxMCBAQAogCXdpbGwgZW5hYmxlIGJhc2ljIHJlbmFtZSBkZXRlY3Rpb24uICBJZiBzZXQgdG8gImNvcGllcyIgb3IKIAkiY29weSIsIGl0IHdpbGwgZGV0ZWN0IGNvcGllcywgYXMgd2VsbC4KIAorZGlmZi5zdXBwcmVzc0JsYW5rRW1wdHk6OgorCUEgYm9vbGVhbiB0byBpbmhpYml0IHRoZSBzdGFuZGFyZCBiZWhhdmlvciBvZiBwcmludGluZyBhIHNwYWNlCisJYmVmb3JlIGVhY2ggZW1wdHkgb3V0cHV0IGxpbmUuIERlZmF1bHRzIHRvIGZhbHNlLgorCiBmZXRjaC51bnBhY2tMaW1pdDo6CiAJSWYgdGhlIG51bWJlciBvZiBvYmplY3RzIGZldGNoZWQgb3ZlciB0aGUgZ2l0IG5hdGl2ZQogCXRyYW5zZmVyIGlzIGJlbG93IHRoaXMKQEAgLTYxMSwxMCArNjUxLDExIEBACiAJYHRyYW5zZmVyLnVucGFja0xpbWl0YCBpcyB1c2VkIGluc3RlYWQuCiAKIGZvcm1hdC5udW1iZXJlZDo6Ci0JQSBib29sZWFuIHdoaWNoIGNhbiBlbmFibGUgc2VxdWVuY2UgbnVtYmVycyBpbiBwYXRjaCBzdWJqZWN0cy4KLQlTZXR0aW5nIHRoaXMgb3B0aW9uIHRvICJhdXRvIiB3aWxsIGVuYWJsZSBpdCBvbmx5IGlmIHRoZXJlIGlzCi0JbW9yZSB0aGFuIG9uZSBwYXRjaC4gIFNlZSAtLW51bWJlcmVkIG9wdGlvbiBpbgotCWxpbmtnaXQ6Z2l0LWZvcm1hdC1wYXRjaFsxXS4KKwlBIGJvb2xlYW4gd2hpY2ggY2FuIGVuYWJsZSBvciBkaXNhYmxlIHNlcXVlbmNlIG51bWJlcnMgaW4gcGF0Y2gKKwlzdWJqZWN0cy4gIEl0IGRlZmF1bHRzIHRvICJhdXRvIiB3aGljaCBlbmFibGVzIGl0IG9ubHkgaWYgdGhlcmUKKwlpcyBtb3JlIHRoYW4gb25lIHBhdGNoLiAgSXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGFsbAorCW1lc3NhZ2VzIGJ5IHNldHRpbmcgaXQgdG8gInRydWUiIG9yICJmYWxzZSIuICBTZWUgLS1udW1iZXJlZAorCW9wdGlvbiBpbiBsaW5rZ2l0OmdpdC1mb3JtYXQtcGF0Y2hbMV0uCiAKIGZvcm1hdC5oZWFkZXJzOjoKIAlBZGRpdGlvbmFsIGVtYWlsIGhlYWRlcnMgdG8gaW5jbHVkZSBpbiBhIHBhdGNoIHRvIGJlIHN1Ym1pdHRlZApAQCAtNjYxLDcgKzcwMiw5IEBACiAKIGdjLnBydW5lZXhwaXJlOjoKIAlXaGVuICdnaXQtZ2MnIGlzIHJ1biwgaXQgd2lsbCBjYWxsICdwcnVuZSAtLWV4cGlyZSAyLndlZWtzLmFnbycuCi0JT3ZlcnJpZGUgdGhlIGdyYWNlIHBlcmlvZCB3aXRoIHRoaXMgY29uZmlnIHZhcmlhYmxlLgorCU92ZXJyaWRlIHRoZSBncmFjZSBwZXJpb2Qgd2l0aCB0aGlzIGNvbmZpZyB2YXJpYWJsZS4gIFRoZSB2YWx1ZQorCSJub3ciIG1heSBiZSB1c2VkIHRvIGRpc2FibGUgdGhpcyAgZ3JhY2UgcGVyaW9kIGFuZCBhbHdheXMgcHJ1bmUKKwl1bnJlYWNoYWJsZSBvYmplY3RzIGltbWVkaWF0ZWx5LgogCiBnYy5yZWZsb2dleHBpcmU6OgogCSdnaXQtcmVmbG9nIGV4cGlyZScgcmVtb3ZlcyByZWZsb2cgZW50cmllcyBvbGRlciB0aGFuCkBAIC03NTIsNiArNzk1LDE0IEBACiAJU3BlY2lmaWVzIGhvdyBtYW55IGNvbnRleHQgbGluZXMgc2hvdWxkIGJlIHVzZWQgaW4gY2FsbHMgdG8gZGlmZgogCW1hZGUgYnkgdGhlIGxpbmtnaXQ6Z2l0LWd1aVsxXS4gVGhlIGRlZmF1bHQgaXMgIjUiLgogCitndWkuZW5jb2Rpbmc6OgorCVNwZWNpZmllcyB0aGUgZGVmYXVsdCBlbmNvZGluZyB0byB1c2UgZm9yIGRpc3BsYXlpbmcgb2YKKwlmaWxlIGNvbnRlbnRzIGluIGxpbmtnaXQ6Z2l0LWd1aVsxXSBhbmQgbGlua2dpdDpnaXRrWzFdLgorCUl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlICdlbmNvZGluZycgYXR0cmlidXRlCisJZm9yIHJlbGV2YW50IGZpbGVzIChzZWUgbGlua2dpdDpnaXRhdHRyaWJ1dGVzWzVdKS4KKwlJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc2V0LCB0aGUgdG9vbHMgZGVmYXVsdCB0byB0aGUKKwlsb2NhbGUgZW5jb2RpbmcuCisKIGd1aS5tYXRjaHRyYWNraW5nYnJhbmNoOjoKIAlEZXRlcm1pbmVzIGlmIG5ldyBicmFuY2hlcyBjcmVhdGVkIHdpdGggbGlua2dpdDpnaXQtZ3VpWzFdIHNob3VsZAogCWRlZmF1bHQgdG8gdHJhY2tpbmcgcmVtb3RlIGJyYW5jaGVzIHdpdGggbWF0Y2hpbmcgbmFtZXMgb3IKQEAgLTc3NCw2ICs4MjUsNzMgQEAKIAl0aGUgbGlua2dpdDpnaXQtZ3VpWzFdLiBXaGVuIHNldCB0byAibm9uZSIgc3BlbGwgY2hlY2tpbmcgaXMgdHVybmVkCiAJb2ZmLgogCitndWkuZmFzdGNvcHlibGFtZTo6CisJSWYgdHJ1ZSwgJ2dpdCBndWkgYmxhbWUnIHVzZXMgJy1DJyBpbnN0ZWFkIG9mICctQyAtQycgZm9yIG9yaWdpbmFsCisJbG9jYXRpb24gZGV0ZWN0aW9uLiBJdCBtYWtlcyBibGFtZSBzaWduaWZpY2FudGx5IGZhc3RlciBvbiBodWdlCisJcmVwb3NpdG9yaWVzIGF0IHRoZSBleHBlbnNlIG9mIGxlc3MgdGhvcm91Z2ggY29weSBkZXRlY3Rpb24uCisKK2d1aS5jb3B5YmxhbWV0aHJlc2hvbGQ6OgorCVNwZWNpZmllcyB0aGUgdGhyZXNob2xkIHRvIHVzZSBpbiAnZ2l0IGd1aSBibGFtZScgb3JpZ2luYWwgbG9jYXRpb24KKwlkZXRlY3Rpb24sIG1lYXN1cmVkIGluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLiBTZWUgdGhlCisJbGlua2dpdDpnaXQtYmxhbWVbMV0gbWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvcHkgZGV0ZWN0aW9uLgorCitndWkuYmxhbWVoaXN0b3J5Y3R4OjoKKwlTcGVjaWZpZXMgdGhlIHJhZGl1cyBvZiBoaXN0b3J5IGNvbnRleHQgaW4gZGF5cyB0byBzaG93IGluCisJbGlua2dpdDpnaXRrWzFdIGZvciB0aGUgc2VsZWN0ZWQgY29tbWl0LCB3aGVuIHRoZSBgU2hvdyBIaXN0b3J5CisJQ29udGV4dGAgbWVudSBpdGVtIGlzIGludm9rZWQgZnJvbSAnZ2l0IGd1aSBibGFtZScuIElmIHRoaXMKKwl2YXJpYWJsZSBpcyBzZXQgdG8gemVybywgdGhlIHdob2xlIGhpc3RvcnkgaXMgc2hvd24uCisKK2d1aXRvb2wuPG5hbWU+LmNtZDo6CisJU3BlY2lmaWVzIHRoZSBzaGVsbCBjb21tYW5kIGxpbmUgdG8gZXhlY3V0ZSB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIGl0ZW0KKwlvZiB0aGUgbGlua2dpdDpnaXQtZ3VpWzFdIGBUb29sc2AgbWVudSBpcyBpbnZva2VkLiBUaGlzIG9wdGlvbiBpcworCW1hbmRhdG9yeSBmb3IgZXZlcnkgdG9vbC4gVGhlIGNvbW1hbmQgaXMgZXhlY3V0ZWQgZnJvbSB0aGUgcm9vdCBvZgorCXRoZSB3b3JraW5nIGRpcmVjdG9yeSwgYW5kIGluIHRoZSBlbnZpcm9ubWVudCBpdCByZWNlaXZlcyB0aGUgbmFtZSBvZgorCXRoZSB0b29sIGFzICdHSVRfR1VJVE9PTCcsIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZmlsZSBhcworCSdGSUxFTkFNRScsIGFuZCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBicmFuY2ggYXMgJ0NVUl9CUkFOQ0gnIChpZgorCXRoZSBoZWFkIGlzIGRldGFjaGVkLCAnQ1VSX0JSQU5DSCcgaXMgZW1wdHkpLgorCitndWl0b29sLjxuYW1lPi5uZWVkc2ZpbGU6OgorCVJ1biB0aGUgdG9vbCBvbmx5IGlmIGEgZGlmZiBpcyBzZWxlY3RlZCBpbiB0aGUgR1VJLiBJdCBndWFyYW50ZWVzCisJdGhhdCAnRklMRU5BTUUnIGlzIG5vdCBlbXB0eS4KKworZ3VpdG9vbC48bmFtZT4ubm9jb25zb2xlOjoKKwlSdW4gdGhlIGNvbW1hbmQgc2lsZW50bHksIHdpdGhvdXQgY3JlYXRpbmcgYSB3aW5kb3cgdG8gZGlzcGxheSBpdHMKKwlvdXRwdXQuCisKK2d1aXRvb2wuPG5hbWU+Lm5vcmVzY2FuOjoKKwlEb24ndCByZXNjYW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGZvciBjaGFuZ2VzIGFmdGVyIHRoZSB0b29sCisJZmluaXNoZXMgZXhlY3V0aW9uLgorCitndWl0b29sLjxuYW1lPi5jb25maXJtOjoKKwlTaG93IGEgY29uZmlybWF0aW9uIGRpYWxvZyBiZWZvcmUgYWN0dWFsbHkgcnVubmluZyB0aGUgdG9vbC4KKworZ3VpdG9vbC48bmFtZT4uYXJncHJvbXB0OjoKKwlSZXF1ZXN0IGEgc3RyaW5nIGFyZ3VtZW50IGZyb20gdGhlIHVzZXIsIGFuZCBwYXNzIGl0IHRvIHRoZSB0b29sCisJdGhyb3VnaCB0aGUgJ0FSR1MnIGVudmlyb25tZW50IHZhcmlhYmxlLiBTaW5jZSByZXF1ZXN0aW5nIGFuCisJYXJndW1lbnQgaW1wbGllcyBjb25maXJtYXRpb24sIHRoZSAnY29uZmlybScgb3B0aW9uIGhhcyBubyBlZmZlY3QKKwlpZiB0aGlzIGlzIGVuYWJsZWQuIElmIHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJywgJ3llcycsIG9yICcxJywKKwl0aGUgZGlhbG9nIHVzZXMgYSBidWlsdC1pbiBnZW5lcmljIHByb21wdDsgb3RoZXJ3aXNlIHRoZSBleGFjdAorCXZhbHVlIG9mIHRoZSB2YXJpYWJsZSBpcyB1c2VkLgorCitndWl0b29sLjxuYW1lPi5yZXZwcm9tcHQ6OgorCVJlcXVlc3QgYSBzaW5nbGUgdmFsaWQgcmV2aXNpb24gZnJvbSB0aGUgdXNlciwgYW5kIHNldCB0aGUKKwknUkVWSVNJT04nIGVudmlyb25tZW50IHZhcmlhYmxlLiBJbiBvdGhlciBhc3BlY3RzIHRoaXMgb3B0aW9uCisJaXMgc2ltaWxhciB0byAnYXJncHJvbXB0JywgYW5kIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggaXQuCisKK2d1aXRvb2wuPG5hbWU+LnJldnVubWVyZ2VkOjoKKwlTaG93IG9ubHkgdW5tZXJnZWQgYnJhbmNoZXMgaW4gdGhlICdyZXZwcm9tcHQnIHN1YmRpYWxvZy4KKwlUaGlzIGlzIHVzZWZ1bCBmb3IgdG9vbHMgc2ltaWxhciB0byBtZXJnZSBvciByZWJhc2UsIGJ1dCBub3QKKwlmb3IgdGhpbmdzIGxpa2UgY2hlY2tvdXQgb3IgcmVzZXQuCisKK2d1aXRvb2wuPG5hbWU+LnRpdGxlOjoKKwlTcGVjaWZpZXMgdGhlIHRpdGxlIHRvIHVzZSBmb3IgdGhlIHByb21wdCBkaWFsb2cuIFRoZSBkZWZhdWx0CisJaXMgdGhlIHRvb2wgbmFtZS4KKworZ3VpdG9vbC48bmFtZT4ucHJvbXB0OjoKKwlTcGVjaWZpZXMgdGhlIGdlbmVyYWwgcHJvbXB0IHN0cmluZyB0byBkaXNwbGF5IGF0IHRoZSB0b3Agb2YKKwl0aGUgZGlhbG9nLCBiZWZvcmUgc3Vic2VjdGlvbnMgZm9yICdhcmdwcm9tcHQnIGFuZCAncmV2cHJvbXB0Jy4KKwlUaGUgZGVmYXVsdCB2YWx1ZSBpbmNsdWRlcyB0aGUgYWN0dWFsIGNvbW1hbmQuCisKIGhlbHAuYnJvd3Nlcjo6CiAJU3BlY2lmeSB0aGUgYnJvd3NlciB0aGF0IHdpbGwgYmUgdXNlZCB0byBkaXNwbGF5IGhlbHAgaW4gdGhlCiAJJ3dlYicgZm9ybWF0LiBTZWUgbGlua2dpdDpnaXQtaGVscFsxXS4KQEAgLTc4Myw2ICs5MDEsMTUgQEAKIAlWYWx1ZXMgJ21hbicsICdpbmZvJywgJ3dlYicgYW5kICdodG1sJyBhcmUgc3VwcG9ydGVkLiAnbWFuJyBpcwogCXRoZSBkZWZhdWx0LiAnd2ViJyBhbmQgJ2h0bWwnIGFyZSB0aGUgc2FtZS4KIAoraGVscC5hdXRvY29ycmVjdDo6CisJQXV0b21hdGljYWxseSBjb3JyZWN0IGFuZCBleGVjdXRlIG1pc3R5cGVkIGNvbW1hbmRzIGFmdGVyCisJd2FpdGluZyBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBkZWNpc2Vjb25kcyAoMC4xIHNlYykuIElmIG1vcmUKKwl0aGFuIG9uZSBjb21tYW5kIGNhbiBiZSBkZWR1Y2VkIGZyb20gdGhlIGVudGVyZWQgdGV4dCwgbm90aGluZworCXdpbGwgYmUgZXhlY3V0ZWQuICBJZiB0aGUgdmFsdWUgb2YgdGhpcyBvcHRpb24gaXMgbmVnYXRpdmUsCisJdGhlIGNvcnJlY3RlZCBjb21tYW5kIHdpbGwgYmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkuIElmIHRoZQorCXZhbHVlIGlzIDAgLSB0aGUgY29tbWFuZCB3aWxsIGJlIGp1c3Qgc2hvd24gYnV0IG5vdCBleGVjdXRlZC4KKwlUaGlzIGlzIHRoZSBkZWZhdWx0LgorCiBodHRwLnByb3h5OjoKIAlPdmVycmlkZSB0aGUgSFRUUCBwcm94eSwgbm9ybWFsbHkgY29uZmlndXJlZCB1c2luZyB0aGUgJ2h0dHBfcHJveHknCiAJZW52aXJvbm1lbnQgdmFyaWFibGUgKHNlZSBsaW5rZ2l0OmN1cmxbMV0pLiAgVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbgpAQCAtMTAxNCw2ICsxMTQxLDE5IEBACiAJZXNwZWNpYWxseSBvbiBzbG93IGZpbGVzeXN0ZW1zLiAgSWYgbm90IHNldCwgdGhlIHZhbHVlIG9mCiAJYHRyYW5zZmVyLnVucGFja0xpbWl0YCBpcyB1c2VkIGluc3RlYWQuCiAKK3JlY2VpdmUuZGVueURlbGV0ZXM6OgorCUlmIHNldCB0byB0cnVlLCBnaXQtcmVjZWl2ZS1wYWNrIHdpbGwgZGVueSBhIHJlZiB1cGRhdGUgdGhhdCBkZWxldGVzCisJdGhlIHJlZi4gVXNlIHRoaXMgdG8gcHJldmVudCBzdWNoIGEgcmVmIGRlbGV0aW9uIHZpYSBhIHB1c2guCisKK3JlY2VpdmUuZGVueUN1cnJlbnRCcmFuY2g6OgorCUlmIHNldCB0byB0cnVlIG9yICJyZWZ1c2UiLCByZWNlaXZlLXBhY2sgd2lsbCBkZW55IGEgcmVmIHVwZGF0ZQorCXRvIHRoZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgYnJhbmNoIG9mIGEgbm9uLWJhcmUgcmVwb3NpdG9yeS4KKwlTdWNoIGEgcHVzaCBpcyBwb3RlbnRpYWxseSBkYW5nZXJvdXMgYmVjYXVzZSBpdCBicmluZ3MgdGhlIEhFQUQKKwlvdXQgb2Ygc3luYyB3aXRoIHRoZSBpbmRleCBhbmQgd29ya2luZyB0cmVlLiBJZiBzZXQgdG8gIndhcm4iLAorCXByaW50IGEgd2FybmluZyBvZiBzdWNoIGEgcHVzaCB0byBzdGRlcnIsIGJ1dCBhbGxvdyB0aGUgcHVzaCB0bworCXByb2NlZWQuIElmIHNldCB0byBmYWxzZSBvciAiaWdub3JlIiwgYWxsb3cgc3VjaCBwdXNoZXMgd2l0aCBubworCW1lc3NhZ2UuIERlZmF1bHRzIHRvICJ3YXJuIi4KKwogcmVjZWl2ZS5kZW55Tm9uRmFzdEZvcndhcmRzOjoKIAlJZiBzZXQgdG8gdHJ1ZSwgZ2l0LXJlY2VpdmUtcGFjayB3aWxsIGRlbnkgYSByZWYgdXBkYXRlIHdoaWNoIGlzCiAJbm90IGEgZmFzdCBmb3J3YXJkLiBVc2UgdGhpcyB0byBwcmV2ZW50IHN1Y2ggYW4gdXBkYXRlIHZpYSBhIHB1c2gsCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RpZmYtb3B0aW9ucy50eHQgYi9Eb2N1bWVudGF0aW9uL2RpZmYtb3B0aW9ucy50eHQKaW5kZXggNDU4ODViYi4uYjQzMmQyNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kaWZmLW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZGlmZi1vcHRpb25zLnR4dApAQCAtMTksMTYgKzE5LDEyIEBACiAKIGlmbmRlZjo6Z2l0LWZvcm1hdC1wYXRjaFtdCiAtcDo6CistdTo6CiAJR2VuZXJhdGUgcGF0Y2ggKHNlZSBzZWN0aW9uIG9uIGdlbmVyYXRpbmcgcGF0Y2hlcykuCiAJe2dpdC1kaWZmPyBUaGlzIGlzIHRoZSBkZWZhdWx0Ln0KIGVuZGlmOjpnaXQtZm9ybWF0LXBhdGNoW10KIAotLXU6OgotCVN5bm9ueW0gZm9yICItcCIuCi0KIC1VPG4+OjoKLQlTaG9ydGhhbmQgZm9yICItLXVuaWZpZWQ9PG4+Ii4KLQogLS11bmlmaWVkPTxuPjo6CiAJR2VuZXJhdGUgZGlmZnMgd2l0aCA8bj4gbGluZXMgb2YgY29udGV4dCBpbnN0ZWFkIG9mCiAJdGhlIHVzdWFsIHRocmVlLiBJbXBsaWVzICItcCIuCkBAIC02NSw2ICs2MSw5IEBACiAJY2FuIGJlIHNldCB3aXRoICItLWRpcnN0YXQ9bGltaXQiLiBDaGFuZ2VzIGluIGEgY2hpbGQgZGlyZWN0b3J5IGlzIG5vdAogCWNvdW50ZWQgZm9yIHRoZSBwYXJlbnQgZGlyZWN0b3J5LCB1bmxlc3MgIi0tY3VtdWxhdGl2ZSIgaXMgdXNlZC4KIAorLS1kaXJzdGF0LWJ5LWZpbGVbPWxpbWl0XTo6CisJU2FtZSBhcyAtLWRpcnN0YXQsIGJ1dCBjb3VudHMgY2hhbmdlZCBmaWxlcyBpbnN0ZWFkIG9mIGxpbmVzLgorCiAtLXN1bW1hcnk6OgogCU91dHB1dCBhIGNvbmRlbnNlZCBzdW1tYXJ5IG9mIGV4dGVuZGVkIGhlYWRlciBpbmZvcm1hdGlvbgogCXN1Y2ggYXMgY3JlYXRpb25zLCByZW5hbWVzIGFuZCBtb2RlIGNoYW5nZXMuCkBAIC0xMDYsOSArMTA1LDkgQEAKIAktLWV4aXQtY29kZS4KIAogLS1mdWxsLWluZGV4OjoKLQlJbnN0ZWFkIG9mIHRoZSBmaXJzdCBoYW5kZnVsIGNoYXJhY3RlcnMsIHNob3cgZnVsbAotCW9iamVjdCBuYW1lIG9mIHByZS0gYW5kIHBvc3QtaW1hZ2UgYmxvYiBvbiB0aGUgImluZGV4IgotCWxpbmUgd2hlbiBnZW5lcmF0aW5nIGEgcGF0Y2ggZm9ybWF0IG91dHB1dC4KKwlJbnN0ZWFkIG9mIHRoZSBmaXJzdCBoYW5kZnVsIG9mIGNoYXJhY3RlcnMsIHNob3cgdGhlIGZ1bGwKKwlwcmUtIGFuZCBwb3N0LWltYWdlIGJsb2Igb2JqZWN0IG5hbWVzIG9uIHRoZSAiaW5kZXgiCisJbGluZSB3aGVuIGdlbmVyYXRpbmcgcGF0Y2ggZm9ybWF0IG91dHB1dC4KIAogLS1iaW5hcnk6OgogCUluIGFkZGl0aW9uIHRvIC0tZnVsbC1pbmRleCwgb3V0cHV0ICJiaW5hcnkgZGlmZiIgdGhhdApAQCAtMTg3LDMxICsxODYsMjUgQEAKIAljYW4gbmFtZSB3aGljaCBzdWJkaXJlY3RvcnkgdG8gbWFrZSB0aGUgb3V0cHV0IHJlbGF0aXZlCiAJdG8gYnkgZ2l2aW5nIGEgPHBhdGg+IGFzIGFuIGFyZ3VtZW50LgogCistYTo6CiAtLXRleHQ6OgogCVRyZWF0IGFsbCBmaWxlcyBhcyB0ZXh0LgogCi0tYTo6Ci0JU2hvcnRoYW5kIGZvciAiLS10ZXh0Ii4KLQogLS1pZ25vcmUtc3BhY2UtYXQtZW9sOjoKIAlJZ25vcmUgY2hhbmdlcyBpbiB3aGl0ZXNwYWNlIGF0IEVPTC4KIAorLWI6OgogLS1pZ25vcmUtc3BhY2UtY2hhbmdlOjoKIAlJZ25vcmUgY2hhbmdlcyBpbiBhbW91bnQgb2Ygd2hpdGVzcGFjZS4gIFRoaXMgaWdub3JlcyB3aGl0ZXNwYWNlCiAJYXQgbGluZSBlbmQsIGFuZCBjb25zaWRlcnMgYWxsIG90aGVyIHNlcXVlbmNlcyBvZiBvbmUgb3IKIAltb3JlIHdoaXRlc3BhY2UgY2hhcmFjdGVycyB0byBiZSBlcXVpdmFsZW50LgogCi0tYjo6Ci0JU2hvcnRoYW5kIGZvciAiLS1pZ25vcmUtc3BhY2UtY2hhbmdlIi4KLQorLXc6OgogLS1pZ25vcmUtYWxsLXNwYWNlOjoKIAlJZ25vcmUgd2hpdGVzcGFjZSB3aGVuIGNvbXBhcmluZyBsaW5lcy4gIFRoaXMgaWdub3JlcwogCWRpZmZlcmVuY2VzIGV2ZW4gaWYgb25lIGxpbmUgaGFzIHdoaXRlc3BhY2Ugd2hlcmUgdGhlIG90aGVyCiAJbGluZSBoYXMgbm9uZS4KIAotLXc6OgotCVNob3J0aGFuZCBmb3IgIi0taWdub3JlLWFsbC1zcGFjZSIuCi0KIC0tZXhpdC1jb2RlOjoKIAlNYWtlIHRoZSBwcm9ncmFtIGV4aXQgd2l0aCBjb2RlcyBzaW1pbGFyIHRvIGRpZmYoMSkuCiAJVGhhdCBpcywgaXQgZXhpdHMgd2l0aCAxIGlmIHRoZXJlIHdlcmUgZGlmZmVyZW5jZXMgYW5kCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1hZGQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYWRkLnR4dAppbmRleCAyYjZkNmM4Li43YzEyOWNiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1hZGQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWFkZC50eHQKQEAgLTksOCArOSw4IEBACiAtLS0tLS0tLQogW3ZlcnNlXQogJ2dpdCBhZGQnIFstbl0gWy12XSBbLS1mb3JjZSB8IC1mXSBbLS1pbnRlcmFjdGl2ZSB8IC1pXSBbLS1wYXRjaCB8IC1wXQotCSAgWy0tYWxsIHwgWy0tdXBkYXRlIHwgLXVdXSBbLS1yZWZyZXNoXSBbLS1pZ25vcmUtZXJyb3JzXSBbLS1dCi0JICA8ZmlsZXBhdHRlcm4+Li4uCisJICBbLS1hbGwgfCBbLS11cGRhdGUgfCAtdV1dIFstLWludGVudC10by1hZGQgfCAtTl0KKwkgIFstLXJlZnJlc2hdIFstLWlnbm9yZS1lcnJvcnNdIFstLV0gPGZpbGVwYXR0ZXJuPi4uLgogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTkyLDYgKzkyLDE1IEBACiAJYW5kIGFkZCBhbGwgdW50cmFja2VkIGZpbGVzIHRoYXQgYXJlIG5vdCBpZ25vcmVkIGJ5ICcuZ2l0aWdub3JlJwogCW1lY2hhbmlzbS4KIAorCistTjo6CistLWludGVudC10by1hZGQ6OgorCVJlY29yZCBvbmx5IHRoZSBmYWN0IHRoYXQgdGhlIHBhdGggd2lsbCBiZSBhZGRlZCBsYXRlci4gQW4gZW50cnkKKwlmb3IgdGhlIHBhdGggaXMgcGxhY2VkIGluIHRoZSBpbmRleCB3aXRoIG5vIGNvbnRlbnQuIFRoaXMgaXMKKwl1c2VmdWwgZm9yLCBhbW9uZyBvdGhlciB0aGluZ3MsIHNob3dpbmcgdGhlIHVuc3RhZ2VkIGNvbnRlbnQgb2YKKwlzdWNoIGZpbGVzIHdpdGggJ2dpdCBkaWZmJyBhbmQgY29tbWl0dGluZyB0aGVtIHdpdGggJ2dpdCBjb21taXQKKwktYScuCisKIC0tcmVmcmVzaDo6CiAJRG9uJ3QgYWRkIHRoZSBmaWxlKHMpLCBidXQgb25seSByZWZyZXNoIHRoZWlyIHN0YXQoKQogCWluZm9ybWF0aW9uIGluIHRoZSBpbmRleC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWFwcGx5LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWFwcGx5LnR4dAppbmRleCBmZWI1MWYxLi5lNzI2NTEwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1hcHBseS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYXBwbHkudHh0CkBAIC0xNCw3ICsxNCw4IEBACiAJICBbLS1hbGxvdy1iaW5hcnktcmVwbGFjZW1lbnQgfCAtLWJpbmFyeV0gWy0tcmVqZWN0XSBbLXpdCiAJICBbLXBOVU1dIFstQ05VTV0gWy0taW5hY2N1cmF0ZS1lb2ZdIFstLXJlY291bnRdIFstLWNhY2hlZF0KIAkgIFstLXdoaXRlc3BhY2U9PG5vd2Fybnx3YXJufGZpeHxlcnJvcnxlcnJvci1hbGw+XQotCSAgWy0tZXhjbHVkZT1QQVRIXSBbLS1kaXJlY3Rvcnk9PHJvb3Q+XSBbLS12ZXJib3NlXSBbPHBhdGNoPi4uLl0KKwkgIFstLWV4Y2x1ZGU9UEFUSF0gWy0taW5jbHVkZT1QQVRIXSBbLS1kaXJlY3Rvcnk9PHJvb3Q+XQorCSAgWy0tdmVyYm9zZV0gWzxwYXRjaD4uLi5dCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpAQCAtMTM3LDYgKzEzOCwxNyBAQAogCWJlIHVzZWZ1bCB3aGVuIGltcG9ydGluZyBwYXRjaHNldHMsIHdoZXJlIHlvdSB3YW50IHRvIGV4Y2x1ZGUgY2VydGFpbgogCWZpbGVzIG9yIGRpcmVjdG9yaWVzLgogCistLWluY2x1ZGU9PHBhdGgtcGF0dGVybj46OgorCUFwcGx5IGNoYW5nZXMgdG8gZmlsZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGggcGF0dGVybi4gVGhpcyBjYW4KKwliZSB1c2VmdWwgd2hlbiBpbXBvcnRpbmcgcGF0Y2hzZXRzLCB3aGVyZSB5b3Ugd2FudCB0byBpbmNsdWRlIGNlcnRhaW4KKwlmaWxlcyBvciBkaXJlY3Rvcmllcy4KKysKK1doZW4gLS1leGNsdWRlIGFuZCAtLWluY2x1ZGUgcGF0dGVybnMgYXJlIHVzZWQsIHRoZXkgYXJlIGV4YW1pbmVkIGluIHRoZQorb3JkZXIgdGhleSBhcHBlYXIgb24gdGhlIGNvbW1hbmQgbGluZSwgYW5kIHRoZSBmaXJzdCBtYXRjaCBkZXRlcm1pbmVzIGlmIGEKK3BhdGNoIHRvIGVhY2ggcGF0aCBpcyB1c2VkLiAgQSBwYXRjaCB0byBhIHBhdGggdGhhdCBkb2VzIG5vdCBtYXRjaCBhbnkKK2luY2x1ZGUvZXhjbHVkZSBwYXR0ZXJuIGlzIHVzZWQgYnkgZGVmYXVsdCBpZiB0aGVyZSBpcyBubyBpbmNsdWRlIHBhdHRlcm4KK29uIHRoZSBjb21tYW5kIGxpbmUsIGFuZCBpZ25vcmVkIGlmIHRoZXJlIGlzIGFueSBpbmNsdWRlIHBhdHRlcm4uCisKIC0td2hpdGVzcGFjZT08YWN0aW9uPjo6CiAJV2hlbiBhcHBseWluZyBhIHBhdGNoLCBkZXRlY3QgYSBuZXcgb3IgbW9kaWZpZWQgbGluZSB0aGF0IGhhcwogCXdoaXRlc3BhY2UgZXJyb3JzLiAgV2hhdCBhcmUgY29uc2lkZXJlZCB3aGl0ZXNwYWNlIGVycm9ycyBpcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC50eHQKaW5kZXggMzkwMzRlYy4uMTQ3ZWEzOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1iaXNlY3QudHh0CkBAIC0xOSw3ICsxOSw3IEBACiAgZ2l0IGJpc2VjdCBzdGFydCBbPGJhZD4gWzxnb29kPi4uLl1dIFstLV0gWzxwYXRocz4uLi5dCiAgZ2l0IGJpc2VjdCBiYWQgWzxyZXY+XQogIGdpdCBiaXNlY3QgZ29vZCBbPHJldj4uLi5dCi0gZ2l0IGJpc2VjdCBza2lwIFs8cmV2Pi4uLl0KKyBnaXQgYmlzZWN0IHNraXAgWyg8cmV2Pnw8cmFuZ2U+KS4uLl0KICBnaXQgYmlzZWN0IHJlc2V0IFs8YnJhbmNoPl0KICBnaXQgYmlzZWN0IHZpc3VhbGl6ZQogIGdpdCBiaXNlY3QgcmVwbGF5IDxsb2dmaWxlPgpAQCAtMTY0LDYgKzE2NCwyNSBAQAogZXZlbnR1YWxseSBub3QgYmUgYWJsZSB0byB0ZWxsIHRoZSBmaXJzdCBiYWQgYW1vbmcgYSBiYWQgYW5kIG9uZSBvcgogbW9yZSAic2tpcCJwZWQgY29tbWl0cy4KIAorWW91IGNhbiBldmVuIHNraXAgYSByYW5nZSBvZiBjb21taXRzLCBpbnN0ZWFkIG9mIGp1c3Qgb25lIGNvbW1pdCwKK3VzaW5nIHRoZSAiJzxjb21taXQxPicuLic8Y29tbWl0Mj4nIiBub3RhdGlvbi4gRm9yIGV4YW1wbGU6CisKKy0tLS0tLS0tLS0tLQorJCBnaXQgYmlzZWN0IHNraXAgdjIuNS4udjIuNgorLS0tLS0tLS0tLS0tCisKK3dvdWxkIG1lYW4gdGhhdCBubyBjb21taXQgYmV0d2VlbiBgdjIuNWAgZXhjbHVkZWQgYW5kIGB2Mi42YCBpbmNsdWRlZAorY2FuIGJlIHRlc3RlZC4KKworTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIGFsc28gc2tpcCB0aGUgZmlyc3QgY29tbWl0IG9mIGEgcmFuZ2UgeW91IGNhbgordXNlIHNvbWV0aGluZyBsaWtlOgorCistLS0tLS0tLS0tLS0KKyQgZ2l0IGJpc2VjdCBza2lwIHYyLjUgdjIuNS4udjIuNgorLS0tLS0tLS0tLS0tCisKK2FuZCB0aGUgY29tbWl0IHBvaW50ZWQgdG8gYnkgYHYyLjVgIHdpbGwgYmUgc2tpcHBlZCB0b28uCisKIEN1dHRpbmcgZG93biBiaXNlY3Rpb24gYnkgZ2l2aW5nIG1vcmUgcGFyYW1ldGVycyB0byBiaXNlY3Qgc3RhcnQKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stYXR0ci50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dAppbmRleCAwNDMyNzRiLi44YzJhYzEyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dApAQCAtOCw3ICs4LDkgQEAKIAogU1lOT1BTSVMKIC0tLS0tLS0tCitbdmVyc2VdCiAnZ2l0IGNoZWNrLWF0dHInIGF0dHIuLi4gWy0tXSBwYXRobmFtZS4uLgorJ2dpdCBjaGVjay1hdHRyJyAtLXN0ZGluIFstel0gYXR0ci4uLiA8IDxsaXN0LW9mLXBhdGhzPgogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTE3LDYgKzE5LDEzIEBACiAKIE9QVElPTlMKIC0tLS0tLS0KKy0tc3RkaW46OgorCVJlYWQgZmlsZSBuYW1lcyBmcm9tIHN0ZGluIGluc3RlYWQgb2YgZnJvbSB0aGUgY29tbWFuZC1saW5lLgorCistejo6CisJT25seSBtZWFuaW5nZnVsIHdpdGggYC0tc3RkaW5gOyBwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGgKKwlOVUwgY2hhcmFjdGVyIGluc3RlYWQgb2YgTEYuCisKIFwtLTo6CiAJSW50ZXJwcmV0IGFsbCBwcmVjZWRpbmcgYXJndW1lbnRzIGFzIGF0dHJpYnV0ZXMsIGFuZCBhbGwgZm9sbG93aW5nCiAJYXJndW1lbnRzIGFzIHBhdGggbmFtZXMuIElmIG5vdCBzdXBwbGllZCwgb25seSB0aGUgZmlyc3QgYXJndW1lbnQgd2lsbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2tvdXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2tvdXQudHh0CmluZGV4IDVhYTY5YzAuLjljZDUxNTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrb3V0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVja291dC50eHQKQEAgLTgsOCArOCw4IEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgY2hlY2tvdXQnIFstcV0gWy1mXSBbWy0tdHJhY2sgfCAtLW5vLXRyYWNrXSAtYiA8bmV3X2JyYW5jaD4gWy1sXV0gWy1tXSBbPGJyYW5jaD5dCi0nZ2l0IGNoZWNrb3V0JyBbPHRyZWUtaXNoPl0gWy0tXSA8cGF0aHM+Li4uCisnZ2l0IGNoZWNrb3V0JyBbLXFdIFstZl0gWy0tdHJhY2sgfCAtLW5vLXRyYWNrXSBbLWIgPG5ld19icmFuY2g+IFstbF1dIFstbV0gWzxicmFuY2g+XQorJ2dpdCBjaGVja291dCcgWy1mfC0tb3Vyc3wtLXRoZWlyc3wtbXwtLWNvbmZsaWN0PTxzdHlsZT5dIFs8dHJlZS1pc2g+XSBbLS1dIDxwYXRocz4uLi4KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC0yMSwxNiArMjEsMjYgQEAKIGJlIGNyZWF0ZWQ7IGluIHRoaXMgY2FzZSB5b3UgY2FuIHVzZSB0aGUgLS10cmFjayBvciAtLW5vLXRyYWNrCiBvcHRpb25zLCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBgZ2l0IGJyYW5jaGAuCiAKK0FzIGEgY29udmVuaWVuY2UsIC0tdHJhY2sgd2lsbCBkZWZhdWx0IHRvIGNyZWF0ZSBhIGJyYW5jaCB3aG9zZQorbmFtZSBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBzcGVjaWZpZWQgYnJhbmNoIG5hbWUgYnkgc3RyaXBwaW5nCit0aGUgZmlyc3QgbmFtZXNwYWNlIGxldmVsLgorCiBXaGVuIDxwYXRocz4gYXJlIGdpdmVuLCB0aGlzIGNvbW1hbmQgZG9lcyAqbm90KiBzd2l0Y2gKIGJyYW5jaGVzLiAgSXQgdXBkYXRlcyB0aGUgbmFtZWQgcGF0aHMgaW4gdGhlIHdvcmtpbmcgdHJlZSBmcm9tCi10aGUgaW5kZXggZmlsZSAoaS5lLiBpdCBydW5zIGBnaXQgY2hlY2tvdXQtaW5kZXggLWYgLXVgKSwgb3IKLWZyb20gYSBuYW1lZCBjb21taXQuICBJbgotdGhpcyBjYXNlLCB0aGUgYC1mYCBhbmQgYC1iYCBvcHRpb25zIGFyZSBtZWFuaW5nbGVzcyBhbmQgZ2l2aW5nCit0aGUgaW5kZXggZmlsZSwgb3IgZnJvbSBhIG5hbWVkIDx0cmVlLWlzaD4gKG1vc3Qgb2Z0ZW4gYSBjb21taXQpLiAgSW4KK3RoaXMgY2FzZSwgdGhlIGAtYmAgb3B0aW9ucyBpcyBtZWFuaW5nbGVzcyBhbmQgZ2l2aW5nCiBlaXRoZXIgb2YgdGhlbSByZXN1bHRzIGluIGFuIGVycm9yLiAgPHRyZWUtaXNoPiBhcmd1bWVudCBjYW4gYmUKIHVzZWQgdG8gc3BlY2lmeSBhIHNwZWNpZmljIHRyZWUtaXNoIChpLmUuIGNvbW1pdCwgdGFnIG9yIHRyZWUpCiB0byB1cGRhdGUgdGhlIGluZGV4IGZvciB0aGUgZ2l2ZW4gcGF0aHMgYmVmb3JlIHVwZGF0aW5nIHRoZQogd29ya2luZyB0cmVlLgogCitUaGUgaW5kZXggbWF5IGNvbnRhaW4gdW5tZXJnZWQgZW50cmllcyBhZnRlciBhIGZhaWxlZCBtZXJnZS4gIEJ5CitkZWZhdWx0LCBpZiB5b3UgdHJ5IHRvIGNoZWNrIG91dCBzdWNoIGFuIGVudHJ5IGZyb20gdGhlIGluZGV4LCB0aGUKK2NoZWNrb3V0IG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIG5vdGhpbmcgd2lsbCBiZSBjaGVja2VkIG91dC4KK1VzaW5nIC1mIHdpbGwgaWdub3JlIHRoZXNlIHVubWVyZ2VkIGVudHJpZXMuICBUaGUgY29udGVudHMgZnJvbSBhCitzcGVjaWZpYyBzaWRlIG9mIHRoZSBtZXJnZSBjYW4gYmUgY2hlY2tlZCBvdXQgb2YgdGhlIGluZGV4IGJ5Cit1c2luZyAtLW91cnMgb3IgLS10aGVpcnMuICBXaXRoIC1tLCBjaGFuZ2VzIG1hZGUgdG8gdGhlIHdvcmtpbmcgdHJlZQorZmlsZSBjYW4gYmUgZGlzY2FyZGVkIHRvIHJlY3JlYXRlIHRoZSBvcmlnaW5hbCBjb25mbGljdGVkIG1lcmdlIHJlc3VsdC4KIAogT1BUSU9OUwogLS0tLS0tLQpAQCAtMzgsOCArNDgsMTcgQEAKIAlRdWlldCwgc3VwcHJlc3MgZmVlZGJhY2sgbWVzc2FnZXMuCiAKIC1mOjoKLQlQcm9jZWVkIGV2ZW4gaWYgdGhlIGluZGV4IG9yIHRoZSB3b3JraW5nIHRyZWUgZGlmZmVycwotCWZyb20gSEVBRC4gIFRoaXMgaXMgdXNlZCB0byB0aHJvdyBhd2F5IGxvY2FsIGNoYW5nZXMuCisJV2hlbiBzd2l0Y2hpbmcgYnJhbmNoZXMsIHByb2NlZWQgZXZlbiBpZiB0aGUgaW5kZXggb3IgdGhlCisJd29ya2luZyB0cmVlIGRpZmZlcnMgZnJvbSBIRUFELiAgVGhpcyBpcyB1c2VkIHRvIHRocm93IGF3YXkKKwlsb2NhbCBjaGFuZ2VzLgorKworV2hlbiBjaGVja2luZyBvdXQgcGF0aHMgZnJvbSB0aGUgaW5kZXgsIGRvIG5vdCBmYWlsIHVwb24gdW5tZXJnZWQKK2VudHJpZXM7IGluc3RlYWQsIHVubWVyZ2VkIGVudHJpZXMgYXJlIGlnbm9yZWQuCisKKy0tb3Vyczo6CistLXRoZWlyczo6CisJV2hlbiBjaGVja2luZyBvdXQgcGF0aHMgZnJvbSB0aGUgaW5kZXgsIGNoZWNrIG91dCBzdGFnZSAjMgorCSgnb3VycycpIG9yICMzICgndGhlaXJzJykgZm9yIHVubWVyZ2VkIHBhdGhzLgogCiAtYjo6CiAJQ3JlYXRlIGEgbmV3IGJyYW5jaCBuYW1lZCA8bmV3X2JyYW5jaD4gYW5kIHN0YXJ0IGl0IGF0CkBAIC01OSw2ICs3OCwxNyBAQAogCSdnaXQtY2hlY2tvdXQnIGFuZCAnZ2l0LWJyYW5jaCcgdG8gYWx3YXlzIGJlaGF2ZSBhcyBpZiAnLS1uby10cmFjaycgd2VyZQogCWdpdmVuLiBTZXQgaXQgdG8gYGFsd2F5c2AgaWYgeW91IHdhbnQgdGhpcyBiZWhhdmlvciB3aGVuIHRoZQogCXN0YXJ0LXBvaW50IGlzIGVpdGhlciBhIGxvY2FsIG9yIHJlbW90ZSBicmFuY2guCisrCitJZiBubyAnLWInIG9wdGlvbiB3YXMgZ2l2ZW4sIHRoZSBuYW1lIG9mIHRoZSBuZXcgYnJhbmNoIHdpbGwgYmUKK2Rlcml2ZWQgZnJvbSB0aGUgcmVtb3RlIGJyYW5jaCwgYnkgYXR0ZW1wdGluZyB0byBndWVzcyB0aGUgbmFtZQorb2YgdGhlIGJyYW5jaCBvbiByZW1vdGUgc3lzdGVtLiAgSWYgInJlbW90ZXMvIiBvciAicmVmcy9yZW1vdGVzLyIKK2FyZSBwcmVmaXhlZCwgaXQgaXMgc3RyaXBwZWQgYXdheSwgYW5kIHRoZW4gdGhlIHBhcnQgdXAgdG8gdGhlCituZXh0IHNsYXNoICh3aGljaCB3b3VsZCBiZSB0aGUgbmlja25hbWUgb2YgdGhlIHJlbW90ZSkgaXMgcmVtb3ZlZC4KK1RoaXMgd291bGQgdGVsbCB1cyB0byB1c2UgImhhY2siIGFzIHRoZSBsb2NhbCBicmFuY2ggd2hlbiBicmFuY2hpbmcKK29mZiBvZiAib3JpZ2luL2hhY2siIChvciAicmVtb3Rlcy9vcmlnaW4vaGFjayIsIG9yIGV2ZW4KKyJyZWZzL3JlbW90ZXMvb3JpZ2luL2hhY2siKS4gIElmIHRoZSBnaXZlbiBuYW1lIGhhcyBubyBzbGFzaCwgb3IgdGhlIGFib3ZlCitndWVzc2luZyByZXN1bHRzIGluIGFuIGVtcHR5IG5hbWUsIHRoZSBndWVzc2luZyBpcyBhYm9ydGVkLiAgWW91IGNhbgorZXhwbGljaXRseSBnaXZlIGEgbmFtZSB3aXRoICctYicgaW4gc3VjaCBhIGNhc2UuCiAKIC0tbm8tdHJhY2s6OgogCUlnbm9yZSB0aGUgYnJhbmNoLmF1dG9zZXR1cG1lcmdlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCkBAIC02OSw3ICs5OSw5IEBACiAJYmFzZWQgc2hhMSBleHByZXNzaW9ucyBzdWNoIGFzICI8YnJhbmNobmFtZT5AXHt5ZXN0ZXJkYXl9Ii4KIAogLW06OgotCUlmIHlvdSBoYXZlIGxvY2FsIG1vZGlmaWNhdGlvbnMgdG8gb25lIG9yIG1vcmUgZmlsZXMgdGhhdAorLS1tZXJnZTo6CisJV2hlbiBzd2l0Y2hpbmcgYnJhbmNoZXMsCisJaWYgeW91IGhhdmUgbG9jYWwgbW9kaWZpY2F0aW9ucyB0byBvbmUgb3IgbW9yZSBmaWxlcyB0aGF0CiAJYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGJyYW5jaCBhbmQgdGhlIGJyYW5jaCB0bwogCXdoaWNoIHlvdSBhcmUgc3dpdGNoaW5nLCB0aGUgY29tbWFuZCByZWZ1c2VzIHRvIHN3aXRjaAogCWJyYW5jaGVzIGluIG9yZGVyIHRvIHByZXNlcnZlIHlvdXIgbW9kaWZpY2F0aW9ucyBpbiBjb250ZXh0LgpAQCAtODEsNiArMTEzLDE2IEBACiBwYXRocyBhcmUgbGVmdCB1bm1lcmdlZCwgYW5kIHlvdSBuZWVkIHRvIHJlc29sdmUgdGhlIGNvbmZsaWN0cwogYW5kIG1hcmsgdGhlIHJlc29sdmVkIHBhdGhzIHdpdGggYGdpdCBhZGRgIChvciBgZ2l0IHJtYCBpZiB0aGUgbWVyZ2UKIHNob3VsZCByZXN1bHQgaW4gZGVsZXRpb24gb2YgdGhlIHBhdGgpLgorKworV2hlbiBjaGVja2luZyBvdXQgcGF0aHMgZnJvbSB0aGUgaW5kZXgsIHRoaXMgb3B0aW9uIGxldHMgeW91IHJlY3JlYXRlCit0aGUgY29uZmxpY3RlZCBtZXJnZSBpbiB0aGUgc3BlY2lmaWVkIHBhdGhzLgorCistLWNvbmZsaWN0PTxzdHlsZT46OgorCVRoZSBzYW1lIGFzIC0tbWVyZ2Ugb3B0aW9uIGFib3ZlLCBidXQgY2hhbmdlcyB0aGUgd2F5IHRoZQorCWNvbmZsaWN0aW5nIGh1bmtzIGFyZSBwcmVzZW50ZWQsIG92ZXJyaWRpbmcgdGhlCisJbWVyZ2UuY29uZmxpY3RzdHlsZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgUG9zc2libGUgdmFsdWVzIGFyZQorCSJtZXJnZSIgKGRlZmF1bHQpIGFuZCAiZGlmZjMiIChpbiBhZGRpdGlvbiB0byB3aGF0IGlzIHNob3duIGJ5CisJIm1lcmdlIiBzdHlsZSwgc2hvd3MgdGhlIG9yaWdpbmFsIGNvbnRlbnRzKS4KIAogPG5ld19icmFuY2g+OjoKIAlOYW1lIGZvciB0aGUgbmV3IGJyYW5jaC4KQEAgLTE5MCw3ICsyMzIsNiBAQAogLS0tLS0tLS0tLS0tCiAkIGdpdCBjaGVja291dCAtbSBteXRvcGljCiBBdXRvLW1lcmdpbmcgZnJvdHoKLW1lcmdlOiB3YXJuaW5nOiBjb25mbGljdHMgZHVyaW5nIG1lcmdlCiBFUlJPUjogTWVyZ2UgY29uZmxpY3QgaW4gZnJvdHoKIGZhdGFsOiBtZXJnZSBwcm9ncmFtIGZhaWxlZAogLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQKaW5kZXggMGUxNGU3My4uOTVmMDhiOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY2xvbmUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNsb25lLnR4dApAQCAtOTAsNiArOTAsMTEgQEAKIAlPcGVyYXRlIHF1aWV0bHkuICBUaGlzIGZsYWcgaXMgYWxzbyBwYXNzZWQgdG8gdGhlIGByc3luYycKIAljb21tYW5kIHdoZW4gZ2l2ZW4uCiAKKy0tdmVyYm9zZTo6Cistdjo6CisJRGlzcGxheSB0aGUgcHJvZ3Jlc3NiYXIsIGV2ZW4gaW4gY2FzZSB0aGUgc3RhbmRhcmQgb3V0cHV0IGlzIG5vdAorCWEgdGVybWluYWwuCisKIC0tbm8tY2hlY2tvdXQ6OgogLW46OgogCU5vIGNoZWNrb3V0IG9mIEhFQUQgaXMgcGVyZm9ybWVkIGFmdGVyIHRoZSBjbG9uZSBpcyBjb21wbGV0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb21taXQudHh0CmluZGV4IDVjY2UzYTMuLmI1ZDgxYmUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY29tbWl0LnR4dApAQCAtMjksNyArMjksOCBAQAogCiAzLiBieSBsaXN0aW5nIGZpbGVzIGFzIGFyZ3VtZW50cyB0byB0aGUgJ2NvbW1pdCcgY29tbWFuZCwgaW4gd2hpY2gKICAgIGNhc2UgdGhlIGNvbW1pdCB3aWxsIGlnbm9yZSBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXgsIGFuZCBpbnN0ZWFkCi0gICByZWNvcmQgdGhlIGN1cnJlbnQgY29udGVudCBvZiB0aGUgbGlzdGVkIGZpbGVzOworICAgcmVjb3JkIHRoZSBjdXJyZW50IGNvbnRlbnQgb2YgdGhlIGxpc3RlZCBmaWxlcyAod2hpY2ggbXVzdCBhbHJlYWR5CisgICBiZSBrbm93biB0byBnaXQpOwogCiA0LiBieSB1c2luZyB0aGUgLWEgc3dpdGNoIHdpdGggdGhlICdjb21taXQnIGNvbW1hbmQgdG8gYXV0b21hdGljYWxseQogICAgImFkZCIgY2hhbmdlcyBmcm9tIGFsbCBrbm93biBmaWxlcyAoaS5lLiBhbGwgZmlsZXMgdGhhdCBhcmUgYWxyZWFkeQpAQCAtNzUsOCArNzYsMTAgQEAKIAlyZWFkIHRoZSBtZXNzYWdlIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0LgogCiAtLWF1dGhvcj08YXV0aG9yPjo6Ci0JT3ZlcnJpZGUgdGhlIGF1dGhvciBuYW1lIHVzZWQgaW4gdGhlIGNvbW1pdC4gIFVzZQotCWBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPmAgZm9ybWF0LgorCU92ZXJyaWRlIHRoZSBhdXRob3IgbmFtZSB1c2VkIGluIHRoZSBjb21taXQuICBZb3UgY2FuIHVzZSB0aGUKKwlzdGFuZGFyZCBgQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT5gIGZvcm1hdC4gIE90aGVyd2lzZSwKKwlhbiBleGlzdGluZyBjb21taXQgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBzdHJpbmcgYW5kIGl0cyBhdXRob3IKKwluYW1lIGlzIHVzZWQuCiAKIC1tIDxtc2c+OjoKIC0tbWVzc2FnZT08bXNnPjo6CkBAIC0xNDMsNiArMTQ2LDEwIEBACiAtLS0tLS0KIGJ1dCBjYW4gYmUgdXNlZCB0byBhbWVuZCBhIG1lcmdlIGNvbW1pdC4KIC0tCisrCitZb3Ugc2hvdWxkIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiByZXdyaXRpbmcgaGlzdG9yeSBpZiB5b3UKK2FtZW5kIGEgY29tbWl0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBwdWJsaXNoZWQuICAoU2VlIHRoZSAiUkVDT1ZFUklORworRlJPTSBVUFNUUkVBTSBSRUJBU0UiIHNlY3Rpb24gaW4gbGlua2dpdDpnaXQtcmViYXNlWzFdLikKIAogLWk6OgogLS1pbmNsdWRlOjoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNvdW50LW9iamVjdHMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY291bnQtb2JqZWN0cy50eHQKaW5kZXggNzVhOGRhMS4uNmJjMWMyMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY291bnQtb2JqZWN0cy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY291bnQtb2JqZWN0cy50eHQKQEAgLTIxLDggKzIxLDkgQEAKIC0tdmVyYm9zZTo6CiAJSW4gYWRkaXRpb24gdG8gdGhlIG51bWJlciBvZiBsb29zZSBvYmplY3RzIGFuZCBkaXNrCiAJc3BhY2UgY29uc3VtZWQsIGl0IHJlcG9ydHMgdGhlIG51bWJlciBvZiBpbi1wYWNrCi0Jb2JqZWN0cywgbnVtYmVyIG9mIHBhY2tzLCBhbmQgbnVtYmVyIG9mIG9iamVjdHMgdGhhdCBjYW4gYmUKLQlyZW1vdmVkIGJ5IHJ1bm5pbmcgYGdpdCBwcnVuZS1wYWNrZWRgLgorCW9iamVjdHMsIG51bWJlciBvZiBwYWNrcywgZGlzayBzcGFjZSBjb25zdW1lZCBieSB0aG9zZSBwYWNrcywKKwlhbmQgbnVtYmVyIG9mIG9iamVjdHMgdGhhdCBjYW4gYmUgcmVtb3ZlZCBieSBydW5uaW5nCisJYGdpdCBwcnVuZS1wYWNrZWRgLgogCiAKIEF1dGhvcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZGFlbW9uLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWRhZW1vbi50eHQKaW5kZXggNGJhNGI3NS4uMzZmMDBhZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGFlbW9uLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1kYWVtb24udHh0CkBAIC05LDggKzksOSBAQAogLS0tLS0tLS0KIFt2ZXJzZV0KICdnaXQgZGFlbW9uJyBbLS12ZXJib3NlXSBbLS1zeXNsb2ddIFstLWV4cG9ydC1hbGxdCi0JICAgICBbLS10aW1lb3V0PW5dIFstLWluaXQtdGltZW91dD1uXSBbLS1zdHJpY3QtcGF0aHNdCi0JICAgICBbLS1iYXNlLXBhdGg9cGF0aF0gWy0tdXNlci1wYXRoIHwgLS11c2VyLXBhdGg9cGF0aF0KKwkgICAgIFstLXRpbWVvdXQ9bl0gWy0taW5pdC10aW1lb3V0PW5dIFstLW1heC1jb25uZWN0aW9ucz1uXQorCSAgICAgWy0tc3RyaWN0LXBhdGhzXSBbLS1iYXNlLXBhdGg9cGF0aF0gWy0tYmFzZS1wYXRoLXJlbGF4ZWRdCisJICAgICBbLS11c2VyLXBhdGggfCAtLXVzZXItcGF0aD1wYXRoXQogCSAgICAgWy0taW50ZXJwb2xhdGVkLXBhdGg9cGF0aHRlbXBsYXRlXQogCSAgICAgWy0tcmV1c2VhZGRyXSBbLS1kZXRhY2hdIFstLXBpZC1maWxlPWZpbGVdCiAJICAgICBbLS1lbmFibGU9c2VydmljZV0gWy0tZGlzYWJsZT1zZXJ2aWNlXQpAQCAtOTksMTUgKzEwMCwxOSBAQAogCWl0IHRha2VzIGZvciB0aGUgc2VydmVyIHRvIHByb2Nlc3MgdGhlIHN1Yi1yZXF1ZXN0IGFuZCB0aW1lIHNwZW50CiAJd2FpdGluZyBmb3IgbmV4dCBjbGllbnQncyByZXF1ZXN0LgogCistLW1heC1jb25uZWN0aW9uczo6CisJTWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCBjbGllbnRzLCBkZWZhdWx0cyB0byAzMi4gIFNldCBpdCB0bworCXplcm8gZm9yIG5vIGxpbWl0LgorCiAtLXN5c2xvZzo6CiAJTG9nIHRvIHN5c2xvZyBpbnN0ZWFkIG9mIHN0ZGVyci4gTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGRvZXMgbm90IGltcGx5CiAJLS12ZXJib3NlLCB0aHVzIGJ5IGRlZmF1bHQgb25seSBlcnJvciBjb25kaXRpb25zIHdpbGwgYmUgbG9nZ2VkLgogCiAtLXVzZXItcGF0aDo6CiAtLXVzZXItcGF0aD1wYXRoOjoKLQlBbGxvdyB+dXNlciBub3RhdGlvbiB0byBiZSB1c2VkIGluIHJlcXVlc3RzLiAgV2hlbgorCUFsbG93IHt0aWxkZX11c2VyIG5vdGF0aW9uIHRvIGJlIHVzZWQgaW4gcmVxdWVzdHMuICBXaGVuCiAJc3BlY2lmaWVkIHdpdGggbm8gcGFyYW1ldGVyLCByZXF1ZXN0cyB0bwotCWdpdDovL2hvc3QvfmFsaWNlL2ZvbyBpcyB0YWtlbiBhcyBhIHJlcXVlc3QgdG8gYWNjZXNzCisJZ2l0Oi8vaG9zdC97dGlsZGV9YWxpY2UvZm9vIGlzIHRha2VuIGFzIGEgcmVxdWVzdCB0byBhY2Nlc3MKIAknZm9vJyByZXBvc2l0b3J5IGluIHRoZSBob21lIGRpcmVjdG9yeSBvZiB1c2VyIGBhbGljZWAuCiAJSWYgYC0tdXNlci1wYXRoPXBhdGhgIGlzIHNwZWNpZmllZCwgdGhlIHNhbWUgcmVxdWVzdCBpcwogCXRha2VuIGFzIGEgcmVxdWVzdCB0byBhY2Nlc3MgYHBhdGgvZm9vYCByZXBvc2l0b3J5IGluCkBAIC0yNjUsNiArMjcwLDE1IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAorRU5WSVJPTk1FTlQKKy0tLS0tLS0tLS0tCisnZ2l0LWRhZW1vbicgd2lsbCBzZXQgUkVNT1RFX0FERFIgdG8gdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGNsaWVudAordGhhdCBjb25uZWN0ZWQgdG8gaXQsIGlmIHRoZSBJUCBhZGRyZXNzIGlzIGF2YWlsYWJsZS4gUkVNT1RFX0FERFIgd2lsbAorYmUgYXZhaWxhYmxlIGluIHRoZSBlbnZpcm9ubWVudCBvZiBob29rcyBjYWxsZWQgd2hlbgorc2VydmljZXMgYXJlIHBlcmZvcm1lZC4KKworCisKIEF1dGhvcgogLS0tLS0tCiBXcml0dGVuIGJ5IExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0Bvc2RsLm9yZz4sIFlPU0hJRlVKSSBIaWRlYWtpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1kZXNjcmliZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1kZXNjcmliZS50eHQKaW5kZXggNTlhNmZkMS4uYTMwYzVhYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGVzY3JpYmUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWRlc2NyaWJlLnR4dApAQCAtMTgsNiArMTgsOSBAQAogYWRkaXRpb25hbCBjb21taXRzIG9uIHRvcCBvZiB0aGUgdGFnZ2VkIG9iamVjdCBhbmQgdGhlCiBhYmJyZXZpYXRlZCBvYmplY3QgbmFtZSBvZiB0aGUgbW9zdCByZWNlbnQgY29tbWl0LgogCitCeSBkZWZhdWx0ICh3aXRob3V0IC0tYWxsIG9yIC0tdGFncykgYGdpdCBkZXNjcmliZWAgb25seSBzaG93cworYW5ub3RhdGVkIHRhZ3MuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjcmVhdGluZyBhbm5vdGF0ZWQgdGFncworc2VlIHRoZSAtYSBhbmQgLXMgb3B0aW9ucyB0byBsaW5rZ2l0OmdpdC10YWdbMV0uCiAKIE9QVElPTlMKIC0tLS0tLS0KQEAgLTI2LDExICsyOSwxMyBAQAogCiAtLWFsbDo6CiAJSW5zdGVhZCBvZiB1c2luZyBvbmx5IHRoZSBhbm5vdGF0ZWQgdGFncywgdXNlIGFueSByZWYKLQlmb3VuZCBpbiBgLmdpdC9yZWZzL2AuCisJZm91bmQgaW4gYC5naXQvcmVmcy9gLiAgVGhpcyBvcHRpb24gZW5hYmxlcyBtYXRjaGluZworCWFueSBrbm93biBicmFuY2gsIHJlbW90ZSBicmFuY2gsIG9yIGxpZ2h0d2VpZ2h0IHRhZy4KIAogLS10YWdzOjoKIAlJbnN0ZWFkIG9mIHVzaW5nIG9ubHkgdGhlIGFubm90YXRlZCB0YWdzLCB1c2UgYW55IHRhZwotCWZvdW5kIGluIGAuZ2l0L3JlZnMvdGFnc2AuCisJZm91bmQgaW4gYC5naXQvcmVmcy90YWdzYC4gIFRoaXMgb3B0aW9uIGVuYWJsZXMgbWF0Y2hpbmcKKwlhIGxpZ2h0d2VpZ2h0IChub24tYW5ub3RhdGVkKSB0YWcuCiAKIC0tY29udGFpbnM6OgogCUluc3RlYWQgb2YgZmluZGluZyB0aGUgdGFnIHRoYXQgcHJlZGF0ZXMgdGhlIGNvbW1pdCwgZmluZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi10cmVlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYtdHJlZS50eHQKaW5kZXggNGU4MzA2Ny4uMjNiN2FiZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi10cmVlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1kaWZmLXRyZWUudHh0CkBAIC00OSwxMyArNDksMjIgQEAKIC0tc3RkaW46OgogCVdoZW4gJy0tc3RkaW4nIGlzIHNwZWNpZmllZCwgdGhlIGNvbW1hbmQgZG9lcyBub3QgdGFrZQogCTx0cmVlLWlzaD4gYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQgbGluZS4gIEluc3RlYWQsIGl0Ci0JcmVhZHMgZWl0aGVyIG9uZSA8Y29tbWl0PiBvciBhIGxpc3Qgb2YgPGNvbW1pdD4KLQlzZXBhcmF0ZWQgd2l0aCBhIHNpbmdsZSBzcGFjZSBmcm9tIGl0cyBzdGFuZGFyZCBpbnB1dC4KKwlyZWFkcyBsaW5lcyBjb250YWluaW5nIGVpdGhlciB0d28gPHRyZWU+LCBvbmUgPGNvbW1pdD4sIG9yIGEKKwlsaXN0IG9mIDxjb21taXQ+IGZyb20gaXRzIHN0YW5kYXJkIGlucHV0LiAgKFVzZSBhIHNpbmdsZSBzcGFjZQorCWFzIHNlcGFyYXRvci4pCiArCi1XaGVuIGEgc2luZ2xlIGNvbW1pdCBpcyBnaXZlbiBvbiBvbmUgbGluZSBvZiBzdWNoIGlucHV0LCBpdCBjb21wYXJlcwotdGhlIGNvbW1pdCB3aXRoIGl0cyBwYXJlbnRzLiAgVGhlIGZvbGxvd2luZyBmbGFncyBmdXJ0aGVyIGFmZmVjdHMgaXRzCi1iZWhhdmlvci4gIFRoZSByZW1haW5pbmcgY29tbWl0cywgd2hlbiBnaXZlbiwgYXJlIHVzZWQgYXMgaWYgdGhleSBhcmUKK1doZW4gdHdvIHRyZWVzIGFyZSBnaXZlbiwgaXQgY29tcGFyZXMgdGhlIGZpcnN0IHRyZWUgd2l0aCB0aGUgc2Vjb25kLgorV2hlbiBhIHNpbmdsZSBjb21taXQgaXMgZ2l2ZW4sIGl0IGNvbXBhcmVzIHRoZSBjb21taXQgd2l0aCBpdHMKK3BhcmVudHMuICBUaGUgcmVtYWluaW5nIGNvbW1pdHMsIHdoZW4gZ2l2ZW4sIGFyZSB1c2VkIGFzIGlmIHRoZXkgYXJlCiBwYXJlbnRzIG9mIHRoZSBmaXJzdCBjb21taXQuCisrCitXaGVuIGNvbXBhcmluZyB0d28gdHJlZXMsIHRoZSBJRCBvZiBib3RoIHRyZWVzIChzZXBhcmF0ZWQgYnkgYSBzcGFjZQorYW5kIHRlcm1pbmF0ZWQgYnkgYSBuZXdsaW5lKSBpcyBwcmludGVkIGJlZm9yZSB0aGUgZGlmZmVyZW5jZS4gIFdoZW4KK2NvbXBhcmluZyBjb21taXRzLCB0aGUgSUQgb2YgdGhlIGZpcnN0IChvciBvbmx5KSBjb21taXQsIGZvbGxvd2VkIGJ5IGEKK25ld2xpbmUsIGlzIHByaW50ZWQuCisrCitUaGUgZm9sbG93aW5nIGZsYWdzIGZ1cnRoZXIgYWZmZWN0IHRoZSBiZWhhdmlvciB3aGVuIGNvbXBhcmluZworY29tbWl0cyAoYnV0IG5vdCB0cmVlcykuCiAKIC1tOjoKIAlCeSBkZWZhdWx0LCAnZ2l0LWRpZmYtdHJlZSAtLXN0ZGluJyBkb2VzIG5vdCBzaG93CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1kaWZmLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYudHh0CmluZGV4IGM1M2ViYTUuLmEyZjE5MmYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYudHh0CkBAIC0zMyw2ICszMyw3IEBACiAJY29tbWl0IHJlbGF0aXZlIHRvIHRoZSBuYW1lZCA8Y29tbWl0Pi4gIFR5cGljYWxseSB5b3UKIAl3b3VsZCB3YW50IGNvbXBhcmlzb24gd2l0aCB0aGUgbGF0ZXN0IGNvbW1pdCwgc28gaWYgeW91CiAJZG8gbm90IGdpdmUgPGNvbW1pdD4sIGl0IGRlZmF1bHRzIHRvIEhFQUQuCisJLS1zdGFnZWQgaXMgYSBzeW5vbnltIG9mIC0tY2FjaGVkLgogCiAnZ2l0IGRpZmYnIFstLW9wdGlvbnNdIDxjb21taXQ+IFstLV0gWzxwYXRoPi4uLl06OgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWV4cG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWV4cG9ydC50eHQKaW5kZXggNTM5ZGVjYi4uMGM5ZWI1NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1leHBvcnQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZhc3QtZXhwb3J0LnR4dApAQCAtMTUsNyArMTUsNyBAQAogVGhpcyBwcm9ncmFtIGR1bXBzIHRoZSBnaXZlbiByZXZpc2lvbnMgaW4gYSBmb3JtIHN1aXRhYmxlIHRvIGJlIHBpcGVkCiBpbnRvICdnaXQtZmFzdC1pbXBvcnQnLgogCi1Zb3UgY2FuIHVzZSBpdCBhcyBhIGh1bWFuIHJlYWRhYmxlIGJ1bmRsZSByZXBsYWNlbWVudCAoc2VlCitZb3UgY2FuIHVzZSBpdCBhcyBhIGh1bWFuLXJlYWRhYmxlIGJ1bmRsZSByZXBsYWNlbWVudCAoc2VlCiBsaW5rZ2l0OmdpdC1idW5kbGVbMV0pLCBvciBhcyBhIGtpbmQgb2YgYW4gaW50ZXJhY3RpdmUKICdnaXQtZmlsdGVyLWJyYW5jaCcuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWZpbHRlci1icmFuY2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZmlsdGVyLWJyYW5jaC50eHQKaW5kZXggYjBlNzEwZC4uZmVkNmRlNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZmlsdGVyLWJyYW5jaC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZmlsdGVyLWJyYW5jaC50eHQKQEAgLTM2LDcgKzM2LDkgQEAKIGJlIGFibGUgdG8gZWFzaWx5IHB1c2ggYW5kIGRpc3RyaWJ1dGUgdGhlIHJld3JpdHRlbiBicmFuY2ggb24gdG9wIG9mIHRoZQogb3JpZ2luYWwgYnJhbmNoLiAgUGxlYXNlIGRvIG5vdCB1c2UgdGhpcyBjb21tYW5kIGlmIHlvdSBkbyBub3Qga25vdyB0aGUKIGZ1bGwgaW1wbGljYXRpb25zLCBhbmQgYXZvaWQgdXNpbmcgaXQgYW55d2F5LCBpZiBhIHNpbXBsZSBzaW5nbGUgY29tbWl0Ci13b3VsZCBzdWZmaWNlIHRvIGZpeCB5b3VyIHByb2JsZW0uCit3b3VsZCBzdWZmaWNlIHRvIGZpeCB5b3VyIHByb2JsZW0uICAoU2VlIHRoZSAiUkVDT1ZFUklORyBGUk9NIFVQU1RSRUFNCitSRUJBU0UiIHNlY3Rpb24gaW4gbGlua2dpdDpnaXQtcmViYXNlWzFdIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0CityZXdyaXRpbmcgcHVibGlzaGVkIGhpc3RvcnkuKQogCiBBbHdheXMgdmVyaWZ5IHRoYXQgdGhlIHJld3JpdHRlbiB2ZXJzaW9uIGlzIGNvcnJlY3Q6IFRoZSBvcmlnaW5hbCByZWZzLAogaWYgZGlmZmVyZW50IGZyb20gdGhlIHJld3JpdHRlbiBvbmVzLCB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3ItZWFjaC1yZWYudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZm9yLWVhY2gtcmVmLnR4dAppbmRleCBlYmQ3YzVmLi41MDYxZDNlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3ItZWFjaC1yZWYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZvci1lYWNoLXJlZi50eHQKQEAgLTc0LDYgKzc0LDcgQEAKIAogcmVmbmFtZTo6CiAJVGhlIG5hbWUgb2YgdGhlIHJlZiAodGhlIHBhcnQgYWZ0ZXIgJEdJVF9ESVIvKS4KKwlGb3IgYSBub24tYW1iaWd1b3VzIHNob3J0IG5hbWUgb2YgdGhlIHJlZiBhcHBlbmQgYDpzaG9ydGAuCiAKIG9iamVjdHR5cGU6OgogCVRoZSB0eXBlIG9mIHRoZSBvYmplY3QgKGBibG9iYCwgYHRyZWVgLCBgY29tbWl0YCwgYHRhZ2ApLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZm9ybWF0LXBhdGNoLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWZvcm1hdC1wYXRjaC50eHQKaW5kZXggNzQyNjEwOS4uMTFhN2Q3NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZm9ybWF0LXBhdGNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1mb3JtYXQtcGF0Y2gudHh0CkBAIC01OSw4ICs1OSwxMCBAQAogSWYgLW8gaXMgc3BlY2lmaWVkLCBvdXRwdXQgZmlsZXMgYXJlIGNyZWF0ZWQgaW4gPGRpcj4uICBPdGhlcndpc2UKIHRoZXkgYXJlIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAKLUlmIC1uIGlzIHNwZWNpZmllZCwgaW5zdGVhZCBvZiAiW1BBVENIXSBTdWJqZWN0IiwgdGhlIGZpcnN0IGxpbmUKLWlzIGZvcm1hdHRlZCBhcyAiW1BBVENIIG4vbV0gU3ViamVjdCIuCitCeSBkZWZhdWx0LCB0aGUgc3ViamVjdCBvZiBhIHNpbmdsZSBwYXRjaCBpcyAiW1BBVENIXSBGaXJzdCBMaW5lIiBhbmQKK3RoZSBzdWJqZWN0IHdoZW4gbXVsdGlwbGUgcGF0Y2hlcyBhcmUgb3V0cHV0IGlzICJbUEFUQ0ggbi9tXSBGaXJzdAorTGluZSIuIFRvIGZvcmNlIDEvMSB0byBiZSBhZGRlZCBmb3IgYSBzaW5nbGUgcGF0Y2gsIHVzZSAtbi4gIFRvIG9taXQKK3BhdGNoIG51bWJlcnMgZnJvbSB0aGUgc3ViamVjdCwgdXNlIC1OCiAKIElmIGdpdmVuIC0tdGhyZWFkLCAnZ2l0LWZvcm1hdC1wYXRjaCcgd2lsbCBnZW5lcmF0ZSBJbi1SZXBseS1UbyBhbmQKIFJlZmVyZW5jZXMgaGVhZGVycyB0byBtYWtlIHRoZSBzZWNvbmQgYW5kIHN1YnNlcXVlbnQgcGF0Y2ggbWFpbHMgYXBwZWFyCkBAIC04Miw3ICs4NCw3IEBACiAKIC1uOjoKIC0tbnVtYmVyZWQ6OgotCU5hbWUgb3V0cHV0IGluICdbUEFUQ0ggbi9tXScgZm9ybWF0LgorCU5hbWUgb3V0cHV0IGluICdbUEFUQ0ggbi9tXScgZm9ybWF0LCBldmVuIHdpdGggYSBzaW5nbGUgcGF0Y2guCiAKIC1OOjoKIC0tbm8tbnVtYmVyZWQ6OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZ3JlcC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1ncmVwLnR4dAppbmRleCBmYTRkMTMzLi41NTNkYTZjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1ncmVwLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1ncmVwLnR4dApAQCAtMTUsNiArMTUsNyBAQAogCSAgIFstRSB8IC0tZXh0ZW5kZWQtcmVnZXhwXSBbLUcgfCAtLWJhc2ljLXJlZ2V4cF0KIAkgICBbLUYgfCAtLWZpeGVkLXN0cmluZ3NdIFstbl0KIAkgICBbLWwgfCAtLWZpbGVzLXdpdGgtbWF0Y2hlc10gWy1MIHwgLS1maWxlcy13aXRob3V0LW1hdGNoXQorCSAgIFsteiB8IC0tbnVsbF0KIAkgICBbLWMgfCAtLWNvdW50XSBbLS1hbGwtbWF0Y2hdCiAJICAgWy1BIDxwb3N0LWNvbnRleHQ+XSBbLUIgPHByZS1jb250ZXh0Pl0gWy1DIDxjb250ZXh0Pl0KIAkgICBbLWYgPGZpbGU+XSBbLWVdIDxwYXR0ZXJuPgpAQCAtOTQsNiArOTUsMTEgQEAKIAlGb3IgYmV0dGVyIGNvbXBhdGliaWxpdHkgd2l0aCAnZ2l0LWRpZmYnLCAtLW5hbWUtb25seSBpcyBhCiAJc3lub255bSBmb3IgLS1maWxlcy13aXRoLW1hdGNoZXMuCiAKKy16OjoKKy0tbnVsbDo6CisJT3V0cHV0IFwwIGluc3RlYWQgb2YgdGhlIGNoYXJhY3RlciB0aGF0IG5vcm1hbGx5IGZvbGxvd3MgYQorCWZpbGUgbmFtZS4KKwogLWM6OgogLS1jb3VudDo6CiAJSW5zdGVhZCBvZiBzaG93aW5nIGV2ZXJ5IG1hdGNoZWQgbGluZSwgc2hvdyB0aGUgbnVtYmVyIG9mCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1ndWkudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZ3VpLnR4dAppbmRleCAwZTY1MGY0Li5kMGJjOThiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1ndWkudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWd1aS50eHQKQEAgLTY1LDkgKzY1LDI4IEBACiAJZXhhbXBsZSB0aGUgZmlsZSBpcyByZWFkIGZyb20gdGhlIG9iamVjdCBkYXRhYmFzZSBhbmQgbm90CiAJdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgogCitnaXQgZ3VpIGJsYW1lIC0tbGluZT0xMDAgTWFrZWZpbGU6OgorCisJTG9hZHMgYW5ub3RhdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlIGFuZCBhdXRvbWF0aWNhbGx5CisJc2Nyb2xscyB0aGUgdmlldyB0byBjZW50ZXIgb24gbGluZSAnMTAwJy4KKwogZ2l0IGd1aSBjaXRvb2w6OgogCiAJTWFrZSBvbmUgY29tbWl0IGFuZCByZXR1cm4gdG8gdGhlIHNoZWxsIHdoZW4gaXQgaXMgY29tcGxldGUuCisJVGhpcyBjb21tYW5kIHJldHVybnMgYSBub24temVybyBleGl0IGNvZGUgaWYgdGhlIHdpbmRvdyB3YXMKKwljbG9zZWQgaW4gYW55IHdheSBvdGhlciB0aGFuIGJ5IG1ha2luZyBhIGNvbW1pdC4KKworZ2l0IGd1aSBjaXRvb2wgLS1hbWVuZDo6CisKKwlBdXRvbWF0aWNhbGx5IGVudGVyIHRoZSAnQW1lbmQgTGFzdCBDb21taXQnIG1vZGUgb2YKKwl0aGUgaW50ZXJmYWNlLgorCitnaXQgZ3VpIGNpdG9vbCAtLW5vY29tbWl0OjoKKworCUJlaGF2ZSBhcyBub3JtYWwgY2l0b29sLCBidXQgaW5zdGVhZCBvZiBtYWtpbmcgYSBjb21taXQKKwlzaW1wbHkgdGVybWluYXRlIHdpdGggYSB6ZXJvIGV4aXQgY29kZS4gSXQgc3RpbGwgY2hlY2tzCisJdGhhdCB0aGUgaW5kZXggZG9lcyBub3QgY29udGFpbiBhbnkgdW5tZXJnZWQgZW50cmllcywgc28KKwl5b3UgY2FuIHVzZSBpdCBhcyBhIEdVSSB2ZXJzaW9uIG9mIGxpbmtnaXQ6Z2l0LW1lcmdldG9vbFsxXQogCiBnaXQgY2l0b29sOjoKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtaGFzaC1vYmplY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtaGFzaC1vYmplY3QudHh0CmluZGV4IGFjOTI4ZTEuLjBhZjQwY2YgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWhhc2gtb2JqZWN0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1oYXNoLW9iamVjdC50eHQKQEAgLTgsNyArOCw5IEBACiAKIFNZTk9QU0lTCiAtLS0tLS0tLQotJ2dpdCBoYXNoLW9iamVjdCcgWy10IDx0eXBlPl0gWy13XSBbLS1zdGRpbiB8IC0tc3RkaW4tcGF0aHNdIFstLV0gPGZpbGU+Li4uCitbdmVyc2VdCisnZ2l0IGhhc2gtb2JqZWN0JyBbLXQgPHR5cGU+XSBbLXddIFstLXBhdGg9PGZpbGU+fC0tbm8tZmlsdGVyc10gWy0tc3RkaW5dIFstLV0gPGZpbGU+Li4uCisnZ2l0IGhhc2gtb2JqZWN0JyBbLXQgPHR5cGU+XSBbLXddIC0tc3RkaW4tcGF0aHMgPCA8bGlzdC1vZi1wYXRocz4KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC0zNSw2ICszNywyMiBAQAogLS1zdGRpbi1wYXRoczo6CiAJUmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4gaW5zdGVhZCBvZiBmcm9tIHRoZSBjb21tYW5kLWxpbmUuCiAKKy0tcGF0aDo6CisJSGFzaCBvYmplY3QgYXMgaXQgd2VyZSBsb2NhdGVkIGF0IHRoZSBnaXZlbiBwYXRoLiBUaGUgbG9jYXRpb24gb2YKKwlmaWxlIGRvZXMgbm90IGRpcmVjdGx5IGluZmx1ZW5jZSBvbiB0aGUgaGFzaCB2YWx1ZSwgYnV0IHBhdGggaXMKKwl1c2VkIHRvIGRldGVybWluZSB3aGF0IGdpdCBmaWx0ZXJzIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSBvYmplY3QKKwliZWZvcmUgaXQgY2FuIGJlIHBsYWNlZCB0byB0aGUgb2JqZWN0IGRhdGFiYXNlLCBhbmQsIGFzIHJlc3VsdCBvZgorCWFwcGx5aW5nIGZpbHRlcnMsIHRoZSBhY3R1YWwgYmxvYiBwdXQgaW50byB0aGUgb2JqZWN0IGRhdGFiYXNlIG1heQorCWRpZmZlciBmcm9tIHRoZSBnaXZlbiBmaWxlLiBUaGlzIG9wdGlvbiBpcyBtYWlubHkgdXNlZnVsIGZvciBoYXNoaW5nCisJdGVtcG9yYXJ5IGZpbGVzIGxvY2F0ZWQgb3V0c2lkZSBvZiB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgZmlsZXMKKwlyZWFkIGZyb20gc3RkaW4uCisKKy0tbm8tZmlsdGVyczo6CisJSGFzaCB0aGUgY29udGVudHMgYXMgaXMsIGlnbm9yaW5nIGFueSBpbnB1dCBmaWx0ZXIgdGhhdCB3b3VsZAorCWhhdmUgYmVlbiBjaG9zZW4gYnkgdGhlIGF0dHJpYnV0ZXMgbWVjaGFuaXNtLCBpbmNsdWRpbmcgY3JsZgorCWNvbnZlcnNpb24uIElmIHRoZSBmaWxlIGlzIHJlYWQgZnJvbSBzdGFuZGFyZCBpbnB1dCB0aGVuIHRoaXMKKwlpcyBhbHdheXMgaW1wbGllZCwgdW5sZXNzIHRoZSAtLXBhdGggb3B0aW9uIGlzIGdpdmVuLgorCiBBdXRob3IKIC0tLS0tLQogV3JpdHRlbiBieSBKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1oZWxwLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWhlbHAudHh0CmluZGV4IGY0MTQ1ODMuLmQ5YjljMzQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWhlbHAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWhlbHAudHh0CkBAIC0xMTIsNyArMTEyLDkgQEAKIHdpbGwgdHJ5IHRvIHVzZSBrb25xdWVyb3IgZmlyc3QuIEJ1dCB0aGlzIG1heSBmYWlsIChmb3IgZXhhbXBsZSBpZgogRElTUExBWSBpcyBub3Qgc2V0KSBhbmQgaW4gdGhhdCBjYXNlIGVtYWNzJyB3b21hbiBtb2RlIHdpbGwgYmUgdHJpZWQuCiAKLUlmIGV2ZXJ5dGhpbmcgZmFpbHMgdGhlICdtYW4nIHByb2dyYW0gd2lsbCBiZSB0cmllZCBhbnl3YXkuCitJZiBldmVyeXRoaW5nIGZhaWxzLCBvciBpZiBubyB2aWV3ZXIgaXMgY29uZmlndXJlZCwgdGhlIHZpZXdlciBzcGVjaWZpZWQKK2luIHRoZSBHSVRfTUFOX1ZJRVdFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aWxsIGJlIHRyaWVkLiAgSWYgdGhhdAorZmFpbHMgdG9vLCB0aGUgJ21hbicgcHJvZ3JhbSB3aWxsIGJlIHRyaWVkIGFueXdheS4KIAogbWFuLjx0b29sPi5wYXRoCiB+fn5+fn5+fn5+fn5+fn4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWltYXAtc2VuZC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1pbWFwLXNlbmQudHh0CmluZGV4IGIzZDhkYTMuLmJkNDlhMGEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWltYXAtc2VuZC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtaW1hcC1zZW5kLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0LWltYXAtc2VuZCAtIER1bXAgYSBtYWlsYm94IGZyb20gc3RkaW4gaW50byBhbiBpbWFwIGZvbGRlcgorZ2l0LWltYXAtc2VuZCAtIFNlbmQgYSBjb2xsZWN0aW9uIG9mIHBhdGNoZXMgZnJvbSBzdGRpbiB0byBhbiBJTUFQIGZvbGRlcgogCiAKIFNZTk9QU0lTCkBAIC0xMyw5ICsxMyw5IEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotVGhpcyBjb21tYW5kIHVwbG9hZHMgYSBtYWlsYm94IGdlbmVyYXRlZCB3aXRoIGdpdC1mb3JtYXQtcGF0Y2gKLWludG8gYW4gaW1hcCBkcmFmdHMgZm9sZGVyLiAgVGhpcyBhbGxvd3MgcGF0Y2hlcyB0byBiZSBzZW50IGFzCi1vdGhlciBlbWFpbCBpcyBzZW50IHdpdGggbWFpbCBjbGllbnRzIHRoYXQgY2Fubm90IHJlYWQgbWFpbGJveAorVGhpcyBjb21tYW5kIHVwbG9hZHMgYSBtYWlsYm94IGdlbmVyYXRlZCB3aXRoICdnaXQtZm9ybWF0LXBhdGNoJworaW50byBhbiBJTUFQIGRyYWZ0cyBmb2xkZXIuICBUaGlzIGFsbG93cyBwYXRjaGVzIHRvIGJlIHNlbnQgYXMKK290aGVyIGVtYWlsIGlzIHdoZW4gdXNpbmcgbWFpbCBjbGllbnRzIHRoYXQgY2Fubm90IHJlYWQgbWFpbGJveAogZmlsZXMgZGlyZWN0bHkuCiAKIFR5cGljYWwgdXNhZ2UgaXMgc29tZXRoaW5nIGxpa2U6CkBAIC0yNiwyMSArMjYsNzUgQEAKIENPTkZJR1VSQVRJT04KIC0tLS0tLS0tLS0tLS0KIAotJ2dpdC1pbWFwLXNlbmQnIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGluIHRoZSByZXBvc2l0b3J5Ci1jb25maWd1cmF0aW9uIGZpbGUgKHNob3duIHdpdGggZXhhbXBsZXMpOgorVG8gdXNlIHRoZSB0b29sLCBpbWFwLmZvbGRlciBhbmQgZWl0aGVyIGltYXAudHVubmVsIG9yIGltYXAuaG9zdCBtdXN0IGJlIHNldAordG8gYXBwcm9wcmlhdGUgdmFsdWVzLgorCitWYXJpYWJsZXMKK35+fn5+fn5+fgorCitpbWFwLmZvbGRlcjo6CisJVGhlIGZvbGRlciB0byBkcm9wIHRoZSBtYWlscyBpbnRvLCB3aGljaCBpcyB0eXBpY2FsbHkgdGhlIERyYWZ0cworCWZvbGRlci4gRm9yIGV4YW1wbGU6ICJJTkJPWC5EcmFmdHMiLCAiSU5CT1gvRHJhZnRzIiBvcgorCSJbR21haWxdL0RyYWZ0cyIuIFJlcXVpcmVkIHRvIHVzZSBpbWFwLXNlbmQuCisKK2ltYXAudHVubmVsOjoKKwlDb21tYW5kIHVzZWQgdG8gc2V0dXAgYSB0dW5uZWwgdG8gdGhlIElNQVAgc2VydmVyIHRocm91Z2ggd2hpY2gKKwljb21tYW5kcyB3aWxsIGJlIHBpcGVkIGluc3RlYWQgb2YgdXNpbmcgYSBkaXJlY3QgbmV0d29yayBjb25uZWN0aW9uCisJdG8gdGhlIHNlcnZlci4gUmVxdWlyZWQgd2hlbiBpbWFwLmhvc3QgaXMgbm90IHNldCB0byB1c2UgaW1hcC1zZW5kLgorCitpbWFwLmhvc3Q6OgorCUEgVVJMIGlkZW50aWZ5aW5nIHRoZSBzZXJ2ZXIuIFVzZSBhIGBpbWFwOi8vYCBwcmVmaXggZm9yIG5vbi1zZWN1cmUKKwljb25uZWN0aW9ucyBhbmQgYSBgaW1hcHM6Ly9gIHByZWZpeCBmb3Igc2VjdXJlIGNvbm5lY3Rpb25zLgorCUlnbm9yZWQgd2hlbiBpbWFwLnR1bm5lbCBpcyBzZXQsIGJ1dCByZXF1aXJlZCB0byB1c2UgaW1hcC1zZW5kCisJb3RoZXJ3aXNlLgorCitpbWFwLnVzZXI6OgorCVRoZSB1c2VybmFtZSB0byB1c2Ugd2hlbiBsb2dnaW5nIGluIHRvIHRoZSBzZXJ2ZXIuCisKK2ltYXAucGFzc3dvcmQ6OgorCVRoZSBwYXNzd29yZCB0byB1c2Ugd2hlbiBsb2dnaW5nIGluIHRvIHRoZSBzZXJ2ZXIuCisKK2ltYXAucG9ydDo6CisJQW4gaW50ZWdlciBwb3J0IG51bWJlciB0byBjb25uZWN0IHRvIG9uIHRoZSBzZXJ2ZXIuCisJRGVmYXVsdHMgdG8gMTQzIGZvciBpbWFwOi8vIGhvc3RzIGFuZCA5OTMgZm9yIGltYXBzOi8vIGhvc3RzLgorCUlnbm9yZWQgd2hlbiBpbWFwLnR1bm5lbCBpcyBzZXQuCisKK2ltYXAuc3NsdmVyaWZ5OjoKKwlBIGJvb2xlYW4gdG8gZW5hYmxlL2Rpc2FibGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUKKwl1c2VkIGJ5IHRoZSBTU0wvVExTIGNvbm5lY3Rpb24uIERlZmF1bHQgaXMgYHRydWVgLiBJZ25vcmVkIHdoZW4KKwlpbWFwLnR1bm5lbCBpcyBzZXQuCisKK0V4YW1wbGVzCit+fn5+fn5+fgorCitVc2luZyB0dW5uZWwgbW9kZToKIAogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIFtpbWFwXQotICAgIEZvbGRlciA9ICJJTkJPWC5EcmFmdHMiCisgICAgZm9sZGVyID0gIklOQk9YLkRyYWZ0cyIKKyAgICB0dW5uZWwgPSAic3NoIC1xIC1DIHVzZXJAZXhhbXBsZS5jb20gL3Vzci9iaW4vaW1hcGQgLi9NYWlsZGlyIDI+IC9kZXYvbnVsbCIKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKLVtpbWFwXQotICAgIFR1bm5lbCA9ICJzc2ggLXEgdXNlckBzZXJ2ZXIuY29tIC91c3IvYmluL2ltYXBkIC4vTWFpbGRpciAyPiAvZGV2L251bGwiCitVc2luZyBkaXJlY3QgbW9kZToKIAorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogW2ltYXBdCi0gICAgSG9zdCA9IGltYXAuc2VydmVyLmNvbQotICAgIFVzZXIgPSBib2IKLSAgICBQYXNzID0gcHdkCi0gICAgUG9ydCA9IDE0MworICAgIGZvbGRlciA9ICJJTkJPWC5EcmFmdHMiCisgICAgaG9zdCA9IGltYXA6Ly9pbWFwLmV4YW1wbGUuY29tCisgICAgdXNlciA9IGJvYgorICAgIHBhc3MgPSBwNHNzdzByZAorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworVXNpbmcgZGlyZWN0IG1vZGUgd2l0aCBTU0w6CisKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KK1tpbWFwXQorICAgIGZvbGRlciA9ICJJTkJPWC5EcmFmdHMiCisgICAgaG9zdCA9IGltYXBzOi8vaW1hcC5leGFtcGxlLmNvbQorICAgIHVzZXIgPSBib2IKKyAgICBwYXNzID0gcDRzc3cwcmQKKyAgICBwb3J0ID0gMTIzCisgICAgc3NsdmVyaWZ5ID0gZmFsc2UKIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbG9nLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWxvZy50eHQKaW5kZXggOTNhMmEyMi4uMzRjZjRlNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbG9nLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1sb2cudHh0CkBAIC00MCw2ICs0MCwxMCBAQAogLS1kZWNvcmF0ZTo6CiAJUHJpbnQgb3V0IHRoZSByZWYgbmFtZXMgb2YgYW55IGNvbW1pdHMgdGhhdCBhcmUgc2hvd24uCiAKKy0tc291cmNlOjoKKwlQcmludCBvdXQgdGhlIHJlZiBuYW1lIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgYnkgd2hpY2ggZWFjaAorCWNvbW1pdCB3YXMgcmVhY2hlZC4KKwogLS1mdWxsLWRpZmY6OgogCVdpdGhvdXQgdGhpcyBmbGFnLCAiZ2l0IGxvZyAtcCA8cGF0aD4uLi4iIHNob3dzIGNvbW1pdHMgdGhhdAogCXRvdWNoIHRoZSBzcGVjaWZpZWQgcGF0aHMsIGFuZCBkaWZmcyBhYm91dCB0aGUgc2FtZSBzcGVjaWZpZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWxzLXRyZWUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbHMtdHJlZS50eHQKaW5kZXggNGM3MjYyZi4uZGI2ZWJjYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbHMtdHJlZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbHMtdHJlZS50eHQKQEAgLTEwLDcgKzEwLDcgQEAKIC0tLS0tLS0tCiBbdmVyc2VdCiAnZ2l0IGxzLXRyZWUnIFstZF0gWy1yXSBbLXRdIFstbF0gWy16XQotCSAgICBbLS1uYW1lLW9ubHldIFstLW5hbWUtc3RhdHVzXSBbLS1mdWxsLW5hbWVdIFstLWFiYnJldj1bPG4+XV0KKwkgICAgWy0tbmFtZS1vbmx5XSBbLS1uYW1lLXN0YXR1c10gWy0tZnVsbC1uYW1lXSBbLS1mdWxsLXRyZWVdIFstLWFiYnJldj1bPG4+XV0KIAkgICAgPHRyZWUtaXNoPiBbcGF0aHMuLi5dCiAKIERFU0NSSVBUSU9OCkBAIC0zMCw2ICszMCw4IEBACiAgICAnc3ViL2RpcicgaW4gJ0hFQUQnKS4gIFlvdSBkb24ndCB3YW50IHRvIGdpdmUgYSB0cmVlIHRoYXQgaXMgbm90IGF0IHRoZQogICAgcm9vdCBsZXZlbCAoZS5nLiAnZ2l0IGxzLXRyZWUgLXIgSEVBRDpzdWIgZGlyJykgaW4gdGhpcyBjYXNlLCBhcyB0aGF0CiAgICB3b3VsZCByZXN1bHQgaW4gYXNraW5nIGZvciAnc3ViL3N1Yi9kaXInIGluIHRoZSAnSEVBRCcgY29tbWl0LgorICAgSG93ZXZlciwgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgY2FuIGJlIGlnbm9yZWQgYnkgcGFzc2luZworICAgLS1mdWxsLXRyZWUgb3B0aW9uLgogCiBPUFRJT05TCiAtLS0tLS0tCkBAIC02Niw2ICs2OCwxMCBAQAogCUluc3RlYWQgb2Ygc2hvd2luZyB0aGUgcGF0aCBuYW1lcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nCiAJZGlyZWN0b3J5LCBzaG93IHRoZSBmdWxsIHBhdGggbmFtZXMuCiAKKy0tZnVsbC10cmVlOjoKKwlEbyBub3QgbGltaXQgdGhlIGxpc3RpbmcgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisJSW1wbGllcyAtLWZ1bGwtbmFtZS4KKwogcGF0aHM6OgogCVdoZW4gcGF0aHMgYXJlIGdpdmVuLCBzaG93IHRoZW0gKG5vdGUgdGhhdCB0aGlzIGlzbid0IHJlYWxseSByYXcKIAlwYXRobmFtZXMsIGJ1dCByYXRoZXIgYSBsaXN0IG9mIHBhdHRlcm5zIHRvIG1hdGNoKS4gIE90aGVyd2lzZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtYmFzZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1iYXNlLnR4dAppbmRleCAxYTdlY2JmLi43Njc0ODZjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1iYXNlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1iYXNlLnR4dApAQCAtOCwyNiArOCw4MCBAQAogCiBTWU5PUFNJUwogLS0tLS0tLS0KLSdnaXQgbWVyZ2UtYmFzZScgWy0tYWxsXSA8Y29tbWl0PiA8Y29tbWl0PgorJ2dpdCBtZXJnZS1iYXNlJyBbLS1hbGxdIDxjb21taXQ+IDxjb21taXQ+Li4uCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi0nZ2l0LW1lcmdlLWJhc2UnIGZpbmRzIGFzIGdvb2QgYSBjb21tb24gYW5jZXN0b3IgYXMgcG9zc2libGUgYmV0d2VlbgotdGhlIHR3byBjb21taXRzLiBUaGF0IGlzLCBnaXZlbiB0d28gY29tbWl0cyBBIGFuZCBCLCBgZ2l0IG1lcmdlLWJhc2UgQQotQmAgd2lsbCBvdXRwdXQgYSBjb21taXQgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gYm90aCBBIGFuZCBCIHRocm91Z2gKLXRoZSBwYXJlbnQgcmVsYXRpb25zaGlwLgorJ2dpdC1tZXJnZS1iYXNlJyBmaW5kcyBiZXN0IGNvbW1vbiBhbmNlc3RvcihzKSBiZXR3ZWVuIHR3byBjb21taXRzIHRvIHVzZQoraW4gYSB0aHJlZS13YXkgbWVyZ2UuICBPbmUgY29tbW9uIGFuY2VzdG9yIGlzICdiZXR0ZXInIHRoYW4gYW5vdGhlciBjb21tb24KK2FuY2VzdG9yIGlmIHRoZSBsYXR0ZXIgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGZvcm1lci4gIEEgY29tbW9uIGFuY2VzdG9yCit0aGF0IGRvZXMgbm90IGhhdmUgYW55IGJldHRlciBjb21tb24gYW5jZXN0b3IgaXMgYSAnYmVzdCBjb21tb24KK2FuY2VzdG9yJywgaS5lLiBhICdtZXJnZSBiYXNlJy4gIE5vdGUgdGhhdCB0aGVyZSBjYW4gYmUgbW9yZSB0aGFuIG9uZQorbWVyZ2UgYmFzZSBmb3IgYSBwYWlyIG9mIGNvbW1pdHMuCiAKLUdpdmVuIGEgc2VsZWN0aW9uIG9mIGVxdWFsbHkgZ29vZCBjb21tb24gYW5jZXN0b3JzIGl0IHNob3VsZCBub3QgYmUKLXJlbGllZCBvbiB0byBkZWNpZGUgaW4gYW55IHBhcnRpY3VsYXIgd2F5LgotCi1UaGUgJ2dpdC1tZXJnZS1iYXNlJyBhbGdvcml0aG0gaXMgc3RpbGwgaW4gZmx1eCAtIHVzZSB0aGUgc291cmNlLi4uCitBbW9uZyB0aGUgdHdvIGNvbW1pdHMgdG8gY29tcHV0ZSB0aGUgbWVyZ2UgYmFzZSBmcm9tLCBvbmUgaXMgc3BlY2lmaWVkIGJ5Cit0aGUgZmlyc3QgY29tbWl0IGFyZ3VtZW50IG9uIHRoZSBjb21tYW5kIGxpbmU7IHRoZSBvdGhlciBjb21taXQgaXMgYQorKHBvc3NpYmx5IGh5cG90aGV0aWNhbCkgY29tbWl0IHRoYXQgaXMgYSBtZXJnZSBhY3Jvc3MgYWxsIHRoZSByZW1haW5pbmcKK2NvbW1pdHMgb24gdGhlIGNvbW1hbmQgbGluZS4gIEFzIHRoZSBtb3N0IGNvbW1vbiBzcGVjaWFsIGNhc2UsIHNwZWNpZnlpbmcgb25seQordHdvIGNvbW1pdHMgb24gdGhlIGNvbW1hbmQgbGluZSBtZWFucyBjb21wdXRpbmcgdGhlIG1lcmdlIGJhc2UgYmV0d2VlbgordGhlIGdpdmVuIHR3byBjb21taXRzLgogCiBPUFRJT05TCiAtLS0tLS0tCiAtLWFsbDo6Ci0JT3V0cHV0IGFsbCBjb21tb24gYW5jZXN0b3JzIGZvciB0aGUgdHdvIGNvbW1pdHMgaW5zdGVhZCBvZgotCWp1c3Qgb25lLgorCU91dHB1dCBhbGwgbWVyZ2UgYmFzZXMgZm9yIHRoZSBjb21taXRzLCBpbnN0ZWFkIG9mIGp1c3Qgb25lLgorCitESVNDVVNTSU9OCistLS0tLS0tLS0tCisKK0dpdmVuIHR3byBjb21taXRzICdBJyBhbmQgJ0InLCBgZ2l0IG1lcmdlLWJhc2UgQSBCYCB3aWxsIG91dHB1dCBhIGNvbW1pdAord2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gYm90aCAnQScgYW5kICdCJyB0aHJvdWdoIHRoZSBwYXJlbnQgcmVsYXRpb25zaGlwLgorCitGb3IgZXhhbXBsZSwgd2l0aCB0aGlzIHRvcG9sb2d5OgorCisJCSBvLS0tby0tLW8tLS1CCisJCS8KKwktLS1vLS0tMS0tLW8tLS1vLS0tby0tLUEKKwordGhlIG1lcmdlIGJhc2UgYmV0d2VlbiAnQScgYW5kICdCJyBpcyAnMScuCisKK0dpdmVuIHRocmVlIGNvbW1pdHMgJ0EnLCAnQicgYW5kICdDJywgYGdpdCBtZXJnZS1iYXNlIEEgQiBDYCB3aWxsIGNvbXB1dGUgdGhlCittZXJnZSBiYXNlIGJldHdlZW4gJ0EnIGFuZCBhIGh5cG90aGV0aWNhbCBjb21taXQgJ00nLCB3aGljaCBpcyBhIG1lcmdlCitiZXR3ZWVuICdCJyBhbmQgJ0MnLiAgRm9yIGV4YW1wbGUsIHdpdGggdGhpcyB0b3BvbG9neToKKworCSAgICAgICBvLS0tby0tLW8tLS1vLS0tQworCSAgICAgIC8KKwkgICAgIC8gICBvLS0tby0tLW8tLS1CCisJICAgIC8gICAvCisJLS0tMi0tLTEtLS1vLS0tby0tLW8tLS1BCisKK3RoZSByZXN1bHQgb2YgYGdpdCBtZXJnZS1iYXNlIEEgQiBDYCBpcyAnMScuICBUaGlzIGlzIGJlY2F1c2UgdGhlCitlcXVpdmFsZW50IHRvcG9sb2d5IHdpdGggYSBtZXJnZSBjb21taXQgJ00nIGJldHdlZW4gJ0InIGFuZCAnQycgaXM6CisKKworCSAgICAgICBvLS0tby0tLW8tLS1vLS0tbworCSAgICAgIC8gICAgICAgICAgICAgICAgIFwKKwkgICAgIC8gICBvLS0tby0tLW8tLS1vLS0tTQorCSAgICAvICAgLworCS0tLTItLS0xLS0tby0tLW8tLS1vLS0tQQorCithbmQgdGhlIHJlc3VsdCBvZiBgZ2l0IG1lcmdlLWJhc2UgQSBNYCBpcyAnMScuICBDb21taXQgJzInIGlzIGFsc28gYQorY29tbW9uIGFuY2VzdG9yIGJldHdlZW4gJ0EnIGFuZCAnTScsIGJ1dCAnMScgaXMgYSBiZXR0ZXIgY29tbW9uIGFuY2VzdG9yLAorYmVjYXVzZSAnMicgaXMgYW4gYW5jZXN0b3Igb2YgJzEnLiAgSGVuY2UsICcyJyBpcyBub3QgYSBtZXJnZSBiYXNlLgorCitXaGVuIHRoZSBoaXN0b3J5IGludm9sdmVzIGNyaXNzLWNyb3NzIG1lcmdlcywgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUKKydiZXN0JyBjb21tb24gYW5jZXN0b3IgZm9yIHR3byBjb21taXRzLiAgRm9yIGV4YW1wbGUsIHdpdGggdGhpcyB0b3BvbG9neToKKworICAgICAgIC0tLTEtLS1vLS0tQQorCSAgIFwgLworCSAgICBYCisJICAgLyBcCisgICAgICAgLS0tMi0tLW8tLS1vLS0tQgorCitib3RoICcxJyBhbmQgJzInIGFyZSBtZXJnZS1iYXNlcyBvZiBBIGFuZCBCLiAgTmVpdGhlciBvbmUgaXMgYmV0dGVyIHRoYW4KK3RoZSBvdGhlciAoYm90aCBhcmUgJ2Jlc3QnIG1lcmdlIGJhc2VzKS4gIFdoZW4gdGhlIGAtLWFsbGAgb3B0aW9uIGlzIG5vdCBnaXZlbiwKK2l0IGlzIHVuc3BlY2lmaWVkIHdoaWNoIGJlc3Qgb25lIGlzIG91dHB1dC4KIAogQXV0aG9yCiAtLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWZpbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtZmlsZS50eHQKaW5kZXggMDI0ZWMwMS4uMzAzNTM3MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtZmlsZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtZmlsZS50eHQKQEAgLTE1LDE3ICsxNSwxNyBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLSdnaXQtZmlsZS1tZXJnZScgaW5jb3Jwb3JhdGVzIGFsbCBjaGFuZ2VzIHRoYXQgbGVhZCBmcm9tIHRoZSBgPGJhc2UtZmlsZT5gCisnZ2l0LW1lcmdlLWZpbGUnIGluY29ycG9yYXRlcyBhbGwgY2hhbmdlcyB0aGF0IGxlYWQgZnJvbSB0aGUgYDxiYXNlLWZpbGU+YAogdG8gYDxvdGhlci1maWxlPmAgaW50byBgPGN1cnJlbnQtZmlsZT5gLiBUaGUgcmVzdWx0IG9yZGluYXJpbHkgZ29lcyBpbnRvCiBgPGN1cnJlbnQtZmlsZT5gLiAnZ2l0LW1lcmdlLWZpbGUnIGlzIHVzZWZ1bCBmb3IgY29tYmluaW5nIHNlcGFyYXRlIGNoYW5nZXMKIHRvIGFuIG9yaWdpbmFsLiBTdXBwb3NlIGA8YmFzZS1maWxlPmAgaXMgdGhlIG9yaWdpbmFsLCBhbmQgYm90aAotYDxjdXJyZW50LWZpbGU+YCBhbmQgYDxvdGhlci1maWxlPmAgYXJlIG1vZGlmaWNhdGlvbnMgb2YgYDxiYXNlLWZpbGU+YC4KLVRoZW4gJ2dpdC1tZXJnZS1maWxlJyBjb21iaW5lcyBib3RoIGNoYW5nZXMuCitgPGN1cnJlbnQtZmlsZT5gIGFuZCBgPG90aGVyLWZpbGU+YCBhcmUgbW9kaWZpY2F0aW9ucyBvZiBgPGJhc2UtZmlsZT5gLAordGhlbiAnZ2l0LW1lcmdlLWZpbGUnIGNvbWJpbmVzIGJvdGggY2hhbmdlcy4KIAogQSBjb25mbGljdCBvY2N1cnMgaWYgYm90aCBgPGN1cnJlbnQtZmlsZT5gIGFuZCBgPG90aGVyLWZpbGU+YCBoYXZlIGNoYW5nZXMKIGluIGEgY29tbW9uIHNlZ21lbnQgb2YgbGluZXMuIElmIGEgY29uZmxpY3QgaXMgZm91bmQsICdnaXQtbWVyZ2UtZmlsZScKLW5vcm1hbGx5IG91dHB1dHMgYSB3YXJuaW5nIGFuZCBicmFja2V0cyB0aGUgY29uZmxpY3Qgd2l0aCA8PDw8PDw8IGFuZAotPj4+Pj4+PiBsaW5lcy4gQSB0eXBpY2FsIGNvbmZsaWN0IHdpbGwgbG9vayBsaWtlIHRoaXM6Citub3JtYWxseSBvdXRwdXRzIGEgd2FybmluZyBhbmQgYnJhY2tldHMgdGhlIGNvbmZsaWN0IHdpdGggbGluZXMgY29udGFpbmluZworPDw8PDw8PCBhbmQgPj4+Pj4+PiBtYXJrZXJzLiBBIHR5cGljYWwgY29uZmxpY3Qgd2lsbCBsb29rIGxpa2UgdGhpczoKIAogCTw8PDw8PDwgQQogCWxpbmVzIGluIGZpbGUgQQpAQCAtNjAsNyArNjAsNyBAQAogCWA8Y3VycmVudC1maWxlPmAuCiAKIC1xOjoKLQlRdWlldDsgIGRvICBub3QgIHdhcm4gYWJvdXQgY29uZmxpY3RzLgorCVF1aWV0OyBkbyBub3Qgd2FybiBhYm91dCBjb25mbGljdHMuCiAKIAogRVhBTVBMRVMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWluZGV4LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWluZGV4LnR4dAppbmRleCBmZjA4OGM1Li4xMjNlNmQwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1pbmRleC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtaW5kZXgudHh0CkBAIC0yOSwxMSArMjksMTEgQEAKIAlJbnN0ZWFkIG9mIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsZWQgbWVyZ2UsIGRvIGFsbCBvZiB0aGVtCiAJaW4gb25lIHNob3QgLSBjb250aW51ZSB3aXRoIG1lcmdpbmcgZXZlbiB3aGVuIHByZXZpb3VzIG1lcmdlcwogCXJldHVybmVkIGVycm9ycywgYW5kIG9ubHkgcmV0dXJuIHRoZSBlcnJvciBjb2RlIGFmdGVyIGFsbCB0aGUKLQltZXJnZXMgYXJlIG92ZXIuCisJbWVyZ2VzLgogCiAtcTo6Ci0JRG8gbm90IGNvbXBsYWluIGFib3V0IGZhaWxlZCBtZXJnZSBwcm9ncmFtICh0aGUgbWVyZ2UgcHJvZ3JhbQotCWZhaWx1cmUgdXN1YWxseSBpbmRpY2F0ZXMgY29uZmxpY3RzIGR1cmluZyBtZXJnZSkuIFRoaXMgaXMgZm9yCisJRG8gbm90IGNvbXBsYWluIGFib3V0IGEgZmFpbGVkIG1lcmdlIHByb2dyYW0gKGEgbWVyZ2UgcHJvZ3JhbQorCWZhaWx1cmUgdXN1YWxseSBpbmRpY2F0ZXMgY29uZmxpY3RzIGR1cmluZyB0aGUgbWVyZ2UpLiBUaGlzIGlzIGZvcgogCXBvcmNlbGFpbnMgd2hpY2ggbWlnaHQgd2FudCB0byBlbWl0IGN1c3RvbSBtZXNzYWdlcy4KIAogSWYgJ2dpdC1tZXJnZS1pbmRleCcgaXMgY2FsbGVkIHdpdGggbXVsdGlwbGUgPGZpbGU+cyAob3IgLWEpIHRoZW4gaXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLXRyZWUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtdHJlZS50eHQKaW5kZXggZGJiMGMxOC4uZjg2OWE3ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtdHJlZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtdHJlZS50eHQKQEAgLTE0LDE0ICsxNCwxNCBAQAogLS0tLS0tLS0tLS0KIFJlYWRzIHRocmVlIHRyZWVpc2gsIGFuZCBvdXRwdXQgdHJpdmlhbCBtZXJnZSByZXN1bHRzIGFuZAogY29uZmxpY3Rpbmcgc3RhZ2VzIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuICBUaGlzIGlzIHNpbWlsYXIgdG8KLXdoYXQgdGhyZWUtd2F5IHJlYWQtdHJlZSAtbSBkb2VzLCBidXQgaW5zdGVhZCBvZiBzdG9yaW5nIHRoZQord2hhdCB0aHJlZS13YXkgJ2dpdCByZWFkLXRyZWUgLW0nIGRvZXMsIGJ1dCBpbnN0ZWFkIG9mIHN0b3JpbmcgdGhlCiByZXN1bHRzIGluIHRoZSBpbmRleCwgdGhlIGNvbW1hbmQgb3V0cHV0cyB0aGUgZW50cmllcyB0byB0aGUKIHN0YW5kYXJkIG91dHB1dC4KIAogVGhpcyBpcyBtZWFudCB0byBiZSB1c2VkIGJ5IGhpZ2hlciBsZXZlbCBzY3JpcHRzIHRvIGNvbXB1dGUKLW1lcmdlIHJlc3VsdHMgb3V0c2lkZSBpbmRleCwgYW5kIHN0dWZmIHRoZSByZXN1bHRzIGJhY2sgaW50byB0aGUKK21lcmdlIHJlc3VsdHMgb3V0c2lkZSBvZiB0aGUgaW5kZXgsIGFuZCBzdHVmZiB0aGUgcmVzdWx0cyBiYWNrIGludG8gdGhlCiBpbmRleC4gIEZvciB0aGlzIHJlYXNvbiwgdGhlIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kIG9taXRzCi1lbnRyaWVzIHRoYXQgbWF0Y2ggPGJyYW5jaDE+IHRyZWUuCitlbnRyaWVzIHRoYXQgbWF0Y2ggdGhlIDxicmFuY2gxPiB0cmVlLgogCiBBdXRob3IKIC0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UudHh0CmluZGV4IDE3YTE1YWMuLmY3YmU1ODQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS50eHQKQEAgLTY5LDIwICs2OSwyMCBAQAogICBzaW1wbGVzdCBjYXNlLCBjYWxsZWQgIkFscmVhZHkgdXAtdG8tZGF0ZS4iCiAKICogYEhFQURgIGlzIGFscmVhZHkgY29udGFpbmVkIGluIHRoZSBtZXJnZWQgY29tbWl0LiBUaGlzIGlzIHRoZQotICBtb3N0IGNvbW1vbiBjYXNlIGVzcGVjaWFsbHkgd2hlbiBpbnZvbHZlZCB0aHJvdWdoICdnaXQgcHVsbCc6Ci0gIHlvdSBhcmUgdHJhY2tpbmcgYW4gdXBzdHJlYW0gcmVwb3NpdG9yeSwgY29tbWl0dGVkIG5vIGxvY2FsCisgIG1vc3QgY29tbW9uIGNhc2UgZXNwZWNpYWxseSB3aGVuIGludm9rZWQgZnJvbSAnZ2l0IHB1bGwnOgorICB5b3UgYXJlIHRyYWNraW5nIGFuIHVwc3RyZWFtIHJlcG9zaXRvcnksIGhhdmUgY29tbWl0dGVkIG5vIGxvY2FsCiAgIGNoYW5nZXMgYW5kIG5vdyB5b3Ugd2FudCB0byB1cGRhdGUgdG8gYSBuZXdlciB1cHN0cmVhbSByZXZpc2lvbi4KLSAgWW91ciBgSEVBRGAgKGFuZCB0aGUgaW5kZXgpIGlzIHVwZGF0ZWQgdG8gYXQgcG9pbnQgdGhlIG1lcmdlZAorICBZb3VyIGBIRUFEYCAoYW5kIHRoZSBpbmRleCkgaXMgdXBkYXRlZCB0byBwb2ludCBhdCB0aGUgbWVyZ2VkCiAgIGNvbW1pdCwgd2l0aG91dCBjcmVhdGluZyBhbiBleHRyYSBtZXJnZSBjb21taXQuICBUaGlzIGlzCiAgIGNhbGxlZCAiRmFzdC1mb3J3YXJkIi4KIAogKiBCb3RoIHRoZSBtZXJnZWQgY29tbWl0IGFuZCBgSEVBRGAgYXJlIGluZGVwZW5kZW50IGFuZCBtdXN0IGJlCi0gIHRpZWQgdG9nZXRoZXIgYnkgYSBtZXJnZSBjb21taXQgdGhhdCBoYXMgdGhlbSBib3RoIGFzIGl0cyBwYXJlbnRzLgorICB0aWVkIHRvZ2V0aGVyIGJ5IGEgbWVyZ2UgY29tbWl0IHRoYXQgaGFzIGJvdGggb2YgdGhlbSBhcyBpdHMgcGFyZW50cy4KICAgVGhlIHJlc3Qgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGlzICJUcnVlIG1lcmdlIiBjYXNlLgogCiBUaGUgY2hvc2VuIG1lcmdlIHN0cmF0ZWd5IG1lcmdlcyB0aGUgdHdvIGNvbW1pdHMgaW50byBhIHNpbmdsZQogbmV3IHNvdXJjZSB0cmVlLgotV2hlbiB0aGluZ3MgY2xlYW5seSBtZXJnZSwgdGhlc2UgdGhpbmdzIGhhcHBlbjoKK1doZW4gdGhpbmdzIG1lcmdlIGNsZWFubHksIHRoaXMgaXMgd2hhdCBoYXBwZW5zOgogCiAxLiBUaGUgcmVzdWx0cyBhcmUgdXBkYXRlZCBib3RoIGluIHRoZSBpbmRleCBmaWxlIGFuZCBpbiB5b3VyCiAgICB3b3JraW5nIHRyZWU7CkBAIC05MSwxNiArOTEsMTYgQEAKIDQuIFRoZSBgSEVBRGAgcG9pbnRlciBnZXRzIGFkdmFuY2VkLgogCiBCZWNhdXNlIG9mIDIuLCB3ZSByZXF1aXJlIHRoYXQgdGhlIG9yaWdpbmFsIHN0YXRlIG9mIHRoZSBpbmRleAotZmlsZSB0byBtYXRjaCBleGFjdGx5IHRoZSBjdXJyZW50IGBIRUFEYCBjb21taXQ7IG90aGVyd2lzZSB3ZQorZmlsZSBtYXRjaGVzIGV4YWN0bHkgdGhlIGN1cnJlbnQgYEhFQURgIGNvbW1pdDsgb3RoZXJ3aXNlIHdlCiB3aWxsIHdyaXRlIG91dCB5b3VyIGxvY2FsIGNoYW5nZXMgYWxyZWFkeSByZWdpc3RlcmVkIGluIHlvdXIKIGluZGV4IGZpbGUgYWxvbmcgd2l0aCB0aGUgbWVyZ2UgcmVzdWx0LCB3aGljaCBpcyBub3QgZ29vZC4KLUJlY2F1c2UgMS4gaW52b2x2ZXMgb25seSB0aGUgcGF0aHMgZGlmZmVyZW50IGJldHdlZW4geW91cgorQmVjYXVzZSAxLiBpbnZvbHZlcyBvbmx5IHRob3NlIHBhdGhzIGRpZmZlcmluZyBiZXR3ZWVuIHlvdXIKIGJyYW5jaCBhbmQgdGhlIHJlbW90ZSBicmFuY2ggeW91IGFyZSBwdWxsaW5nIGZyb20gZHVyaW5nIHRoZQogbWVyZ2UgKHdoaWNoIGlzIHR5cGljYWxseSBhIGZyYWN0aW9uIG9mIHRoZSB3aG9sZSB0cmVlKSwgeW91IGNhbgogaGF2ZSBsb2NhbCBtb2RpZmljYXRpb25zIGluIHlvdXIgd29ya2luZyB0cmVlIGFzIGxvbmcgYXMgdGhleSBkbwogbm90IG92ZXJsYXAgd2l0aCB3aGF0IHRoZSBtZXJnZSB1cGRhdGVzLgogCi1XaGVuIHRoZXJlIGFyZSBjb25mbGljdHMsIHRoZXNlIHRoaW5ncyBoYXBwZW46CitXaGVuIHRoZXJlIGFyZSBjb25mbGljdHMsIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKIAogMS4gYEhFQURgIHN0YXlzIHRoZSBzYW1lLgogCkBAIC0xMTEsMjggKzExMSwxMDUgQEAKICAgIHZlcnNpb25zOyBzdGFnZTEgc3RvcmVzIHRoZSB2ZXJzaW9uIGZyb20gdGhlIGNvbW1vbiBhbmNlc3RvciwKICAgIHN0YWdlMiBmcm9tIGBIRUFEYCwgYW5kIHN0YWdlMyBmcm9tIHRoZSByZW1vdGUgYnJhbmNoICh5b3UKICAgIGNhbiBpbnNwZWN0IHRoZSBzdGFnZXMgd2l0aCBgZ2l0IGxzLWZpbGVzIC11YCkuICBUaGUgd29ya2luZwotICAgdHJlZSBmaWxlcyBoYXZlIHRoZSByZXN1bHQgb2YgIm1lcmdlIiBwcm9ncmFtOyBpLmUuIDMtd2F5Ci0gICBtZXJnZSByZXN1bHQgd2l0aCBmYW1pbGlhciBjb25mbGljdCBtYXJrZXJzIGA8PDwgPT09ID4+PmAuCisgICB0cmVlIGZpbGVzIGNvbnRhaW4gdGhlIHJlc3VsdCBvZiB0aGUgIm1lcmdlIiBwcm9ncmFtOyBpLmUuIDMtd2F5CisgICBtZXJnZSByZXN1bHRzIHdpdGggZmFtaWxpYXIgY29uZmxpY3QgbWFya2VycyBgPDw8ID09PSA+Pj5gLgogCiA0LiBObyBvdGhlciBjaGFuZ2VzIGFyZSBkb25lLiAgSW4gcGFydGljdWxhciwgdGhlIGxvY2FsCiAgICBtb2RpZmljYXRpb25zIHlvdSBoYWQgYmVmb3JlIHlvdSBzdGFydGVkIG1lcmdlIHdpbGwgc3RheSB0aGUKICAgIHNhbWUgYW5kIHRoZSBpbmRleCBlbnRyaWVzIGZvciB0aGVtIHN0YXkgYXMgdGhleSB3ZXJlLAogICAgaS5lLiBtYXRjaGluZyBgSEVBRGAuCiAKK0hPVyBDT05GTElDVFMgQVJFIFBSRVNFTlRFRAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0R1cmluZyBhIG1lcmdlLCB0aGUgd29ya2luZyB0cmVlIGZpbGVzIGFyZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIHJlc3VsdAorb2YgdGhlIG1lcmdlLiAgQW1vbmcgdGhlIGNoYW5nZXMgbWFkZSB0byB0aGUgY29tbW9uIGFuY2VzdG9yJ3MgdmVyc2lvbiwKK25vbi1vdmVybGFwcGluZyBvbmVzICh0aGF0IGlzLCB5b3UgY2hhbmdlZCBhbiBhcmVhIG9mIHRoZSBmaWxlIHdoaWxlIHRoZQorb3RoZXIgc2lkZSBsZWZ0IHRoYXQgYXJlYSBpbnRhY3QsIG9yIHZpY2UgdmVyc2EpIGFyZSBpbmNvcnBvcmF0ZWQgaW4gdGhlCitmaW5hbCByZXN1bHQgdmVyYmF0aW0uICBXaGVuIGJvdGggc2lkZXMgbWFkZSBjaGFuZ2VzIHRvIHRoZSBzYW1lIGFyZWEsCitob3dldmVyLCBnaXQgY2Fubm90IHJhbmRvbWx5IHBpY2sgb25lIHNpZGUgb3ZlciB0aGUgb3RoZXIsIGFuZCBhc2tzIHlvdSB0bworcmVzb2x2ZSBpdCBieSBsZWF2aW5nIHdoYXQgYm90aCBzaWRlcyBkaWQgdG8gdGhhdCBhcmVhLgorCitCeSBkZWZhdWx0LCBnaXQgdXNlcyB0aGUgc2FtZSBzdHlsZSBhcyB0aGF0IGlzIHVzZWQgYnkgIm1lcmdlIiBwcm9ncmFtCitmcm9tIHRoZSBSQ1Mgc3VpdGUgdG8gcHJlc2VudCBzdWNoIGEgY29uZmxpY3RlZCBodW5rLCBsaWtlIHRoaXM6CisKKy0tLS0tLS0tLS0tLQorSGVyZSBhcmUgbGluZXMgdGhhdCBhcmUgZWl0aGVyIHVuY2hhbmdlZCBmcm9tIHRoZSBjb21tb24KK2FuY2VzdG9yLCBvciBjbGVhbmx5IHJlc29sdmVkIGJlY2F1c2Ugb25seSBvbmUgc2lkZSBjaGFuZ2VkLgorPDw8PDw8PCB5b3VyczpzYW1wbGUudHh0CitDb25mbGljdCByZXNvbHV0aW9uIGlzIGhhcmQ7CitsZXQncyBnbyBzaG9wcGluZy4KKz09PT09PT0KK0dpdCBtYWtlcyBjb25mbGljdCByZXNvbHV0aW9uIGVhc3kuCis+Pj4+Pj4+IHRoZWlyczpzYW1wbGUudHh0CitBbmQgaGVyZSBpcyBhbm90aGVyIGxpbmUgdGhhdCBpcyBjbGVhbmx5IHJlc29sdmVkIG9yIHVubW9kaWZpZWQuCistLS0tLS0tLS0tLS0KKworVGhlIGFyZWEgd2hlcmUgYSBwYWlyIG9mIGNvbmZsaWN0aW5nIGNoYW5nZXMgaGFwcGVuZWQgaXMgbWFya2VkIHdpdGggbWFya2VycworImA8PDw8PDw8YCIsICJgPT09PT09PWAiLCBhbmQgImA+Pj4+Pj4+YCIuICBUaGUgcGFydCBiZWZvcmUgdGhlICJgPT09PT09PWAiCitpcyB0eXBpY2FsbHkgeW91ciBzaWRlLCBhbmQgdGhlIHBhcnQgYWZ0ZXJ3YXJkcyBpcyB0eXBpY2FsbHkgdGhlaXIgc2lkZS4KKworVGhlIGRlZmF1bHQgZm9ybWF0IGRvZXMgbm90IHNob3cgd2hhdCB0aGUgb3JpZ2luYWwgc2FpZCBpbiB0aGUgY29uZmxpY3RpbmcKK2FyZWEuICBZb3UgY2Fubm90IHRlbGwgaG93IG1hbnkgbGluZXMgYXJlIGRlbGV0ZWQgYW5kIHJlcGxhY2VkIHdpdGgKK0JhcmJpZSdzIHJlbWFyayBvbiB5b3VyIHNpZGUuICBUaGUgb25seSB0aGluZyB5b3UgY2FuIHRlbGwgaXMgdGhhdCB5b3VyCitzaWRlIHdhbnRzIHRvIHNheSBpdCBpcyBoYXJkIGFuZCB5b3UnZCBwcmVmZXIgdG8gZ28gc2hvcHBpbmcsIHdoaWxlIHRoZQorb3RoZXIgc2lkZSB3YW50cyB0byBjbGFpbSBpdCBpcyBlYXN5LgorCitBbiBhbHRlcm5hdGl2ZSBzdHlsZSBjYW4gYmUgdXNlZCBieSBzZXR0aW5nIHRoZSAibWVyZ2UuY29uZmxpY3RzdHlsZSIKK2NvbmZpZ3VyYXRpb24gdmFyaWFibGUgdG8gImRpZmYzIi4gIEluICJkaWZmMyIgc3R5bGUsIHRoZSBhYm92ZSBjb25mbGljdAorbWF5IGxvb2sgbGlrZSB0aGlzOgorCistLS0tLS0tLS0tLS0KK0hlcmUgYXJlIGxpbmVzIHRoYXQgYXJlIGVpdGhlciB1bmNoYW5nZWQgZnJvbSB0aGUgY29tbW9uCithbmNlc3Rvciwgb3IgY2xlYW5seSByZXNvbHZlZCBiZWNhdXNlIG9ubHkgb25lIHNpZGUgY2hhbmdlZC4KKzw8PDw8PDwgeW91cnM6c2FtcGxlLnR4dAorQ29uZmxpY3QgcmVzb2x1dGlvbiBpcyBoYXJkOworbGV0J3MgZ28gc2hvcHBpbmcuCit8fHx8fHx8CitDb25mbGljdCByZXNvbHV0aW9uIGlzIGhhcmQuCis9PT09PT09CitHaXQgbWFrZXMgY29uZmxpY3QgcmVzb2x1dGlvbiBlYXN5LgorPj4+Pj4+PiB0aGVpcnM6c2FtcGxlLnR4dAorQW5kIGhlcmUgaXMgYW5vdGhlciBsaW5lIHRoYXQgaXMgY2xlYW5seSByZXNvbHZlZCBvciB1bm1vZGlmaWVkLgorLS0tLS0tLS0tLS0tCisKK0luIGFkZGl0aW9uIHRvIHRoZSAiYDw8PDw8PDxgIiwgImA9PT09PT09YCIsIGFuZCAiYD4+Pj4+Pj5gIiBtYXJrZXJzLCBpdCB1c2VzCithbm90aGVyICJgfHx8fHx8fGAiIG1hcmtlciB0aGF0IGlzIGZvbGxvd2VkIGJ5IHRoZSBvcmlnaW5hbCB0ZXh0LiAgWW91IGNhbgordGVsbCB0aGF0IHRoZSBvcmlnaW5hbCBqdXN0IHN0YXRlZCBhIGZhY3QsIGFuZCB5b3VyIHNpZGUgc2ltcGx5IGdhdmUgaW4gdG8KK3RoYXQgc3RhdGVtZW50IGFuZCBnYXZlIHVwLCB3aGlsZSB0aGUgb3RoZXIgc2lkZSB0cmllZCB0byBoYXZlIGEgbW9yZQorcG9zaXRpdmUgYXR0aXR1ZGUuICBZb3UgY2FuIHNvbWV0aW1lcyBjb21lIHVwIHdpdGggYSBiZXR0ZXIgcmVzb2x1dGlvbiBieQordmlld2luZyB0aGUgb3JpZ2luYWwuCisKKworSE9XIFRPIFJFU09MVkUgQ09ORkxJQ1RTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogQWZ0ZXIgc2VlaW5nIGEgY29uZmxpY3QsIHlvdSBjYW4gZG8gdHdvIHRoaW5nczoKIAotICogRGVjaWRlIG5vdCB0byBtZXJnZS4gIFRoZSBvbmx5IGNsZWFuLXVwIHlvdSBuZWVkIGFyZSB0byByZXNldAorICogRGVjaWRlIG5vdCB0byBtZXJnZS4gIFRoZSBvbmx5IGNsZWFuLXVwcyB5b3UgbmVlZCBhcmUgdG8gcmVzZXQKICAgIHRoZSBpbmRleCBmaWxlIHRvIHRoZSBgSEVBRGAgY29tbWl0IHRvIHJldmVyc2UgMi4gYW5kIHRvIGNsZWFuCiAgICB1cCB3b3JraW5nIHRyZWUgY2hhbmdlcyBtYWRlIGJ5IDIuIGFuZCAzLjsgJ2dpdC1yZXNldCAtLWhhcmQnIGNhbgogICAgYmUgdXNlZCBmb3IgdGhpcy4KIAotICogUmVzb2x2ZSB0aGUgY29uZmxpY3RzLiAgYGdpdCBkaWZmYCB3b3VsZCByZXBvcnQgb25seSB0aGUKLSAgIGNvbmZsaWN0aW5nIHBhdGhzIGJlY2F1c2Ugb2YgdGhlIGFib3ZlIDIuIGFuZCAzLgotICAgRWRpdCB0aGUgd29ya2luZyB0cmVlIGZpbGVzIGludG8gYSBkZXNpcmFibGUgc2hhcGUKLSAgICgnZ2l0IG1lcmdldG9vbCcgY2FuIGVhc2UgdGhpcyB0YXNrKSwgJ2dpdC1hZGQnIG9yICdnaXQtcm0nCi0gICB0aGVtLCB0byBtYWtlIHRoZSBpbmRleCBmaWxlIGNvbnRhaW4gd2hhdCB0aGUgbWVyZ2UgcmVzdWx0Ci0gICBzaG91bGQgYmUsIGFuZCBydW4gJ2dpdC1jb21taXQnIHRvIGNvbW1pdCB0aGUgcmVzdWx0LgorICogUmVzb2x2ZSB0aGUgY29uZmxpY3RzLiAgR2l0IHdpbGwgbWFyayB0aGUgY29uZmxpY3RzIGluCisgICB0aGUgd29ya2luZyB0cmVlLiAgRWRpdCB0aGUgZmlsZXMgaW50byBzaGFwZSBhbmQKKyAgICdnaXQtYWRkJyB0aGVtIHRvIHRoZSBpbmRleC4gIFVzZSAnZ2l0LWNvbW1pdCcgdG8gc2VhbCB0aGUgZGVhbC4KIAorWW91IGNhbiB3b3JrIHRocm91Z2ggdGhlIGNvbmZsaWN0IHdpdGggYSBudW1iZXIgb2YgdG9vbHM6CisKKyAqIFVzZSBhIG1lcmdldG9vbC4gICdnaXQgbWVyZ2V0b29sJyB0byBsYXVuY2ggYSBncmFwaGljYWwKKyAgIG1lcmdldG9vbCB3aGljaCB3aWxsIHdvcmsgeW91IHRocm91Z2ggdGhlIG1lcmdlLgorCisgKiBMb29rIGF0IHRoZSBkaWZmcy4gICdnaXQgZGlmZicgd2lsbCBzaG93IGEgdGhyZWUtd2F5IGRpZmYsCisgICBoaWdobGlnaHRpbmcgY2hhbmdlcyBmcm9tIGJvdGggdGhlIEhFQUQgYW5kIHJlbW90ZSB2ZXJzaW9ucy4KKworICogTG9vayBhdCB0aGUgZGlmZnMgb24gdGhlaXIgb3duLiAnZ2l0IGxvZyAtLW1lcmdlIC1wIDxwYXRoPicKKyAgIHdpbGwgc2hvdyBkaWZmcyBmaXJzdCBmb3IgdGhlIEhFQUQgdmVyc2lvbiBhbmQgdGhlbiB0aGUKKyAgIHJlbW90ZSB2ZXJzaW9uLgorCisgKiBMb29rIGF0IHRoZSBvcmlnaW5hbHMuICAnZ2l0IHNob3cgOjE6ZmlsZW5hbWUnIHNob3dzIHRoZQorICAgY29tbW9uIGFuY2VzdG9yLCAnZ2l0IHNob3cgOjI6ZmlsZW5hbWUnIHNob3dzIHRoZSBIRUFECisgICB2ZXJzaW9uIGFuZCAnZ2l0IHNob3cgOjM6ZmlsZW5hbWUnIHNob3dzIHRoZSByZW1vdGUgdmVyc2lvbi4KIAogU0VFIEFMU08KIC0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZXRvb2wudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2V0b29sLnR4dAppbmRleCBlMGIyNzAzLi42MDJlN2M2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZXRvb2wudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdldG9vbC50eHQKQEAgLTM4LDcgKzM4LDcgQEAKIGBtZXJnZXRvb2wua2RpZmYzLnBhdGhgLiBPdGhlcndpc2UsICdnaXQtbWVyZ2V0b29sJyBhc3N1bWVzIHRoZQogdG9vbCBpcyBhdmFpbGFibGUgaW4gUEFUSC4KICsKLUluc3RlYWQgb2YgcnVubmluZyBvbmUgb2YgdGhlIGtub3duIG1lcmdlIHRvb2wgcHJvZ3JhbXMKK0luc3RlYWQgb2YgcnVubmluZyBvbmUgb2YgdGhlIGtub3duIG1lcmdlIHRvb2wgcHJvZ3JhbXMsCiAnZ2l0LW1lcmdldG9vbCcgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gcnVuIGFuIGFsdGVybmF0aXZlIHByb2dyYW0KIGJ5IHNwZWNpZnlpbmcgdGhlIGNvbW1hbmQgbGluZSB0byBpbnZva2UgaW4gYSBjb25maWd1cmF0aW9uCiB2YXJpYWJsZSBgbWVyZ2V0b29sLjx0b29sPi5jbWRgLgpAQCAtNTUsNyArNTUsNyBAQAogbWVyZ2UgcmVzb2x1dGlvbi4KICsKIElmIHRoZSBjdXN0b20gbWVyZ2UgdG9vbCBjb3JyZWN0bHkgaW5kaWNhdGVzIHRoZSBzdWNjZXNzIG9mIGEKLW1lcmdlIHJlc29sdXRpb24gd2l0aCBpdHMgZXhpdCBjb2RlIHRoZW4gdGhlIGNvbmZpZ3VyYXRpb24KK21lcmdlIHJlc29sdXRpb24gd2l0aCBpdHMgZXhpdCBjb2RlLCB0aGVuIHRoZSBjb25maWd1cmF0aW9uCiB2YXJpYWJsZSBgbWVyZ2V0b29sLjx0b29sPi50cnVzdEV4aXRDb2RlYCBjYW4gYmUgc2V0IHRvIGB0cnVlYC4KIE90aGVyd2lzZSwgJ2dpdC1tZXJnZXRvb2wnIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIGluZGljYXRlIHRoZQogc3VjY2VzcyBvZiB0aGUgcmVzb2x1dGlvbiBhZnRlciB0aGUgY3VzdG9tIHRvb2wgaGFzIGV4aXRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXBydW5lLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXBydW5lLnR4dAppbmRleCA1NGYxZGFiLi5kYTYwNTVkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1wcnVuZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcHJ1bmUudHh0CkBAIC04LDcgKzgsNyBAQAogCiBTWU5PUFNJUwogLS0tLS0tLS0KLSdnaXQtcHJ1bmUnIFstbl0gWy0tZXhwaXJlIDxleHBpcmU+XSBbLS1dIFs8aGVhZD4uLi5dCisnZ2l0LXBydW5lJyBbLW5dIFstdl0gWy0tZXhwaXJlIDxleHBpcmU+XSBbLS1dIFs8aGVhZD4uLi5dCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpAQCAtMzQsNiArMzQsOSBAQAogCURvIG5vdCByZW1vdmUgYW55dGhpbmc7IGp1c3QgcmVwb3J0IHdoYXQgaXQgd291bGQKIAlyZW1vdmUuCiAKKy12OjoKKwlSZXBvcnQgYWxsIHJlbW92ZWQgb2JqZWN0cy4KKwogXC0tOjoKIAlEbyBub3QgaW50ZXJwcmV0IGFueSBtb3JlIGFyZ3VtZW50cyBhcyBvcHRpb25zLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1wdXNoLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXB1c2gudHh0CmluZGV4IDYxNTBiMWIuLjdkMWVjZWQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXB1c2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXB1c2gudHh0CkBAIC0yOCwzNiArMjgsMzkgQEAKIC0tLS0tLS0KIDxyZXBvc2l0b3J5Pjo6CiAJVGhlICJyZW1vdGUiIHJlcG9zaXRvcnkgdGhhdCBpcyBkZXN0aW5hdGlvbiBvZiBhIHB1c2gKLQlvcGVyYXRpb24uICBTZWUgdGhlIHNlY3Rpb24gPDxVUkxTLEdJVCBVUkxTPj4gYmVsb3cuCisJb3BlcmF0aW9uLiAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGVpdGhlciBhIFVSTAorCShzZWUgdGhlIHNlY3Rpb24gPDxVUkxTLEdJVCBVUkxTPj4gYmVsb3cpIG9yIHRoZSBuYW1lCisJb2YgYSByZW1vdGUgKHNlZSB0aGUgc2VjdGlvbiA8PFJFTU9URVMsUkVNT1RFUz4+IGJlbG93KS4KIAogPHJlZnNwZWM+Li4uOjoKLQlUaGUgY2Fub25pY2FsIGZvcm1hdCBvZiBhIDxyZWZzcGVjPiBwYXJhbWV0ZXIgaXMKLQlgKz88c3JjPjo8ZHN0PmA7IHRoYXQgaXMsIGFuIG9wdGlvbmFsIHBsdXMgYHtwbHVzfWAsIGZvbGxvd2VkCi0JYnkgdGhlIHNvdXJjZSByZWYsIGZvbGxvd2VkIGJ5IGEgY29sb24gYDpgLCBmb2xsb3dlZCBieQotCXRoZSBkZXN0aW5hdGlvbiByZWYuCisJVGhlIGZvcm1hdCBvZiBhIDxyZWZzcGVjPiBwYXJhbWV0ZXIgaXMgYW4gb3B0aW9uYWwgcGx1cworCWB7cGx1c31gLCBmb2xsb3dlZCBieSB0aGUgc291cmNlIHJlZiA8c3JjPiwgZm9sbG93ZWQKKwlieSBhIGNvbG9uIGA6YCwgZm9sbG93ZWQgYnkgdGhlIGRlc3RpbmF0aW9uIHJlZiA8ZHN0Pi4KKwlJdCBpcyB1c2VkIHRvIHNwZWNpZnkgd2l0aCB3aGF0IDxzcmM+IG9iamVjdCB0aGUgPGRzdD4gcmVmCisJaW4gdGhlIHJlbW90ZSByZXBvc2l0b3J5IGlzIHRvIGJlIHVwZGF0ZWQuCiArCi1UaGUgPHNyYz4gc2lkZSByZXByZXNlbnRzIHRoZSBzb3VyY2UgYnJhbmNoIChvciBhcmJpdHJhcnkKLSJTSEExIGV4cHJlc3Npb24iLCBzdWNoIGFzIGBtYXN0ZXJ+NGAgKGZvdXIgcGFyZW50cyBiZWZvcmUgdGhlCi10aXAgb2YgYG1hc3RlcmAgYnJhbmNoKTsgc2VlIGxpbmtnaXQ6Z2l0LXJldi1wYXJzZVsxXSkgdGhhdCB5b3UKLXdhbnQgdG8gcHVzaC4gIFRoZSA8ZHN0PiBzaWRlIHJlcHJlc2VudHMgdGhlIGRlc3RpbmF0aW9uIGxvY2F0aW9uLgorVGhlIDxzcmM+IGlzIG9mdGVuIHRoZSBuYW1lIG9mIHRoZSBicmFuY2ggeW91IHdvdWxkIHdhbnQgdG8gcHVzaCwgYnV0CitpdCBjYW4gYmUgYW55IGFyYml0cmFyeSAiU0hBLTEgZXhwcmVzc2lvbiIsIHN1Y2ggYXMgYG1hc3Rlcn40YCBvcgorYEhFQURgIChzZWUgbGlua2dpdDpnaXQtcmV2LXBhcnNlWzFdKS4KICsKLVRoZSBsb2NhbCByZWYgdGhhdCBtYXRjaGVzIDxzcmM+IGlzIHVzZWQKLXRvIGZhc3QgZm9yd2FyZCB0aGUgcmVtb3RlIHJlZiB0aGF0IG1hdGNoZXMgPGRzdD4gKG9yLCBpZiBubyA8ZHN0PiB3YXMKLXNwZWNpZmllZCwgdGhlIHNhbWUgcmVmIHRoYXQgPHNyYz4gcmVmZXJyZWQgdG8gbG9jYWxseSkuICBJZgotdGhlIG9wdGlvbmFsIGxlYWRpbmcgcGx1cyBgK2AgaXMgdXNlZCwgdGhlIHJlbW90ZSByZWYgaXMgdXBkYXRlZAotZXZlbiBpZiBpdCBkb2VzIG5vdCByZXN1bHQgaW4gYSBmYXN0IGZvcndhcmQgdXBkYXRlLgorVGhlIDxkc3Q+IHRlbGxzIHdoaWNoIHJlZiBvbiB0aGUgcmVtb3RlIHNpZGUgaXMgdXBkYXRlZCB3aXRoIHRoaXMKK3B1c2guIEFyYml0cmFyeSBleHByZXNzaW9ucyBjYW5ub3QgYmUgdXNlZCBoZXJlLCBhbiBhY3R1YWwgcmVmIG11c3QKK2JlIG5hbWVkLiBJZiBgOmA8ZHN0PiBpcyBvbWl0dGVkLCB0aGUgc2FtZSByZWYgYXMgPHNyYz4gd2lsbCBiZQordXBkYXRlZC4KKysKK1RoZSBvYmplY3QgcmVmZXJlbmNlZCBieSA8c3JjPiBpcyB1c2VkIHRvIGZhc3QgZm9yd2FyZCB0aGUgcmVmIDxkc3Q+CitvbiB0aGUgcmVtb3RlIHNpZGUuIElmIHRoZSBvcHRpb25hbCBsZWFkaW5nIHBsdXMgYHtwbHVzfWAgaXMgdXNlZCwgdGhlCityZW1vdGUgcmVmIGlzIHVwZGF0ZWQgZXZlbiBpZiBpdCBkb2VzIG5vdCByZXN1bHQgaW4gYSBmYXN0IGZvcndhcmQKK3VwZGF0ZS4KICsKIGB0YWcgPHRhZz5gIG1lYW5zIHRoZSBzYW1lIGFzIGByZWZzL3RhZ3MvPHRhZz46cmVmcy90YWdzLzx0YWc+YC4KICsKLUEgcGFyYW1ldGVyIDxyZWY+IHdpdGhvdXQgYSBjb2xvbiBwdXNoZXMgdGhlIDxyZWY+IGZyb20gdGhlIHNvdXJjZQotcmVwb3NpdG9yeSB0byB0aGUgZGVzdGluYXRpb24gcmVwb3NpdG9yeSB1bmRlciB0aGUgc2FtZSBuYW1lLgotKwogUHVzaGluZyBhbiBlbXB0eSA8c3JjPiBhbGxvd3MgeW91IHRvIGRlbGV0ZSB0aGUgPGRzdD4gcmVmIGZyb20KIHRoZSByZW1vdGUgcmVwb3NpdG9yeS4KICsKIFRoZSBzcGVjaWFsIHJlZnNwZWMgYDpgIChvciBgKzpgIHRvIGFsbG93IG5vbi1mYXN0IGZvcndhcmQgdXBkYXRlcykKLWRpcmVjdHMgZ2l0IHRvIHB1c2ggIm1hdGNoaW5nIiBoZWFkczogZm9yIGV2ZXJ5IGhlYWQgdGhhdCBleGlzdHMgb24KLXRoZSBsb2NhbCBzaWRlLCB0aGUgcmVtb3RlIHNpZGUgaXMgdXBkYXRlZCBpZiBhIGhlYWQgb2YgdGhlIHNhbWUgbmFtZQorZGlyZWN0cyBnaXQgdG8gcHVzaCAibWF0Y2hpbmciIGJyYW5jaGVzOiBmb3IgZXZlcnkgYnJhbmNoIHRoYXQgZXhpc3RzIG9uCit0aGUgbG9jYWwgc2lkZSwgdGhlIHJlbW90ZSBzaWRlIGlzIHVwZGF0ZWQgaWYgYSBicmFuY2ggb2YgdGhlIHNhbWUgbmFtZQogYWxyZWFkeSBleGlzdHMgb24gdGhlIHJlbW90ZSBzaWRlLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBvcGVyYXRpb24gbW9kZQogaWYgbm8gZXhwbGljaXQgcmVmc3BlYyBpcyBmb3VuZCAodGhhdCBpcyBuZWl0aGVyIG9uIHRoZSBjb21tYW5kIGxpbmUKIG5vciBpbiBhbnkgUHVzaCBsaW5lIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlbW90ZXMgZmlsZS0tLXNlZSBiZWxvdykuCkBAIC04NiwxNCArODksMTIgQEAKIAlsaW5lLgogCiAtLXJlY2VpdmUtcGFjaz08Z2l0LXJlY2VpdmUtcGFjaz46OgorLS1leGVjPTxnaXQtcmVjZWl2ZS1wYWNrPjo6CiAJUGF0aCB0byB0aGUgJ2dpdC1yZWNlaXZlLXBhY2snIHByb2dyYW0gb24gdGhlIHJlbW90ZQogCWVuZC4gIFNvbWV0aW1lcyB1c2VmdWwgd2hlbiBwdXNoaW5nIHRvIGEgcmVtb3RlCiAJcmVwb3NpdG9yeSBvdmVyIHNzaCwgYW5kIHlvdSBkbyBub3QgaGF2ZSB0aGUgcHJvZ3JhbSBpbgogCWEgZGlyZWN0b3J5IG9uIHRoZSBkZWZhdWx0ICRQQVRILgogCi0tLWV4ZWM9PGdpdC1yZWNlaXZlLXBhY2s+OjoKLQlTYW1lIGFzIFwtLXJlY2VpdmUtcGFjaz08Z2l0LXJlY2VpdmUtcGFjaz4uCi0KIC1mOjoKIC0tZm9yY2U6OgogCVVzdWFsbHksIHRoZSBjb21tYW5kIHJlZnVzZXMgdG8gdXBkYXRlIGEgcmVtb3RlIHJlZiB0aGF0IGlzCkBAIC0xOTEsOSArMTkyLDkgQEAKIAl3aXRoIGl0LiAgSWYgYG1hc3RlcmAgZGlkIG5vdCBleGlzdCByZW1vdGVseSwgaXQgd291bGQgYmUKIAljcmVhdGVkLgogCi1naXQgcHVzaCBvcmlnaW4gOmV4cGVyaW1lbnRhbDo6Ci0JRmluZCBhIHJlZiB0aGF0IG1hdGNoZXMgYGV4cGVyaW1lbnRhbGAgaW4gdGhlIGBvcmlnaW5gIHJlcG9zaXRvcnkKLQkoZS5nLiBgcmVmcy9oZWFkcy9leHBlcmltZW50YWxgKSwgYW5kIGRlbGV0ZSBpdC4KK2dpdCBwdXNoIG9yaWdpbiBIRUFEOjoKKwlBIGhhbmR5IHdheSB0byBwdXNoIHRoZSBjdXJyZW50IGJyYW5jaCB0byB0aGUgc2FtZSBuYW1lIG9uIHRoZQorCXJlbW90ZS4KIAogZ2l0IHB1c2ggb3JpZ2luIG1hc3RlcjpzYXRlbGxpdGUvbWFzdGVyIGRldjpzYXRlbGxpdGUvZGV2OjoKIAlVc2UgdGhlIHNvdXJjZSByZWYgdGhhdCBtYXRjaGVzIGBtYXN0ZXJgIChlLmcuIGByZWZzL2hlYWRzL21hc3RlcmApCkBAIC0yMDEsNiArMjAyLDExIEBACiAJYHJlZnMvcmVtb3Rlcy9zYXRlbGxpdGUvbWFzdGVyYCkgaW4gdGhlIGBvcmlnaW5gIHJlcG9zaXRvcnksIHRoZW4KIAlkbyB0aGUgc2FtZSBmb3IgYGRldmAgYW5kIGBzYXRlbGxpdGUvZGV2YC4KIAorZ2l0IHB1c2ggb3JpZ2luIEhFQUQ6bWFzdGVyOjoKKwlQdXNoIHRoZSBjdXJyZW50IGJyYW5jaCB0byB0aGUgcmVtb3RlIHJlZiBtYXRjaGluZyBgbWFzdGVyYCBpbiB0aGUKKwlgb3JpZ2luYCByZXBvc2l0b3J5LiBUaGlzIGZvcm0gaXMgY29udmVuaWVudCB0byBwdXNoIHRoZSBjdXJyZW50CisJYnJhbmNoIHdpdGhvdXQgdGhpbmtpbmcgYWJvdXQgaXRzIGxvY2FsIG5hbWUuCisKIGdpdCBwdXNoIG9yaWdpbiBtYXN0ZXI6cmVmcy9oZWFkcy9leHBlcmltZW50YWw6OgogCUNyZWF0ZSB0aGUgYnJhbmNoIGBleHBlcmltZW50YWxgIGluIHRoZSBgb3JpZ2luYCByZXBvc2l0b3J5CiAJYnkgY29weWluZyB0aGUgY3VycmVudCBgbWFzdGVyYCBicmFuY2guICBUaGlzIGZvcm0gaXMgb25seQpAQCAtMjA4LDYgKzIxNCwxMSBAQAogCXRoZSBsb2NhbCBuYW1lIGFuZCB0aGUgcmVtb3RlIG5hbWUgYXJlIGRpZmZlcmVudDsgb3RoZXJ3aXNlLAogCXRoZSByZWYgbmFtZSBvbiBpdHMgb3duIHdpbGwgd29yay4KIAorZ2l0IHB1c2ggb3JpZ2luIDpleHBlcmltZW50YWw6OgorCUZpbmQgYSByZWYgdGhhdCBtYXRjaGVzIGBleHBlcmltZW50YWxgIGluIHRoZSBgb3JpZ2luYCByZXBvc2l0b3J5CisJKGUuZy4gYHJlZnMvaGVhZHMvZXhwZXJpbWVudGFsYCksIGFuZCBkZWxldGUgaXQuCisKKwogQXV0aG9yCiAtLS0tLS0KIFdyaXR0ZW4gYnkgSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPiwgbGF0ZXIgcmV3cml0dGVuIGluIEMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlYWQtdHJlZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZWFkLXRyZWUudHh0CmluZGV4IDMwOWRlYWMuLjcxNjBmYTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlYWQtdHJlZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmVhZC10cmVlLnR4dApAQCAtMjEyLDcgKzIxMiw3IEBACiAKIENhc2UgIzMgaXMgc2xpZ2h0bHkgdHJpY2t5IGFuZCBuZWVkcyBleHBsYW5hdGlvbi4gIFRoZSByZXN1bHQgZnJvbSB0aGlzCiBydWxlIGxvZ2ljYWxseSBzaG91bGQgYmUgdG8gcmVtb3ZlIHRoZSBwYXRoIGlmIHRoZSB1c2VyIHN0YWdlZCB0aGUgcmVtb3ZhbAotb2YgdGhlIHBhdGggYW5kIHRoZW4gc3dpY2hpbmcgdG8gYSBuZXcgYnJhbmNoLiAgVGhhdCBob3dldmVyIHdpbGwgcHJldmVudAorb2YgdGhlIHBhdGggYW5kIHRoZW4gc3dpdGNoaW5nIHRvIGEgbmV3IGJyYW5jaC4gIFRoYXQgaG93ZXZlciB3aWxsIHByZXZlbnQKIHRoZSBpbml0aWFsIGNoZWNrb3V0IGZyb20gaGFwcGVuaW5nLCBzbyB0aGUgcnVsZSBpcyBtb2RpZmllZCB0byB1c2UgTSAobmV3CiB0cmVlKSBvbmx5IHdoZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBpbmRleCBpcyBlbXB0eS4gIE90aGVyd2lzZSB0aGUgcmVtb3ZhbAogb2YgdGhlIHBhdGggaXMga2VwdCBhcyBsb25nIGFzICRIIGFuZCAkTSBhcmUgdGhlIHNhbWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmViYXNlLnR4dAppbmRleCA1OWMxYjAyLi5jOGFkODZhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlYmFzZS50eHQKQEAgLTksNyArOSw3IEBACiAtLS0tLS0tLQogW3ZlcnNlXQogJ2dpdCByZWJhc2UnIFstaSB8IC0taW50ZXJhY3RpdmVdIFstdiB8IC0tdmVyYm9zZV0gWy1tIHwgLS1tZXJnZV0KLQlbLXMgPHN0cmF0ZWd5PiB8IC0tc3RyYXRlZ3k9PHN0cmF0ZWd5Pl0KKwlbLXMgPHN0cmF0ZWd5PiB8IC0tc3RyYXRlZ3k9PHN0cmF0ZWd5Pl0gWy0tbm8tdmVyaWZ5XQogCVstQzxuPl0gWyAtLXdoaXRlc3BhY2U9PG9wdGlvbj5dIFstcCB8IC0tcHJlc2VydmUtbWVyZ2VzXQogCVstLW9udG8gPG5ld2Jhc2U+XSA8dXBzdHJlYW0+IFs8YnJhbmNoPl0KICdnaXQgcmViYXNlJyAtLWNvbnRpbnVlIHwgLS1za2lwIHwgLS1hYm9ydApAQCAtOTIsNyArOTIsNyBAQAogZnJvbSB0aGUgbGF0dGVyIGJyYW5jaCwgdXNpbmcgYHJlYmFzZSAtLW9udG9gLgogCiBGaXJzdCBsZXQncyBhc3N1bWUgeW91ciAndG9waWMnIGlzIGJhc2VkIG9uIGJyYW5jaCAnbmV4dCcuCi1Gb3IgZXhhbXBsZSBmZWF0dXJlIGRldmVsb3BlZCBpbiAndG9waWMnIGRlcGVuZHMgb24gc29tZQorRm9yIGV4YW1wbGUsIGEgZmVhdHVyZSBkZXZlbG9wZWQgaW4gJ3RvcGljJyBkZXBlbmRzIG9uIHNvbWUKIGZ1bmN0aW9uYWxpdHkgd2hpY2ggaXMgZm91bmQgaW4gJ25leHQnLgogCiAtLS0tLS0tLS0tLS0KQEAgLTEwMyw5ICsxMDMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8tLS1vLS0tbyAgdG9waWMKIC0tLS0tLS0tLS0tLQogCi1XZSB3b3VsZCB3YW50IHRvIG1ha2UgJ3RvcGljJyBmb3JrZWQgZnJvbSBicmFuY2ggJ21hc3RlcicsCi1mb3IgZXhhbXBsZSBiZWNhdXNlIHRoZSBmdW5jdGlvbmFsaXR5ICd0b3BpYycgYnJhbmNoIGRlcGVuZCBvbgotZ290IG1lcmdlZCBpbnRvIG1vcmUgc3RhYmxlICdtYXN0ZXInIGJyYW5jaCwgbGlrZSB0aGlzOgorV2Ugd2FudCB0byBtYWtlICd0b3BpYycgZm9ya2VkIGZyb20gYnJhbmNoICdtYXN0ZXInOyBmb3IgZXhhbXBsZSwKK2JlY2F1c2UgdGhlIGZ1bmN0aW9uYWxpdHkgb24gd2hpY2ggJ3RvcGljJyBkZXBlbmRzIHdhcyBtZXJnZWQgaW50byB0aGUKK21vcmUgc3RhYmxlICdtYXN0ZXInIGJyYW5jaC4gV2Ugd2FudCBvdXIgdHJlZSB0byBsb29rIGxpa2UgdGhpczoKIAogLS0tLS0tLS0tLS0tCiAgICAgby0tLW8tLS1vLS0tby0tLW8gIG1hc3RlcgpAQCAtMjMyLDYgKzIzMiw5IEBACiAtLXZlcmJvc2U6OgogCURpc3BsYXkgYSBkaWZmc3RhdCBvZiB3aGF0IGNoYW5nZWQgdXBzdHJlYW0gc2luY2UgdGhlIGxhc3QgcmViYXNlLgogCistLW5vLXZlcmlmeTo6CisJVGhpcyBvcHRpb24gYnlwYXNzZXMgdGhlIHByZS1yZWJhc2UgaG9vay4gIFNlZSBhbHNvIGxpbmtnaXQ6Z2l0aG9va3NbNV0uCisKIC1DPG4+OjoKIAlFbnN1cmUgYXQgbGVhc3QgPG4+IGxpbmVzIG9mIHN1cnJvdW5kaW5nIGNvbnRleHQgbWF0Y2ggYmVmb3JlCiAJYW5kIGFmdGVyIGVhY2ggY2hhbmdlLiAgV2hlbiBmZXdlciBsaW5lcyBvZiBzdXJyb3VuZGluZwpAQCAtMjUwLDE4ICsyNTMsMTYgQEAKIAogLXA6OgogLS1wcmVzZXJ2ZS1tZXJnZXM6OgotCUluc3RlYWQgb2YgaWdub3JpbmcgbWVyZ2VzLCB0cnkgdG8gcmVjcmVhdGUgdGhlbS4gIFRoaXMgb3B0aW9uCi0Jb25seSB3b3JrcyBpbiBpbnRlcmFjdGl2ZSBtb2RlLgorCUluc3RlYWQgb2YgaWdub3JpbmcgbWVyZ2VzLCB0cnkgdG8gcmVjcmVhdGUgdGhlbS4KIAogaW5jbHVkZTo6bWVyZ2Utc3RyYXRlZ2llcy50eHRbXQogCiBOT1RFUwogLS0tLS0KLVdoZW4geW91IHJlYmFzZSBhIGJyYW5jaCwgeW91IGFyZSBjaGFuZ2luZyBpdHMgaGlzdG9yeSBpbiBhIHdheSB0aGF0Ci13aWxsIGNhdXNlIHByb2JsZW1zIGZvciBhbnlvbmUgd2hvIGFscmVhZHkgaGFzIGEgY29weSBvZiB0aGUgYnJhbmNoCi1pbiB0aGVpciByZXBvc2l0b3J5IGFuZCB0cmllcyB0byBwdWxsIHVwZGF0ZXMgZnJvbSB5b3UuICBZb3Ugc2hvdWxkCi11bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdXNpbmcgJ2dpdC1yZWJhc2UnIG9uIGEgcmVwb3NpdG9yeSB0aGF0Ci15b3Ugc2hhcmUuCisKK1lvdSBzaG91bGQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHVzaW5nICdnaXQtcmViYXNlJyBvbiBhCityZXBvc2l0b3J5IHRoYXQgeW91IHNoYXJlLiAgU2VlIGFsc28gUkVDT1ZFUklORyBGUk9NIFVQU1RSRUFNIFJFQkFTRQorYmVsb3cuCiAKIFdoZW4gdGhlIGdpdC1yZWJhc2UgY29tbWFuZCBpcyBydW4sIGl0IHdpbGwgZmlyc3QgZXhlY3V0ZSBhICJwcmUtcmViYXNlIgogaG9vayBpZiBvbmUgZXhpc3RzLiAgWW91IGNhbiB1c2UgdGhpcyBob29rIHRvIGRvIHNhbml0eSBjaGVja3MgYW5kCkBAIC0zOTYsNiArMzk3LDEyNyBAQAogYWZ0ZXIgZWFjaCBjb21taXQsIHRlc3QsIGFuZCBhbWVuZCB0aGUgY29tbWl0IGlmIGZpeGVzIGFyZSBuZWNlc3NhcnkuCiAKIAorUkVDT1ZFUklORyBGUk9NIFVQU1RSRUFNIFJFQkFTRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZWJhc2luZyAob3IgYW55IG90aGVyIGZvcm0gb2YgcmV3cml0aW5nKSBhIGJyYW5jaCB0aGF0IG90aGVycyBoYXZlCitiYXNlZCB3b3JrIG9uIGlzIGEgYmFkIGlkZWE6IGFueW9uZSBkb3duc3RyZWFtIG9mIGl0IGlzIGZvcmNlZCB0bworbWFudWFsbHkgZml4IHRoZWlyIGhpc3RvcnkuICBUaGlzIHNlY3Rpb24gZXhwbGFpbnMgaG93IHRvIGRvIHRoZSBmaXgKK2Zyb20gdGhlIGRvd25zdHJlYW0ncyBwb2ludCBvZiB2aWV3LiAgVGhlIHJlYWwgZml4LCBob3dldmVyLCB3b3VsZCBiZQordG8gYXZvaWQgcmViYXNpbmcgdGhlIHVwc3RyZWFtIGluIHRoZSBmaXJzdCBwbGFjZS4KKworVG8gaWxsdXN0cmF0ZSwgc3VwcG9zZSB5b3UgYXJlIGluIGEgc2l0dWF0aW9uIHdoZXJlIHNvbWVvbmUgZGV2ZWxvcHMgYQorJ3N1YnN5c3RlbScgYnJhbmNoLCBhbmQgeW91IGFyZSB3b3JraW5nIG9uIGEgJ3RvcGljJyB0aGF0IGlzIGRlcGVuZGVudAorb24gdGhpcyAnc3Vic3lzdGVtJy4gIFlvdSBtaWdodCBlbmQgdXAgd2l0aCBhIGhpc3RvcnkgbGlrZSB0aGUKK2ZvbGxvd2luZzoKKworLS0tLS0tLS0tLS0tCisgICAgby0tLW8tLS1vLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vICBtYXN0ZXIKKwkgXAorCSAgby0tLW8tLS1vLS0tby0tLW8gIHN1YnN5c3RlbQorCQkJICAgXAorCQkJICAgICotLS0qLS0tKiAgdG9waWMKKy0tLS0tLS0tLS0tLQorCitJZiAnc3Vic3lzdGVtJyBpcyByZWJhc2VkIGFnYWluc3QgJ21hc3RlcicsIHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKKworLS0tLS0tLS0tLS0tCisgICAgby0tLW8tLS1vLS0tby0tLW8tLS1vLS0tby0tLW8gIG1hc3RlcgorCSBcCQkJIFwKKwkgIG8tLS1vLS0tby0tLW8tLS1vCSAgbyctLW8nLS1vJy0tbyctLW8nICBzdWJzeXN0ZW0KKwkJCSAgIFwKKwkJCSAgICAqLS0tKi0tLSogIHRvcGljCistLS0tLS0tLS0tLS0KKworSWYgeW91IG5vdyBjb250aW51ZSBkZXZlbG9wbWVudCBhcyB1c3VhbCwgYW5kIGV2ZW50dWFsbHkgbWVyZ2UgJ3RvcGljJwordG8gJ3N1YnN5c3RlbScsIHRoZSBjb21taXRzIGZyb20gJ3N1YnN5c3RlbScgd2lsbCByZW1haW4gZHVwbGljYXRlZCBmb3JldmVyOgorCistLS0tLS0tLS0tLS0KKyAgICBvLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vLS0tbyAgbWFzdGVyCisJIFwJCQkgXAorCSAgby0tLW8tLS1vLS0tby0tLW8JICBvJy0tbyctLW8nLS1vJy0tbyctLU0JIHN1YnN5c3RlbQorCQkJICAgXAkJCSAgICAgLworCQkJICAgICotLS0qLS0tKi0uLi4uLi4uLi4uLSotLSogIHRvcGljCistLS0tLS0tLS0tLS0KKworU3VjaCBkdXBsaWNhdGVzIGFyZSBnZW5lcmFsbHkgZnJvd25lZCB1cG9uIGJlY2F1c2UgdGhleSBjbHV0dGVyIHVwCitoaXN0b3J5LCBtYWtpbmcgaXQgaGFyZGVyIHRvIGZvbGxvdy4gIFRvIGNsZWFuIHRoaW5ncyB1cCwgeW91IG5lZWQgdG8KK3RyYW5zcGxhbnQgdGhlIGNvbW1pdHMgb24gJ3RvcGljJyB0byB0aGUgbmV3ICdzdWJzeXN0ZW0nIHRpcCwgaS5lLiwKK3JlYmFzZSAndG9waWMnLiAgVGhpcyBiZWNvbWVzIGEgcmlwcGxlIGVmZmVjdDogYW55b25lIGRvd25zdHJlYW0gZnJvbQorJ3RvcGljJyBpcyBmb3JjZWQgdG8gcmViYXNlIHRvbywgYW5kIHNvIG9uIQorCitUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIGZpeGVzLCBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzdWJzZWN0aW9uczoKKworRWFzeSBjYXNlOiBUaGUgY2hhbmdlcyBhcmUgbGl0ZXJhbGx5IHRoZSBzYW1lLjo6CisKKwlUaGlzIGhhcHBlbnMgaWYgdGhlICdzdWJzeXN0ZW0nIHJlYmFzZSB3YXMgYSBzaW1wbGUgcmViYXNlIGFuZAorCWhhZCBubyBjb25mbGljdHMuCisKK0hhcmQgY2FzZTogVGhlIGNoYW5nZXMgYXJlIG5vdCB0aGUgc2FtZS46OgorCisJVGhpcyBoYXBwZW5zIGlmIHRoZSAnc3Vic3lzdGVtJyByZWJhc2UgaGFkIGNvbmZsaWN0cywgb3IgdXNlZAorCWBcLS1pbnRlcmFjdGl2ZWAgdG8gb21pdCwgZWRpdCwgb3Igc3F1YXNoIGNvbW1pdHM7IG9yIGlmIHRoZQorCXVwc3RyZWFtIHVzZWQgb25lIG9mIGBjb21taXQgXC0tYW1lbmRgLCBgcmVzZXRgLCBvcgorCWBmaWx0ZXItYnJhbmNoYC4KKworCitUaGUgZWFzeSBjYXNlCit+fn5+fn5+fn5+fn5+CisKK09ubHkgd29ya3MgaWYgdGhlIGNoYW5nZXMgKHBhdGNoIElEcyBiYXNlZCBvbiB0aGUgZGlmZiBjb250ZW50cykgb24KKydzdWJzeXN0ZW0nIGFyZSBsaXRlcmFsbHkgdGhlIHNhbWUgYmVmb3JlIGFuZCBhZnRlciB0aGUgcmViYXNlCisnc3Vic3lzdGVtJyBkaWQuCisKK0luIHRoYXQgY2FzZSwgdGhlIGZpeCBpcyBlYXN5IGJlY2F1c2UgJ2dpdC1yZWJhc2UnIGtub3dzIHRvIHNraXAKK2NoYW5nZXMgdGhhdCBhcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBuZXcgdXBzdHJlYW0uICBTbyBpZiB5b3Ugc2F5CisoYXNzdW1pbmcgeW91J3JlIG9uICd0b3BpYycpCistLS0tLS0tLS0tLS0KKyAgICAkIGdpdCByZWJhc2Ugc3Vic3lzdGVtCistLS0tLS0tLS0tLS0KK3lvdSB3aWxsIGVuZCB1cCB3aXRoIHRoZSBmaXhlZCBoaXN0b3J5CistLS0tLS0tLS0tLS0KKyAgICBvLS0tby0tLW8tLS1vLS0tby0tLW8tLS1vLS0tbyAgbWFzdGVyCisJCQkJIFwKKwkJCQkgIG8nLS1vJy0tbyctLW8nLS1vJyAgc3Vic3lzdGVtCisJCQkJCQkgICBcCisJCQkJCQkgICAgKi0tLSotLS0qICB0b3BpYworLS0tLS0tLS0tLS0tCisKKworVGhlIGhhcmQgY2FzZQorfn5+fn5+fn5+fn5+fgorCitUaGluZ3MgZ2V0IG1vcmUgY29tcGxpY2F0ZWQgaWYgdGhlICdzdWJzeXN0ZW0nIGNoYW5nZXMgZG8gbm90IGV4YWN0bHkKK2NvcnJlc3BvbmQgdG8gdGhlIG9uZXMgYmVmb3JlIHRoZSByZWJhc2UuCisKK05PVEU6IFdoaWxlIGFuICJlYXN5IGNhc2UgcmVjb3ZlcnkiIHNvbWV0aW1lcyBhcHBlYXJzIHRvIGJlIHN1Y2Nlc3NmdWwKKyAgICAgIGV2ZW4gaW4gdGhlIGhhcmQgY2FzZSwgaXQgbWF5IGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuICBGb3IKKyAgICAgIGV4YW1wbGUsIGEgY29tbWl0IHRoYXQgd2FzIHJlbW92ZWQgdmlhIGBnaXQgcmViYXNlCisgICAgICBcLS1pbnRlcmFjdGl2ZWAgd2lsbCBiZSAqKnJlc3VycmVjdGVkKiohCisKK1RoZSBpZGVhIGlzIHRvIG1hbnVhbGx5IHRlbGwgJ2dpdC1yZWJhc2UnICJ3aGVyZSB0aGUgb2xkICdzdWJzeXN0ZW0nCitlbmRlZCBhbmQgeW91ciAndG9waWMnIGJlZ2FuIiwgdGhhdCBpcywgd2hhdCB0aGUgb2xkIG1lcmdlLWJhc2UKK2JldHdlZW4gdGhlbSB3YXMuICBZb3Ugd2lsbCBoYXZlIHRvIGZpbmQgYSB3YXkgdG8gbmFtZSB0aGUgbGFzdCBjb21taXQKK29mIHRoZSBvbGQgJ3N1YnN5c3RlbScsIGZvciBleGFtcGxlOgorCisqIFdpdGggdGhlICdzdWJzeXN0ZW0nIHJlZmxvZzogYWZ0ZXIgJ2dpdC1mZXRjaCcsIHRoZSBvbGQgdGlwIG9mCisgICdzdWJzeXN0ZW0nIGlzIGF0IGBzdWJzeXN0ZW1AXHsxfWAuICBTdWJzZXF1ZW50IGZldGNoZXMgd2lsbAorICBpbmNyZWFzZSB0aGUgbnVtYmVyLiAgKFNlZSBsaW5rZ2l0OmdpdC1yZWZsb2dbMV0uKQorCisqIFJlbGF0aXZlIHRvIHRoZSB0aXAgb2YgJ3RvcGljJzoga25vd2luZyB0aGF0IHlvdXIgJ3RvcGljJyBoYXMgdGhyZWUKKyAgY29tbWl0cywgdGhlIG9sZCB0aXAgb2YgJ3N1YnN5c3RlbScgbXVzdCBiZSBgdG9waWN+M2AuCisKK1lvdSBjYW4gdGhlbiB0cmFuc3BsYW50IHRoZSBvbGQgYHN1YnN5c3RlbS4udG9waWNgIHRvIHRoZSBuZXcgdGlwIGJ5CitzYXlpbmcgKGZvciB0aGUgcmVmbG9nIGNhc2UsIGFuZCBhc3N1bWluZyB5b3UgYXJlIG9uICd0b3BpYycgYWxyZWFkeSk6CistLS0tLS0tLS0tLS0KKyAgICAkIGdpdCByZWJhc2UgLS1vbnRvIHN1YnN5c3RlbSBzdWJzeXN0ZW1AezF9CistLS0tLS0tLS0tLS0KKworVGhlIHJpcHBsZSBlZmZlY3Qgb2YgYSAiaGFyZCBjYXNlIiByZWNvdmVyeSBpcyBlc3BlY2lhbGx5IGJhZDoKKydldmVyeW9uZScgZG93bnN0cmVhbSBmcm9tICd0b3BpYycgd2lsbCBub3cgaGF2ZSB0byBwZXJmb3JtIGEgImhhcmQKK2Nhc2UiIHJlY292ZXJ5IHRvbyEKKworCiBBdXRob3JzCiAtLS0tLS0KIFdyaXR0ZW4gYnkgSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPiBhbmQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUudHh0CmluZGV4IGJiOTk4MTAuLmZhZDk4M2UgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLnR4dApAQCAtMTEsNiArMTEsNyBAQAogW3ZlcnNlXQogJ2dpdCByZW1vdGUnIFstdiB8IC0tdmVyYm9zZV0KICdnaXQgcmVtb3RlIGFkZCcgWy10IDxicmFuY2g+XSBbLW0gPG1hc3Rlcj5dIFstZl0gWy0tbWlycm9yXSA8bmFtZT4gPHVybD4KKydnaXQgcmVtb3RlIHJlbmFtZScgPG9sZD4gPG5ldz4KICdnaXQgcmVtb3RlIHJtJyA8bmFtZT4KICdnaXQgcmVtb3RlIHNob3cnIFstbl0gPG5hbWU+CiAnZ2l0IHJlbW90ZSBwcnVuZScgWy1uIHwgLS1kcnktcnVuXSA8bmFtZT4KQEAgLTYxLDYgKzYyLDE1IEBACiBtb2RlLCBmdXJ0aGVybW9yZSwgYGdpdCBwdXNoYCB3aWxsIGFsd2F5cyBiZWhhdmUgYXMgaWYgYFwtLW1pcnJvcmAKIHdhcyBwYXNzZWQuCiAKKydyZW5hbWUnOjoKKworUmVuYW1lIHRoZSByZW1vdGUgbmFtZWQgPG9sZD4gdG8gPG5ldz4uIEFsbCByZW1vdGUgdHJhY2tpbmcgYnJhbmNoZXMgYW5kCitjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgcmVtb3RlIGFyZSB1cGRhdGVkLgorKworSW4gY2FzZSA8b2xkPiBhbmQgPG5ldz4gYXJlIHRoZSBzYW1lLCBhbmQgPG9sZD4gaXMgYSBmaWxlIHVuZGVyCitgJEdJVF9ESVIvcmVtb3Rlc2Agb3IgYCRHSVRfRElSL2JyYW5jaGVzYCwgdGhlIHJlbW90ZSBpcyBjb252ZXJ0ZWQgdG8KK3RoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9ybWF0LgorCiAncm0nOjoKIAogUmVtb3ZlIHRoZSByZW1vdGUgbmFtZWQgPG5hbWU+LiBBbGwgcmVtb3RlIHRyYWNraW5nIGJyYW5jaGVzIGFuZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmVzZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVzZXQudHh0CmluZGV4IDZhYmFlYWMuLjIwNDlmM2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlc2V0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXNldC50eHQKQEAgLTgyLDcgKzgyLDkgQEAKICsKIDwxPiBUaGUgbGFzdCB0aHJlZSBjb21taXRzIChIRUFELCBIRUFEXiwgYW5kIEhFQUR+Mikgd2VyZSBiYWQKIGFuZCB5b3UgZG8gbm90IHdhbnQgdG8gZXZlciBzZWUgdGhlbSBhZ2Fpbi4gIERvICpub3QqIGRvIHRoaXMgaWYKLXlvdSBoYXZlIGFscmVhZHkgZ2l2ZW4gdGhlc2UgY29tbWl0cyB0byBzb21lYm9keSBlbHNlLgoreW91IGhhdmUgYWxyZWFkeSBnaXZlbiB0aGVzZSBjb21taXRzIHRvIHNvbWVib2R5IGVsc2UuICAoU2VlIHRoZQorIlJFQ09WRVJJTkcgRlJPTSBVUFNUUkVBTSBSRUJBU0UiIHNlY3Rpb24gaW4gbGlua2dpdDpnaXQtcmViYXNlWzFdIGZvcgordGhlIGltcGxpY2F0aW9ucyBvZiBkb2luZyBzby4pCiAKIFVuZG8gYSBjb21taXQsIG1ha2luZyBpdCBhIHRvcGljIGJyYW5jaDo6CiArCkBAIC0xMjgsNyArMTMwLDcgQEAKICQgZ2l0IHB1bGwgICAgICAgICAgICAgICAgICAgICAgICAgPDE+CiBBdXRvLW1lcmdpbmcgbml0Zm9sCiBDT05GTElDVCAoY29udGVudCk6IE1lcmdlIGNvbmZsaWN0IGluIG5pdGZvbAotQXV0b21hdGljIG1lcmdlIGZhaWxlZC9wcmV2ZW50ZWQ7IGZpeCB1cCBieSBoYW5kCitBdXRvbWF0aWMgbWVyZ2UgZmFpbGVkOyBmaXggY29uZmxpY3RzIGFuZCB0aGVuIGNvbW1pdCB0aGUgcmVzdWx0LgogJCBnaXQgcmVzZXQgLS1oYXJkICAgICAgICAgICAgICAgICA8Mj4KICQgZ2l0IHB1bGwgLiB0b3BpYy9icmFuY2ggICAgICAgICAgPDM+CiBVcGRhdGluZyBmcm9tIDQxMjIzLi4uIHRvIDEzMTM0Li4uCkBAIC0xNzUsNiArMTc3LDggQEAKIDwzPiBBdCB0aGlzIHBvaW50IHRoZSBpbmRleCBmaWxlIHN0aWxsIGhhcyBhbGwgdGhlIFdJUCBjaGFuZ2VzIHlvdQogICAgIGNvbW1pdHRlZCBhcyAnc25hcHNob3QgV0lQJy4gIFRoaXMgdXBkYXRlcyB0aGUgaW5kZXggdG8gc2hvdyB5b3VyCiAgICAgV0lQIGZpbGVzIGFzIHVuY29tbWl0dGVkLgorKworU2VlIGFsc28gbGlua2dpdDpnaXQtc3Rhc2hbMV0uCiAKIFJlc2V0IGEgc2luZ2xlIGZpbGUgaW4gdGhlIGluZGV4OjoKICsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJldmVydC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXZlcnQudHh0CmluZGV4IGNhYTA3MjkuLjVlMTE3NTggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJldmVydC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmV2ZXJ0LnR4dApAQCAtNDQsNiArNDQsMTQgQEAKIAlvcHRpb24gc3BlY2lmaWVzIHRoZSBwYXJlbnQgbnVtYmVyIChzdGFydGluZyBmcm9tIDEpIG9mCiAJdGhlIG1haW5saW5lIGFuZCBhbGxvd3MgcmV2ZXJ0IHRvIHJldmVyc2UgdGhlIGNoYW5nZQogCXJlbGF0aXZlIHRvIHRoZSBzcGVjaWZpZWQgcGFyZW50LgorKworUmV2ZXJ0aW5nIGEgbWVyZ2UgY29tbWl0IGRlY2xhcmVzIHRoYXQgeW91IHdpbGwgbmV2ZXIgd2FudCB0aGUgdHJlZSBjaGFuZ2VzCiticm91Z2h0IGluIGJ5IHRoZSBtZXJnZS4gIEFzIGEgcmVzdWx0LCBsYXRlciBtZXJnZXMgd2lsbCBvbmx5IGJyaW5nIGluIHRyZWUKK2NoYW5nZXMgaW50cm9kdWNlZCBieSBjb21taXRzIHRoYXQgYXJlIG5vdCBhbmNlc3RvcnMgb2YgdGhlIHByZXZpb3VzbHkKK3JldmVydGVkIG1lcmdlLiAgVGhpcyBtYXkgb3IgbWF5IG5vdCBiZSB3aGF0IHlvdSB3YW50LgorKworU2VlIHRoZSBsaW5rOmhvd3RvL3JldmVydC1hLWZhdWx0eS1tZXJnZS50eHRbcmV2ZXJ0LWEtZmF1bHR5LW1lcmdlIEhvdy1Ub10gZm9yCittb3JlIGRldGFpbHMuCiAKIC0tbm8tZWRpdDo6CiAJV2l0aCB0aGlzIG9wdGlvbiwgJ2dpdC1yZXZlcnQnIHdpbGwgbm90IHN0YXJ0IHRoZSBjb21taXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtZW1haWwudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1lbWFpbC50eHQKaW5kZXggM2MzZTFiMC4uZmY0YWVmZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1lbWFpbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1lbWFpbC50eHQKQEAgLTgsOCArOCw3IEBACiAKIFNZTk9QU0lTCiAtLS0tLS0tLQotJ2dpdCBzZW5kLWVtYWlsJyBbb3B0aW9uc10gPGZpbGV8ZGlyZWN0b3J5PiBbLi4uIGZpbGV8ZGlyZWN0b3J5XQotCisnZ2l0IHNlbmQtZW1haWwnIFtvcHRpb25zXSA8ZmlsZXxkaXJlY3Rvcnl8cmV2LWxpc3Qgb3B0aW9ucz4uLi4KIAogCiBERVNDUklQVElPTgpAQCAtMjAsMzkgKzE5LDQyIEBACiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB3aXRoIGEgUmVhZExpbmUKIGVuYWJsZWQgaW50ZXJmYWNlIHRvIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbi4KIAorCiBPUFRJT05TCiAtLS0tLS0tCi1UaGUgb3B0aW9ucyBhdmFpbGFibGUgYXJlOgorCitDb21wb3NpbmcKK35+fn5+fn5+fgogCiAtLWJjYzo6Ci0JU3BlY2lmeSBhICJCY2M6IiB2YWx1ZSBmb3IgZWFjaCBlbWFpbC4KKwlTcGVjaWZ5IGEgIkJjYzoiIHZhbHVlIGZvciBlYWNoIGVtYWlsLiBEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZgorCSdzZW5kZW1haWwuYmNjJy4KICsKIFRoZSAtLWJjYyBvcHRpb24gbXVzdCBiZSByZXBlYXRlZCBmb3IgZWFjaCB1c2VyIHlvdSB3YW50IG9uIHRoZSBiY2MgbGlzdC4KIAogLS1jYzo6CiAJU3BlY2lmeSBhIHN0YXJ0aW5nICJDYzoiIHZhbHVlIGZvciBlYWNoIGVtYWlsLgorCURlZmF1bHQgaXMgdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuY2MnLgogKwogVGhlIC0tY2Mgb3B0aW9uIG11c3QgYmUgcmVwZWF0ZWQgZm9yIGVhY2ggdXNlciB5b3Ugd2FudCBvbiB0aGUgY2MgbGlzdC4KIAotLS1jYy1jbWQ6OgotCVNwZWNpZnkgYSBjb21tYW5kIHRvIGV4ZWN1dGUgb25jZSBwZXIgcGF0Y2ggZmlsZSB3aGljaAotCXNob3VsZCBnZW5lcmF0ZSBwYXRjaCBmaWxlIHNwZWNpZmljICJDYzoiIGVudHJpZXMuCi0JT3V0cHV0IG9mIHRoaXMgY29tbWFuZCBtdXN0IGJlIHNpbmdsZSBlbWFpbCBhZGRyZXNzIHBlciBsaW5lLgotCURlZmF1bHQgaXMgdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuY2NjbWQnIGNvbmZpZ3VyYXRpb24gdmFsdWUuCi0KLS0tY2hhaW4tcmVwbHktdG86OgotLS1uby1jaGFpbi1yZXBseS10bzo6Ci0JSWYgdGhpcyBpcyBzZXQsIGVhY2ggZW1haWwgd2lsbCBiZSBzZW50IGFzIGEgcmVwbHkgdG8gdGhlIHByZXZpb3VzCi0JZW1haWwgc2VudC4gIElmIGRpc2FibGVkIHdpdGggIi0tbm8tY2hhaW4tcmVwbHktdG8iLCBhbGwgZW1haWxzIGFmdGVyCi0JdGhlIGZpcnN0IHdpbGwgYmUgc2VudCBhcyByZXBsaWVzIHRvIHRoZSBmaXJzdCBlbWFpbCBzZW50LiAgV2hlbiB1c2luZwotCXRoaXMsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlIGZpcnN0IGZpbGUgZ2l2ZW4gYmUgYW4gb3ZlcnZpZXcgb2YgdGhlCi0JZW50aXJlIHBhdGNoIHNlcmllcy4KLQlEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgJ3NlbmRlbWFpbC5jaGFpbnJlcGx5dG8nIGNvbmZpZ3VyYXRpb24KLQl2YWx1ZTsgaWYgdGhhdCBpcyB1bnNwZWNpZmllZCwgZGVmYXVsdCB0byAtLWNoYWluLXJlcGx5LXRvLgorLS1hbm5vdGF0ZTo6CisJUmV2aWV3IGVhY2ggcGF0Y2ggeW91J3JlIGFib3V0IHRvIHNlbmQgaW4gYW4gZWRpdG9yLiBUaGUgc2V0dGluZworCSdzZW5kZW1haWwubXVsdGllZGl0JyBkZWZpbmVzIGlmIHRoaXMgd2lsbCBzcGF3biBvbmUgZWRpdG9yIHBlciBwYXRjaAorCW9yIG9uZSBmb3IgYWxsIG9mIHRoZW0gYXQgb25jZS4KIAogLS1jb21wb3NlOjoKIAlVc2UgJEdJVF9FRElUT1IsIGNvcmUuZWRpdG9yLCAkVklTVUFMLCBvciAkRURJVE9SIHRvIGVkaXQgYW4KIAlpbnRyb2R1Y3RvcnkgbWVzc2FnZSBmb3IgdGhlIHBhdGNoIHNlcmllcy4KKysKK1doZW4gJy0tY29tcG9zZScgaXMgdXNlZCwgZ2l0IHNlbmQtZW1haWwgZ2V0cyBsZXNzIGludGVyYWN0aXZlIHdpbGwgdXNlIHRoZQordmFsdWVzIG9mIHRoZSBoZWFkZXJzIHlvdSBzZXQgdGhlcmUuIElmIHRoZSBib2R5IG9mIHRoZSBlbWFpbCAod2hhdCB5b3UgdHlwZQorYWZ0ZXIgdGhlIGhlYWRlcnMgYW5kIGEgYmxhbmsgbGluZSkgb25seSBjb250YWlucyBibGFuayAob3IgR0lUOiBwcmVmaXhlZCkKK2xpbmVzLCB0aGUgc3VtbWFyeSB3b24ndCBiZSBzZW50LCBidXQgZ2l0LXNlbmQtZW1haWwgd2lsbCBzdGlsbCB1c2UgdGhlCitIZWFkZXJzIHZhbHVlcyBpZiB5b3UgZG9uJ3QgcmVtb3ZlZCB0aGVtLgorKworSWYgaXQgd2Fzbid0IGFibGUgdG8gc2VlIGEgaGVhZGVyIGluIHRoZSBzdW1tYXJ5IGl0IHdpbGwgYXNrIHlvdSBhYm91dCBpdAoraW50ZXJhY3RpdmVseSBhZnRlciBxdWl0dGluZyB5b3VyIGVkaXRvci4KIAogLS1mcm9tOjoKIAlTcGVjaWZ5IHRoZSBzZW5kZXIgb2YgdGhlIGVtYWlscy4gIFRoaXMgd2lsbCBkZWZhdWx0IHRvCkBAIC02NiwyMiArNjgsNDcgQEAKIAlPbmx5IG5lY2Vzc2FyeSBpZiAtLWNvbXBvc2UgaXMgYWxzbyBzZXQuICBJZiAtLWNvbXBvc2UKIAlpcyBub3Qgc2V0LCB0aGlzIHdpbGwgYmUgcHJvbXB0ZWQgZm9yLgogCi0tLXNpZ25lZC1vZmYtYnktY2M6OgotLS1uby1zaWduZWQtb2ZmLWJ5LWNjOjoKLSAgICAgICAgSWYgdGhpcyBpcyBzZXQsIGFkZCBlbWFpbHMgZm91bmQgaW4gU2lnbmVkLW9mZi1ieTogb3IgQ2M6IGxpbmVzIHRvIHRoZQotICAgICAgICBjYyBsaXN0LgotICAgICAgICBEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiAnc2VuZGVtYWlsLnNpZ25lZG9mZmNjJyBjb25maWd1cmF0aW9uIHZhbHVlOwotICAgICAgICBpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBkZWZhdWx0IHRvIC0tc2lnbmVkLW9mZi1ieS1jYy4KKy0tc3ViamVjdDo6CisJU3BlY2lmeSB0aGUgaW5pdGlhbCBzdWJqZWN0IG9mIHRoZSBlbWFpbCB0aHJlYWQuCisJT25seSBuZWNlc3NhcnkgaWYgLS1jb21wb3NlIGlzIGFsc28gc2V0LiAgSWYgLS1jb21wb3NlCisJaXMgbm90IHNldCwgdGhpcyB3aWxsIGJlIHByb21wdGVkIGZvci4KIAotLS1xdWlldDo6Ci0JTWFrZSBnaXQtc2VuZC1lbWFpbCBsZXNzIHZlcmJvc2UuICBPbmUgbGluZSBwZXIgZW1haWwgc2hvdWxkIGJlCi0JYWxsIHRoYXQgaXMgb3V0cHV0LgorLS10bzo6CisJU3BlY2lmeSB0aGUgcHJpbWFyeSByZWNpcGllbnQgb2YgdGhlIGVtYWlscyBnZW5lcmF0ZWQuIEdlbmVyYWxseSwgdGhpcworCXdpbGwgYmUgdGhlIHVwc3RyZWFtIG1haW50YWluZXIgb2YgdGhlIHByb2plY3QgaW52b2x2ZWQuIERlZmF1bHQgaXMgdGhlCisJdmFsdWUgb2YgdGhlICdzZW5kZW1haWwudG8nIGNvbmZpZ3VyYXRpb24gdmFsdWU7IGlmIHRoYXQgaXMgdW5zcGVjaWZpZWQsCisJdGhpcyB3aWxsIGJlIHByb21wdGVkIGZvci4KKysKK1RoZSAtLXRvIG9wdGlvbiBtdXN0IGJlIHJlcGVhdGVkIGZvciBlYWNoIHVzZXIgeW91IHdhbnQgb24gdGhlIHRvIGxpc3QuCiAKLS0taWRlbnRpdHk6OgotCUEgY29uZmlndXJhdGlvbiBpZGVudGl0eS4gV2hlbiBnaXZlbiwgY2F1c2VzIHZhbHVlcyBpbiB0aGUKLQknc2VuZGVtYWlsLjxpZGVudGl0eT4nIHN1YnNlY3Rpb24gdG8gdGFrZSBwcmVjZWRlbmNlIG92ZXIKLQl2YWx1ZXMgaW4gdGhlICdzZW5kZW1haWwnIHNlY3Rpb24uIFRoZSBkZWZhdWx0IGlkZW50aXR5IGlzCi0JdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuaWRlbnRpdHknLgorCitTZW5kaW5nCit+fn5+fn5+CisKKy0tZW52ZWxvcGUtc2VuZGVyOjoKKwlTcGVjaWZ5IHRoZSBlbnZlbG9wZSBzZW5kZXIgdXNlZCB0byBzZW5kIHRoZSBlbWFpbHMuCisJVGhpcyBpcyB1c2VmdWwgaWYgeW91ciBkZWZhdWx0IGFkZHJlc3MgaXMgbm90IHRoZSBhZGRyZXNzIHRoYXQgaXMKKwlzdWJzY3JpYmVkIHRvIGEgbGlzdC4gSWYgeW91IHVzZSB0aGUgc2VuZG1haWwgYmluYXJ5LCB5b3UgbXVzdCBoYXZlCisJc3VpdGFibGUgcHJpdmlsZWdlcyBmb3IgdGhlIC1mIHBhcmFtZXRlci4gRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YKKwl0aGUgJ3NlbmRlbWFpbC5lbnZlbG9wZXNlbmRlcicgY29uZmlndXJhdGlvbiB2YXJpYWJsZTsgaWYgdGhhdCBpcworCXVuc3BlY2lmaWVkLCBjaG9vc2luZyB0aGUgZW52ZWxvcGUgc2VuZGVyIGlzIGxlZnQgdG8geW91ciBNVEEuCisKKy0tc210cC1lbmNyeXB0aW9uOjoKKwlTcGVjaWZ5IHRoZSBlbmNyeXB0aW9uIHRvIHVzZSwgZWl0aGVyICdzc2wnIG9yICd0bHMnLiAgQW55IG90aGVyCisJdmFsdWUgcmV2ZXJ0cyB0byBwbGFpbiBTTVRQLiAgRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YKKwknc2VuZGVtYWlsLnNtdHBlbmNyeXB0aW9uJy4KKworLS1zbXRwLXBhc3M6OgorCVBhc3N3b3JkIGZvciBTTVRQLUFVVEguIFRoZSBhcmd1bWVudCBpcyBvcHRpb25hbDogSWYgbm8KKwlhcmd1bWVudCBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIGVtcHR5IHN0cmluZyBpcyB1c2VkIGFzCisJdGhlIHBhc3N3b3JkLiBEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiAnc2VuZGVtYWlsLnNtdHBwYXNzJywKKwlob3dldmVyICctLXNtdHAtcGFzcycgYWx3YXlzIG92ZXJyaWRlcyB0aGlzIHZhbHVlLgorKworRnVydGhlcm1vcmUsIHBhc3N3b3JkcyBuZWVkIG5vdCBiZSBzcGVjaWZpZWQgaW4gY29uZmlndXJhdGlvbiBmaWxlcworb3Igb24gdGhlIGNvbW1hbmQgbGluZS4gSWYgYSB1c2VybmFtZSBoYXMgYmVlbiBzcGVjaWZpZWQgKHdpdGgKKyctLXNtdHAtdXNlcicgb3IgYSAnc2VuZGVtYWlsLnNtdHB1c2VyJyksIGJ1dCBubyBwYXNzd29yZCBoYXMgYmVlbgorc3BlY2lmaWVkICh3aXRoICctLXNtdHAtcGFzcycgb3IgJ3NlbmRlbWFpbC5zbXRwcGFzcycpLCB0aGVuIHRoZQordXNlciBpcyBwcm9tcHRlZCBmb3IgYSBwYXNzd29yZCB3aGlsZSB0aGUgaW5wdXQgaXMgbWFza2VkIGZvciBwcml2YWN5LgogCiAtLXNtdHAtc2VydmVyOjoKIAlJZiBzZXQsIHNwZWNpZmllcyB0aGUgb3V0Z29pbmcgU01UUCBzZXJ2ZXIgdG8gdXNlIChlLmcuCkBAIC05Niw2MSArMTIzLDQ0IEBACiAtLXNtdHAtc2VydmVyLXBvcnQ6OgogCVNwZWNpZmllcyBhIHBvcnQgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgcG9ydCAoU01UUAogCXNlcnZlcnMgdHlwaWNhbGx5IGxpc3RlbiB0byBzbXRwIHBvcnQgMjUgYW5kIHNzbXRwIHBvcnQKLQk0NjUpLgotCi0tLXNtdHAtdXNlcjo6Ci0JVXNlcm5hbWUgZm9yIFNNVFAtQVVUSC4gSW4gcGxhY2Ugb2YgdGhpcyBvcHRpb24sIHRoZSBmb2xsb3dpbmcKLQljb25maWd1cmF0aW9uIHZhcmlhYmxlcyBjYW4gYmUgc3BlY2lmaWVkOgotKwotLS0KLQkJKiBzZW5kZW1haWwuc210cHVzZXIKLQkJKiBzZW5kZW1haWwuPGlkZW50aXR5Pi5zbXRwdXNlciAoc2VlIHNlbmRlbWFpbC5pZGVudGl0eSkuCi0tLQotKwotSG93ZXZlciwgLS1zbXRwLXVzZXIgYWx3YXlzIG92ZXJyaWRlcyB0aGVzZSB2YXJpYWJsZXMuCi0rCi1JZiBhIHVzZXJuYW1lIGlzIG5vdCBzcGVjaWZpZWQgKHdpdGggLS1zbXRwLXVzZXIgb3IgYQotY29uZmlndXJhdGlvbiB2YXJpYWJsZSksIHRoZW4gYXV0aGVudGljYXRpb24gaXMgbm90IGF0dGVtcHRlZC4KLQotLS1zbXRwLXBhc3M6OgotCVBhc3N3b3JkIGZvciBTTVRQLUFVVEguIFRoZSBhcmd1bWVudCBpcyBvcHRpb25hbDogSWYgbm8KLQlhcmd1bWVudCBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIGVtcHR5IHN0cmluZyBpcyB1c2VkIGFzCi0JdGhlIHBhc3N3b3JkLgotKwotSW4gcGxhY2Ugb2YgdGhpcyBvcHRpb24sIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLWNhbiBiZSBzcGVjaWZpZWQ6Ci0rCi0tLQotCQkqIHNlbmRlbWFpbC5zbXRwcGFzcwotCQkqIHNlbmRlbWFpbC48aWRlbnRpdHk+LnNtdHBwYXNzIChzZWUgc2VuZGVtYWlsLmlkZW50aXR5KS4KLS0tCi0rCi1Ib3dldmVyLCAtLXNtdHAtcGFzcyBhbHdheXMgb3ZlcnJpZGVzIHRoZXNlIHZhcmlhYmxlcy4KLSsKLUZ1cnRoZXJtb3JlLCBwYXNzd29yZHMgbmVlZCBub3QgYmUgc3BlY2lmaWVkIGluIGNvbmZpZ3VyYXRpb24gZmlsZXMKLW9yIG9uIHRoZSBjb21tYW5kIGxpbmUuIElmIGEgdXNlcm5hbWUgaGFzIGJlZW4gc3BlY2lmaWVkICh3aXRoCi0tLXNtdHAtdXNlciBvciBhIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUpLCBidXQgbm8gcGFzc3dvcmQgaGFzIGJlZW4KLXNwZWNpZmllZCAod2l0aCAtLXNtdHAtcGFzcyBvciBhIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUpLCB0aGVuIHRoZQotdXNlciBpcyBwcm9tcHRlZCBmb3IgYSBwYXNzd29yZCB3aGlsZSB0aGUgaW5wdXQgaXMgbWFza2VkIGZvciBwcml2YWN5LgotCi0tLXNtdHAtZW5jcnlwdGlvbjo6Ci0JU3BlY2lmeSB0aGUgZW5jcnlwdGlvbiB0byB1c2UsIGVpdGhlciAnc3NsJyBvciAndGxzJy4gIEFueSBvdGhlcgotCXZhbHVlIHJldmVydHMgdG8gcGxhaW4gU01UUC4gIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mCi0JJ3NlbmRlbWFpbC5zbXRwZW5jcnlwdGlvbicuCisJNDY1KS4gVGhpcyBjYW4gYmUgc2V0IHdpdGggJ3NlbmRlbWFpbC5zbXRwc2VydmVycG9ydCcuCiAKIC0tc210cC1zc2w6OgotCUxlZ2FjeSBhbGlhcyBmb3IgJy0tc210cC1lbmNyeXB0aW9uPXNzbCcuCisJTGVnYWN5IGFsaWFzIGZvciAnLS1zbXRwLWVuY3J5cHRpb24gc3NsJy4KIAotLS1zdWJqZWN0OjoKLQlTcGVjaWZ5IHRoZSBpbml0aWFsIHN1YmplY3Qgb2YgdGhlIGVtYWlsIHRocmVhZC4KLQlPbmx5IG5lY2Vzc2FyeSBpZiAtLWNvbXBvc2UgaXMgYWxzbyBzZXQuICBJZiAtLWNvbXBvc2UKLQlpcyBub3Qgc2V0LCB0aGlzIHdpbGwgYmUgcHJvbXB0ZWQgZm9yLgorLS1zbXRwLXVzZXI6OgorCVVzZXJuYW1lIGZvciBTTVRQLUFVVEguIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuc210cHVzZXInOworCWlmIGEgdXNlcm5hbWUgaXMgbm90IHNwZWNpZmllZCAod2l0aCAnLS1zbXRwLXVzZXInIG9yICdzZW5kZW1haWwuc210cHVzZXInKSwKKwl0aGVuIGF1dGhlbnRpY2F0aW9uIGlzIG5vdCBhdHRlbXB0ZWQuCiAKLS0tc3VwcHJlc3MtZnJvbTo6Ci0tLW5vLXN1cHByZXNzLWZyb206OgotICAgICAgICBJZiB0aGlzIGlzIHNldCwgZG8gbm90IGFkZCB0aGUgRnJvbTogYWRkcmVzcyB0byB0aGUgY2M6IGxpc3QuCi0gICAgICAgIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mICdzZW5kZW1haWwuc3VwcHJlc3Nmcm9tJyBjb25maWd1cmF0aW9uIHZhbHVlOwotICAgICAgICBpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBkZWZhdWx0IHRvIC0tbm8tc3VwcHJlc3MtZnJvbS4KKworQXV0b21hdGluZworfn5+fn5+fn5+fgorCistLWNjLWNtZDo6CisJU3BlY2lmeSBhIGNvbW1hbmQgdG8gZXhlY3V0ZSBvbmNlIHBlciBwYXRjaCBmaWxlIHdoaWNoCisJc2hvdWxkIGdlbmVyYXRlIHBhdGNoIGZpbGUgc3BlY2lmaWMgIkNjOiIgZW50cmllcy4KKwlPdXRwdXQgb2YgdGhpcyBjb21tYW5kIG11c3QgYmUgc2luZ2xlIGVtYWlsIGFkZHJlc3MgcGVyIGxpbmUuCisJRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YgJ3NlbmRlbWFpbC5jY2NtZCcgY29uZmlndXJhdGlvbiB2YWx1ZS4KKworLS1bbm8tXWNoYWluLXJlcGx5LXRvOjoKKwlJZiB0aGlzIGlzIHNldCwgZWFjaCBlbWFpbCB3aWxsIGJlIHNlbnQgYXMgYSByZXBseSB0byB0aGUgcHJldmlvdXMKKwllbWFpbCBzZW50LiAgSWYgZGlzYWJsZWQgd2l0aCAiLS1uby1jaGFpbi1yZXBseS10byIsIGFsbCBlbWFpbHMgYWZ0ZXIKKwl0aGUgZmlyc3Qgd2lsbCBiZSBzZW50IGFzIHJlcGxpZXMgdG8gdGhlIGZpcnN0IGVtYWlsIHNlbnQuICBXaGVuIHVzaW5nCisJdGhpcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgZmlyc3QgZmlsZSBnaXZlbiBiZSBhbiBvdmVydmlldyBvZiB0aGUKKwllbnRpcmUgcGF0Y2ggc2VyaWVzLiBEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgJ3NlbmRlbWFpbC5jaGFpbnJlcGx5dG8nCisJY29uZmlndXJhdGlvbiB2YWx1ZTsgaWYgdGhhdCBpcyB1bnNwZWNpZmllZCwgZGVmYXVsdCB0byAtLWNoYWluLXJlcGx5LXRvLgorCistLWlkZW50aXR5OjoKKwlBIGNvbmZpZ3VyYXRpb24gaWRlbnRpdHkuIFdoZW4gZ2l2ZW4sIGNhdXNlcyB2YWx1ZXMgaW4gdGhlCisJJ3NlbmRlbWFpbC48aWRlbnRpdHk+JyBzdWJzZWN0aW9uIHRvIHRha2UgcHJlY2VkZW5jZSBvdmVyCisJdmFsdWVzIGluIHRoZSAnc2VuZGVtYWlsJyBzZWN0aW9uLiBUaGUgZGVmYXVsdCBpZGVudGl0eSBpcworCXRoZSB2YWx1ZSBvZiAnc2VuZGVtYWlsLmlkZW50aXR5Jy4KKworLS1bbm8tXXNpZ25lZC1vZmYtYnktY2M6OgorCUlmIHRoaXMgaXMgc2V0LCBhZGQgZW1haWxzIGZvdW5kIGluIFNpZ25lZC1vZmYtYnk6IG9yIENjOiBsaW5lcyB0byB0aGUKKwljYyBsaXN0LiBEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiAnc2VuZGVtYWlsLnNpZ25lZG9mZmJ5Y2MnIGNvbmZpZ3VyYXRpb24KKwl2YWx1ZTsgaWYgdGhhdCBpcyB1bnNwZWNpZmllZCwgZGVmYXVsdCB0byAtLXNpZ25lZC1vZmYtYnktY2MuCiAKIC0tc3VwcHJlc3MtY2M6OgogCVNwZWNpZnkgYW4gYWRkaXRpb25hbCBjYXRlZ29yeSBvZiByZWNpcGllbnRzIHRvIHN1cHByZXNzIHRoZQpAQCAtMTYzLDQ0ICsxNzMsNDkgQEAKIAlpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBkZWZhdWx0IHRvICdzZWxmJyBpZiAtLXN1cHByZXNzLWZyb20gaXMKIAlzcGVjaWZpZWQsIGFzIHdlbGwgYXMgJ3NvYicgaWYgLS1uby1zaWduZWQtb2ZmLWNjIGlzIHNwZWNpZmllZC4KIAotLS10aHJlYWQ6OgotLS1uby10aHJlYWQ6OgorLS1bbm8tXXN1cHByZXNzLWZyb206OgorCUlmIHRoaXMgaXMgc2V0LCBkbyBub3QgYWRkIHRoZSBGcm9tOiBhZGRyZXNzIHRvIHRoZSBjYzogbGlzdC4KKwlEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiAnc2VuZGVtYWlsLnN1cHByZXNzZnJvbScgY29uZmlndXJhdGlvbgorCXZhbHVlOyBpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBkZWZhdWx0IHRvIC0tbm8tc3VwcHJlc3MtZnJvbS4KKworLS1bbm8tXXRocmVhZDo6CiAJSWYgdGhpcyBpcyBzZXQsIHRoZSBJbi1SZXBseS1UbyBoZWFkZXIgd2lsbCBiZSBzZXQgb24gZWFjaCBlbWFpbCBzZW50LgogCUlmIGRpc2FibGVkIHdpdGggIi0tbm8tdGhyZWFkIiwgbm8gZW1haWxzIHdpbGwgaGF2ZSB0aGUgSW4tUmVwbHktVG8KLQloZWFkZXIgc2V0LgotCURlZmF1bHQgaXMgdGhlIHZhbHVlIG9mIHRoZSAnc2VuZGVtYWlsLnRocmVhZCcgY29uZmlndXJhdGlvbiB2YWx1ZTsKLQlpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBkZWZhdWx0IHRvIC0tdGhyZWFkLgorCWhlYWRlciBzZXQuIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mIHRoZSAnc2VuZGVtYWlsLnRocmVhZCcgY29uZmlndXJhdGlvbgorCXZhbHVlOyBpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBkZWZhdWx0IHRvIC0tdGhyZWFkLgorCisKK0FkbWluaXN0ZXJpbmcKK35+fn5+fn5+fn5+fn4KIAogLS1kcnktcnVuOjoKIAlEbyBldmVyeXRoaW5nIGV4Y2VwdCBhY3R1YWxseSBzZW5kIHRoZSBlbWFpbHMuCiAKLS0tZW52ZWxvcGUtc2VuZGVyOjoKLQlTcGVjaWZ5IHRoZSBlbnZlbG9wZSBzZW5kZXIgdXNlZCB0byBzZW5kIHRoZSBlbWFpbHMuCi0JVGhpcyBpcyB1c2VmdWwgaWYgeW91ciBkZWZhdWx0IGFkZHJlc3MgaXMgbm90IHRoZSBhZGRyZXNzIHRoYXQgaXMKLQlzdWJzY3JpYmVkIHRvIGEgbGlzdC4gSWYgeW91IHVzZSB0aGUgc2VuZG1haWwgYmluYXJ5LCB5b3UgbXVzdCBoYXZlCi0Jc3VpdGFibGUgcHJpdmlsZWdlcyBmb3IgdGhlIC1mIHBhcmFtZXRlci4KLQlEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgJ3NlbmRlbWFpbC5lbnZlbG9wZXNlbmRlcicgY29uZmlndXJhdGlvbgotCXZhcmlhYmxlOyBpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCBjaG9vc2luZyB0aGUgZW52ZWxvcGUgc2VuZGVyIGlzIGxlZnQKLQl0byB5b3VyIE1UQS4KKy0tcXVpZXQ6OgorCU1ha2UgZ2l0LXNlbmQtZW1haWwgbGVzcyB2ZXJib3NlLiAgT25lIGxpbmUgcGVyIGVtYWlsIHNob3VsZCBiZQorCWFsbCB0aGF0IGlzIG91dHB1dC4KIAotLS10bzo6Ci0JU3BlY2lmeSB0aGUgcHJpbWFyeSByZWNpcGllbnQgb2YgdGhlIGVtYWlscyBnZW5lcmF0ZWQuCi0JR2VuZXJhbGx5LCB0aGlzIHdpbGwgYmUgdGhlIHVwc3RyZWFtIG1haW50YWluZXIgb2YgdGhlCi0JcHJvamVjdCBpbnZvbHZlZC4KLQlEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgJ3NlbmRlbWFpbC50bycgY29uZmlndXJhdGlvbiB2YWx1ZTsKLQlpZiB0aGF0IGlzIHVuc3BlY2lmaWVkLCB0aGlzIHdpbGwgYmUgcHJvbXB0ZWQgZm9yLgorLS1bbm8tXXZhbGlkYXRlOjoKKwlQZXJmb3JtIHNhbml0eSBjaGVja3Mgb24gcGF0Y2hlcy4KKwlDdXJyZW50bHksIHZhbGlkYXRpb24gbWVhbnMgdGhlIGZvbGxvd2luZzoKICsKLVRoZSAtLXRvIG9wdGlvbiBtdXN0IGJlIHJlcGVhdGVkIGZvciBlYWNoIHVzZXIgeW91IHdhbnQgb24gdGhlIHRvIGxpc3QuCistLQorCQkqCVdhcm4gb2YgcGF0Y2hlcyB0aGF0IGNvbnRhaW4gbGluZXMgbG9uZ2VyIHRoYW4gOTk4IGNoYXJhY3RlcnM7IHRoaXMKKwkJCWlzIGR1ZSB0byBTTVRQIGxpbWl0cyBhcyBkZXNjcmliZWQgYnkgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjgyMS50eHQuCistLQorKworRGVmYXVsdCBpcyB0aGUgdmFsdWUgb2YgJ3NlbmRlbWFpbC52YWxpZGF0ZSc7IGlmIHRoaXMgaXMgbm90IHNldCwKK2RlZmF1bHQgdG8gJy0tdmFsaWRhdGUnLgorCistLVtuby1dZm9ybWF0LXBhdGNoOjoKKwlXaGVuIGFuIGFyZ3VtZW50IG1heSBiZSB1bmRlcnN0b29kIGVpdGhlciBhcyBhIHJlZmVyZW5jZSBvciBhcyBhIGZpbGUgbmFtZSwKKwljaG9vc2UgdG8gdW5kZXJzdGFuZCBpdCBhcyBhIGZvcm1hdC1wYXRjaCBhcmd1bWVudCAoJy0tZm9ybWF0LXBhdGNoJykKKwlvciBhcyBhIGZpbGUgbmFtZSAoJy0tbm8tZm9ybWF0LXBhdGNoJykuIEJ5IGRlZmF1bHQsIHdoZW4gc3VjaCBhIGNvbmZsaWN0CisJb2NjdXJzLCBnaXQgc2VuZC1lbWFpbCB3aWxsIGZhaWwuCiAKIAogQ09ORklHVVJBVElPTgogLS0tLS0tLS0tLS0tLQotc2VuZGVtYWlsLmlkZW50aXR5OjoKLQlUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGlkZW50aXR5LiBXaGVuIHNwZWNpZmllZCwKLQknc2VuZGVtYWlsLjxpZGVudGl0eT4uPGl0ZW0+JyB3aWxsIGhhdmUgaGlnaGVyIHByZWNlZGVuY2UgdGhhbgotCSdzZW5kZW1haWwuPGl0ZW0+Jy4gVGhpcyBpcyB1c2VmdWwgdG8gZGVjbGFyZSBtdWx0aXBsZSBTTVRQCi0JaWRlbnRpdGllcyBhbmQgdG8gaG9pc3Qgc2Vuc2l0aXZlIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uCi0Jb3V0IG9mIHRoZSByZXBvc2l0b3J5IGFuZCBpbnRvIHRoZSBnbG9iYWwgY29uZmlndXJhdGlvbiBmaWxlLgogCiBzZW5kZW1haWwuYWxpYXNlc2ZpbGU6OgogCVRvIGF2b2lkIHR5cGluZyBsb25nIGVtYWlsIGFkZHJlc3NlcywgcG9pbnQgdGhpcyB0byBvbmUgb3IgbW9yZQpAQCAtMjEwLDM4ICsyMjUsMTIgQEAKIAlGb3JtYXQgb2YgdGhlIGZpbGUocykgc3BlY2lmaWVkIGluIHNlbmRlbWFpbC5hbGlhc2VzZmlsZS4gTXVzdCBiZQogCW9uZSBvZiAnbXV0dCcsICdtYWlscmMnLCAncGluZScsIG9yICdnbnVzJy4KIAotc2VuZGVtYWlsLnRvOjoKLQlFbWFpbCBhZGRyZXNzIChvciBhbGlhcykgdG8gYWx3YXlzIHNlbmQgdG8uCitzZW5kZW1haWwubXVsdGllZGl0OjoKKwlJZiB0cnVlIChkZWZhdWx0KSwgYSBzaW5nbGUgZWRpdG9yIGluc3RhbmNlIHdpbGwgYmUgc3Bhd25lZCB0byBlZGl0CisJZmlsZXMgeW91IGhhdmUgdG8gZWRpdCAocGF0Y2hlcyB3aGVuICctLWFubm90YXRlJyBpcyB1c2VkLCBhbmQgdGhlCisJc3VtbWFyeSB3aGVuICctLWNvbXBvc2UnIGlzIHVzZWQpLiBJZiBmYWxzZSwgZmlsZXMgd2lsbCBiZSBlZGl0ZWQgb25lCisJYWZ0ZXIgdGhlIG90aGVyLCBzcGF3bmluZyBhIG5ldyBlZGl0b3IgZWFjaCB0aW1lLgogCi1zZW5kZW1haWwuY2NjbWQ6OgotCUNvbW1hbmQgdG8gZXhlY3V0ZSB0byBnZW5lcmF0ZSBwZXIgcGF0Y2ggZmlsZSBzcGVjaWZpYyAiQ2M6InMuCi0KLXNlbmRlbWFpbC5iY2M6OgotCUVtYWlsIGFkZHJlc3MgKG9yIGFsaWFzKSB0byBhbHdheXMgYmNjLgotCi1zZW5kZW1haWwuY2hhaW5yZXBseXRvOjoKLQlCb29sZWFuIHZhbHVlIHNwZWNpZnlpbmcgdGhlIGRlZmF1bHQgdG8gdGhlICctLWNoYWluX3JlcGx5X3RvJwotCXBhcmFtZXRlci4KLQotc2VuZGVtYWlsLnNtdHBzZXJ2ZXI6OgotCURlZmF1bHQgU01UUCBzZXJ2ZXIgdG8gdXNlLgotCi1zZW5kZW1haWwuc210cHNlcnZlcnBvcnQ6OgotCURlZmF1bHQgU01UUCBzZXJ2ZXIgcG9ydCB0byB1c2UuCi0KLXNlbmRlbWFpbC5zbXRwdXNlcjo6Ci0JRGVmYXVsdCBTTVRQLUFVVEggdXNlcm5hbWUuCi0KLXNlbmRlbWFpbC5zbXRwcGFzczo6Ci0JRGVmYXVsdCBTTVRQLUFVVEggcGFzc3dvcmQuCi0KLXNlbmRlbWFpbC5zbXRwZW5jcnlwdGlvbjo6Ci0JRGVmYXVsdCBlbmNyeXB0aW9uIG1ldGhvZC4gIFVzZSAnc3NsJyBmb3IgU1NMIChhbmQgc3BlY2lmeSBhbgotCWFwcHJvcHJpYXRlIHBvcnQpLCBvciAndGxzJyBmb3IgVExTLiAgVGFrZXMgcHJlY2VkZW5jZSBvdmVyCi0JJ3NtdHBzc2wnIGlmIGJvdGggYXJlIHNwZWNpZmllZC4KLQotc2VuZGVtYWlsLnNtdHBzc2w6OgotCUxlZ2FjeSBib29sZWFuIHRoYXQgc2V0cyAnc210cGVuY3J5cHRpb249c3NsJyBpZiBlbmFibGVkLgogCiBBdXRob3IKIC0tLS0tLQpAQCAtMjUwLDEwICsyMzksMTIgQEAKIGdpdC1zZW5kLWVtYWlsIGlzIG9yaWdpbmFsbHkgYmFzZWQgdXBvbgogc2VuZF9sb3RzX29mX2VtYWlsLnBsIGJ5IEdyZWcgS3JvYWgtSGFydG1hbi4KIAorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tLQogRG9jdW1lbnRhdGlvbiBieSBSeWFuIEFuZGVyc29uCiAKKwogR0lUCiAtLS0KIFBhcnQgb2YgdGhlIGxpbmtnaXQ6Z2l0WzFdIHN1aXRlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zaGVsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaGVsbC50eHQKaW5kZXggZmY0MjBmOC4uM2Y4ZDk3MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2hlbGwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNoZWxsLnR4dApAQCAtMTgsOCArMTgsOSBAQAogVGhlIGNvbW1hbmRzIGNhbiBiZSBleGVjdXRlZCBvbmx5IGJ5IHRoZSAnLWMnIG9wdGlvbjsgdGhlIHNoZWxsIGlzIG5vdAogaW50ZXJhY3RpdmUuCiAKLUN1cnJlbnRseSwgb25seSB0aGUgJ2dpdC1yZWNlaXZlLXBhY2snIGFuZCAnZ2l0LXVwbG9hZC1wYWNrJyBjb21tYW5kcwotYXJlIHBlcm1pdHRlZCB0byBiZSBjYWxsZWQsIHdpdGggYSBzaW5nbGUgcmVxdWlyZWQgYXJndW1lbnQuCitDdXJyZW50bHksIG9ubHkgdGhyZWUgY29tbWFuZHMgYXJlIHBlcm1pdHRlZCB0byBiZSBjYWxsZWQsICdnaXQtcmVjZWl2ZS1wYWNrJworJ2dpdC11cGxvYWQtcGFjaycgd2l0aCBhIHNpbmdsZSByZXF1aXJlZCBhcmd1bWVudCBvciAnY3ZzIHNlcnZlcicgKHRvIGludm9rZQorJ2dpdC1jdnNzZXJ2ZXInKS4KIAogQXV0aG9yCiAtLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXNob3J0bG9nLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3J0bG9nLnR4dAppbmRleCA3Y2NmMzFjLi44ZjdjMGUyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG9ydGxvZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc2hvcnRsb2cudHh0CkBAIC00OCwxNSArNDgsNDEgQEAKIEZJTEVTCiAtLS0tLQogCi1JZiB0aGUgZmlsZSBgLm1haWxtYXBgIGV4aXN0cywgaXQgd2lsbCBiZSB1c2VkIGZvciBtYXBwaW5nIGF1dGhvcgotZW1haWwgYWRkcmVzc2VzIHRvIGEgcmVhbCBhdXRob3IgbmFtZS4gT25lIG1hcHBpbmcgcGVyIGxpbmUsIGZpcnN0Ci10aGUgYXV0aG9yIG5hbWUgZm9sbG93ZWQgYnkgdGhlIGVtYWlsIGFkZHJlc3MgZW5jbG9zZWQgYnkKLSc8JyBhbmQgJz4nLiBVc2UgaGFzaCAnIycgZm9yIGNvbW1lbnRzLiBFeGFtcGxlOgorSWYgYSBmaWxlIGAubWFpbG1hcGAgZXhpc3RzIGF0IHRoZSB0b3BsZXZlbCBvZiB0aGUgcmVwb3NpdG9yeSwKK2l0IGlzIHVzZWQgdG8gbWFwIGFuIGF1dGhvciBlbWFpbCBhZGRyZXNzIHRvIGEgY2Fub25pY2FsIHJlYWwgbmFtZS4gVGhpcworY2FuIGJlIHVzZWQgdG8gY29hbGVzY2UgdG9nZXRoZXIgY29tbWl0cyBieSB0aGUgc2FtZSBwZXJzb24gd2hlcmUgdGhlaXIKK25hbWUgd2FzIHNwZWxsZWQgZGlmZmVyZW50bHkgKHdoZXRoZXIgd2l0aCB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzIG9yCitub3QpLgorCitFYWNoIGxpbmUgaW4gdGhlIGZpbGUgY29uc2lzdHMsIGluIHRoaXMgb3JkZXIsIG9mIHRoZSBjYW5vbmljYWwgcmVhbCBuYW1lCitvZiBhbiBhdXRob3IsIHdoaXRlc3BhY2UsIGFuZCBhbiBlbWFpbCBhZGRyZXNzIChlbmNsb3NlZCBieSAnPCcgYW5kICc+JykKK3RvIG1hcCB0byB0aGUgbmFtZS4gVXNlIGhhc2ggJyMnIGZvciBjb21tZW50cywgZWl0aGVyIG9uIHRoZWlyIG93biBsaW5lLAorb3IgYWZ0ZXIgdGhlIGVtYWlsIGFkZHJlc3MuCisKK0EgY2Fub25pY2FsIG5hbWUgbWF5IGFwcGVhciBpbiBtb3JlIHRoYW4gb25lIGxpbmUsIGFzc29jaWF0ZWQgd2l0aAorZGlmZmVyZW50IGVtYWlsIGFkZHJlc3NlcywgYnV0IGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgYSBnaXZlbiBhZGRyZXNzCit0byBhcHBlYXIgbW9yZSB0aGFuIG9uY2UgKGlmIHRoYXQgaGFwcGVucywgYSBsYXRlciBsaW5lIG92ZXJyaWRlcyB0aGUKK2VhcmxpZXIgb25lcykuCisKK1NvLCBmb3IgZXhhbXBsZSwgaWYgeW91ciBoaXN0b3J5IGNvbnRhaW5zIGNvbW1pdHMgYnkgdHdvIGF1dGhvcnMsIEphbmUKK2FuZCBKb2UsIHdob3NlIG5hbWVzIGFwcGVhciBpbiB0aGUgcmVwb3NpdG9yeSB1bmRlciBzZXZlcmFsIGZvcm1zOgogCiAtLS0tLS0tLS0tLS0KLSMgS2VlcCBhbHBoYWJldGl6ZWQKLUFkYW0gTW9ycm93IDxhZGFtQGxvY2FsaG9zdC5sb2NhbGRvbWFpbj4KLUV2ZSBKb25lcyA8ZXZlQGxhcHRvcC4obm9uZSk+CitKb2UgRGV2ZWxvcGVyIDxqb2VAZXhhbXBsZS5jb20+CitKb2UgUi4gRGV2ZWxvcGVyIDxqb2VAZXhhbXBsZS5jb20+CitKYW5lIERvZSA8amFuZUBleGFtcGxlLmNvbT4KK0phbmUgRG9lIDxqYW5lQGxhcHRvcC4obm9uZSk+CitKYW5lIEQuIDxqYW5lQGRlc2t0b3AuKG5vbmUpPgorLS0tLS0tLS0tLS0tCisKK1RoZW4sIHN1cHBvc2luZyBKb2Ugd2FudHMgaGlzIG1pZGRsZSBuYW1lIGluaXRpYWwgdXNlZCwgYW5kIEphbmUgcHJlZmVycworaGVyIGZhbWlseSBuYW1lIGZ1bGx5IHNwZWxsZWQgb3V0LCBhIHByb3BlciBgLm1haWxtYXBgIGZpbGUgd291bGQgbG9vayBsaWtlOgorCistLS0tLS0tLS0tLS0KKyMgTm90ZSBob3cgd2UgZG9uJ3QgbmVlZCBhbiBlbnRyeSBmb3IgPGphbmVAbGFwdG9wLihub25lKT4sIGJlY2F1c2UgdGhlCisjIHJlYWwgbmFtZSBvZiB0aGF0IGF1dGhvciBpcyBjb3JyZWN0IGFscmVhZHksIGFuZCBjb2FsZXNjZWQgZGlyZWN0bHkuCitKYW5lIERvZSA8amFuZUBkZXNrdG9wLihub25lKT4KK0pvZSBSLiBEZXZlbG9wZXIgPGpvZUByYW5kb20uY29tPgogLS0tLS0tLS0tLS0tCiAKIEF1dGhvcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1icmFuY2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1icmFuY2gudHh0CmluZGV4IGZiMjY5ZmYuLjgyNzc1NzcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXNob3ctYnJhbmNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWJyYW5jaC50eHQKQEAgLTE3Miw3ICsxNzIsNyBAQAogeW91ciB0b3BpYyBicmFuY2gsIGl0IGlzIHNob3duIGFzIHdlbGwuCiAKIC0tLS0tLS0tLS0tLQotJCBnaXQgc2hvdy1icmFuY2ggLS1yZWZsb2c9JzEwLDEgaG91ciBhZ28nIC0tbGlzdCBtYXN0ZXIKKyQgZ2l0IHNob3ctYnJhbmNoIC0tcmVmbG9nPSIxMCwxIGhvdXIgYWdvIiAtLWxpc3QgbWFzdGVyCiAtLS0tLS0tLS0tLS0KIAogc2hvd3MgMTAgcmVmbG9nIGVudHJpZXMgZ29pbmcgYmFjayBmcm9tIHRoZSB0aXAgYXMgb2YgMSBob3VyIGFnby4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXN0YWdlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXN0YWdlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjI1MWE1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc3RhZ2UudHh0CkBAIC0wLDAgKzEsMTkgQEAKK2dpdC1zdGFnZSgxKQorPT09PT09PT09PT09PT0KKworTkFNRQorLS0tLQorZ2l0LXN0YWdlIC0gQWRkIGZpbGUgY29udGVudHMgdG8gdGhlIHN0YWdpbmcgYXJlYQorCisKK1NZTk9QU0lTCistLS0tLS0tLQorW3ZlcnNlXQorJ2dpdCBzdGFnZScgYXJncy4uLgorCisKK0RFU0NSSVBUSU9OCistLS0tLS0tLS0tLQorCitUaGlzIGlzIGEgc3lub255bSBmb3IgbGlua2dpdDpnaXQtYWRkWzFdLiAgUGxlYXNlIHJlZmVyIHRvIHRoZQorZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGNvbW1hbmQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zdWJtb2R1bGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3VibW9kdWxlLnR4dAppbmRleCBlNjY1MmE3Li4yZjIwN2ZiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zdWJtb2R1bGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXN1Ym1vZHVsZS50eHQKQEAgLTE0LDYgKzE0LDggQEAKICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gaW5pdCBbLS1dIFs8cGF0aD4uLi5dCiAnZ2l0IHN1Ym1vZHVsZScgWy0tcXVpZXRdIHVwZGF0ZSBbLS1pbml0XSBbLS1dIFs8cGF0aD4uLi5dCiAnZ2l0IHN1Ym1vZHVsZScgWy0tcXVpZXRdIHN1bW1hcnkgWy0tc3VtbWFyeS1saW1pdCA8bj5dIFtjb21taXRdIFstLV0gWzxwYXRoPi4uLl0KKydnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gZm9yZWFjaCA8Y29tbWFuZD4KKydnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gc3luYyBbLS1dIFs8cGF0aD4uLi5dCiAKIAogREVTQ1JJUFRJT04KQEAgLTEyMyw2ICsxMjUsMzAgQEAKIAlpbiB0aGUgc3VibW9kdWxlIGJldHdlZW4gdGhlIGdpdmVuIHN1cGVyIHByb2plY3QgY29tbWl0IGFuZCB0aGUKIAlpbmRleCBvciB3b3JraW5nIHRyZWUgKHN3aXRjaGVkIGJ5IC0tY2FjaGVkKSBhcmUgc2hvd24uCiAKK2ZvcmVhY2g6OgorCUV2YWx1YXRlcyBhbiBhcmJpdHJhcnkgc2hlbGwgY29tbWFuZCBpbiBlYWNoIGNoZWNrZWQgb3V0IHN1Ym1vZHVsZS4KKwlUaGUgY29tbWFuZCBoYXMgYWNjZXNzIHRvIHRoZSB2YXJpYWJsZXMgJHBhdGggYW5kICRzaGExOgorCSRwYXRoIGlzIHRoZSBuYW1lIG9mIHRoZSBzdWJtb2R1bGUgZGlyZWN0b3J5IHJlbGF0aXZlIHRvIHRoZQorCXN1cGVycHJvamVjdCwgYW5kICRzaGExIGlzIHRoZSBjb21taXQgYXMgcmVjb3JkZWQgaW4gdGhlIHN1cGVycHJvamVjdC4KKwlBbnkgc3VibW9kdWxlcyBkZWZpbmVkIGluIHRoZSBzdXBlcnByb2plY3QgYnV0IG5vdCBjaGVja2VkIG91dCBhcmUKKwlpZ25vcmVkIGJ5IHRoaXMgY29tbWFuZC4gVW5sZXNzIGdpdmVuIC0tcXVpZXQsIGZvcmVhY2ggcHJpbnRzIHRoZSBuYW1lCisJb2YgZWFjaCBzdWJtb2R1bGUgYmVmb3JlIGV2YWx1YXRpbmcgdGhlIGNvbW1hbmQuCisJQSBub24temVybyByZXR1cm4gZnJvbSB0aGUgY29tbWFuZCBpbiBhbnkgc3VibW9kdWxlIGNhdXNlcworCXRoZSBwcm9jZXNzaW5nIHRvIHRlcm1pbmF0ZS4gVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhZGRpbmcgJ3x8IDonCisJdG8gdGhlIGVuZCBvZiB0aGUgY29tbWFuZC4KKysKK0FzIGFuIGV4YW1wbGUsICJnaXQgc3VibW9kdWxlIGZvcmVhY2ggJ2VjaG8gJHBhdGggYGdpdCByZXYtcGFyc2UgSEVBRGAnIHdpbGwKK3Nob3cgdGhlIHBhdGggYW5kIGN1cnJlbnRseSBjaGVja2VkIG91dCBjb21taXQgZm9yIGVhY2ggc3VibW9kdWxlLgorCitzeW5jOjoKKwlTeW5jaHJvbml6ZXMgc3VibW9kdWxlcycgcmVtb3RlIFVSTCBjb25maWd1cmF0aW9uIHNldHRpbmcKKwl0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIC5naXRtb2R1bGVzLiAgVGhpcyBpcyB1c2VmdWwgd2hlbgorCXN1Ym1vZHVsZSBVUkxzIGNoYW5nZSB1cHN0cmVhbSBhbmQgeW91IG5lZWQgdG8gdXBkYXRlIHlvdXIgbG9jYWwKKwlyZXBvc2l0b3JpZXMgYWNjb3JkaW5nbHkuCisrCisiZ2l0IHN1Ym1vZHVsZSBzeW5jIiBzeW5jaHJvbml6ZXMgYWxsIHN1Ym1vZHVsZXMgd2hpbGUKKyJnaXQgc3VibW9kdWxlIHN5bmMgLS0gQSIgc3luY2hyb25pemVzIHN1Ym1vZHVsZSAiQSIgb25seS4KKwogT1BUSU9OUwogLS0tLS0tLQogLXE6OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc3ZuLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXN2bi50eHQKaW5kZXggNWQ2ZDMwZi4uOGQwYzQyMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc3ZuLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zdm4udHh0CkBAIC0xNDksNiArMTQ5LDIyIEBACiAJaXMgdmVyeSBzdHJvbmdseSBkaXNjb3VyYWdlZC4KIC0tCiAKKydicmFuY2gnOjoKKwlDcmVhdGUgYSBicmFuY2ggaW4gdGhlIFNWTiByZXBvc2l0b3J5LgorCistbTs7CistLW1lc3NhZ2U7OworCUFsbG93cyB0byBzcGVjaWZ5IHRoZSBjb21taXQgbWVzc2FnZS4KKworLXQ7OworLS10YWc7OworCUNyZWF0ZSBhIHRhZyBieSB1c2luZyB0aGUgdGFnc19zdWJkaXIgaW5zdGVhZCBvZiB0aGUgYnJhbmNoZXNfc3ViZGlyCisJc3BlY2lmaWVkIGR1cmluZyBnaXQgc3ZuIGluaXQuCisKKyd0YWcnOjoKKwlDcmVhdGUgYSB0YWcgaW4gdGhlIFNWTiByZXBvc2l0b3J5LiBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvcgorCSdicmFuY2ggLXQnLgorCiAnbG9nJzo6CiAJVGhpcyBzaG91bGQgbWFrZSBpdCBlYXN5IHRvIGxvb2sgdXAgc3ZuIGxvZyBtZXNzYWdlcyB3aGVuIHN2bgogCXVzZXJzIHJlZmVyIHRvIC1yLy0tcmV2aXNpb24gbnVtYmVycy4KQEAgLTM3Miw3ICszODgsOCBAQAogLW46OgogLS1kcnktcnVuOjoKIAotVGhpcyBjYW4gYmUgdXNlZCB3aXRoIHRoZSAnZGNvbW1pdCcgYW5kICdyZWJhc2UnIGNvbW1hbmRzLgorVGhpcyBjYW4gYmUgdXNlZCB3aXRoIHRoZSAnZGNvbW1pdCcsICdyZWJhc2UnLCAnYnJhbmNoJyBhbmQgJ3RhZycKK2NvbW1hbmRzLgogCiBGb3IgJ2Rjb21taXQnLCBwcmludCBvdXQgdGhlIHNlcmllcyBvZiBnaXQgYXJndW1lbnRzIHRoYXQgd291bGQgc2hvdwogd2hpY2ggZGlmZnMgd291bGQgYmUgY29tbWl0dGVkIHRvIFNWTi4KQEAgLTM4MSw2ICszOTgsOSBAQAogcmVwb3NpdG9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgYnJhbmNoIGFuZCB0aGUgVVJMIG9mIHN2bgogcmVwb3NpdG9yeSB0aGF0IHdpbGwgYmUgZmV0Y2hlZCBmcm9tLgogCitGb3IgJ2JyYW5jaCcgYW5kICd0YWcnLCBkaXNwbGF5IHRoZSB1cmxzIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBjb3B5aW5nIHdoZW4KK2NyZWF0aW5nIHRoZSBicmFuY2ggb3IgdGFnLgorCiAtLQogCiBBRFZBTkNFRCBPUFRJT05TCkBAIC00OTgsNiArNTE4LDggQEAKIAlnaXQgc3ZuIGNsb25lIGh0dHA6Ly9zdm4uZXhhbXBsZS5jb20vcHJvamVjdCAtVCB0cnVuayAtYiBicmFuY2hlcyAtdCB0YWdzCiAjIFZpZXcgYWxsIGJyYW5jaGVzIGFuZCB0YWdzIHlvdSBoYXZlIGNsb25lZDoKIAlnaXQgYnJhbmNoIC1yCisjIENyZWF0ZSBhIG5ldyBicmFuY2ggaW4gU1ZOCisgICAgZ2l0IHN2biBicmFuY2ggd2FsZG8KICMgUmVzZXQgeW91ciBtYXN0ZXIgdG8gdHJ1bmsgKG9yIGFueSBvdGhlciBicmFuY2gsIHJlcGxhY2luZyAndHJ1bmsnCiAjIHdpdGggdGhlIGFwcHJvcHJpYXRlIG5hbWUpOgogCWdpdCByZXNldCAtLWhhcmQgcmVtb3Rlcy90cnVuawpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtdGFnLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXRhZy50eHQKaW5kZXggMDQ2YWIzNS4uZTQ0ZjU0MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtdGFnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0CkBAIC03MCw3ICs3MCw3IEBACiAKIC1tIDxtc2c+OjoKIAlVc2UgdGhlIGdpdmVuIHRhZyBtZXNzYWdlIChpbnN0ZWFkIG9mIHByb21wdGluZykuCi0JSWYgbXVsdGlwbGUgYC1tYCBvcHRpb25zIGFyZSBnaXZlbiwgdGhlcmUgdmFsdWVzIGFyZQorCUlmIG11bHRpcGxlIGAtbWAgb3B0aW9ucyBhcmUgZ2l2ZW4sIHRoZWlyIHZhbHVlcyBhcmUKIAljb25jYXRlbmF0ZWQgYXMgc2VwYXJhdGUgcGFyYWdyYXBocy4KIAlJbXBsaWVzIGAtYWAgaWYgbm9uZSBvZiBgLWFgLCBgLXNgLCBvciBgLXUgPGtleS1pZD5gCiAJaXMgZ2l2ZW4uCkBAIC0yMDcsNyArMjA3LDcgQEAKIAogQSBvbmUtc2hvdCBwdWxsIGlzIGEgc2lnbiB0aGF0IGEgY29tbWl0IGhpc3RvcnkgaXMgbm93IGNyb3NzaW5nCiB0aGUgYm91bmRhcnkgYmV0d2VlbiBvbmUgY2lyY2xlIG9mIHBlb3BsZSAoZS5nLiAicGVvcGxlIHdobyBhcmUKLXByaW1hcmlseSBpbnRlcmVzdGVkIGluIG5ldHdvcmtpbmcgcGFydCBvZiB0aGUga2VybmVsIikgd2hvIG1heQorcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdGhlIG5ldHdvcmtpbmcgcGFydCBvZiB0aGUga2VybmVsIikgd2hvIG1heQogaGF2ZSB0aGVpciBvd24gc2V0IG9mIHRhZ3MgKGUuZy4gInRoaXMgaXMgdGhlIHRoaXJkIHJlbGVhc2UKIGNhbmRpZGF0ZSBmcm9tIHRoZSBuZXR3b3JraW5nIGdyb3VwIHRvIGJlIHByb3Bvc2VkIGZvciBnZW5lcmFsCiBjb25zdW1wdGlvbiB3aXRoIDIuNi4yMSByZWxlYXNlIikgdG8gYW5vdGhlciBjaXJjbGUgb2YgcGVvcGxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC13ZWItLWJyb3dzZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC13ZWItLWJyb3dzZS50eHQKaW5kZXggN2Y3YTQ1Yi4uMjc4Y2Y3MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtd2ViLS1icm93c2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXdlYi0tYnJvd3NlLnR4dApAQCAtMjYsNiArMjYsNyBAQAogKiBseW54CiAqIGRpbGxvCiAqIG9wZW4gKHRoaXMgaXMgdGhlIGRlZmF1bHQgdW5kZXIgTWFjIE9TIFggR1VJKQorKiBzdGFydCAodGhpcyBpcyB0aGUgZGVmYXVsdCB1bmRlciBNaW5HVykKIAogQ3VzdG9tIGNvbW1hbmRzIG1heSBhbHNvIGJlIHNwZWNpZmllZC4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQudHh0CmluZGV4IGRmNDIwYWUuLjE3ZGM4YjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC50eHQKQEAgLTQzLDE2ICs0MywyNiBAQAogYnJhbmNoIG9mIHRoZSBgZ2l0LmdpdGAgcmVwb3NpdG9yeS4KIERvY3VtZW50YXRpb24gZm9yIG9sZGVyIHJlbGVhc2VzIGFyZSBhdmFpbGFibGUgaGVyZToKIAotKiBsaW5rOnYxLjYuMC4yL2dpdC5odG1sW2RvY3VtZW50YXRpb24gZm9yIHJlbGVhc2UgMS42LjAuMl0KKyogbGluazp2MS42LjEvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjYuMV0KIAogKiByZWxlYXNlIG5vdGVzIGZvcgorICBsaW5rOlJlbE5vdGVzLTEuNi4xLnR4dFsxLjYuMV0uCisKKyogbGluazp2MS42LjAuNi9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuNi4wLjZdCisKKyogcmVsZWFzZSBub3RlcyBmb3IKKyAgbGluazpSZWxOb3Rlcy0xLjYuMC42LnR4dFsxLjYuMC42XSwKKyAgbGluazpSZWxOb3Rlcy0xLjYuMC41LnR4dFsxLjYuMC41XSwKKyAgbGluazpSZWxOb3Rlcy0xLjYuMC40LnR4dFsxLjYuMC40XSwKKyAgbGluazpSZWxOb3Rlcy0xLjYuMC4zLnR4dFsxLjYuMC4zXSwKICAgbGluazpSZWxOb3Rlcy0xLjYuMC4yLnR4dFsxLjYuMC4yXSwKICAgbGluazpSZWxOb3Rlcy0xLjYuMC4xLnR4dFsxLjYuMC4xXSwKICAgbGluazpSZWxOb3Rlcy0xLjYuMC50eHRbMS42LjBdLgogCi0qIGxpbms6djEuNS42LjUvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjUuNi41XQorKiBsaW5rOnYxLjUuNi42L2dpdC5odG1sW2RvY3VtZW50YXRpb24gZm9yIHJlbGVhc2UgMS41LjYuNl0KIAogKiByZWxlYXNlIG5vdGVzIGZvcgorICBsaW5rOlJlbE5vdGVzLTEuNS42LjYudHh0WzEuNS42LjZdLAogICBsaW5rOlJlbE5vdGVzLTEuNS42LjUudHh0WzEuNS42LjVdLAogICBsaW5rOlJlbE5vdGVzLTEuNS42LjQudHh0WzEuNS42LjRdLAogICBsaW5rOlJlbE5vdGVzLTEuNS42LjMudHh0WzEuNS42LjNdLApAQCAtNjAsMTggKzcwLDIyIEBACiAgIGxpbms6UmVsTm90ZXMtMS41LjYuMS50eHRbMS41LjYuMV0sCiAgIGxpbms6UmVsTm90ZXMtMS41LjYudHh0WzEuNS42XS4KIAotKiBsaW5rOnYxLjUuNS40L2dpdC5odG1sW2RvY3VtZW50YXRpb24gZm9yIHJlbGVhc2UgMS41LjUuNF0KKyogbGluazp2MS41LjUuNi9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuNS41LjZdCiAKICogcmVsZWFzZSBub3RlcyBmb3IKKyAgbGluazpSZWxOb3Rlcy0xLjUuNS42LnR4dFsxLjUuNS42XSwKKyAgbGluazpSZWxOb3Rlcy0xLjUuNS41LnR4dFsxLjUuNS41XSwKICAgbGluazpSZWxOb3Rlcy0xLjUuNS40LnR4dFsxLjUuNS40XSwKICAgbGluazpSZWxOb3Rlcy0xLjUuNS4zLnR4dFsxLjUuNS4zXSwKICAgbGluazpSZWxOb3Rlcy0xLjUuNS4yLnR4dFsxLjUuNS4yXSwKICAgbGluazpSZWxOb3Rlcy0xLjUuNS4xLnR4dFsxLjUuNS4xXSwKICAgbGluazpSZWxOb3Rlcy0xLjUuNS50eHRbMS41LjVdLgogCi0qIGxpbms6djEuNS40LjUvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjUuNC41XQorKiBsaW5rOnYxLjUuNC43L2dpdC5odG1sW2RvY3VtZW50YXRpb24gZm9yIHJlbGVhc2UgMS41LjQuN10KIAogKiByZWxlYXNlIG5vdGVzIGZvcgorICBsaW5rOlJlbE5vdGVzLTEuNS40LjcudHh0WzEuNS40LjddLAorICBsaW5rOlJlbE5vdGVzLTEuNS40LjYudHh0WzEuNS40LjZdLAogICBsaW5rOlJlbE5vdGVzLTEuNS40LjUudHh0WzEuNS40LjVdLAogICBsaW5rOlJlbE5vdGVzLTEuNS40LjQudHh0WzEuNS40LjRdLAogICBsaW5rOlJlbE5vdGVzLTEuNS40LjMudHh0WzEuNS40LjNdLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRhdHRyaWJ1dGVzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0YXR0cmlidXRlcy50eHQKaW5kZXggMzdmZmYyMC4uOGFmMjJlYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRhdHRyaWJ1dGVzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGF0dHJpYnV0ZXMudHh0CkBAIC0yMTYsMTAgKzIxNiwxMiBAQAogYGRpZmZgCiBeXl5eXl4KIAotVGhlIGF0dHJpYnV0ZSBgZGlmZmAgYWZmZWN0cyBpZiAnZ2l0LWRpZmYnIGdlbmVyYXRlcyB0ZXh0dWFsCi1wYXRjaCBmb3IgdGhlIHBhdGggb3IganVzdCBzYXlzIGBCaW5hcnkgZmlsZXMgZGlmZmVyYC4gIEl0IGFsc28KLWNhbiBhZmZlY3Qgd2hhdCBsaW5lIGlzIHNob3duIG9uIHRoZSBodW5rIGhlYWRlciBgQEAgLWssbCArbixtIEBAYAotbGluZS4KK1RoZSBhdHRyaWJ1dGUgYGRpZmZgIGFmZmVjdHMgaG93ICdnaXQnIGdlbmVyYXRlcyBkaWZmcyBmb3IgcGFydGljdWxhcgorZmlsZXMuIEl0IGNhbiB0ZWxsIGdpdCB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgdGV4dHVhbCBwYXRjaCBmb3IgdGhlIHBhdGgKK29yIHRvIHRyZWF0IHRoZSBwYXRoIGFzIGEgYmluYXJ5IGZpbGUuICBJdCBjYW4gYWxzbyBhZmZlY3Qgd2hhdCBsaW5lIGlzCitzaG93biBvbiB0aGUgaHVuayBoZWFkZXIgYEBAIC1rLGwgK24sbSBAQGAgbGluZSwgdGVsbCBnaXQgdG8gdXNlIGFuCitleHRlcm5hbCBjb21tYW5kIHRvIGdlbmVyYXRlIHRoZSBkaWZmLCBvciBhc2sgZ2l0IHRvIGNvbnZlcnQgYmluYXJ5CitmaWxlcyB0byBhIHRleHQgZm9ybWF0IGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBkaWZmLgogCiBTZXQ6OgogCkBAIC0yMzAsNyArMjMyLDggQEAKIFVuc2V0OjoKIAogCUEgcGF0aCB0byB3aGljaCB0aGUgYGRpZmZgIGF0dHJpYnV0ZSBpcyB1bnNldCB3aWxsCi0JZ2VuZXJhdGUgYEJpbmFyeSBmaWxlcyBkaWZmZXJgLgorCWdlbmVyYXRlIGBCaW5hcnkgZmlsZXMgZGlmZmVyYCAob3IgYSBiaW5hcnkgcGF0Y2gsIGlmCisJYmluYXJ5IHBhdGNoZXMgYXJlIGVuYWJsZWQpLgogCiBVbnNwZWNpZmllZDo6CiAKQEAgLTI0MSwyMSArMjQ0LDIxIEBACiAKIFN0cmluZzo6CiAKLQlEaWZmIGlzIHNob3duIHVzaW5nIHRoZSBzcGVjaWZpZWQgY3VzdG9tIGRpZmYgZHJpdmVyLgotCVRoZSBkcml2ZXIgcHJvZ3JhbSBpcyBnaXZlbiBpdHMgaW5wdXQgdXNpbmcgdGhlIHNhbWUKLQljYWxsaW5nIGNvbnZlbnRpb24gYXMgdXNlZCBmb3IgR0lUX0VYVEVSTkFMX0RJRkYKLQlwcm9ncmFtLiAgVGhpcyBuYW1lIGlzIGFsc28gdXNlZCBmb3IgY3VzdG9tIGh1bmsgaGVhZGVyCi0Jc2VsZWN0aW9uLgorCURpZmYgaXMgc2hvd24gdXNpbmcgdGhlIHNwZWNpZmllZCBkaWZmIGRyaXZlci4gIEVhY2ggZHJpdmVyIG1heQorCXNwZWNpZnkgb25lIG9yIG1vcmUgb3B0aW9ucywgYXMgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcKKwlzZWN0aW9uLiBUaGUgb3B0aW9ucyBmb3IgdGhlIGRpZmYgZHJpdmVyICJmb28iIGFyZSBkZWZpbmVkCisJYnkgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGluIHRoZSAiZGlmZi5mb28iIHNlY3Rpb24gb2YgdGhlCisJZ2l0IGNvbmZpZyBmaWxlLgogCiAKLURlZmluaW5nIGEgY3VzdG9tIGRpZmYgZHJpdmVyCi1eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorRGVmaW5pbmcgYW4gZXh0ZXJuYWwgZGlmZiBkcml2ZXIKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKIFRoZSBkZWZpbml0aW9uIG9mIGEgZGlmZiBkcml2ZXIgaXMgZG9uZSBpbiBgZ2l0Y29uZmlnYCwgbm90CiBgZ2l0YXR0cmlidXRlc2AgZmlsZSwgc28gc3RyaWN0bHkgc3BlYWtpbmcgdGhpcyBtYW51YWwgcGFnZSBpcyBhCiB3cm9uZyBwbGFjZSB0byB0YWxrIGFib3V0IGl0LiAgSG93ZXZlci4uLgogCi1UbyBkZWZpbmUgYSBjdXN0b20gZGlmZiBkcml2ZXIgYGpjZGlmZmAsIGFkZCBhIHNlY3Rpb24gdG8geW91cgorVG8gZGVmaW5lIGFuIGV4dGVybmFsIGRpZmYgZHJpdmVyIGBqY2RpZmZgLCBhZGQgYSBzZWN0aW9uIHRvIHlvdXIKIGAkR0lUX0RJUi9jb25maWdgIGZpbGUgKG9yIGAkSE9NRS8uZ2l0Y29uZmlnYCBmaWxlKSBsaWtlIHRoaXM6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMxNCwxNSArMzE3LDYwIEBACiAKIC0gYGJpYnRleGAgc3VpdGFibGUgZm9yIGZpbGVzIHdpdGggQmliVGVYIGNvZGVkIHJlZmVyZW5jZXMuCiAKKy0gYGh0bWxgIHN1aXRhYmxlIGZvciBIVE1ML1hIVE1MIGRvY3VtZW50cy4KKwogLSBgamF2YWAgc3VpdGFibGUgZm9yIHNvdXJjZSBjb2RlIGluIHRoZSBKYXZhIGxhbmd1YWdlLgogCistIGBvYmpjYCBzdWl0YWJsZSBmb3Igc291cmNlIGNvZGUgaW4gdGhlIE9iamVjdGl2ZS1DIGxhbmd1YWdlLgorCiAtIGBwYXNjYWxgIHN1aXRhYmxlIGZvciBzb3VyY2UgY29kZSBpbiB0aGUgUGFzY2FsL0RlbHBoaSBsYW5ndWFnZS4KIAorLSBgcGhwYCBzdWl0YWJsZSBmb3Igc291cmNlIGNvZGUgaW4gdGhlIFBIUCBsYW5ndWFnZS4KKworLSBgcHl0aG9uYCBzdWl0YWJsZSBmb3Igc291cmNlIGNvZGUgaW4gdGhlIFB5dGhvbiBsYW5ndWFnZS4KKwogLSBgcnVieWAgc3VpdGFibGUgZm9yIHNvdXJjZSBjb2RlIGluIHRoZSBSdWJ5IGxhbmd1YWdlLgogCiAtIGB0ZXhgIHN1aXRhYmxlIGZvciBzb3VyY2UgY29kZSBmb3IgTGFUZVggZG9jdW1lbnRzLgogCiAKK1BlcmZvcm1pbmcgdGV4dCBkaWZmcyBvZiBiaW5hcnkgZmlsZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworU29tZXRpbWVzIGl0IGlzIGRlc2lyYWJsZSB0byBzZWUgdGhlIGRpZmYgb2YgYSB0ZXh0LWNvbnZlcnRlZAordmVyc2lvbiBvZiBzb21lIGJpbmFyeSBmaWxlcy4gRm9yIGV4YW1wbGUsIGEgd29yZCBwcm9jZXNzb3IKK2RvY3VtZW50IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gQVNDSUkgdGV4dCByZXByZXNlbnRhdGlvbiwgYW5kCit0aGUgZGlmZiBvZiB0aGUgdGV4dCBzaG93bi4gRXZlbiB0aG91Z2ggdGhpcyBjb252ZXJzaW9uIGxvc2VzCitzb21lIGluZm9ybWF0aW9uLCB0aGUgcmVzdWx0aW5nIGRpZmYgaXMgdXNlZnVsIGZvciBodW1hbgordmlld2luZyAoYnV0IGNhbm5vdCBiZSBhcHBsaWVkIGRpcmVjdGx5KS4KKworVGhlIGB0ZXh0Y29udmAgY29uZmlnIG9wdGlvbiBpcyB1c2VkIHRvIGRlZmluZSBhIHByb2dyYW0gZm9yCitwZXJmb3JtaW5nIHN1Y2ggYSBjb252ZXJzaW9uLiBUaGUgcHJvZ3JhbSBzaG91bGQgdGFrZSBhIHNpbmdsZQorYXJndW1lbnQsIHRoZSBuYW1lIG9mIGEgZmlsZSB0byBjb252ZXJ0LCBhbmQgcHJvZHVjZSB0aGUKK3Jlc3VsdGluZyB0ZXh0IG9uIHN0ZG91dC4KKworRm9yIGV4YW1wbGUsIHRvIHNob3cgdGhlIGRpZmYgb2YgdGhlIGV4aWYgaW5mb3JtYXRpb24gb2YgYQorZmlsZSBpbnN0ZWFkIG9mIHRoZSBiaW5hcnkgaW5mb3JtYXRpb24gKGFzc3VtaW5nIHlvdSBoYXZlIHRoZQorZXhpZiB0b29sIGluc3RhbGxlZCk6CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorW2RpZmYgImpwZyJdCisJdGV4dGNvbnYgPSBleGlmCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTk9URTogVGhlIHRleHQgY29udmVyc2lvbiBpcyBnZW5lcmFsbHkgYSBvbmUtd2F5IGNvbnZlcnNpb247CitpbiB0aGlzIGV4YW1wbGUsIHdlIGxvc2UgdGhlIGFjdHVhbCBpbWFnZSBjb250ZW50cyBhbmQgZm9jdXMKK2p1c3Qgb24gdGhlIHRleHQgZGF0YS4gVGhpcyBtZWFucyB0aGF0IGRpZmZzIGdlbmVyYXRlZCBieQordGV4dGNvbnYgYXJlIF9ub3RfIHN1aXRhYmxlIGZvciBhcHBseWluZy4gRm9yIHRoaXMgcmVhc29uLAorb25seSBgZ2l0IGRpZmZgIGFuZCB0aGUgYGdpdCBsb2dgIGZhbWlseSBvZiBjb21tYW5kcyAoaS5lLiwKK2xvZywgd2hhdGNoYW5nZWQsIHNob3cpIHdpbGwgcGVyZm9ybSB0ZXh0IGNvbnZlcnNpb24uIGBnaXQKK2Zvcm1hdC1wYXRjaGAgd2lsbCBuZXZlciBnZW5lcmF0ZSB0aGlzIG91dHB1dC4gSWYgeW91IHdhbnQgdG8KK3NlbmQgc29tZWJvZHkgYSB0ZXh0LWNvbnZlcnRlZCBkaWZmIG9mIGEgYmluYXJ5IGZpbGUgKGUuZy4sCitiZWNhdXNlIGl0IHF1aWNrbHkgY29udmV5cyB0aGUgY2hhbmdlcyB5b3UgaGF2ZSBtYWRlKSwgeW91CitzaG91bGQgZ2VuZXJhdGUgaXQgc2VwYXJhdGVseSBhbmQgc2VuZCBpdCBhcyBhIGNvbW1lbnQgX2luCithZGRpdGlvbiB0b18gdGhlIHVzdWFsIGJpbmFyeSBkaWZmIHRoYXQgeW91IG1pZ2h0IHNlbmQuCisKKwogUGVyZm9ybWluZyBhIHRocmVlLXdheSBtZXJnZQogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCkBAIC00ODcsNiArNTM1LDIzIEBACiBjb21taXQgaGFzaC4KIAogCitWaWV3aW5nIGZpbGVzIGluIEdVSSB0b29scworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworYGVuY29kaW5nYAorXl5eXl5eXl5eXgorCitUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgdGhhdCBzaG91bGQKK2JlIHVzZWQgYnkgR1VJIHRvb2xzIChlLmcuIGxpbmtnaXQ6Z2l0a1sxXSBhbmQgbGlua2dpdDpnaXQtZ3VpWzFdKSB0bworZGlzcGxheSB0aGUgY29udGVudHMgb2YgdGhlIHJlbGV2YW50IGZpbGUuIE5vdGUgdGhhdCBkdWUgdG8gcGVyZm9ybWFuY2UKK2NvbnNpZGVyYXRpb25zIGxpbmtnaXQ6Z2l0a1sxXSBkb2VzIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgdW5sZXNzIHlvdQorbWFudWFsbHkgZW5hYmxlIHBlci1maWxlIGVuY29kaW5ncyBpbiBpdHMgb3B0aW9ucy4KKworSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCBvciBoYXMgYW4gaW52YWxpZCB2YWx1ZSwgdGhlIHZhbHVlIG9mIHRoZQorYGd1aS5lbmNvZGluZ2AgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBpcyB1c2VkIGluc3RlYWQKKyhTZWUgbGlua2dpdDpnaXQtY29uZmlnWzFdKS4KKworCiBVU0lORyBBVFRSSUJVVEUgTUFDUk9TCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0Y29yZS10dXRvcmlhbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdGNvcmUtdHV0b3JpYWwudHh0CmluZGV4IDg5NmNiZGYuLmU0ZGQ1NTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0Y29yZS10dXRvcmlhbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXRjb3JlLXR1dG9yaWFsLnR4dApAQCAtODk5LDcgKzg5OSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tCiAJQXV0by1tZXJnaW5nIGhlbGxvCiAJQ09ORkxJQ1QgKGNvbnRlbnQpOiBNZXJnZSBjb25mbGljdCBpbiBoZWxsbwotCUF1dG9tYXRpYyBtZXJnZSBmYWlsZWQ7IGZpeCB1cCBieSBoYW5kCisJQXV0b21hdGljIG1lcmdlIGZhaWxlZDsgZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBjb21taXQgdGhlIHJlc3VsdC4KIC0tLS0tLS0tLS0tLS0tLS0KIAogSXQgdGVsbHMgeW91IHRoYXQgaXQgZGlkIGFuICJBdXRvbWF0aWMgbWVyZ2UiLCB3aGljaApAQCAtOTkzLDcgKzk5Myw3IEBACiAKIC0tLS0tLS0tLS0tLS0tLS0KIFVwZGF0aW5nIGZyb20gYWUzYTJkYS4uLiB0byBhODBiNGFhLi4uLgotRmFzdCBmb3J3YXJkCitGYXN0IGZvcndhcmQgKG5vIGNvbW1pdCBjcmVhdGVkOyAtbSBvcHRpb24gaWdub3JlZCkKICBleGFtcGxlIHwgICAgMSArCiAgaGVsbG8gICB8ICAgIDEgKwogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQpAQCAtMTI2NSw5ICsxMjY1LDggQEAKIAogLS0tLS0tLS0tLS0tCiAkIGdpdCBtZXJnZS1pbmRleCBnaXQtbWVyZ2Utb25lLWZpbGUgaGVsbG8KLUF1dG8tbWVyZ2luZyBoZWxsby4KLW1lcmdlOiB3YXJuaW5nOiBjb25mbGljdHMgZHVyaW5nIG1lcmdlCi1FUlJPUjogTWVyZ2UgY29uZmxpY3QgaW4gaGVsbG8uCitBdXRvLW1lcmdpbmcgaGVsbG8KK0VSUk9SOiBNZXJnZSBjb25mbGljdCBpbiBoZWxsbwogZmF0YWw6IG1lcmdlIHByb2dyYW0gZmFpbGVkCiAtLS0tLS0tLS0tLS0KIApAQCAtMTQ0Nyw3ICsxNDQ2LDcgQEAKIG5ldmVyLgogCiBJZiB5b3UgcnVuIGBnaXQgcmVwYWNrYCBhZ2FpbiBhdCB0aGlzIHBvaW50LCBpdCB3aWxsIHNheQotIk5vdGhpbmcgdG8gcGFjayIuIE9uY2UgeW91IGNvbnRpbnVlIHlvdXIgZGV2ZWxvcG1lbnQgYW5kCisiTm90aGluZyBuZXcgdG8gcGFjay4iLiBPbmNlIHlvdSBjb250aW51ZSB5b3VyIGRldmVsb3BtZW50IGFuZAogYWNjdW11bGF0ZSB0aGUgY2hhbmdlcywgcnVubmluZyBgZ2l0IHJlcGFja2AgYWdhaW4gd2lsbCBjcmVhdGUgYQogbmV3IHBhY2ssIHRoYXQgY29udGFpbnMgb2JqZWN0cyBjcmVhdGVkIHNpbmNlIHlvdSBwYWNrZWQgeW91cgogcmVwb3NpdG9yeSB0aGUgbGFzdCB0aW1lLiBXZSByZWNvbW1lbmQgdGhhdCB5b3UgcGFjayB5b3VyIHByb2plY3QKQEAgLTE2OTMsNiArMTY5Miw3IEBACiBsaW5rZ2l0OmdpdHR1dG9yaWFsWzddLAogbGlua2dpdDpnaXR0dXRvcmlhbC0yWzddLAogbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddLAorbGlua2dpdDpnaXQtaGVscFsxXSwKIGxpbms6ZXZlcnlkYXkuaHRtbFtFdmVyeWRheSBnaXRdLAogbGluazp1c2VyLW1hbnVhbC5odG1sW1RoZSBHaXQgVXNlcidzIE1hbnVhbF0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRob29rcy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdGhvb2tzLnR4dAppbmRleCAwMjRhYmIyLi4yOGE4YWJjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGhvb2tzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGhvb2tzLnR4dApAQCAtMjAsNiArMjAsMTAgQEAKIGFsbCBkaXNhYmxlZC4gIFRvIGVuYWJsZSBhIGhvb2ssIHJlbmFtZSBpdCBieSByZW1vdmluZyBpdHMgYC5zYW1wbGVgCiBzdWZmaXguCiAKK05PVEU6IEl0IGlzIGFsc28gYSByZXF1aXJlbWVudCBmb3IgYSBnaXZlbiBob29rIHRvIGJlIGV4ZWN1dGFibGUuCitIb3dldmVyIC0gaW4gYSBmcmVzaGx5IGluaXRpYWxpemVkIHJlcG9zaXRvcnkgLSB0aGUgYC5zYW1wbGVgIGZpbGVzIGFyZQorZXhlY3V0YWJsZSBieSBkZWZhdWx0LgorCiBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgY3VycmVudGx5IGRlZmluZWQgaG9va3MuCiAKIGFwcGx5cGF0Y2gtbXNnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGsudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRrLnR4dAppbmRleCA1ZWYzNjg3Li40NjczYTc1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGsudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0ay50eHQKQEAgLTU2LDYgKzU2LDExIEBACiAJVXNlIHRoaXMgaW5zdGVhZCBvZiBleHBsaWNpdGx5IHNwZWNpZnlpbmcgPHJldnM+IGlmIHRoZSBzZXQgb2YKIAljb21taXRzIHRvIHNob3cgbWF5IHZhcnkgYmV0d2VlbiByZWZyZXNoZXMuCiAKKy0tc2VsZWN0LWNvbW1pdD08cmVmPjo6CisKKwlBdXRvbWF0aWNhbGx5IHNlbGVjdCB0aGUgc3BlY2lmaWVkIGNvbW1pdCBhZnRlciBsb2FkaW5nIHRoZSBncmFwaC4KKwlEZWZhdWx0IGJlaGF2aW9yIGlzIGVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZyAnLS1zZWxlY3QtY29tbWl0PUhFQUQnLgorCiA8cmV2cz46OgogCiAJTGltaXQgdGhlIHJldmlzaW9ucyB0byBzaG93LiBUaGlzIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgcmV2aXNpb24KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0cmVwb3NpdG9yeS1sYXlvdXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRyZXBvc2l0b3J5LWxheW91dC50eHQKaW5kZXggYTk2OWIzZi4uMWJlZmNhOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRyZXBvc2l0b3J5LWxheW91dC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXRyZXBvc2l0b3J5LWxheW91dC50eHQKQEAgLTEzNCw3ICsxMzQsOCBAQAogCUhvb2tzIGFyZSBjdXN0b21pemF0aW9uIHNjcmlwdHMgdXNlZCBieSB2YXJpb3VzIGdpdAogCWNvbW1hbmRzLiAgQSBoYW5kZnVsIG9mIHNhbXBsZSBob29rcyBhcmUgaW5zdGFsbGVkIHdoZW4KIAknZ2l0LWluaXQnIGlzIHJ1biwgYnV0IGFsbCBvZiB0aGVtIGFyZSBkaXNhYmxlZCBieQotCWRlZmF1bHQuICBUbyBlbmFibGUsIHRoZXkgbmVlZCB0byBiZSBtYWRlIGV4ZWN1dGFibGUuCisJZGVmYXVsdC4gIFRvIGVuYWJsZSwgdGhlIGAuc2FtcGxlYCBzdWZmaXggaGFzIHRvIGJlCisJcmVtb3ZlZCBmcm9tIHRoZSBmaWxlbmFtZSBieSByZW5hbWluZy4KIAlSZWFkIGxpbmtnaXQ6Z2l0aG9va3NbNV0gZm9yIG1vcmUgZGV0YWlscyBhYm91dAogCWVhY2ggaG9vay4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC0yLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0dHV0b3JpYWwtMi50eHQKaW5kZXggNjYwOTA0Ni4uYTA1N2I1MCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC0yLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLTIudHh0CkBAIC0zMiwyMiArMzIsMjcgQEAKICQgZWNobyAnaGVsbG8gd29ybGQnID4gZmlsZS50eHQKICQgZ2l0IGFkZCAuCiAkIGdpdCBjb21taXQgLWEgLW0gImluaXRpYWwgY29tbWl0IgotQ3JlYXRlZCBpbml0aWFsIGNvbW1pdCA1NDE5NmNjMjcwM2RjMTY1Y2JkMzczYTY1YTRkY2YyMmQ1MGFlN2Y3CitbbWFzdGVyIChyb290LWNvbW1pdCldIGNyZWF0ZWQgNTQxOTZjYzogImluaXRpYWwgY29tbWl0IgorIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBmaWxlLnR4dAogJCBlY2hvICdoZWxsbyB3b3JsZCEnID5maWxlLnR4dAogJCBnaXQgY29tbWl0IC1hIC1tICJhZGQgZW1waGFzaXMiCi1DcmVhdGVkIGNvbW1pdCBjNGQ1OWYzOTBiOWNmZDQzMTgxMTdhZmRlMTFkNjAxYzEwODVmMjQxCitbbWFzdGVyXSBjcmVhdGVkIGM0ZDU5ZjM6ICJhZGQgZW1waGFzaXMiCisgMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hhdCBhcmUgdGhlIDQwIGRpZ2l0cyBvZiBoZXggdGhhdCBnaXQgcmVzcG9uZGVkIHRvIHRoZSBjb21taXQgd2l0aD8KK1doYXQgYXJlIHRoZSA3IGRpZ2l0cyBvZiBoZXggdGhhdCBnaXQgcmVzcG9uZGVkIHRvIHRoZSBjb21taXQgd2l0aD8KIAogV2Ugc2F3IGluIHBhcnQgb25lIG9mIHRoZSB0dXRvcmlhbCB0aGF0IGNvbW1pdHMgaGF2ZSBuYW1lcyBsaWtlIHRoaXMuCiBJdCB0dXJucyBvdXQgdGhhdCBldmVyeSBvYmplY3QgaW4gdGhlIGdpdCBoaXN0b3J5IGlzIHN0b3JlZCB1bmRlcgotc3VjaCBhIDQwLWRpZ2l0IGhleCBuYW1lLiAgVGhhdCBuYW1lIGlzIHRoZSBTSEExIGhhc2ggb2YgdGhlIG9iamVjdCdzCithIDQwLWRpZ2l0IGhleCBuYW1lLiAgVGhhdCBuYW1lIGlzIHRoZSBTSEExIGhhc2ggb2YgdGhlIG9iamVjdCdzCiBjb250ZW50czsgYW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIGVuc3VyZXMgdGhhdCBnaXQgd2lsbCBuZXZlciBzdG9yZQogdGhlIHNhbWUgZGF0YSB0d2ljZSAoc2luY2UgaWRlbnRpY2FsIGRhdGEgaXMgZ2l2ZW4gYW4gaWRlbnRpY2FsIFNIQTEKIG5hbWUpLCBhbmQgdGhhdCB0aGUgY29udGVudHMgb2YgYSBnaXQgb2JqZWN0IHdpbGwgbmV2ZXIgY2hhbmdlIChzaW5jZQotdGhhdCB3b3VsZCBjaGFuZ2UgdGhlIG9iamVjdCdzIG5hbWUgYXMgd2VsbCkuCit0aGF0IHdvdWxkIGNoYW5nZSB0aGUgb2JqZWN0J3MgbmFtZSBhcyB3ZWxsKS4gVGhlIDcgY2hhciBoZXggc3RyaW5ncworaGVyZSBhcmUgc2ltcGx5IHRoZSBhYmJyZXZpYXRpb24gb2Ygc3VjaCA0MCBjaGFyYWN0ZXIgbG9uZyBzdHJpbmdzLgorQWJicmV2aWF0aW9ucyBjYW4gYmUgdXNlZCBldmVyeXdoZXJlIHdoZXJlIHRoZSA0MCBjaGFyYWN0ZXIgc3RyaW5ncworY2FuIGJlIHVzZWQsIHNvIGxvbmcgYXMgdGhleSBhcmUgdW5hbWJpZ3VvdXMuCiAKIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbW1pdCBvYmplY3QgeW91IGNyZWF0ZWQgd2hpbGUKIGZvbGxvd2luZyB0aGUgZXhhbXBsZSBhYm92ZSBnZW5lcmF0ZXMgYSBkaWZmZXJlbnQgU0hBMSBoYXNoIHRoYW4KQEAgLTQyMCw2ICs0MjUsNyBAQAogbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddLAogbGlua2dpdDpnaXRjb3JlLXR1dG9yaWFsWzddLAogbGlua2dpdDpnaXRnbG9zc2FyeVs3XSwKK2xpbmtnaXQ6Z2l0LWhlbHBbMV0sCiBsaW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgZ2l0XSwKIGxpbms6dXNlci1tYW51YWwuaHRtbFtUaGUgR2l0IFVzZXIncyBNYW51YWxdCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0dHV0b3JpYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC50eHQKaW5kZXggMzg0OTcyYy4uNDU4ZmFmZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC50eHQKQEAgLTI2LDYgKzI2LDE1IEBACiAkIG1hbiBnaXQtbG9nCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorb3I6CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJCBnaXQgaGVscCBsb2cKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaXRoIHRoZSBsYXR0ZXIsIHlvdSBjYW4gdXNlIHRoZSBtYW51YWwgdmlld2VyIG9mIHlvdXIgY2hvaWNlOyBzZWUKK2xpbmtnaXQ6Z2l0LWhlbHBbMV0gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKIEl0IGlzIGEgZ29vZCBpZGVhIHRvIGludHJvZHVjZSB5b3Vyc2VsZiB0byBnaXQgd2l0aCB5b3VyIG5hbWUgYW5kCiBwdWJsaWMgZW1haWwgYWRkcmVzcyBiZWZvcmUgZG9pbmcgYW55IG9wZXJhdGlvbi4gIFRoZSBlYXNpZXN0CiB3YXkgdG8gZG8gc28gaXM6CkBAIC01ODEsNyArNTkwLDcgQEAKIHRoZW4gbWVyZ2VkIGJhY2sgdG9nZXRoZXIsIHRoZSBvcmRlciBpbiB3aGljaCAnZ2l0LWxvZycgcHJlc2VudHMKIHRob3NlIGNvbW1pdHMgaXMgbWVhbmluZ2xlc3MuCiAKLU1vc3QgcHJvamVjdHMgd2l0aCBtdWx0aXBsZSBjb250cmlidXRvcnMgKHN1Y2ggYXMgdGhlIGxpbnV4IGtlcm5lbCwKK01vc3QgcHJvamVjdHMgd2l0aCBtdWx0aXBsZSBjb250cmlidXRvcnMgKHN1Y2ggYXMgdGhlIExpbnV4IGtlcm5lbCwKIG9yIGdpdCBpdHNlbGYpIGhhdmUgZnJlcXVlbnQgbWVyZ2VzLCBhbmQgJ2dpdGsnIGRvZXMgYSBiZXR0ZXIgam9iIG9mCiB2aXN1YWxpemluZyB0aGVpciBoaXN0b3J5LiAgRm9yIGV4YW1wbGUsCiAKQEAgLTYzMyw3ICs2NDIsNyBAQAogCiAgICogbGlua2dpdDpnaXQtZm9ybWF0LXBhdGNoWzFdLCBsaW5rZ2l0OmdpdC1hbVsxXTogVGhlc2UgY29udmVydAogICAgIHNlcmllcyBvZiBnaXQgY29tbWl0cyBpbnRvIGVtYWlsZWQgcGF0Y2hlcywgYW5kIHZpY2UgdmVyc2EsCi0gICAgdXNlZnVsIGZvciBwcm9qZWN0cyBzdWNoIGFzIHRoZSBsaW51eCBrZXJuZWwgd2hpY2ggcmVseSBoZWF2aWx5CisgICAgdXNlZnVsIGZvciBwcm9qZWN0cyBzdWNoIGFzIHRoZSBMaW51eCBrZXJuZWwgd2hpY2ggcmVseSBoZWF2aWx5CiAgICAgb24gZW1haWxlZCBwYXRjaGVzLgogCiAgICogbGlua2dpdDpnaXQtYmlzZWN0WzFdOiBXaGVuIHRoZXJlIGlzIGEgcmVncmVzc2lvbiBpbiB5b3VyCkBAIC02NTMsNiArNjYyLDcgQEAKIGxpbmtnaXQ6Z2l0Y3ZzLW1pZ3JhdGlvbls3XSwKIGxpbmtnaXQ6Z2l0Y29yZS10dXRvcmlhbFs3XSwKIGxpbmtnaXQ6Z2l0Z2xvc3NhcnlbN10sCitsaW5rZ2l0OmdpdC1oZWxwWzFdLAogbGluazpldmVyeWRheS5odG1sW0V2ZXJ5ZGF5IGdpdF0sCiBsaW5rOnVzZXItbWFudWFsLmh0bWxbVGhlIEdpdCBVc2VyJ3MgTWFudWFsXQogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdHdvcmtmbG93cy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHdvcmtmbG93cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIwMjFlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ2l0d29ya2Zsb3dzLnR4dApAQCAtMCwwICsxLDM2NCBAQAorZ2l0d29ya2Zsb3dzKDcpCis9PT09PT09PT09PT09PT0KKworTkFNRQorLS0tLQorZ2l0d29ya2Zsb3dzIC0gQW4gb3ZlcnZpZXcgb2YgcmVjb21tZW5kZWQgd29ya2Zsb3dzIHdpdGggZ2l0CisKK1NZTk9QU0lTCistLS0tLS0tLQorZ2l0ICoKKworCitERVNDUklQVElPTgorLS0tLS0tLS0tLS0KKworVGhpcyBkb2N1bWVudCBhdHRlbXB0cyB0byB3cml0ZSBkb3duIGFuZCBtb3RpdmF0ZSBzb21lIG9mIHRoZSB3b3JrZmxvdworZWxlbWVudHMgdXNlZCBmb3IgYGdpdC5naXRgIGl0c2VsZi4gIE1hbnkgaWRlYXMgYXBwbHkgaW4gZ2VuZXJhbCwKK3Rob3VnaCB0aGUgZnVsbCB3b3JrZmxvdyBpcyByYXJlbHkgcmVxdWlyZWQgZm9yIHNtYWxsZXIgcHJvamVjdHMgd2l0aAorZmV3ZXIgcGVvcGxlIGludm9sdmVkLgorCitXZSBmb3JtdWxhdGUgYSBzZXQgb2YgJ3J1bGVzJyBmb3IgcXVpY2sgcmVmZXJlbmNlLCB3aGlsZSB0aGUgcHJvc2UKK3RyaWVzIHRvIG1vdGl2YXRlIGVhY2ggb2YgdGhlbS4gIERvIG5vdCBhbHdheXMgdGFrZSB0aGVtIGxpdGVyYWxseTsKK3lvdSBzaG91bGQgdmFsdWUgZ29vZCByZWFzb25zIGZvciB5b3VyIGFjdGlvbnMgaGlnaGVyIHRoYW4gbWFucGFnZXMKK3N1Y2ggYXMgdGhpcyBvbmUuCisKKworU0VQQVJBVEUgQ0hBTkdFUworLS0tLS0tLS0tLS0tLS0tLQorCitBcyBhIGdlbmVyYWwgcnVsZSwgeW91IHNob3VsZCB0cnkgdG8gc3BsaXQgeW91ciBjaGFuZ2VzIGludG8gc21hbGwKK2xvZ2ljYWwgc3RlcHMsIGFuZCBjb21taXQgZWFjaCBvZiB0aGVtLiAgVGhleSBzaG91bGQgYmUgY29uc2lzdGVudCwKK3dvcmtpbmcgaW5kZXBlbmRlbnRseSBvZiBhbnkgbGF0ZXIgY29tbWl0cywgcGFzcyB0aGUgdGVzdCBzdWl0ZSwgZXRjLgorVGhpcyBtYWtlcyB0aGUgcmV2aWV3IHByb2Nlc3MgbXVjaCBlYXNpZXIsIGFuZCB0aGUgaGlzdG9yeSBtdWNoIG1vcmUKK3VzZWZ1bCBmb3IgbGF0ZXIgaW5zcGVjdGlvbiBhbmQgYW5hbHlzaXMsIGZvciBleGFtcGxlIHdpdGgKK2xpbmtnaXQ6Z2l0LWJsYW1lWzFdIGFuZCBsaW5rZ2l0OmdpdC1iaXNlY3RbMV0uCisKK1RvIGFjaGlldmUgdGhpcywgdHJ5IHRvIHNwbGl0IHlvdXIgd29yayBpbnRvIHNtYWxsIHN0ZXBzIGZyb20gdGhlIHZlcnkKK2JlZ2lubmluZy4gSXQgaXMgYWx3YXlzIGVhc2llciB0byBzcXVhc2ggYSBmZXcgY29tbWl0cyB0b2dldGhlciB0aGFuCit0byBzcGxpdCBvbmUgYmlnIGNvbW1pdCBpbnRvIHNldmVyYWwuICBEb24ndCBiZSBhZnJhaWQgb2YgbWFraW5nIHRvbworc21hbGwgb3IgaW1wZXJmZWN0IHN0ZXBzIGFsb25nIHRoZSB3YXkuIFlvdSBjYW4gYWx3YXlzIGdvIGJhY2sgbGF0ZXIKK2FuZCBlZGl0IHRoZSBjb21taXRzIHdpdGggYGdpdCByZWJhc2UgXC0taW50ZXJhY3RpdmVgIGJlZm9yZSB5b3UKK3B1Ymxpc2ggdGhlbS4gIFlvdSBjYW4gdXNlIGBnaXQgc3Rhc2ggc2F2ZSBcLS1rZWVwLWluZGV4YCB0byBydW4gdGhlCit0ZXN0IHN1aXRlIGluZGVwZW5kZW50IG9mIG90aGVyIHVuY29tbWl0dGVkIGNoYW5nZXM7IHNlZSB0aGUgRVhBTVBMRVMKK3NlY3Rpb24gb2YgbGlua2dpdDpnaXQtc3Rhc2hbMV0uCisKKworTUFOQUdJTkcgQlJBTkNIRVMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSB0d28gbWFpbiB0b29scyB0aGF0IGNhbiBiZSB1c2VkIHRvIGluY2x1ZGUgY2hhbmdlcyBmcm9tIG9uZQorYnJhbmNoIG9uIGFub3RoZXI6IGxpbmtnaXQ6Z2l0LW1lcmdlWzFdIGFuZAorbGlua2dpdDpnaXQtY2hlcnJ5LXBpY2tbMV0uCisKK01lcmdlcyBoYXZlIG1hbnkgYWR2YW50YWdlcywgc28gd2UgdHJ5IHRvIHNvbHZlIGFzIG1hbnkgcHJvYmxlbXMgYXMKK3Bvc3NpYmxlIHdpdGggbWVyZ2VzIGFsb25lLiAgQ2hlcnJ5LXBpY2tpbmcgaXMgc3RpbGwgb2NjYXNpb25hbGx5Cit1c2VmdWw7IHNlZSAiTWVyZ2luZyB1cHdhcmRzIiBiZWxvdyBmb3IgYW4gZXhhbXBsZS4KKworTW9zdCBpbXBvcnRhbnRseSwgbWVyZ2luZyB3b3JrcyBhdCB0aGUgYnJhbmNoIGxldmVsLCB3aGlsZQorY2hlcnJ5LXBpY2tpbmcgd29ya3MgYXQgdGhlIGNvbW1pdCBsZXZlbC4gIFRoaXMgbWVhbnMgdGhhdCBhIG1lcmdlIGNhbgorY2Fycnkgb3ZlciB0aGUgY2hhbmdlcyBmcm9tIDEsIDEwLCBvciAxMDAwIGNvbW1pdHMgd2l0aCBlcXVhbCBlYXNlLAord2hpY2ggaW4gdHVybiBtZWFucyB0aGUgd29ya2Zsb3cgc2NhbGVzIG11Y2ggYmV0dGVyIHRvIGEgbGFyZ2UgbnVtYmVyCitvZiBjb250cmlidXRvcnMgKGFuZCBjb250cmlidXRpb25zKS4gIE1lcmdlcyBhcmUgYWxzbyBlYXNpZXIgdG8KK3VuZGVyc3RhbmQgYmVjYXVzZSBhIG1lcmdlIGNvbW1pdCBpcyBhICJwcm9taXNlIiB0aGF0IGFsbCBjaGFuZ2VzIGZyb20KK2FsbCBpdHMgcGFyZW50cyBhcmUgbm93IGluY2x1ZGVkLgorCitUaGVyZSBpcyBhIHRyYWRlb2ZmIG9mIGNvdXJzZTogbWVyZ2VzIHJlcXVpcmUgYSBtb3JlIGNhcmVmdWwgYnJhbmNoCittYW5hZ2VtZW50LiAgVGhlIGZvbGxvd2luZyBzdWJzZWN0aW9ucyBkaXNjdXNzIHRoZSBpbXBvcnRhbnQgcG9pbnRzLgorCisKK0dyYWR1YXRpb24KK35+fn5+fn5+fn4KKworQXMgYSBnaXZlbiBmZWF0dXJlIGdvZXMgZnJvbSBleHBlcmltZW50YWwgdG8gc3RhYmxlLCBpdCBhbHNvCisiZ3JhZHVhdGVzIiBiZXR3ZWVuIHRoZSBjb3JyZXNwb25kaW5nIGJyYW5jaGVzIG9mIHRoZSBzb2Z0d2FyZS4KK2BnaXQuZ2l0YCB1c2VzIHRoZSBmb2xsb3dpbmcgJ2ludGVncmF0aW9uIGJyYW5jaGVzJzoKKworKiAnbWFpbnQnIHRyYWNrcyB0aGUgY29tbWl0cyB0aGF0IHNob3VsZCBnbyBpbnRvIHRoZSBuZXh0ICJtYWludGVuYW5jZQorICByZWxlYXNlIiwgaS5lLiwgdXBkYXRlIG9mIHRoZSBsYXN0IHJlbGVhc2VkIHN0YWJsZSB2ZXJzaW9uOworCisqICdtYXN0ZXInIHRyYWNrcyB0aGUgY29tbWl0cyB0aGF0IHNob3VsZCBnbyBpbnRvIHRoZSBuZXh0IHJlbGVhc2U7CisKKyogJ25leHQnIGlzIGludGVuZGVkIGFzIGEgdGVzdGluZyBicmFuY2ggZm9yIHRvcGljcyBiZWluZyB0ZXN0ZWQgZm9yCisgIHN0YWJpbGl0eSBmb3IgbWFzdGVyLgorCitUaGVyZSBpcyBhIGZvdXJ0aCBvZmZpY2lhbCBicmFuY2ggdGhhdCBpcyB1c2VkIHNsaWdodGx5IGRpZmZlcmVudGx5OgorCisqICdwdScgKHByb3Bvc2VkIHVwZGF0ZXMpIGlzIGFuIGludGVncmF0aW9uIGJyYW5jaCBmb3IgdGhpbmdzIHRoYXQgYXJlCisgIG5vdCBxdWl0ZSByZWFkeSBmb3IgaW5jbHVzaW9uIHlldCAoc2VlICJJbnRlZ3JhdGlvbiBCcmFuY2hlcyIKKyAgYmVsb3cpLgorCitFYWNoIG9mIHRoZSBmb3VyIGJyYW5jaGVzIGlzIHVzdWFsbHkgYSBkaXJlY3QgZGVzY2VuZGFudCBvZiB0aGUgb25lCithYm92ZSBpdC4KKworQ29uY2VwdHVhbGx5LCB0aGUgZmVhdHVyZSBlbnRlcnMgYXQgYW4gdW5zdGFibGUgYnJhbmNoICh1c3VhbGx5ICduZXh0Jworb3IgJ3B1JyksIGFuZCAiZ3JhZHVhdGVzIiB0byAnbWFzdGVyJyBmb3IgdGhlIG5leHQgcmVsZWFzZSBvbmNlIGl0IGlzCitjb25zaWRlcmVkIHN0YWJsZSBlbm91Z2guCisKKworTWVyZ2luZyB1cHdhcmRzCit+fn5+fn5+fn5+fn5+fn4KKworVGhlICJkb3dud2FyZHMgZ3JhZHVhdGlvbiIgZGlzY3Vzc2VkIGFib3ZlIGNhbm5vdCBiZSBkb25lIGJ5IGFjdHVhbGx5CittZXJnaW5nIGRvd253YXJkcywgaG93ZXZlciwgc2luY2UgdGhhdCB3b3VsZCBtZXJnZSAnYWxsJyBjaGFuZ2VzIG9uCit0aGUgdW5zdGFibGUgYnJhbmNoIGludG8gdGhlIHN0YWJsZSBvbmUuICBIZW5jZSB0aGUgZm9sbG93aW5nOgorCisuTWVyZ2UgdXB3YXJkcworW2NhcHRpb249IlJ1bGU6ICJdCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitBbHdheXMgY29tbWl0IHlvdXIgZml4ZXMgdG8gdGhlIG9sZGVzdCBzdXBwb3J0ZWQgYnJhbmNoIHRoYXQgcmVxdWlyZQordGhlbS4gIFRoZW4gKHBlcmlvZGljYWxseSkgbWVyZ2UgdGhlIGludGVncmF0aW9uIGJyYW5jaGVzIHVwd2FyZHMgaW50byBlYWNoCitvdGhlci4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBnaXZlcyBhIHZlcnkgY29udHJvbGxlZCBmbG93IG9mIGZpeGVzLiAgSWYgeW91IG5vdGljZSB0aGF0IHlvdQoraGF2ZSBhcHBsaWVkIGEgZml4IHRvIGUuZy4gJ21hc3RlcicgdGhhdCBpcyBhbHNvIHJlcXVpcmVkIGluICdtYWludCcsCit5b3Ugd2lsbCBuZWVkIHRvIGNoZXJyeS1waWNrIGl0ICh1c2luZyBsaW5rZ2l0OmdpdC1jaGVycnktcGlja1sxXSkKK2Rvd253YXJkcy4gIFRoaXMgd2lsbCBoYXBwZW4gYSBmZXcgdGltZXMgYW5kIGlzIG5vdGhpbmcgdG8gd29ycnkgYWJvdXQKK3VubGVzcyB5b3UgZG8gaXQgdmVyeSBmcmVxdWVudGx5LgorCisKK1RvcGljIGJyYW5jaGVzCit+fn5+fn5+fn5+fn5+fgorCitBbnkgbm9udHJpdmlhbCBmZWF0dXJlIHdpbGwgcmVxdWlyZSBzZXZlcmFsIHBhdGNoZXMgdG8gaW1wbGVtZW50LCBhbmQKK21heSBnZXQgZXh0cmEgYnVnZml4ZXMgb3IgaW1wcm92ZW1lbnRzIGR1cmluZyBpdHMgbGlmZXRpbWUuCisKK0NvbW1pdHRpbmcgZXZlcnl0aGluZyBkaXJlY3RseSBvbiB0aGUgaW50ZWdyYXRpb24gYnJhbmNoZXMgbGVhZHMgdG8gbWFueQorcHJvYmxlbXM6IEJhZCBjb21taXRzIGNhbm5vdCBiZSB1bmRvbmUsIHNvIHRoZXkgbXVzdCBiZSByZXZlcnRlZCBvbmUKK2J5IG9uZSwgd2hpY2ggY3JlYXRlcyBjb25mdXNpbmcgaGlzdG9yaWVzIGFuZCBmdXJ0aGVyIGVycm9yIHBvdGVudGlhbAord2hlbiB5b3UgZm9yZ2V0IHRvIHJldmVydCBwYXJ0IG9mIGEgZ3JvdXAgb2YgY2hhbmdlcy4gIFdvcmtpbmcgaW4KK3BhcmFsbGVsIG1peGVzIHVwIHRoZSBjaGFuZ2VzLCBjcmVhdGluZyBmdXJ0aGVyIGNvbmZ1c2lvbi4KKworVXNlIG9mICJ0b3BpYyBicmFuY2hlcyIgc29sdmVzIHRoZXNlIHByb2JsZW1zLiAgVGhlIG5hbWUgaXMgcHJldHR5CitzZWxmIGV4cGxhbmF0b3J5LCB3aXRoIGEgY2F2ZWF0IHRoYXQgY29tZXMgZnJvbSB0aGUgIm1lcmdlIHVwd2FyZHMiCitydWxlIGFib3ZlOgorCisuVG9waWMgYnJhbmNoZXMKK1tjYXB0aW9uPSJSdWxlOiAiXQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorTWFrZSBhIHNpZGUgYnJhbmNoIGZvciBldmVyeSB0b3BpYyAoZmVhdHVyZSwgYnVnZml4LCAuLi4pLiBGb3JrIGl0IG9mZgorYXQgdGhlIG9sZGVzdCBpbnRlZ3JhdGlvbiBicmFuY2ggdGhhdCB5b3Ugd2lsbCBldmVudHVhbGx5IHdhbnQgdG8gbWVyZ2UgaXQKK2ludG8uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK01hbnkgdGhpbmdzIGNhbiB0aGVuIGJlIGRvbmUgdmVyeSBuYXR1cmFsbHk6CisKKyogVG8gZ2V0IHRoZSBmZWF0dXJlL2J1Z2ZpeCBpbnRvIGFuIGludGVncmF0aW9uIGJyYW5jaCwgc2ltcGx5IG1lcmdlCisgIGl0LiAgSWYgdGhlIHRvcGljIGhhcyBldm9sdmVkIGZ1cnRoZXIgaW4gdGhlIG1lYW50aW1lLCBtZXJnZSBhZ2Fpbi4KKyAgKE5vdGUgdGhhdCB5b3UgZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgdG8gbWVyZ2UgaXQgdG8gdGhlIG9sZGVzdAorICBpbnRlZ3JhdGlvbiBicmFuY2ggZmlyc3QuICBGb3IgZXhhbXBsZSwgeW91IGNhbiBmaXJzdCBtZXJnZSBhIGJ1Z2ZpeAorICB0byAnbmV4dCcsIGdpdmUgaXQgc29tZSB0ZXN0aW5nIHRpbWUsIGFuZCBtZXJnZSB0byAnbWFpbnQnIHdoZW4geW91CisgIGtub3cgaXQgaXMgc3RhYmxlLikKKworKiBJZiB5b3UgZmluZCB5b3UgbmVlZCBuZXcgZmVhdHVyZXMgZnJvbSB0aGUgYnJhbmNoICdvdGhlcicgdG8gY29udGludWUKKyAgd29ya2luZyBvbiB5b3VyIHRvcGljLCBtZXJnZSAnb3RoZXInIHRvICd0b3BpYycuICAoSG93ZXZlciwgZG8gbm90CisgIGRvIHRoaXMgImp1c3QgaGFiaXR1YWxseSIsIHNlZSBiZWxvdy4pCisKKyogSWYgeW91IGZpbmQgeW91IGZvcmtlZCBvZmYgdGhlIHdyb25nIGJyYW5jaCBhbmQgd2FudCB0byBtb3ZlIGl0CisgICJiYWNrIGluIHRpbWUiLCB1c2UgbGlua2dpdDpnaXQtcmViYXNlWzFdLgorCitOb3RlIHRoYXQgdGhlIGxhc3QgcG9pbnQgY2xhc2hlcyB3aXRoIHRoZSBvdGhlciB0d286IGEgdG9waWMgdGhhdCBoYXMKK2JlZW4gbWVyZ2VkIGVsc2V3aGVyZSBzaG91bGQgbm90IGJlIHJlYmFzZWQuICBTZWUgdGhlIHNlY3Rpb24gb24KK1JFQ09WRVJJTkcgRlJPTSBVUFNUUkVBTSBSRUJBU0UgaW4gbGlua2dpdDpnaXQtcmViYXNlWzFdLgorCitXZSBzaG91bGQgcG9pbnQgb3V0IHRoYXQgImhhYml0dWFsbHkiIChyZWd1bGFybHkgZm9yIG5vIHJlYWwgcmVhc29uKQorbWVyZ2luZyBhbiBpbnRlZ3JhdGlvbiBicmFuY2ggaW50byB5b3VyIHRvcGljcyAtLSBhbmQgYnkgZXh0ZW5zaW9uLAorbWVyZ2luZyBhbnl0aGluZyB1cHN0cmVhbSBpbnRvIGFueXRoaW5nIGRvd25zdHJlYW0gb24gYSByZWd1bGFyIGJhc2lzCistLSBpcyBmcm93bmVkIHVwb246CisKKy5NZXJnZSB0byBkb3duc3RyZWFtIG9ubHkgYXQgd2VsbC1kZWZpbmVkIHBvaW50cworW2NhcHRpb249IlJ1bGU6ICJdCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitEbyBub3QgbWVyZ2UgdG8gZG93bnN0cmVhbSBleGNlcHQgd2l0aCBhIGdvb2QgcmVhc29uOiB1cHN0cmVhbSBBUEkKK2NoYW5nZXMgYWZmZWN0IHlvdXIgYnJhbmNoOyB5b3VyIGJyYW5jaCBubyBsb25nZXIgbWVyZ2VzIHRvIHVwc3RyZWFtCitjbGVhbmx5OyBldGMuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK090aGVyd2lzZSwgdGhlIHRvcGljIHRoYXQgd2FzIG1lcmdlZCB0byBzdWRkZW5seSBjb250YWlucyBtb3JlIHRoYW4gYQorc2luZ2xlICh3ZWxsLXNlcGFyYXRlZCkgY2hhbmdlLiAgVGhlIG1hbnkgcmVzdWx0aW5nIHNtYWxsIG1lcmdlcyB3aWxsCitncmVhdGx5IGNsdXR0ZXIgdXAgaGlzdG9yeS4gIEFueW9uZSB3aG8gbGF0ZXIgaW52ZXN0aWdhdGVzIHRoZSBoaXN0b3J5CitvZiBhIGZpbGUgd2lsbCBoYXZlIHRvIGZpbmQgb3V0IHdoZXRoZXIgdGhhdCBtZXJnZSBhZmZlY3RlZCB0aGUgdG9waWMKK2luIGRldmVsb3BtZW50LiAgQW4gdXBzdHJlYW0gbWlnaHQgZXZlbiBpbmFkdmVydGVudGx5IGJlIG1lcmdlZCBpbnRvIGEKKyJtb3JlIHN0YWJsZSIgYnJhbmNoLiAgQW5kIHNvIG9uLgorCisKK1Rocm93LWF3YXkgaW50ZWdyYXRpb24KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworSWYgeW91IGZvbGxvd2VkIHRoZSBsYXN0IHBhcmFncmFwaCwgeW91IHdpbGwgbm93IGhhdmUgbWFueSBzbWFsbCB0b3BpYworYnJhbmNoZXMsIGFuZCBvY2Nhc2lvbmFsbHkgd29uZGVyIGhvdyB0aGV5IGludGVyYWN0LiAgUGVyaGFwcyB0aGUKK3Jlc3VsdCBvZiBtZXJnaW5nIHRoZW0gZG9lcyBub3QgZXZlbiB3b3JrPyAgQnV0IG9uIHRoZSBvdGhlciBoYW5kLCB3ZQord2FudCB0byBhdm9pZCBtZXJnaW5nIHRoZW0gYW55d2hlcmUgInN0YWJsZSIgYmVjYXVzZSBzdWNoIG1lcmdlcworY2Fubm90IGVhc2lseSBiZSB1bmRvbmUuCisKK1RoZSBzb2x1dGlvbiwgb2YgY291cnNlLCBpcyB0byBtYWtlIGEgbWVyZ2UgdGhhdCB3ZSBjYW4gdW5kbzogbWVyZ2UKK2ludG8gYSB0aHJvdy1hd2F5IGJyYW5jaC4KKworLlRocm93LWF3YXkgaW50ZWdyYXRpb24gYnJhbmNoZXMKK1tjYXB0aW9uPSJSdWxlOiAiXQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVG8gdGVzdCB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCB0b3BpY3MsIG1lcmdlIHRoZW0gaW50byBhCit0aHJvdy1hd2F5IGJyYW5jaC4gIFlvdSBtdXN0IG5ldmVyIGJhc2UgYW55IHdvcmsgb24gc3VjaCBhIGJyYW5jaCEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSWYgeW91IG1ha2UgaXQgKHZlcnkpIGNsZWFyIHRoYXQgdGhpcyBicmFuY2ggaXMgZ29pbmcgdG8gYmUgZGVsZXRlZAorcmlnaHQgYWZ0ZXIgdGhlIHRlc3RpbmcsIHlvdSBjYW4gZXZlbiBwdWJsaXNoIHRoaXMgYnJhbmNoLCBmb3IgZXhhbXBsZQordG8gZ2l2ZSB0aGUgdGVzdGVycyBhIGNoYW5jZSB0byB3b3JrIHdpdGggaXQsIG9yIG90aGVyIGRldmVsb3BlcnMgYQorY2hhbmNlIHRvIHNlZSBpZiB0aGVpciBpbi1wcm9ncmVzcyB3b3JrIHdpbGwgYmUgY29tcGF0aWJsZS4gIGBnaXQuZ2l0YAoraGFzIHN1Y2ggYW4gb2ZmaWNpYWwgdGhyb3ctYXdheSBpbnRlZ3JhdGlvbiBicmFuY2ggY2FsbGVkICdwdScuCisKKworRElTVFJJQlVURUQgV09SS0ZMT1dTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgdGhlIGxhc3Qgc2VjdGlvbiwgeW91IHNob3VsZCBrbm93IGhvdyB0byBtYW5hZ2UgdG9waWNzLiAgSW4KK2dlbmVyYWwsIHlvdSB3aWxsIG5vdCBiZSB0aGUgb25seSBwZXJzb24gd29ya2luZyBvbiB0aGUgcHJvamVjdCwgc28KK3lvdSB3aWxsIGhhdmUgdG8gc2hhcmUgeW91ciB3b3JrLgorCitSb3VnaGx5IHNwZWFraW5nLCB0aGVyZSBhcmUgdHdvIGltcG9ydGFudCB3b3JrZmxvd3M6IG1lcmdlIGFuZCBwYXRjaC4KK1RoZSBpbXBvcnRhbnQgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSBtZXJnZSB3b3JrZmxvdyBjYW4gcHJvcGFnYXRlIGZ1bGwKK2hpc3RvcnksIGluY2x1ZGluZyBtZXJnZXMsIHdoaWxlIHBhdGNoZXMgY2Fubm90LiAgQm90aCB3b3JrZmxvd3MgY2FuCitiZSB1c2VkIGluIHBhcmFsbGVsOiBpbiBgZ2l0LmdpdGAsIG9ubHkgc3Vic3lzdGVtIG1haW50YWluZXJzIHVzZQordGhlIG1lcmdlIHdvcmtmbG93LCB3aGlsZSBldmVyeW9uZSBlbHNlIHNlbmRzIHBhdGNoZXMuCisKK05vdGUgdGhhdCB0aGUgbWFpbnRhaW5lcihzKSBtYXkgaW1wb3NlIHJlc3RyaWN0aW9ucywgc3VjaCBhcworIlNpZ25lZC1vZmYtYnkiIHJlcXVpcmVtZW50cywgdGhhdCBhbGwgY29tbWl0cy9wYXRjaGVzIHN1Ym1pdHRlZCBmb3IKK2luY2x1c2lvbiBtdXN0IGFkaGVyZSB0by4gIENvbnN1bHQgeW91ciBwcm9qZWN0J3MgZG9jdW1lbnRhdGlvbiBmb3IKK21vcmUgaW5mb3JtYXRpb24uCisKKworTWVyZ2Ugd29ya2Zsb3cKK35+fn5+fn5+fn5+fn5+CisKK1RoZSBtZXJnZSB3b3JrZmxvdyB3b3JrcyBieSBjb3B5aW5nIGJyYW5jaGVzIGJldHdlZW4gdXBzdHJlYW0gYW5kCitkb3duc3RyZWFtLiAgVXBzdHJlYW0gY2FuIG1lcmdlIGNvbnRyaWJ1dGlvbnMgaW50byB0aGUgb2ZmaWNpYWwKK2hpc3Rvcnk7IGRvd25zdHJlYW0gYmFzZSB0aGVpciB3b3JrIG9uIHRoZSBvZmZpY2lhbCBoaXN0b3J5LgorCitUaGVyZSBhcmUgdGhyZWUgbWFpbiB0b29scyB0aGF0IGNhbiBiZSB1c2VkIGZvciB0aGlzOgorCisqIGxpbmtnaXQ6Z2l0LXB1c2hbMV0gY29waWVzIHlvdXIgYnJhbmNoZXMgdG8gYSByZW1vdGUgcmVwb3NpdG9yeSwKKyAgdXN1YWxseSB0byBvbmUgdGhhdCBjYW4gYmUgcmVhZCBieSBhbGwgaW52b2x2ZWQgcGFydGllczsKKworKiBsaW5rZ2l0OmdpdC1mZXRjaFsxXSB0aGF0IGNvcGllcyByZW1vdGUgYnJhbmNoZXMgdG8geW91ciByZXBvc2l0b3J5OworICBhbmQKKworKiBsaW5rZ2l0OmdpdC1wdWxsWzFdIHRoYXQgZG9lcyBmZXRjaCBhbmQgbWVyZ2UgaW4gb25lIGdvLgorCitOb3RlIHRoZSBsYXN0IHBvaW50LiAgRG8gJ25vdCcgdXNlICdnaXQtcHVsbCcgdW5sZXNzIHlvdSBhY3R1YWxseSB3YW50Cit0byBtZXJnZSB0aGUgcmVtb3RlIGJyYW5jaC4KKworR2V0dGluZyBjaGFuZ2VzIG91dCBpcyBlYXN5OgorCisuUHVzaC9wdWxsOiBQdWJsaXNoaW5nIGJyYW5jaGVzL3RvcGljcworW2NhcHRpb249IlJlY2lwZTogIl0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2BnaXQgcHVzaCA8cmVtb3RlPiA8YnJhbmNoPmAgYW5kIHRlbGwgZXZlcnlvbmUgd2hlcmUgdGhleSBjYW4gZmV0Y2gKK2Zyb20uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1lvdSB3aWxsIHN0aWxsIGhhdmUgdG8gdGVsbCBwZW9wbGUgYnkgb3RoZXIgbWVhbnMsIHN1Y2ggYXMgbWFpbC4gIChHaXQKK3Byb3ZpZGVzIHRoZSBsaW5rZ2l0OmdpdC1yZXF1ZXN0LXB1bGxbMV0gdG8gc2VuZCBwcmVmb3JtYXR0ZWQgcHVsbAorcmVxdWVzdHMgdG8gdXBzdHJlYW0gbWFpbnRhaW5lcnMgdG8gc2ltcGxpZnkgdGhpcyB0YXNrLikKKworSWYgeW91IGp1c3Qgd2FudCB0byBnZXQgdGhlIG5ld2VzdCBjb3BpZXMgb2YgdGhlIGludGVncmF0aW9uIGJyYW5jaGVzLAorc3RheWluZyB1cCB0byBkYXRlIGlzIGVhc3kgdG9vOgorCisuUHVzaC9wdWxsOiBTdGF5aW5nIHVwIHRvIGRhdGUKK1tjYXB0aW9uPSJSZWNpcGU6ICJdCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitVc2UgYGdpdCBmZXRjaCA8cmVtb3RlPmAgb3IgYGdpdCByZW1vdGUgdXBkYXRlYCB0byBzdGF5IHVwIHRvIGRhdGUuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZW4gc2ltcGx5IGZvcmsgeW91ciB0b3BpYyBicmFuY2hlcyBmcm9tIHRoZSBzdGFibGUgcmVtb3RlcyBhcworZXhwbGFpbmVkIGVhcmxpZXIuCisKK0lmIHlvdSBhcmUgYSBtYWludGFpbmVyIGFuZCB3b3VsZCBsaWtlIHRvIG1lcmdlIG90aGVyIHBlb3BsZSdzIHRvcGljCiticmFuY2hlcyB0byB0aGUgaW50ZWdyYXRpb24gYnJhbmNoZXMsIHRoZXkgd2lsbCB0eXBpY2FsbHkgc2VuZCBhCityZXF1ZXN0IHRvIGRvIHNvIGJ5IG1haWwuICBTdWNoIGEgcmVxdWVzdCBsb29rcyBsaWtlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1BsZWFzZSBwdWxsIGZyb20KKyAgICA8dXJsPiA8YnJhbmNoPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiB0aGF0IGNhc2UsICdnaXQtcHVsbCcgY2FuIGRvIHRoZSBmZXRjaCBhbmQgbWVyZ2UgaW4gb25lIGdvLCBhcworZm9sbG93cy4KKworLlB1c2gvcHVsbDogTWVyZ2luZyByZW1vdGUgdG9waWNzCitbY2FwdGlvbj0iUmVjaXBlOiAiXQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorYGdpdCBwdWxsIDx1cmw+IDxicmFuY2g+YAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitPY2Nhc2lvbmFsbHksIHRoZSBtYWludGFpbmVyIG1heSBnZXQgbWVyZ2UgY29uZmxpY3RzIHdoZW4gaGUgdHJpZXMgdG8KK3B1bGwgY2hhbmdlcyBmcm9tIGRvd25zdHJlYW0uICBJbiB0aGlzIGNhc2UsIGhlIGNhbiBhc2sgZG93bnN0cmVhbSB0bworZG8gdGhlIG1lcmdlIGFuZCByZXNvbHZlIHRoZSBjb25mbGljdHMgdGhlbXNlbHZlcyAocGVyaGFwcyB0aGV5IHdpbGwKK2tub3cgYmV0dGVyIGhvdyB0byByZXNvbHZlIHRoZW0pLiAgSXQgaXMgb25lIG9mIHRoZSByYXJlIGNhc2VzIHdoZXJlCitkb3duc3RyZWFtICdzaG91bGQnIG1lcmdlIGZyb20gdXBzdHJlYW0uCisKKworUGF0Y2ggd29ya2Zsb3cKK35+fn5+fn5+fn5+fn5+CisKK0lmIHlvdSBhcmUgYSBjb250cmlidXRvciB0aGF0IHNlbmRzIGNoYW5nZXMgdXBzdHJlYW0gaW4gdGhlIGZvcm0gb2YKK2VtYWlscywgeW91IHNob3VsZCB1c2UgdG9waWMgYnJhbmNoZXMgYXMgdXN1YWwgKHNlZSBhYm92ZSkuICBUaGVuIHVzZQorbGlua2dpdDpnaXQtZm9ybWF0LXBhdGNoWzFdIHRvIGdlbmVyYXRlIHRoZSBjb3JyZXNwb25kaW5nIGVtYWlscworKGhpZ2hseSByZWNvbW1lbmRlZCBvdmVyIG1hbnVhbGx5IGZvcm1hdHRpbmcgdGhlbSBiZWNhdXNlIGl0IG1ha2VzIHRoZQorbWFpbnRhaW5lcidzIGxpZmUgZWFzaWVyKS4KKworLmZvcm1hdC1wYXRjaC9hbTogUHVibGlzaGluZyBicmFuY2hlcy90b3BpY3MKK1tjYXB0aW9uPSJSZWNpcGU6ICJdCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqIGBnaXQgZm9ybWF0LXBhdGNoIC1NIHVwc3RyZWFtLi50b3BpY2AgdG8gdHVybiB0aGVtIGludG8gcHJlZm9ybWF0dGVkCisgIHBhdGNoIGZpbGVzCisqIGBnaXQgc2VuZC1lbWFpbCAtLXRvPTxyZWNpcGllbnQ+IDxwYXRjaGVzPmAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VlIHRoZSBsaW5rZ2l0OmdpdC1mb3JtYXQtcGF0Y2hbMV0gYW5kIGxpbmtnaXQ6Z2l0LXNlbmQtZW1haWxbMV0KK21hbnBhZ2VzIGZvciBmdXJ0aGVyIHVzYWdlIG5vdGVzLgorCitJZiB0aGUgbWFpbnRhaW5lciB0ZWxscyB5b3UgdGhhdCB5b3VyIHBhdGNoIG5vIGxvbmdlciBhcHBsaWVzIHRvIHRoZQorY3VycmVudCB1cHN0cmVhbSwgeW91IHdpbGwgaGF2ZSB0byByZWJhc2UgeW91ciB0b3BpYyAoeW91IGNhbm5vdCB1c2UgYQorbWVyZ2UgYmVjYXVzZSB5b3UgY2Fubm90IGZvcm1hdC1wYXRjaCBtZXJnZXMpOgorCisuZm9ybWF0LXBhdGNoL2FtOiBLZWVwaW5nIHRvcGljcyB1cCB0byBkYXRlCitbY2FwdGlvbj0iUmVjaXBlOiAiXQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorYGdpdCBwdWxsIC0tcmViYXNlIDx1cmw+IDxicmFuY2g+YAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitZb3UgY2FuIHRoZW4gZml4IHRoZSBjb25mbGljdHMgZHVyaW5nIHRoZSByZWJhc2UuICBQcmVzdW1hYmx5IHlvdSBoYXZlCitub3QgcHVibGlzaGVkIHlvdXIgdG9waWMgb3RoZXIgdGhhbiBieSBtYWlsLCBzbyByZWJhc2luZyBpdCBpcyBub3QgYQorcHJvYmxlbS4KKworSWYgeW91IHJlY2VpdmUgc3VjaCBhIHBhdGNoIHNlcmllcyAoYXMgbWFpbnRhaW5lciwgb3IgcGVyaGFwcyBhcyBhCityZWFkZXIgb2YgdGhlIG1haWxpbmcgbGlzdCBpdCB3YXMgc2VudCB0byksIHNhdmUgdGhlIG1haWxzIHRvIGZpbGVzLAorY3JlYXRlIGEgbmV3IHRvcGljIGJyYW5jaCBhbmQgdXNlICdnaXQtYW0nIHRvIGltcG9ydCB0aGUgY29tbWl0czoKKworLmZvcm1hdC1wYXRjaC9hbTogSW1wb3J0aW5nIHBhdGNoZXMKK1tjYXB0aW9uPSJSZWNpcGU6ICJdCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitgZ2l0IGFtIDwgcGF0Y2hgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK09uZSBmZWF0dXJlIHdvcnRoIHBvaW50aW5nIG91dCBpcyB0aGUgdGhyZWUtd2F5IG1lcmdlLCB3aGljaCBjYW4gaGVscAoraWYgeW91IGdldCBjb25mbGljdHM6IGBnaXQgYW0gLTNgIHdpbGwgdXNlIGluZGV4IGluZm9ybWF0aW9uIGNvbnRhaW5lZAoraW4gcGF0Y2hlcyB0byBmaWd1cmUgb3V0IHRoZSBtZXJnZSBiYXNlLiAgU2VlIGxpbmtnaXQ6Z2l0LWFtWzFdIGZvcgorb3RoZXIgb3B0aW9ucy4KKworCitTRUUgQUxTTworLS0tLS0tLS0KK2xpbmtnaXQ6Z2l0dHV0b3JpYWxbN10sCitsaW5rZ2l0OmdpdC1wdXNoWzFdLAorbGlua2dpdDpnaXQtcHVsbFsxXSwKK2xpbmtnaXQ6Z2l0LW1lcmdlWzFdLAorbGlua2dpdDpnaXQtcmViYXNlWzFdLAorbGlua2dpdDpnaXQtZm9ybWF0LXBhdGNoWzFdLAorbGlua2dpdDpnaXQtc2VuZC1lbWFpbFsxXSwKK2xpbmtnaXQ6Z2l0LWFtWzFdCisKK0dJVAorLS0tCitQYXJ0IG9mIHRoZSBsaW5rZ2l0OmdpdFsxXSBzdWl0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2xvc3NhcnktY29udGVudC50eHQgYi9Eb2N1bWVudGF0aW9uL2dsb3NzYXJ5LWNvbnRlbnQudHh0CmluZGV4IDliNGE0ZjQuLjlhZmNhNzUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2xvc3NhcnktY29udGVudC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9nbG9zc2FyeS1jb250ZW50LnR4dApAQCAtMTgzLDcgKzE4Myw4IEBACiAJYW5kIHBvdGVudGlhbGx5IGFib3J0ZWQsIGFuZCBhbGxvdyBmb3IgYSBwb3N0LW5vdGlmaWNhdGlvbiBhZnRlciB0aGUKIAlvcGVyYXRpb24gaXMgZG9uZS4gVGhlIGhvb2sgc2NyaXB0cyBhcmUgZm91bmQgaW4gdGhlCiAJYCRHSVRfRElSL2hvb2tzL2AgZGlyZWN0b3J5LCBhbmQgYXJlIGVuYWJsZWQgYnkgc2ltcGx5Ci0JbWFraW5nIHRoZW0gZXhlY3V0YWJsZS4KKwlyZW1vdmluZyB0aGUgYC5zYW1wbGVgIHN1ZmZpeCBmcm9tIHRoZSBmaWxlbmFtZS4gSW4gZWFybGllciB2ZXJzaW9ucworCW9mIGdpdCB5b3UgaGFkIHRvIG1ha2UgdGhlbSBleGVjdXRhYmxlLgogCiBbW2RlZl9pbmRleF1daW5kZXg6OgogCUEgY29sbGVjdGlvbiBvZiBmaWxlcyB3aXRoIHN0YXQgaW5mb3JtYXRpb24sIHdob3NlIGNvbnRlbnRzIGFyZSBzdG9yZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaG93dG8vcmViYXNlLWFuZC1lZGl0LnR4dCBiL0RvY3VtZW50YXRpb24vaG93dG8vcmViYXNlLWFuZC1lZGl0LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU0OTA5Zi4uMDAwMDAwMAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlYmFzZS1hbmQtZWRpdC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1EYXRlOglTYXQsIDEzIEF1ZyAyMDA1IDIyOjE2OjAyIC0wNzAwIChQRFQpCi1Gcm9tOglMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAb3NkbC5vcmc+Ci1UbzoJU3RldmUgRnJlbmNoIDxzbWZyZW5jaEBhdXN0aW4ucnIuY29tPgotY2M6CWdpdEB2Z2VyLmtlcm5lbC5vcmcKLVN1YmplY3Q6IFJlOiBzZW5kaW5nIGNoYW5nZXNldHMgZnJvbSB0aGUgbWlkZGxlIG9mIGEgZ2l0IHRyZWUKLUFic3RyYWN0OiBJbiB0aGlzIGFydGljbGUsIExpbnVzIGRlbW9uc3RyYXRlcyBob3cgYSBicm9rZW4gY29tbWl0Ci0gaW4gYSBzZXF1ZW5jZSBvZiBjb21taXRzIGNhbiBiZSByZW1vdmVkIGJ5IHJld2luZGluZyB0aGUgaGVhZCBhbmQKLSByZWFwcGx5aW5nIHNlbGVjdGVkIGNoYW5nZXMuCi0KLU9uIFNhdCwgMTMgQXVnIDIwMDUsIExpbnVzIFRvcnZhbGRzIHdyb3RlOgotCi0+IFRoYXQncyBjb3JyZWN0LiBTYW1lIHRoaW5ncyBhcHBseTogeW91IGNhbiBtb3ZlIGEgcGF0Y2ggb3ZlciwgYW5kIGNyZWF0ZSBhCi0+IG5ldyBvbmUgd2l0aCBhIG1vZGlmaWVkIGNvbW1lbnQsIGJ1dCBiYXNpY2FsbHkgdGhlIF9vbGRfIGNvbW1pdCB3aWxsIGJlCi0+IGltbXV0YWJsZS4KLQotTGV0IG1lIGNsYXJpZnkuCi0KLVlvdSBjYW4gZW50aXJlbHkgX2Ryb3BfIG9sZCBicmFuY2hlcywgc28gY29tbWl0cyBtYXkgYmUgaW1tdXRhYmxlLCBidXQKLW5vdGhpbmcgZm9yY2VzIHlvdSB0byBrZWVwIHRoZW0uIE9mIGNvdXJzZSwgd2hlbiB5b3UgZHJvcCBhIGNvbW1pdCwgeW91J2xsCi1hbHdheXMgZW5kIHVwIGRyb3BwaW5nIGFsbCB0aGUgY29tbWl0cyB0aGF0IGRlcGVuZGVkIG9uIGl0LCBhbmQgaWYgeW91Ci1hY3R1YWxseSBnb3Qgc29tZWJvZHkgZWxzZSB0byBwdWxsIHRoYXQgY29tbWl0IHlvdSBjYW4ndCBkcm9wIGl0IGZyb20KLV90aGVpcl8gcmVwb3NpdG9yeSwgYnV0IHVuZG9pbmcgdGhpbmdzIGlzIG5vdCBpbXBvc3NpYmxlLgotCi1Gb3IgZXhhbXBsZSwgbGV0J3Mgc2F5IHRoYXQgeW91J3ZlIG1hZGUgYSBtZXNzIG9mIHRoaW5nczogeW91J3ZlIGNvbW1pdHRlZAotdGhyZWUgY29tbWl0cyAib2xkLT5hLT5iLT5jIiwgYW5kIHlvdSBub3RpY2UgdGhhdCAiYSIgd2FzIGJyb2tlbiwgYnV0IHlvdQotd2FudCB0byBzYXZlICJiIiBhbmQgImMiLiBXaGF0IHlvdSBjYW4gZG8gaXMKLQotCSMgQ3JlYXRlIGEgYnJhbmNoICJicm9rZW4iIHRoYXQgaXMgdGhlIGN1cnJlbnQgY29kZQotCSMgZm9yIHJlZmVyZW5jZQotCWdpdCBicmFuY2ggYnJva2VuCi0KLQkjIFJlc2V0IHRoZSBtYWluIGJyYW5jaCB0byB0aHJlZSBwYXJlbnRzIGJhY2s6IHRoaXMKLQkjIGVmZmVjdGl2ZWx5IHVuZG9lcyB0aGUgdGhyZWUgdG9wIGNvbW1pdHMKLQlnaXQgcmVzZXQgSEVBRF5eXgotCWdpdCBjaGVja291dCAtZgotCi0JIyBDaGVjayB0aGUgcmVzdWx0IHZpc3VhbGx5IHRvIG1ha2Ugc3VyZSB5b3Uga25vdyB3aGF0J3MKLQkjIGdvaW5nIG9uCi0JZ2l0ayAtLWFsbAotCi0JIyBSZS1hcHBseSB0aGUgdHdvIHRvcCBvbmVzIGZyb20gImJyb2tlbiIKLQkjCi0JIyBGaXJzdCAicGFyZW50IG9mIGJyb2tlbiIgKGFrYSBiKToKLQlnaXQtZGlmZi10cmVlIC1wIGJyb2tlbl4gfCBnaXQtYXBwbHkgLS1pbmRleAotCWdpdCBjb21taXQgLS1yZWVkaXQ9YnJva2VuXgotCi0JIyBUaGVuICJ0b3Agb2YgYnJva2VuIiAoYWthIGMpOgotCWdpdC1kaWZmLXRyZWUgLXAgYnJva2VuIHwgZ2l0LWFwcGx5IC0taW5kZXgKLQlnaXQgY29tbWl0IC0tcmVlZGl0PWJyb2tlbgotCi1hbmQgeW91J3ZlIG5vdyByZS1hcHBsaWVkIChhbmQgcG9zc2libHkgZWRpdGVkIHRoZSBjb21tZW50cykgdGhlIHR3bwotY29tbWl0cyBiL2MsIGFuZCBjb21taXQgImEiIGlzIGJhc2ljYWxseSBnb25lIChpdCBzdGlsbCBleGlzdHMgaW4gdGhlCi0iYnJva2VuIiBicmFuY2gsIG9mIGNvdXJzZSkuCi0KLUZpbmFsbHksIGNoZWNrIG91dCB0aGUgZW5kIHJlc3VsdCBhZ2FpbjoKLQotCSMgTG9vayBhdCB0aGUgbmV3IGNvbW1pdCBoaXN0b3J5Ci0JZ2l0ayAtLWFsbAotCi10byBzZWUgdGhhdCBldmVyeXRoaW5nIGxvb2tzIHNlbnNpYmxlLgotCi1BbmQgdGhlbiwgeW91IGNhbiBqdXN0IHJlbW92ZSB0aGUgYnJva2VuIGJyYW5jaCBpZiB5b3UgZGVjaWRlIHlvdSByZWFsbHkKLWRvbid0IHdhbnQgaXQ6Ci0KLQkjIHJlbW92ZSAnYnJva2VuJyBicmFuY2gKLQlnaXQgYnJhbmNoIC1kIGJyb2tlbgotCi0JIyBQcnVuZSBvbGQgb2JqZWN0cyBpZiB5b3UncmUgcmVhbGx5IHJlYWxseSBzdXJlCi0JZ2l0IHBydW5lCi0KLUFuZCB5ZWFoLCBJJ20gc3VyZSB0aGVyZSBhcmUgb3RoZXIgd2F5cyBvZiBkb2luZyB0aGlzLiBBbmQgYXMgdXN1YWwsIHRoZQotYWJvdmUgaXMgdG90YWxseSB1bnRlc3RlZCwgYW5kIEkganVzdCB3cm90ZSBpdCBkb3duIGluIHRoaXMgZW1haWwsIHNvIGlmCi1JJ3ZlIGRvbmUgc29tZXRoaW5nIHdyb25nLCB5b3UnbGwgaGF2ZSB0byBmaWd1cmUgaXQgb3V0IG9uIHlvdXIgb3duIDspCi0KLQkJCUxpbnVzCi0tCi1UbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgZ2l0IiBpbgotdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKLU1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZXZlcnQtYS1mYXVsdHktbWVyZ2UudHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by9yZXZlcnQtYS1mYXVsdHktbWVyZ2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YjFkYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1hLWZhdWx0eS1tZXJnZS50eHQKQEAgLTAsMCArMSwxNzkgQEAKK0RhdGU6IEZyaSwgMTkgRGVjIDIwMDggMDA6NDU6MTkgLTA4MDAKK0Zyb206IExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4sIEp1bmlvIEMgSGFtYW5vIDxnaXRzdGVyQHBvYm94LmNvbT4KK1N1YmplY3Q6IFJlOiBPZGQgbWVyZ2UgYmVoYXZpb3VyIGludm9sdmluZyByZXZlcnRzCitBYnN0cmFjdDogU29tZXRpbWVzIGEgYnJhbmNoIHRoYXQgd2FzIGFscmVhZHkgbWVyZ2VkIHRvIHRoZSBtYWlubGluZQorIGlzIGxhdGVyIGZvdW5kIHRvIGJlIGZhdWx0eS4gIExpbnVzIGFuZCBKdW5pbyBnaXZlIGd1aWRhbmNlIG9uCisgcmVjb3ZlcmluZyBmcm9tIHN1Y2ggYSBwcmVtYXR1cmUgbWVyZ2UgYW5kIGNvbnRpbnVpbmcgZGV2ZWxvcG1lbnQKKyBhZnRlciB0aGUgb2ZmZW5kaW5nIGJyYW5jaCBpcyBmaXhlZC4KK01lc3NhZ2UtSUQ6IDw3dm9jejhhNnprLmZzZkBnaXRzdGVyLnNpYW1lc2UuZHluZG5zLm9yZz4KK1JlZmVyZW5jZXM6IDxhbHBpbmUuTEZELjIuMDAuMDgxMjE4MTk0OTQ1MC4xNDAxNEBsb2NhbGhvc3QubG9jYWxkb21haW4+CisKK0FsYW4gPGFsYW5AY2x1ZXNlcnZlci5vcmc+IHNhaWQ6CisKKyAgICBJIGhhdmUgYSBtYXN0ZXIgYnJhbmNoLiAgV2UgaGF2ZSBhIGJyYW5jaCBvZmYgb2YgdGhhdCB0aGF0IHNvbWUKKyAgICBkZXZlbG9wZXJzIGFyZSBkb2luZyB3b3JrIG9uLiAgVGhleSBjbGFpbSBpdCBpcyByZWFkeS4gV2UgbWVyZ2UgaXQKKyAgICBpbnRvIHRoZSBtYXN0ZXIgYnJhbmNoLiAgSXQgYnJlYWtzIHNvbWV0aGluZyBzbyB3ZSByZXZlcnQgdGhlIG1lcmdlLgorICAgIFRoZXkgbWFrZSBjaGFuZ2VzIHRvIHRoZSBjb2RlLiAgdGhleSBnZXQgaXQgdG8gYSBwb2ludCB3aGVyZSB0aGV5IHNheQorICAgIGl0IGlzIG9rIGFuZCB3ZSBtZXJnZSBhZ2Fpbi4KKworICAgIFdoZW4gZXhhbWluZWQsIHdlIGZpbmQgdGhhdCBjb2RlIGNoYW5nZXMgbWFkZSBiZWZvcmUgdGhlIHJldmVydCBhcmUKKyAgICBub3QgaW4gdGhlIG1hc3RlciBicmFuY2gsIGJ1dCBjb2RlIGNoYW5nZXMgYWZ0ZXIgYXJlIGluIHRoZSBtYXN0ZXIKKyAgICBicmFuY2guCisKK2FuZCBhc2tlZCBmb3IgaGVscCByZWNvdmVyaW5nIGZyb20gdGhpcyBzaXR1YXRpb24uCisKK1RoZSBoaXN0b3J5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSAicmV2ZXJ0IG9mIHRoZSBtZXJnZSIgd291bGQgbG9vayBsaWtlCit0aGlzOgorCisgLS0tby0tLW8tLS1vLS0tTS0tLXgtLS14LS0tVworCSAgICAgICAvCisgICAgICAgLS0tQS0tLUIKKword2hlcmUgQSBhbmQgQiBhcmUgb24gdGhlIHNpZGUgZGV2ZWxvcG1lbnQgdGhhdCB3YXMgbm90IHNvIGdvb2QsIE0gaXMgdGhlCittZXJnZSB0aGF0IGJyaW5ncyB0aGVzZSBwcmVtYXR1cmUgY2hhbmdlcyBpbnRvIHRoZSBtYWlubGluZSwgeCBhcmUgY2hhbmdlcwordW5yZWxhdGVkIHRvIHdoYXQgdGhlIHNpZGUgYnJhbmNoIGRpZCBhbmQgYWxyZWFkeSBtYWRlIG9uIHRoZSBtYWlubGluZSwKK2FuZCBXIGlzIHRoZSAicmV2ZXJ0IG9mIHRoZSBtZXJnZSBNIiAoZG9lc24ndCBXIGxvb2sgTSB1cHNpZGUgZG93bj8pLgorSU9XLCAiZGlmZiBXXi4uVyIgaXMgc2ltaWxhciB0byAiZGlmZiAtUiBNXi4uTSIuCisKK1N1Y2ggYSAicmV2ZXJ0IiBvZiBhIG1lcmdlIGNhbiBiZSBtYWRlIHdpdGg6CisKKyAgICAkIGdpdCByZXZlcnQgLW0gMSBNCisKK0FmdGVyIHRoZSBkZXZlbHBlcnMgb2YgdGhlIHNpZGUgYnJhbmNoIGZpeGVzIHRoZWlyIG1pc3Rha2VzLCB0aGUgaGlzdG9yeQorbWF5IGxvb2sgbGlrZSB0aGlzOgorCisgLS0tby0tLW8tLS1vLS0tTS0tLXgtLS14LS0tVy0tLXgKKwkgICAgICAgLworICAgICAgIC0tLUEtLS1CLS0tLS0tLS0tLS0tLS0tLS0tLUMtLS1ECisKK3doZXJlIEMgYW5kIEQgYXJlIHRvIGZpeCB3aGF0IHdhcyBicm9rZW4gaW4gQSBhbmQgQiwgYW5kIHlvdSBtYXkgYWxyZWFkeQoraGF2ZSBzb21lIG90aGVyIGNoYW5nZXMgb24gdGhlIG1haW5saW5lIGFmdGVyIFcuCisKK0lmIHlvdSBtZXJnZSB0aGUgdXBkYXRlZCBzaWRlIGJyYW5jaCAod2l0aCBEIGF0IGl0cyB0aXApLCBub25lIG9mIHRoZQorY2hhbmdlcyBtYWRlIGluIEEgbm9yIEIgd2lsbCBiZSBpbiB0aGUgcmVzdWx0LCBiZWNhdXNlIHRoZXkgd2VyZSByZXZlcnRlZAorYnkgVy4gIFRoYXQgaXMgd2hhdCBBbGFuIHNhdy4KKworTGludXMgZXhwbGFpbnMgdGhlIHNpdHVhdGlvbjoKKworICAgIFJldmVydGluZyBhIHJlZ3VsYXIgY29tbWl0IGp1c3QgZWZmZWN0aXZlbHkgdW5kb2VzIHdoYXQgdGhhdCBjb21taXQKKyAgICBkaWQsIGFuZCBpcyBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLiBCdXQgcmV2ZXJ0aW5nIGEgbWVyZ2UgY29tbWl0IGFsc28KKyAgICB1bmRvZXMgdGhlIF9kYXRhXyB0aGF0IHRoZSBjb21taXQgY2hhbmdlZCwgYnV0IGl0IGRvZXMgYWJzb2x1dGVseQorICAgIG5vdGhpbmcgdG8gdGhlIGVmZmVjdHMgb24gX2hpc3RvcnlfIHRoYXQgdGhlIG1lcmdlIGhhZC4KKworICAgIFNvIHRoZSBtZXJnZSB3aWxsIHN0aWxsIGV4aXN0LCBhbmQgaXQgd2lsbCBzdGlsbCBiZSBzZWVuIGFzIGpvaW5pbmcKKyAgICB0aGUgdHdvIGJyYW5jaGVzIHRvZ2V0aGVyLCBhbmQgZnV0dXJlIG1lcmdlcyB3aWxsIHNlZSB0aGF0IG1lcmdlIGFzCisgICAgdGhlIGxhc3Qgc2hhcmVkIHN0YXRlIC0gYW5kIHRoZSByZXZlcnQgdGhhdCByZXZlcnRlZCB0aGUgbWVyZ2UgYnJvdWdodAorICAgIGluIHdpbGwgbm90IGFmZmVjdCB0aGF0IGF0IGFsbC4KKworICAgIFNvIGEgInJldmVydCIgdW5kb2VzIHRoZSBkYXRhIGNoYW5nZXMsIGJ1dCBpdCdzIHZlcnkgbXVjaCBfbm90XyBhbgorICAgICJ1bmRvIiBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBkb2Vzbid0IHVuZG8gdGhlIGVmZmVjdHMgb2YgYSBjb21taXQgb24KKyAgICB0aGUgcmVwb3NpdG9yeSBoaXN0b3J5LgorCisgICAgU28gaWYgeW91IHRoaW5rIG9mICJyZXZlcnQiIGFzICJ1bmRvIiwgdGhlbiB5b3UncmUgZ29pbmcgdG8gYWx3YXlzCisgICAgbWlzcyB0aGlzIHBhcnQgb2YgcmV2ZXJ0cy4gWWVzLCBpdCB1bmRvZXMgdGhlIGRhdGEsIGJ1dCBubywgaXQgZG9lc24ndAorICAgIHVuZG8gaGlzdG9yeS4KKworSW4gc3VjaCBhIHNpdHVhdGlvbiwgeW91IHdvdWxkIHdhbnQgdG8gZmlyc3QgcmV2ZXJ0IHRoZSBwcmV2aW91cyByZXZlcnQsCit3aGljaCB3b3VsZCBtYWtlIHRoZSBoaXN0b3J5IGxvb2sgbGlrZSB0aGlzOgorCisgLS0tby0tLW8tLS1vLS0tTS0tLXgtLS14LS0tVy0tLXgtLS1ZCisJICAgICAgIC8KKyAgICAgICAtLS1BLS0tQi0tLS0tLS0tLS0tLS0tLS0tLS1DLS0tRAorCit3aGVyZSBZIGlzIHRoZSByZXZlcnQgb2YgVy4gIFN1Y2ggYSAicmV2ZXJ0IG9mIHRoZSByZXZlcnQiIGNhbiBiZSBkb25lCit3aXRoOgorCisgICAgJCBnaXQgcmV2ZXJ0IFcKKworVGhpcyBoaXN0b3J5IHdvdWxkIChpZ25vcmluZyBwb3NzaWJsZSBjb25mbGljdHMgYmV0d2VlbiB3aGF0IFcgYW5kIFcuLlkKK2NoYW5nZWQpIGJlIGVxdWl2YWxlbnQgdG8gbm90IGhhdmluZyBXIG5vciBZIGF0IGFsbCBpbiB0aGUgaGlzdG9yeToKKworIC0tLW8tLS1vLS0tby0tLU0tLS14LS0teC0tLS0tLS14LS0tLQorCSAgICAgICAvCisgICAgICAgLS0tQS0tLUItLS0tLS0tLS0tLS0tLS0tLS0tQy0tLUQKKworYW5kIG1lcmdpbmcgdGhlIHNpZGUgYnJhbmNoIGFnYWluIHdpbGwgbm90IGhhdmUgY29uZmxpY3QgYXJpc2luZyBmcm9tIGFuCitlYXJsaWVyIHJldmVydCBhbmQgcmV2ZXJ0IG9mIHRoZSByZXZlcnQuCisKKyAtLS1vLS0tby0tLW8tLS1NLS0teC0tLXgtLS0tLS0teC0tLS0tLS0qCisJICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgIC8KKyAgICAgICAtLS1BLS0tQi0tLS0tLS0tLS0tLS0tLS0tLS1DLS0tRAorCitPZiBjb3Vyc2UgdGhlIGNoYW5nZXMgbWFkZSBpbiBDIGFuZCBEIHN0aWxsIGNhbiBjb25mbGljdCB3aXRoIHdoYXQgd2FzCitkb25lIGJ5IGFueSBvZiB0aGUgeCwgYnV0IHRoYXQgaXMganVzdCBhIG5vcm1hbCBtZXJnZSBjb25mbGljdC4KKworT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBkZXZlbG9wZXJzIG9mIHRoZSBzaWRlIGJyYW5jaCBkaXNjYXJkZWQgdGhlaXIKK2ZhdWx0eSBBIGFuZCBCLCBhbmQgcmVkb25lIHRoZSBjaGFuZ2VzIG9uIHRvcCBvZiB0aGUgdXBkYXRlZCBtYWlubGluZQorYWZ0ZXIgdGhlIHJldmVydCwgdGhlIGhpc3Rvcnkgd291bGQgaGF2ZSBsb29rZWQgbGlrZSB0aGlzOgorCisgLS0tby0tLW8tLS1vLS0tTS0tLXgtLS14LS0tVy0tLXgtLS14CisJICAgICAgIC8gICAgICAgICAgICAgICAgIFwKKyAgICAgICAtLS1BLS0tQiAgICAgICAgICAgICAgICAgICBBJy0tQictLUMnCisKK0lmIHlvdSByZXZlcnRlZCB0aGUgcmV2ZXJ0IGluIHN1Y2ggYSBjYXNlIGFzIGluIHRoZSBwcmV2aW91cyBleGFtcGxlOgorCisgLS0tby0tLW8tLS1vLS0tTS0tLXgtLS14LS0tVy0tLXgtLS14LS0tWS0tLSoKKwkgICAgICAgLyAgICAgICAgICAgICAgICAgXCAgICAgICAgIC8KKyAgICAgICAtLS1BLS0tQiAgICAgICAgICAgICAgICAgICBBJy0tQictLUMnCisKK3doZXJlIFkgaXMgdGhlIHJldmVydCBvZiBXLCBBJyBhbmQgQidhcmUgcmVyb2xsZWQgQSBhbmQgQiwgYW5kIHRoZXJlIG1heQorYWxzbyBiZSBhIGZ1cnRoZXIgZml4LXVwIEMnIG9uIHRoZSBzaWRlIGJyYW5jaC4gICJkaWZmIFleLi5ZIiBpcyBzaW1pbGFyCit0byAiZGlmZiAtUiBXXi4uVyIgKHdoaWNoIGluIHR1cm4gbWVhbnMgaXQgaXMgc2ltaWxhciB0byAiZGlmZiBNXi4uTSIpLAorYW5kICJkaWZmIEEnXi4uQyciIGJ5IGRlZmluaXRpb24gd291bGQgYmUgc2ltaWxhciBidXQgZGlmZmVyZW50IGZyb20gdGhhdCwKK2JlY2F1c2UgaXQgaXMgYSByZXJvbGxlZCBzZXJpZXMgb2YgdGhlIGVhcmxpZXIgY2hhbmdlLiAgVGhlcmUgd2lsbCBiZSBhCitsb3Qgb2Ygb3ZlcmxhcHBpbmcgY2hhbmdlcyB0aGF0IHJlc3VsdCBpbiBjb25mbGljdHMuICBTbyBkbyBub3QgZG8gInJldmVydAorb2YgcmV2ZXJ0IiBibGluZGx5IHdpdGhvdXQgdGhpbmtpbmcuLgorCisgLS0tby0tLW8tLS1vLS0tTS0tLXgtLS14LS0tVy0tLXgtLS14CisJICAgICAgIC8gICAgICAgICAgICAgICAgIFwKKyAgICAgICAtLS1BLS0tQiAgICAgICAgICAgICAgICAgICBBJy0tQictLUMnCisKK0luIHRoZSBoaXN0b3J5IHdpdGggcmViYXNlZCBzaWRlIGJyYW5jaCwgVyAoYW5kIE0pIGFyZSBiZWhpbmQgdGhlIG1lcmdlCitiYXNlIG9mIHRoZSB1cGRhdGVkIGJyYW5jaCBhbmQgdGhlIHRpcCBvZiB0aGUgbWFpbmxpbmUsIGFuZCB0aGV5IHNob3VsZAorbWVyZ2Ugd2l0aG91dCB0aGUgcGFzdCBmYXVsdHkgbWVyZ2UgYW5kIGl0cyByZXZlcnQgZ2V0dGluZyBpbiB0aGUgd2F5LgorCitUbyByZWNhcCwgdGhlc2UgYXJlIHR3byB2ZXJ5IGRpZmZlcmVudCBzY2VuYXJpb3MsIGFuZCB0aGV5IHdhbnQgdHdvIHZlcnkKK2RpZmZlcmVudCByZXNvbHV0aW9uIHN0cmF0ZWdpZXM6CisKKyAtIElmIHRoZSBmYXVsdHkgc2lkZSBicmFuY2ggd2FzIGZpeGVkIGJ5IGFkZGluZyBjb3JyZWN0aW9ucyBvbiB0b3AsIHRoZW4KKyAgIGRvaW5nIGEgcmV2ZXJ0IG9mIHRoZSBwcmV2aW91cyByZXZlcnQgd291bGQgYmUgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgorCisgLSBJZiB0aGUgZmF1bHR5IHNpZGUgYnJhbmNoIHdob3NlIGVmZmVjdHMgd2VyZSBkaXNjYXJkZWQgYnkgYW4gZWFybGllcgorICAgcmV2ZXJ0IG9mIGEgbWVyZ2Ugd2FzIHJlYnVpbHQgZnJvbSBzY3JhdGNoIChpLmUuIHJlYmFzaW5nIGFuZCBmaXhpbmcsCisgICBhcyB5b3Ugc2VlbSB0byBoYXZlIGludGVycHJldGVkKSwgdGhlbiByZS1tZXJnaW5nIHRoZSByZXN1bHQgd2l0aG91dAorICAgZG9pbmcgYW55dGhpbmcgZWxzZSBmYW5jeSB3b3VsZCBiZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCisKK0hvd2V2ZXIsIHRoZXJlIGFyZSB0aGluZ3MgdG8ga2VlcCBpbiBtaW5kIHdoZW4gcmV2ZXJ0aW5nIGEgbWVyZ2UgKGFuZAorcmV2ZXJ0aW5nIHN1Y2ggYSByZXZlcnQpLgorCitGb3IgZXhhbXBsZSwgdGhpbmsgYWJvdXQgd2hhdCByZXZlcnRpbmcgYSBtZXJnZSAoYW5kIHRoZW4gcmV2ZXJ0aW5nIHRoZQorcmV2ZXJ0KSBkb2VzIHRvIGJpc2VjdGFiaWxpdHkuIElnbm9yZSB0aGUgZmFjdCB0aGF0IHRoZSByZXZlcnQgb2YgYSByZXZlcnQKK2lzIHVuZG9pbmcgaXQgLSBqdXN0IHRoaW5rIG9mIGl0IGFzIGEgInNpbmdsZSBjb21taXQgdGhhdCBkb2VzIGEgbG90Ii4KK0JlY2F1c2UgdGhhdCBpcyB3aGF0IGl0IGRvZXMuCisKK1doZW4geW91IGhhdmUgYSBwcm9ibGVtIHlvdSBhcmUgY2hhc2luZyBkb3duLCBhbmQgeW91IGhpdCBhICJyZXZlcnQgdGhpcworbWVyZ2UiLCB3aGF0IHlvdSdyZSBoaXR0aW5nIGlzIGVzc2VudGlhbGx5IGEgc2luZ2xlIGNvbW1pdCB0aGF0IGNvbnRhaW5zCithbGwgdGhlIGNoYW5nZXMgKGJ1dCBvYnZpb3VzbHkgaW4gcmV2ZXJzZSkgb2YgYWxsIHRoZSBjb21taXRzIHRoYXQgZ290CittZXJnZWQuIFNvIGl0J3MgZGVidWdnaW5nIGhlbGwsIGJlY2F1c2Ugbm93IHlvdSBkb24ndCBoYXZlIGxvdHMgb2Ygc21hbGwKK2NoYW5nZXMgdGhhdCB5b3UgY2FuIHRyeSB0byBwaW5wb2ludCB3aGljaCBfcGFydF8gb2YgaXQgY2hhbmdlcy4KKworQnV0IGRvZXMgaXQgYWxsIHdvcms/IFN1cmUgaXQgZG9lcy4gWW91IGNhbiByZXZlcnQgYSBtZXJnZSwgYW5kIGZyb20gYQorcHVyZWx5IHRlY2huaWNhbCBhbmdsZSwgZ2l0IGRpZCBpdCB2ZXJ5IG5hdHVyYWxseSBhbmQgaGFkIG5vIHJlYWwKK3Ryb3VibGVzLiBJdCBqdXN0IGNvbnNpZGVyZWQgaXQgYSBjaGFuZ2UgZnJvbSAic3RhdGUgYmVmb3JlIG1lcmdlIiB0bworInN0YXRlIGFmdGVyIG1lcmdlIiwgYW5kIHRoYXQgd2FzIGl0LiBOb3RoaW5nIGNvbXBsaWNhdGVkLCBub3RoaW5nIG9kZCwKK25vdGhpbmcgcmVhbGx5IGRhbmdlcm91cy4gR2l0IHdpbGwgZG8gaXQgd2l0aG91dCBldmVuIHRoaW5raW5nIGFib3V0IGl0LgorCitTbyBmcm9tIGEgdGVjaG5pY2FsIGFuZ2xlLCB0aGVyZSdzIG5vdGhpbmcgd3Jvbmcgd2l0aCByZXZlcnRpbmcgYSBtZXJnZSwKK2J1dCBmcm9tIGEgd29ya2Zsb3cgYW5nbGUgaXQncyBzb21ldGhpbmcgdGhhdCB5b3UgZ2VuZXJhbGx5IHNob3VsZCB0cnkgdG8KK2F2b2lkLgorCitJZiBhdCBhbGwgcG9zc2libGUsIGZvciBleGFtcGxlLCBpZiB5b3UgZmluZCBhIHByb2JsZW0gdGhhdCBnb3QgbWVyZ2VkCitpbnRvIHRoZSBtYWluIHRyZWUsIHJhdGhlciB0aGFuIHJldmVydCB0aGUgbWVyZ2UsIHRyeSBfcmVhbGx5XyBoYXJkIHRvCitiaXNlY3QgdGhlIHByb2JsZW0gZG93biBpbnRvIHRoZSBicmFuY2ggeW91IG1lcmdlZCwgYW5kIGp1c3QgZml4IGl0LCBvcgordHJ5IHRvIHJldmVydCB0aGUgaW5kaXZpZHVhbCBjb21taXQgdGhhdCBjYXVzZWQgaXQuCisKK1llcywgaXQncyBtb3JlIGNvbXBsZXgsIGFuZCBubywgaXQncyBub3QgYWx3YXlzIGdvaW5nIHRvIHdvcmsgKHNvbWV0aW1lcwordGhlIGFuc3dlciBpczogIm9vcHMsIEkgcmVhbGx5IHNob3VsZG4ndCBoYXZlIG1lcmdlZCBpdCwgYmVjYXVzZSBpdCB3YXNuJ3QKK3JlYWR5IHlldCwgYW5kIEkgcmVhbGx5IG5lZWQgdG8gdW5kbyBfYWxsXyBvZiB0aGUgbWVyZ2UiKS4gU28gdGhlbiB5b3UKK3JlYWxseSBzaG91bGQgcmV2ZXJ0IHRoZSBtZXJnZSwgYnV0IHdoZW4geW91IHdhbnQgdG8gcmUtZG8gdGhlIG1lcmdlLCB5b3UKK25vdyBuZWVkIHRvIGRvIGl0IGJ5IHJldmVydGluZyB0aGUgcmV2ZXJ0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMThuLnR4dCBiL0RvY3VtZW50YXRpb24vaTE4bi50eHQKaW5kZXggYzY3Mzk2Ni4uNzA4ZGE2YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pMThuLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2kxOG4udHh0CkBAIC0zNyw5ICszNyw5IEBACiBoZWxwIG90aGVyIHBlb3BsZSB3aG8gbG9vayBhdCB0aGVtIGxhdGVyLiAgTGFjayBvZiB0aGlzIGhlYWRlcgogaW1wbGllcyB0aGF0IHRoZSBjb21taXQgbG9nIG1lc3NhZ2UgaXMgZW5jb2RlZCBpbiBVVEYtOC4KIAotLiAnZ2l0LWxvZycsICdnaXQtc2hvdycgYW5kIGZyaWVuZHMgbG9va3MgYXQgdGhlIGBlbmNvZGluZ2AKLSAgaGVhZGVyIG9mIGEgY29tbWl0IG9iamVjdCwgYW5kIHRyaWVzIHRvIHJlLWNvZGUgdGhlIGxvZwotICBtZXNzYWdlIGludG8gVVRGLTggdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuICBZb3UgY2FuCisuICdnaXQtbG9nJywgJ2dpdC1zaG93JywgJ2dpdC1ibGFtZScgYW5kIGZyaWVuZHMgbG9vayBhdCB0aGUKKyAgYGVuY29kaW5nYCBoZWFkZXIgb2YgYSBjb21taXQgb2JqZWN0LCBhbmQgdHJ5IHRvIHJlLWNvZGUgdGhlCisgIGxvZyBtZXNzYWdlIGludG8gVVRGLTggdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuICBZb3UgY2FuCiAgIHNwZWNpZnkgdGhlIGRlc2lyZWQgb3V0cHV0IGVuY29kaW5nIHdpdGgKICAgYGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmdgIGluIGAuZ2l0L2NvbmZpZ2AgZmlsZSwgbGlrZSB0aGlzOgogKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tZXJnZS1jb25maWcudHh0IGIvRG9jdW1lbnRhdGlvbi9tZXJnZS1jb25maWcudHh0CmluZGV4IGM3MzU3ODguLjFmZjA4ZmYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbWVyZ2UtY29uZmlnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL21lcmdlLWNvbmZpZy50eHQKQEAgLTEsNiArMSwxMCBAQAotbWVyZ2Uuc3RhdDo6Ci0JV2hldGhlciB0byBwcmludCB0aGUgZGlmZnN0YXQgYmV0d2VlbiBPUklHX0hFQUQgYW5kIHRoZSBtZXJnZSByZXN1bHQKLQlhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZS4gIFRydWUgYnkgZGVmYXVsdC4KK21lcmdlLmNvbmZsaWN0c3R5bGU6OgorCVNwZWNpZnkgdGhlIHN0eWxlIGluIHdoaWNoIGNvbmZsaWN0ZWQgaHVua3MgYXJlIHdyaXR0ZW4gb3V0IHRvCisJd29ya2luZyB0cmVlIGZpbGVzIHVwb24gbWVyZ2UuICBUaGUgZGVmYXVsdCBpcyAibWVyZ2UiLCB3aGljaAorCXNob3dzIGEgYDw8PDw8PDxgIGNvbmZsaWN0IG1hcmtlciwgY2hhbmdlcyBtYWRlIGJ5IG9uZSBzaWRlLAorCWEgYD09PT09PT1gIG1hcmtlciwgY2hhbmdlcyBtYWRlIGJ5IHRoZSBvdGhlciBzaWRlLCBhbmQgdGhlbgorCWEgYD4+Pj4+Pj5gIG1hcmtlci4gIEFuIGFsdGVybmF0ZSBzdHlsZSwgImRpZmYzIiwgYWRkcyBhIGB8fHx8fHx8YAorCW1hcmtlciBhbmQgdGhlIG9yaWdpbmFsIHRleHQgYmVmb3JlIHRoZSBgPT09PT09PWAgbWFya2VyLgogCiBtZXJnZS5sb2c6OgogCVdoZXRoZXIgdG8gaW5jbHVkZSBzdW1tYXJpZXMgb2YgbWVyZ2VkIGNvbW1pdHMgaW4gbmV3bHkgY3JlYXRlZApAQCAtMTEsNiArMTUsMTAgQEAKIAlkdXJpbmcgYSBtZXJnZTsgaWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mCiAJZGlmZi5yZW5hbWVMaW1pdC4KIAorbWVyZ2Uuc3RhdDo6CisJV2hldGhlciB0byBwcmludCB0aGUgZGlmZnN0YXQgYmV0d2VlbiBPUklHX0hFQUQgYW5kIHRoZSBtZXJnZSByZXN1bHQKKwlhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZS4gIFRydWUgYnkgZGVmYXVsdC4KKwogbWVyZ2UudG9vbDo6CiAJQ29udHJvbHMgd2hpY2ggbWVyZ2UgcmVzb2x1dGlvbiBwcm9ncmFtIGlzIHVzZWQgYnkKIAlsaW5rZ2l0OmdpdC1tZXJnZXRvb2xbMV0uICBWYWxpZCBidWlsdC1pbiB2YWx1ZXMgYXJlOiAia2RpZmYzIiwKQEAgLTI0LDEwICszMiwxMCBAQAogCW1lc3NhZ2UgaWYgY29uZmxpY3RzIHdlcmUgZGV0ZWN0ZWQuIExldmVsIDEgb3V0cHV0cyBvbmx5CiAJY29uZmxpY3RzLCAyIG91dHB1dHMgY29uZmxpY3RzIGFuZCBmaWxlIGNoYW5nZXMuICBMZXZlbCA1IGFuZAogCWFib3ZlIG91dHB1dHMgZGVidWdnaW5nIGluZm9ybWF0aW9uLiAgVGhlIGRlZmF1bHQgaXMgbGV2ZWwgMi4KLQlDYW4gYmUgb3ZlcnJpZGRlbiBieSAnR0lUX01FUkdFX1ZFUkJPU0lUWScgZW52aXJvbm1lbnQgdmFyaWFibGUuCisJQ2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlICdHSVRfTUVSR0VfVkVSQk9TSVRZJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAogbWVyZ2UuPGRyaXZlcj4ubmFtZTo6Ci0JRGVmaW5lcyBhIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIGEgY3VzdG9tIGxvdy1sZXZlbAorCURlZmluZXMgYSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciBhIGN1c3RvbSBsb3ctbGV2ZWwKIAltZXJnZSBkcml2ZXIuICBTZWUgbGlua2dpdDpnaXRhdHRyaWJ1dGVzWzVdIGZvciBkZXRhaWxzLgogCiBtZXJnZS48ZHJpdmVyPi5kcml2ZXI6OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tZXJnZS1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vbWVyZ2Utb3B0aW9ucy50eHQKaW5kZXggMDA3OTA5YS4uNjM3YjUzZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9tZXJnZS1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL21lcmdlLW9wdGlvbnMudHh0CkBAIC0xLDEwICsxLDE4IEBACistcTo6CistLXF1aWV0OjoKKwlPcGVyYXRlIHF1aWV0bHkuCisKKy12OjoKKy0tdmVyYm9zZTo6CisJQmUgdmVyYm9zZS4KKwogLS1zdGF0OjoKIAlTaG93IGEgZGlmZnN0YXQgYXQgdGhlIGVuZCBvZiB0aGUgbWVyZ2UuIFRoZSBkaWZmc3RhdCBpcyBhbHNvCiAJY29udHJvbGxlZCBieSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gbWVyZ2Uuc3RhdC4KIAogLW46OgogLS1uby1zdGF0OjoKLQlEbyBub3Qgc2hvdyBkaWZmc3RhdCBhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZS4KKwlEbyBub3Qgc2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlLgogCiAtLXN1bW1hcnk6OgogLS1uby1zdW1tYXJ5OjoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcHJldHR5LWZvcm1hdHMudHh0IGIvRG9jdW1lbnRhdGlvbi9wcmV0dHktZm9ybWF0cy50eHQKaW5kZXggMzg4ZDQ5Mi4uMGE4YTk0OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9wcmV0dHktZm9ybWF0cy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wcmV0dHktZm9ybWF0cy50eHQKQEAgLTMwLDcgKzMwLDcgQEAKIAogCSAgY29tbWl0IDxzaGExPgogCSAgQXV0aG9yOiA8YXV0aG9yPgotCSAgRGF0ZTogPGF1dGhvciBkYXRlPgorCSAgRGF0ZTogICA8YXV0aG9yIGRhdGU+CiAKIAkgICAgICA8dGl0bGUgbGluZT4KIApAQCAtNDksOSArNDksOSBAQAogKiAnZnVsbGVyJwogCiAJICBjb21taXQgPHNoYTE+Ci0JICBBdXRob3I6IDxhdXRob3I+CisJICBBdXRob3I6ICAgICA8YXV0aG9yPgogCSAgQXV0aG9yRGF0ZTogPGF1dGhvciBkYXRlPgotCSAgQ29tbWl0OiA8Y29tbWl0dGVyPgorCSAgQ29tbWl0OiAgICAgPGNvbW1pdHRlcj4KIAkgIENvbW1pdERhdGU6IDxjb21taXR0ZXIgZGF0ZT4KIAogCSAgICAgICA8dGl0bGUgbGluZT4KQEAgLTExNiw2ICsxMTYsNyBAQAogLSAnJWNyJzogY29tbWl0dGVyIGRhdGUsIHJlbGF0aXZlCiAtICclY3QnOiBjb21taXR0ZXIgZGF0ZSwgVU5JWCB0aW1lc3RhbXAKIC0gJyVjaSc6IGNvbW1pdHRlciBkYXRlLCBJU08gODYwMSBmb3JtYXQKKy0gJyVkJzogcmVmIG5hbWVzLCBsaWtlIHRoZSAtLWRlY29yYXRlIG9wdGlvbiBvZiBsaW5rZ2l0OmdpdC1sb2dbMV0KIC0gJyVlJzogZW5jb2RpbmcKIC0gJyVzJzogc3ViamVjdAogLSAnJWInOiBib2R5CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3B1bGwtZmV0Y2gtcGFyYW0udHh0IGIvRG9jdW1lbnRhdGlvbi9wdWxsLWZldGNoLXBhcmFtLnR4dAppbmRleCBlYmRkOTQ4Li5mOTgxMWYyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3B1bGwtZmV0Y2gtcGFyYW0udHh0CisrKyBiL0RvY3VtZW50YXRpb24vcHVsbC1mZXRjaC1wYXJhbS50eHQKQEAgLTUsMTUgKzUsMTQgQEAKIAlvZiBhIHJlbW90ZSAoc2VlIHRoZSBzZWN0aW9uIDw8UkVNT1RFUyxSRU1PVEVTPj4gYmVsb3cpLgogCiA8cmVmc3BlYz46OgotCVRoZSBjYW5vbmljYWwgZm9ybWF0IG9mIGEgPHJlZnNwZWM+IHBhcmFtZXRlciBpcwotCWArPzxzcmM+Ojxkc3Q+YDsgdGhhdCBpcywgYW4gb3B0aW9uYWwgcGx1cyBge3BsdXN9YCwgZm9sbG93ZWQKLQlieSB0aGUgc291cmNlIHJlZiwgZm9sbG93ZWQgYnkgYSBjb2xvbiBgOmAsIGZvbGxvd2VkIGJ5Ci0JdGhlIGRlc3RpbmF0aW9uIHJlZi4KKwlUaGUgZm9ybWF0IG9mIGEgPHJlZnNwZWM+IHBhcmFtZXRlciBpcyBhbiBvcHRpb25hbCBwbHVzCisJYHtwbHVzfWAsIGZvbGxvd2VkIGJ5IHRoZSBzb3VyY2UgcmVmIDxzcmM+LCBmb2xsb3dlZAorCWJ5IGEgY29sb24gYDpgLCBmb2xsb3dlZCBieSB0aGUgZGVzdGluYXRpb24gcmVmIDxkc3Q+LgogKwogVGhlIHJlbW90ZSByZWYgdGhhdCBtYXRjaGVzIDxzcmM+CiBpcyBmZXRjaGVkLCBhbmQgaWYgPGRzdD4gaXMgbm90IGVtcHR5IHN0cmluZywgdGhlIGxvY2FsCiByZWYgdGhhdCBtYXRjaGVzIGl0IGlzIGZhc3QgZm9yd2FyZGVkIHVzaW5nIDxzcmM+LgotQWdhaW4sIGlmIHRoZSBvcHRpb25hbCBwbHVzIGArYCBpcyB1c2VkLCB0aGUgbG9jYWwgcmVmCitJZiB0aGUgb3B0aW9uYWwgcGx1cyBgK2AgaXMgdXNlZCwgdGhlIGxvY2FsIHJlZgogaXMgdXBkYXRlZCBldmVuIGlmIGl0IGRvZXMgbm90IHJlc3VsdCBpbiBhIGZhc3QgZm9yd2FyZAogdXBkYXRlLgogKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9yZXYtbGlzdC1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vcmV2LWxpc3Qtb3B0aW9ucy50eHQKaW5kZXggMTAyM2FjMi4uYjlmNmU0ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9yZXYtbGlzdC1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0CkBAIC0yMjIsNiArMjIyLDIxIEBACiAJUHJldGVuZCBhcyBpZiBhbGwgdGhlIHJlZnMgaW4gYCRHSVRfRElSL3JlZnMvYCBhcmUgbGlzdGVkIG9uIHRoZQogCWNvbW1hbmQgbGluZSBhcyAnPGNvbW1pdD4nLgogCistLWJyYW5jaGVzOjoKKworCVByZXRlbmQgYXMgaWYgYWxsIHRoZSByZWZzIGluIGAkR0lUX0RJUi9yZWZzL2hlYWRzYCBhcmUgbGlzdGVkCisJb24gdGhlIGNvbW1hbmQgbGluZSBhcyAnPGNvbW1pdD4nLgorCistLXRhZ3M6OgorCisJUHJldGVuZCBhcyBpZiBhbGwgdGhlIHJlZnMgaW4gYCRHSVRfRElSL3JlZnMvdGFnc2AgYXJlIGxpc3RlZAorCW9uIHRoZSBjb21tYW5kIGxpbmUgYXMgJzxjb21taXQ+Jy4KKworLS1yZW1vdGVzOjoKKworCVByZXRlbmQgYXMgaWYgYWxsIHRoZSByZWZzIGluIGAkR0lUX0RJUi9yZWZzL3JlbW90ZXNgIGFyZSBsaXN0ZWQKKwlvbiB0aGUgY29tbWFuZCBsaW5lIGFzICc8Y29tbWl0PicuCisKIGlmZGVmOjpnaXQtcmV2LWxpc3RbXQogLS1zdGRpbjo6CiAKQEAgLTI4NSw4ICszMDAsNTIgQEAKIEhpc3RvcnkgU2ltcGxpZmljYXRpb24KIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotV2hlbiBvcHRpb25hbCBwYXRocyBhcmUgZ2l2ZW4sICdnaXQgcmV2LWxpc3QnIHNpbXBsaWZpZXMgY29tbWl0cyB3aXRoCi12YXJpb3VzIHN0cmF0ZWdpZXMsIGFjY29yZGluZyB0byB0aGUgb3B0aW9ucyB5b3UgaGF2ZSBzZWxlY3RlZC4KK1NvbWV0aW1lcyB5b3UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBwYXJ0cyBvZiB0aGUgaGlzdG9yeSwgZm9yIGV4YW1wbGUgdGhlCitjb21taXRzIG1vZGlmeWluZyBhIHBhcnRpY3VsYXIgPHBhdGg+LiBCdXQgdGhlcmUgYXJlIHR3byBwYXJ0cyBvZgorJ0hpc3RvcnkgU2ltcGxpZmljYXRpb24nLCBvbmUgcGFydCBpcyBzZWxlY3RpbmcgdGhlIGNvbW1pdHMgYW5kIHRoZSBvdGhlcgoraXMgaG93IHRvIGRvIGl0LCBhcyB0aGVyZSBhcmUgdmFyaW91cyBzdHJhdGVnaWVzIHRvIHNpbXBsaWZ5IHRoZSBoaXN0b3J5LgorCitUaGUgZm9sbG93aW5nIG9wdGlvbnMgc2VsZWN0IHRoZSBjb21taXRzIHRvIGJlIHNob3duOgorCis8cGF0aHM+OjoKKworCUNvbW1pdHMgbW9kaWZ5aW5nIHRoZSBnaXZlbiA8cGF0aHM+IGFyZSBzZWxlY3RlZC4KKworLS1zaW1wbGlmeS1ieS1kZWNvcmF0aW9uOjoKKworCUNvbW1pdHMgdGhhdCBhcmUgcmVmZXJyZWQgYnkgc29tZSBicmFuY2ggb3IgdGFnIGFyZSBzZWxlY3RlZC4KKworTm90ZSB0aGF0IGV4dHJhIGNvbW1pdHMgY2FuIGJlIHNob3duIHRvIGdpdmUgYSBtZWFuaW5nZnVsIGhpc3RvcnkuCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBhZmZlY3QgdGhlIHdheSB0aGUgc2ltcGxpZmljYXRpb24gaXMgcGVyZm9ybWVkOgorCitEZWZhdWx0IG1vZGU6OgorCisJU2ltcGxpZmllcyB0aGUgaGlzdG9yeSB0byB0aGUgc2ltcGxlc3QgaGlzdG9yeSBleHBsYWluaW5nIHRoZQorCWZpbmFsIHN0YXRlIG9mIHRoZSB0cmVlLiBTaW1wbGVzdCBiZWNhdXNlIGl0IHBydW5lcyBzb21lIHNpZGUKKwlicmFuY2hlcyBpZiB0aGUgZW5kIHJlc3VsdCBpcyB0aGUgc2FtZSAoaS5lLiBtZXJnaW5nIGJyYW5jaGVzCisJd2l0aCB0aGUgc2FtZSBjb250ZW50KQorCistLWZ1bGwtaGlzdG9yeTo6CisKKwlBcyB0aGUgZGVmYXVsdCBtb2RlIGJ1dCBkb2VzIG5vdCBwcnVuZSBzb21lIGhpc3RvcnkuCisKKy0tZGVuc2U6OgorCisJT25seSB0aGUgc2VsZWN0ZWQgY29tbWl0cyBhcmUgc2hvd24sIHBsdXMgc29tZSB0byBoYXZlIGEKKwltZWFuaW5nZnVsIGhpc3RvcnkuCisKKy0tc3BhcnNlOjoKKworCUFsbCBjb21taXRzIGluIHRoZSBzaW1wbGlmaWVkIGhpc3RvcnkgYXJlIHNob3duLgorCistLXNpbXBsaWZ5LW1lcmdlczo6CisKKwlBZGRpdGlvbmFsIG9wdGlvbiB0byAnLS1mdWxsLWhpc3RvcnknIHRvIHJlbW92ZSBzb21lIG5lZWRsZXNzCisJbWVyZ2VzIGZyb20gdGhlIHJlc3VsdGluZyBoaXN0b3J5LCBhcyB0aGVyZSBhcmUgbm8gc2VsZWN0ZWQKKwljb21taXRzIGNvbnRyaWJ1dGluZyB0byB0aGlzIG1lcmdlLgorCitBIG1vcmUgZGV0YWlsZWQgZXhwbGFuYXRpb24gZm9sbG93cy4KIAogU3VwcG9zZSB5b3Ugc3BlY2lmaWVkIGBmb29gIGFzIHRoZSA8cGF0aHM+LiAgV2Ugc2hhbGwgY2FsbCBjb21taXRzCiB0aGF0IG1vZGlmeSBgZm9vYCAhVFJFRVNBTUUsIGFuZCB0aGUgcmVzdCBUUkVFU0FNRS4gIChJbiBhIGRpZmYKQEAgLTQxMyw2ICs0NzIsNTYgQEAKIG9uZSBvZiB0aGUgcGFyZW50cyBpcyBUUkVFU0FNRSwgd2UgZm9sbG93IG9ubHkgdGhhdCBvbmUsIHNvIHRoZSBvdGhlcgogc2lkZXMgb2YgdGhlIG1lcmdlIGFyZSBuZXZlciB3YWxrZWQuCiAKK0ZpbmFsbHksIHRoZXJlIGlzIGEgZm91cnRoIHNpbXBsaWZpY2F0aW9uIG1vZGUgYXZhaWxhYmxlOgorCistLXNpbXBsaWZ5LW1lcmdlczo6CisKKwlGaXJzdCwgYnVpbGQgYSBoaXN0b3J5IGdyYXBoIGluIHRoZSBzYW1lIHdheSB0aGF0CisJJ1wtLWZ1bGwtaGlzdG9yeScgd2l0aCBwYXJlbnQgcmV3cml0aW5nIGRvZXMgKHNlZSBhYm92ZSkuCisrCitUaGVuIHNpbXBsaWZ5IGVhY2ggY29tbWl0IGBDYCB0byBpdHMgcmVwbGFjZW1lbnQgYEMnYCBpbiB0aGUgZmluYWwKK2hpc3RvcnkgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgcnVsZXM6CisrCistLQorKiBTZXQgYEMnYCB0byBgQ2AuCisrCisqIFJlcGxhY2UgZWFjaCBwYXJlbnQgYFBgIG9mIGBDJ2Agd2l0aCBpdHMgc2ltcGxpZmljYXRpb24gYFAnYC4gIEluCisgIHRoZSBwcm9jZXNzLCBkcm9wIHBhcmVudHMgdGhhdCBhcmUgYW5jZXN0b3JzIG9mIG90aGVyIHBhcmVudHMsIGFuZAorICByZW1vdmUgZHVwbGljYXRlcy4KKysKKyogSWYgYWZ0ZXIgdGhpcyBwYXJlbnQgcmV3cml0aW5nLCBgQydgIGlzIGEgcm9vdCBvciBtZXJnZSBjb21taXQgKGhhcworICB6ZXJvIG9yID4xIHBhcmVudHMpLCBhIGJvdW5kYXJ5IGNvbW1pdCwgb3IgIVRSRUVTQU1FLCBpdCByZW1haW5zLgorICBPdGhlcndpc2UsIGl0IGlzIHJlcGxhY2VkIHdpdGggaXRzIG9ubHkgcGFyZW50LgorLS0KKysKK1RoZSBlZmZlY3Qgb2YgdGhpcyBpcyBiZXN0IHNob3duIGJ5IHdheSBvZiBjb21wYXJpbmcgdG8KKydcLS1mdWxsLWhpc3RvcnknIHdpdGggcGFyZW50IHJld3JpdGluZy4gIFRoZSBleGFtcGxlIHR1cm5zIGludG86CisrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgLi1BLS0tTS0tLU4tLS1PCisJIC8gICAgIC8gICAgICAgLworCUkgICAgIEIgICAgICAgRAorCSBcICAgLyAgICAgICAvCisJICBgLS0tLS0tLS0tJworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysKK05vdGUgdGhlIG1ham9yIGRpZmZlcmVuY2VzIGluIGBOYCBhbmQgYFBgIG92ZXIgJ1wtLWZ1bGwtaGlzdG9yeSc6CisrCistLQorKiBgTmAncyBwYXJlbnQgbGlzdCBoYWQgYElgIHJlbW92ZWQsIGJlY2F1c2UgaXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlCisgIG90aGVyIHBhcmVudCBgTWAuICBTdGlsbCwgYE5gIHJlbWFpbmVkIGJlY2F1c2UgaXQgaXMgIVRSRUVTQU1FLgorKworKiBgUGAncyBwYXJlbnQgbGlzdCBzaW1pbGFybHkgaGFkIGBJYCByZW1vdmVkLiAgYFBgIHdhcyB0aGVuCisgIHJlbW92ZWQgY29tcGxldGVseSwgYmVjYXVzZSBpdCBoYWQgb25lIHBhcmVudCBhbmQgaXMgVFJFRVNBTUUuCistLQorCitUaGUgJ1wtLXNpbXBsaWZ5LWJ5LWRlY29yYXRpb24nIG9wdGlvbiBhbGxvd3MgeW91IHRvIHZpZXcgb25seSB0aGUKK2JpZyBwaWN0dXJlIG9mIHRoZSB0b3BvbG9neSBvZiB0aGUgaGlzdG9yeSwgYnkgb21pdHRpbmcgY29tbWl0cwordGhhdCBhcmUgbm90IHJlZmVyZW5jZWQgYnkgdGFncy4gIENvbW1pdHMgYXJlIG1hcmtlZCBhcyAhVFJFRVNBTUUKKyhpbiBvdGhlciB3b3Jkcywga2VwdCBhZnRlciBoaXN0b3J5IHNpbXBsaWZpY2F0aW9uIHJ1bGVzIGRlc2NyaWJlZAorYWJvdmUpIGlmICgxKSB0aGV5IGFyZSByZWZlcmVuY2VkIGJ5IHRhZ3MsIG9yICgyKSB0aGV5IGNoYW5nZSB0aGUKK2NvbnRlbnRzIG9mIHRoZSBwYXRocyBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLiAgQWxsIG90aGVyCitjb21taXRzIGFyZSBtYXJrZWQgYXMgVFJFRVNBTUUgKHN1YmplY3QgdG8gYmUgc2ltcGxpZmllZCBhd2F5KS4KIAogaWZkZWY6OmdpdC1yZXYtbGlzdFtdCiBCaXNlY3Rpb24gSGVscGVycwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJ1bi1jb21tYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1ydW4tY29tbWFuZC50eHQKaW5kZXggNzVhYTVkNC4uODJlOWU4MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJ1bi1jb21tYW5kLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcnVuLWNvbW1hbmQudHh0CkBAIC0zMCw3ICszMCw3IEBACiAJc3RhcnRfY29tbWFuZCgpIGZvbGxvd2VkIGJ5IGZpbmlzaF9jb21tYW5kKCkuIFRha2VzIGEgcG9pbnRlcgogCXRvIGEgYHN0cnVjdCBjaGlsZF9wcm9jZXNzYCB0aGF0IHNwZWNpZmllcyB0aGUgZGV0YWlscy4KIAotYHJ1bl9jb21tYW5kX3Zfb3B0YCwgYHJ1bl9jb21tYW5kX3Zfb3B0X2NkYCwgYHJ1bl9jb21tYW5kX3Zfb3B0X2NkX2VudmA6OgorYHJ1bl9jb21tYW5kX3Zfb3B0YCwgYHJ1bl9jb21tYW5kX3Zfb3B0X2NkX2VudmA6OgogCiAJQ29udmVuaWVuY2UgZnVuY3Rpb25zIHRoYXQgZW5jYXBzdWxhdGUgYSBzZXF1ZW5jZSBvZgogCXN0YXJ0X2NvbW1hbmQoKSBmb2xsb3dlZCBieSBmaW5pc2hfY29tbWFuZCgpLiBUaGUgYXJndW1lbnQgYXJndgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN0cmJ1Zi50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktc3RyYnVmLnR4dAppbmRleCA0MjQyZGMwLi45ODU4MDBlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktc3RyYnVmLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktc3RyYnVmLnR4dApAQCAtMjA1LDYgKzIwNSwxMyBAQAogcGFyYW1ldGVycyB0byB0aGUgY2FsbGJhY2ssIGBzdHJidWZfZXhwYW5kKClgIHBhc3NlcyBhIGNvbnRleHQgcG9pbnRlciwKIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IHRoZSBwcm9ncmFtbWVyIG9mIHRoZSBjYWxsYmFjayBhcyBzaGUgc2VlcyBmaXQuCiAKK2BzdHJidWZfZXhwYW5kX2RpY3RfY2JgOjoKKworCVVzZWQgYXMgY2FsbGJhY2sgZm9yIGBzdHJidWZfZXhwYW5kKClgLCBleHBlY3RzIGFuIGFycmF5IG9mCisJc3RydWN0IHN0cmJ1Zl9leHBhbmRfZGljdF9lbnRyeSBhcyBjb250ZXh0LCBpLmUuIHBhaXJzIG9mCisJcGxhY2Vob2xkZXIgYW5kIHJlcGxhY2VtZW50IHN0cmluZy4gIFRoZSBhcnJheSBuZWVkcyB0byBiZQorCXRlcm1pbmF0ZWQgYnkgYW4gZW50cnkgd2l0aCBwbGFjZWhvbGRlciBzZXQgdG8gTlVMTC4KKwogYHN0cmJ1Zl9hZGRmYDo6CiAKIAlBZGQgYSBmb3JtYXR0ZWQgc3RyaW5nIHRvIHRoZSBidWZmZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9yYWN5LWdpdC50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9yYWN5LWdpdC50eHQKaW5kZXggNmJkZjAzNC4uNDhiYjk3ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcmFjeS1naXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3JhY3ktZ2l0LnR4dApAQCAtMTM1LDcgKzEzNSw3IEBACiAKIFRoaXMgd2lsbCBtYWtlIGFsbCBpbmRleCBlbnRyaWVzIHJhY2lseSBjbGVhbi4gIFRoZSBsaW51eC0yLjYKIHByb2plY3QsIGZvciBleGFtcGxlLCB0aGVyZSBhcmUgb3ZlciAyMCwwMDAgZmlsZXMgaW4gdGhlIHdvcmtpbmcKLXRyZWUuICBPbiBteSBBdGhyb24gNjRYMiAzODAwKywgYWZ0ZXIgdGhlIGFib3ZlOgordHJlZS4gIE9uIG15IEF0aGxvbiA2NCBYMiAzODAwKywgYWZ0ZXIgdGhlIGFib3ZlOgogCiAgICQgL3Vzci9iaW4vdGltZSBnaXQgZGlmZi1maWxlcwogICAxLjY4dXNlciAwLjU0c3lzdGVtIDA6MDIuMjJlbGFwc2VkIDEwMCVDUFUgKDBhdmd0ZXh0KzBhdmdkYXRhIDBtYXhyZXNpZGVudClrCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VybHMudHh0IGIvRG9jdW1lbnRhdGlvbi91cmxzLnR4dAppbmRleCBmYTM0YzY3Li41MzU1ZWJjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3VybHMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdXJscy50eHQKQEAgLTYsMTAgKzYsMTAgQEAKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtIHJzeW5jOi8vaG9zdC54ei9wYXRoL3RvL3JlcG8uZ2l0LwotLSBodHRwOi8vaG9zdC54ei9wYXRoL3RvL3JlcG8uZ2l0LwotLSBodHRwczovL2hvc3QueHovcGF0aC90by9yZXBvLmdpdC8KLS0gZ2l0Oi8vaG9zdC54ei9wYXRoL3RvL3JlcG8uZ2l0LwotLSBnaXQ6Ly9ob3N0Lnh6L351c2VyL3BhdGgvdG8vcmVwby5naXQvCistIGh0dHA6Ly9ob3N0Lnh6e3N0YXJ0c2J9OnBvcnR7ZW5kc2J9L3BhdGgvdG8vcmVwby5naXQvCistIGh0dHBzOi8vaG9zdC54entzdGFydHNifTpwb3J0e2VuZHNifS9wYXRoL3RvL3JlcG8uZ2l0LworLSBnaXQ6Ly9ob3N0Lnh6e3N0YXJ0c2J9OnBvcnR7ZW5kc2J9L3BhdGgvdG8vcmVwby5naXQvCistIGdpdDovL2hvc3QueHp7c3RhcnRzYn06cG9ydHtlbmRzYn0vfnVzZXIvcGF0aC90by9yZXBvLmdpdC8KIC0gc3NoOi8ve3N0YXJ0c2J9dXNlckB7ZW5kc2J9aG9zdC54entzdGFydHNifTpwb3J0e2VuZHNifS9wYXRoL3RvL3JlcG8uZ2l0LwogLSBzc2g6Ly97c3RhcnRzYn11c2VyQHtlbmRzYn1ob3N0Lnh6L3BhdGgvdG8vcmVwby5naXQvCiAtIHNzaDovL3tzdGFydHNifXVzZXJAe2VuZHNifWhvc3QueHovfnVzZXIvcGF0aC90by9yZXBvLmdpdC8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwudHh0IGIvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQKaW5kZXggMmFlODhjNS4uOTZhZjg5NzcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwudHh0CkBAIC0xOCwxMiArMTgsMjIgQEAKIEZ1cnRoZXIgY2hhcHRlcnMgY292ZXIgbW9yZSBzcGVjaWFsaXplZCB0b3BpY3MuCiAKIENvbXByZWhlbnNpdmUgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIG1hbgotcGFnZXMuICBGb3IgYSBjb21tYW5kIHN1Y2ggYXMgImdpdCBjbG9uZSA8cmVwbz4iLCBqdXN0IHVzZQorcGFnZXMsIG9yIGxpbmtnaXQ6Z2l0LWhlbHBbMV0gY29tbWFuZC4gIEZvciBleGFtcGxlLCBmb3IgdGhlIGNvbW1hbmQKKyJnaXQgY2xvbmUgPHJlcG8+IiwgeW91IGNhbiBlaXRoZXIgdXNlOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgbWFuIGdpdC1jbG9uZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK29yOgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyQgZ2l0IGhlbHAgY2xvbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaXRoIHRoZSBsYXR0ZXIsIHlvdSBjYW4gdXNlIHRoZSBtYW51YWwgdmlld2VyIG9mIHlvdXIgY2hvaWNlOyBzZWUKK2xpbmtnaXQ6Z2l0LWhlbHBbMV0gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKIFNlZSBhbHNvIDw8Z2l0LXF1aWNrLXN0YXJ0Pj4gZm9yIGEgYnJpZWYgb3ZlcnZpZXcgb2YgZ2l0IGNvbW1hbmRzLAogd2l0aG91dCBhbnkgZXhwbGFuYXRpb24uCiAKQEAgLTQ5LDcgKzU5LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSMgZ2l0IGl0c2VsZiAoYXBwcm94LiAxME1CIGRvd25sb2FkKToKICQgZ2l0IGNsb25lIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vZ2l0L2dpdC5naXQKLQkjIHRoZSBsaW51eCBrZXJuZWwgKGFwcHJveC4gMTUwTUIgZG93bmxvYWQpOgorCSMgdGhlIExpbnV4IGtlcm5lbCAoYXBwcm94LiAxNTBNQiBkb3dubG9hZCk6CiAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXgtMi42LmdpdAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTk5OSw3ICsxMDA5LDcgQEAKIElmIHlvdSBoYXZlIHNvbWUgaW5pdGlhbCBjb250ZW50IChzYXksIGEgdGFyYmFsbCk6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgdGFyIC14enZmIHByb2plY3QudGFyLmd6CiskIHRhciB4enZmIHByb2plY3QudGFyLmd6CiAkIGNkIHByb2plY3QKICQgZ2l0IGluaXQKICQgZ2l0IGFkZCAuICMgaW5jbHVkZSBldmVyeXRoaW5nIGJlbG93IC4vIGluIHRoZSBmaXJzdCBjb21taXQ6CkBAIC0xMzMwLDcgKzEzNDAsNyBAQAogTUVSR0VfSEVBRCwgYW5kIHdoaWNoIHRvdWNoIGFuIHVubWVyZ2VkIGZpbGUuCiAKIFlvdSBtYXkgYWxzbyB1c2UgbGlua2dpdDpnaXQtbWVyZ2V0b29sWzFdLCB3aGljaCBsZXRzIHlvdSBtZXJnZSB0aGUKLXVubWVyZ2VkIGZpbGVzIHVzaW5nIGV4dGVybmFsIHRvb2xzIHN1Y2ggYXMgZW1hY3Mgb3Iga2RpZmYzLgordW5tZXJnZWQgZmlsZXMgdXNpbmcgZXh0ZXJuYWwgdG9vbHMgc3VjaCBhcyBFbWFjcyBvciBrZGlmZjMuCiAKIEVhY2ggdGltZSB5b3UgcmVzb2x2ZSB0aGUgY29uZmxpY3RzIGluIGEgZmlsZSBhbmQgdXBkYXRlIHRoZSBpbmRleDoKIApAQCAtNDM1Niw3ICs0MzY2LDkgQEAKICogcmVtb3RlIGV4YW1wbGUKICAgVVJMOiBnaXQ6Ly9leGFtcGxlLmNvbS9wcm9qZWN0LmdpdAogICBUcmFja2VkIHJlbW90ZSBicmFuY2hlcwotICAgIG1hc3RlciBuZXh0IC4uLgorICAgIG1hc3RlcgorICAgIG5leHQKKyAgICAuLi4KICQgZ2l0IGZldGNoIGV4YW1wbGUJCSMgdXBkYXRlIGJyYW5jaGVzIGZyb20gZXhhbXBsZQogJCBnaXQgYnJhbmNoIC1yCQkJIyBsaXN0IGFsbCByZW1vdGUgYnJhbmNoZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9HSVQtVkVSU0lPTi1HRU4gYi9HSVQtVkVSU0lPTi1HRU4KaW5kZXggNmM3NDY1Yy4uMzY5N2VkYyAxMDA3NTUKLS0tIGEvR0lULVZFUlNJT04tR0VOCisrKyBiL0dJVC1WRVJTSU9OLUdFTgpAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogCiBHVkY9R0lULVZFUlNJT04tRklMRQotREVGX1ZFUj12MS42LjAuMi5HSVQKK0RFRl9WRVI9djEuNi4xLjIuR0lUCiAKIExGPScKICcKZGlmZiAtLWdpdCBhL0lOU1RBTEwgYi9JTlNUQUxMCmluZGV4IDJiYWU1M2YuLmQxZGViMGIgMTAwNjQ0Ci0tLSBhL0lOU1RBTEwKKysrIGIvSU5TVEFMTApAQCAtNiw3ICs2LDcgQEAKIHRvIGRvIGEgZ2xvYmFsIGluc3RhbGwsIHlvdSBjYW4gZG8KIAogCSQgbWFrZSBwcmVmaXg9L3VzciBhbGwgZG9jIGluZm8gOyMgYXMgeW91cnNlbGYKLQkjIG1ha2UgcHJlZml4PS91c3IgaW5zdGFsbCBpbnN0YWxsLWRvYyBpbnN0YWxsLWluZm8gOyMgYXMgcm9vdAorCSMgbWFrZSBwcmVmaXg9L3VzciBpbnN0YWxsIGluc3RhbGwtZG9jIGluc3RhbGwtaHRtbCBpbnN0YWxsLWluZm8gOyMgYXMgcm9vdAogCiAob3IgcHJlZml4PS91c3IvbG9jYWwsIG9mIGNvdXJzZSkuICBKdXN0IGxpa2UgYW55IHByb2dyYW0gc3VpdGUKIHRoYXQgdXNlcyAkcHJlZml4LCB0aGUgYnVpbHQgcmVzdWx0cyBoYXZlIHNvbWUgcGF0aHMgZW5jb2RlZCwKQEAgLTE5LDcgKzE5LDcgQEAKIAkkIG1ha2UgY29uZmlndXJlIDsjIGFzIHlvdXJzZWxmCiAJJCAuL2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNyIDsjIGFzIHlvdXJzZWxmCiAJJCBtYWtlIGFsbCBkb2MgOyMgYXMgeW91cnNlbGYKLQkjIG1ha2UgaW5zdGFsbCBpbnN0YWxsLWRvYyA7IyBhcyByb290CisJIyBtYWtlIGluc3RhbGwgaW5zdGFsbC1kb2MgaW5zdGFsbC1odG1sOyMgYXMgcm9vdAogCiAKIElzc3VlcyBvZiBub3RlOgpAQCAtODksMTMgKzg5LDIyIEBACiAgICBpbmNsaW5lZCB0byBpbnN0YWxsIHRoZSB0b29scywgdGhlIGRlZmF1bHQgYnVpbGQgdGFyZ2V0CiAgICAoIm1ha2UgYWxsIikgZG9lcyBfbm90XyBidWlsZCB0aGVtLgogCisgICAibWFrZSBkb2MiIGJ1aWxkcyBkb2N1bWVudGF0aW9uIGluIG1hbiBhbmQgaHRtbCBmb3JtYXRzOyB0aGVyZSBhcmUKKyAgIGFsc28gIm1ha2UgbWFuIiwgIm1ha2UgaHRtbCIgYW5kICJtYWtlIGluZm8iLiBOb3RlIHRoYXQgIm1ha2UgaHRtbCIKKyAgIHJlcXVpcmVzIGFzY2lpZG9jLCBidXQgbm90IHhtbHRvLiAibWFrZSBtYW4iIChhbmQgdGh1cyBtYWtlIGRvYykKKyAgIHJlcXVpcmVzIGJvdGguCisKKyAgICJtYWtlIGluc3RhbGwtZG9jIiBpbnN0YWxscyBkb2N1bWVudGF0aW9uIGluIG1hbiBmb3JtYXQgb25seTsgdGhlcmUKKyAgIGFyZSBhbHNvICJtYWtlIGluc3RhbGwtbWFuIiwgIm1ha2UgaW5zdGFsbC1odG1sIiBhbmQgIm1ha2UKKyAgIGluc3RhbGwtaW5mbyIuCisKICAgIEJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHRoZSBpbmZvIGZpbGUgYWRkaXRpb25hbGx5IHJlcXVpcmVzCiAgICBtYWtlaW5mbyBhbmQgZG9jYm9vazJYLiAgVmVyc2lvbiAwLjguMyBpcyBrbm93biB0byB3b3JrLgogCiAgICBUaGUgZG9jdW1lbnRhdGlvbiBpcyB3cml0dGVuIGZvciBBc2NpaURvYyA3LCBidXQgIm1ha2UKICAgIEFTQ0lJRE9DOD1ZZXNQbGVhc2UgZG9jIiB3aWxsIGxldCB5b3UgZm9ybWF0IHdpdGggQXNjaWlEb2MgOC4KIAotICAgQWx0ZXJuYXRpdmVseSwgcHJlLWZvcm1hdHRlZCBkb2N1bWVudGF0aW9uIGFyZSBhdmFpbGFibGUgaW4KKyAgIEFsdGVybmF0aXZlbHksIHByZS1mb3JtYXR0ZWQgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgaW4KICAgICJodG1sIiBhbmQgIm1hbiIgYnJhbmNoZXMgb2YgdGhlIGdpdCByZXBvc2l0b3J5IGl0c2VsZi4gIEZvcgogICAgZXhhbXBsZSwgeW91IGNvdWxkOgogCkBAIC0xMTcsNiArMTI2LDEzIEBACiAKIAlodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL3NjbS9naXQvZG9jcy8KIAorICAgVGhlcmUgYXJlIGFsc28gIm1ha2UgcXVpY2staW5zdGFsbC1kb2MiLCAibWFrZSBxdWljay1pbnN0YWxsLW1hbiIKKyAgIGFuZCAibWFrZSBxdWljay1pbnN0YWxsLWh0bWwiIHdoaWNoIGluc3RhbGwgcHJlZm9ybWF0dGVkIG1hbiBwYWdlcworICAgYW5kIGh0bWwgZG9jdW1lbnRhdGlvbi4KKyAgIFRoaXMgZG9lcyBub3QgcmVxdWlyZSBhc2NpaWRvYy94bWx0bywgYnV0IGl0IG9ubHkgd29ya3MgZnJvbSB3aXRoaW4KKyAgIGEgY2xvbmVkIGNoZWNrb3V0IG9mIGdpdC5naXQgd2l0aCB0aGVzZSB0d28gZXh0cmEgYnJhbmNoZXMsIGFuZCB3aWxsCisgICBub3Qgd29yayBmb3IgdGhlIG1haW50YWluZXIgZm9yIG9idmlvdXMgY2hpY2tlbi1hbmQtZWdnIHJlYXNvbnMuCisKICAgIEl0IGhhcyBiZWVuIHJlcG9ydGVkIHRoYXQgZG9jYm9vay14c2wgdmVyc2lvbiAxLjcyIGFuZCAxLjczIGFyZQogICAgYnVnZ3k7IDEuNzIgbWlzZm9ybWF0cyBtYW51YWwgcGFnZXMgZm9yIGNhbGxvdXRzLCBhbmQgMS43MyBuZWVkcwogICAgdGhlIHBhdGNoIGluIGNvbnRyaWIvcGF0Y2hlcy9kb2Nib29rLXhzbC1tYW5wYWdlcy1jaGFybWFwLnBhdGNoCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDVkZTQyNDcuLjAxMjQyODggMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC05MCw2ICs5MCw4IEBACiAjCiAjIERlZmluZSBOT19NTUFQIGlmIHlvdSB3YW50IHRvIGF2b2lkIG1tYXAuCiAjCisjIERlZmluZSBOT19QVEhSRUFEUyBpZiB5b3UgZG8gbm90IGhhdmUgb3IgZG8gbm90IHdhbnQgdG8gdXNlIFB0aHJlYWRzLgorIwogIyBEZWZpbmUgTk9fUFJFQUQgaWYgeW91IGhhdmUgYSBwcm9ibGVtIHdpdGggcHJlYWQoKSBzeXN0ZW0gY2FsbCAoZS5nLgogIyBjeWd3aW4uZGxsIGJlZm9yZSB2MS41LjIyKS4KICMKQEAgLTEyNCw2ICsxMjYsOSBAQAogIyBEZWZpbmUgVVNFX1NUREVWIGJlbG93IGlmIHlvdSB3YW50IGdpdCB0byBjYXJlIGFib3V0IHRoZSB1bmRlcmx5aW5nIGRldmljZQogIyBjaGFuZ2UgYmVpbmcgY29uc2lkZXJlZCBhbiBpbm9kZSBjaGFuZ2UgZnJvbSB0aGUgdXBkYXRlLWluZGV4IHBlcnNwZWN0aXZlLgogIworIyBEZWZpbmUgTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUIGlmIHlvdXIgcGxhdGZvcm0gZG9lcyBub3QgaGF2ZSBzdF9ibG9ja3MKKyMgZmllbGQgdGhhdCBjb3VudHMgdGhlIG9uLWRpc2sgZm9vdHByaW50IGluIDUxMi1ieXRlIGJsb2Nrcy4KKyMKICMgRGVmaW5lIEFTQ0lJRE9DOCBpZiB5b3Ugd2FudCB0byBmb3JtYXQgZG9jdW1lbnRhdGlvbiB3aXRoIEFzY2lpRG9jIDgKICMKICMgRGVmaW5lIERPQ0JPT0tfWFNMXzE3MiBpZiB5b3Ugd2FudCB0byBmb3JtYXQgbWFuIHBhZ2VzIHdpdGggRG9jQm9vayBYU0wgdjEuNzIuCkBAIC0xNjEsNiArMTY2LDcgQEAKIHVuYW1lX08gOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLW8gMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQogdW5hbWVfUiA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtciAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCiB1bmFtZV9QIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC1wIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKK3VuYW1lX1YgOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLXYgMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQogCiAjIENGTEFHUyBhbmQgTERGTEFHUyBhcmUgZm9yIHRoZSB1c2VycyB0byBvdmVycmlkZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiAKQEAgLTIyNiw2ICsyMzIsNyBAQAogUlBNQlVJTEQgPSBycG1idWlsZAogVENMX1BBVEggPSB0Y2xzaAogVENMVEtfUEFUSCA9IHdpc2gKK1BUSFJFQURfTElCUyA9IC1scHRocmVhZAogCiBleHBvcnQgVENMX1BBVEggVENMVEtfUEFUSAogCkBAIC0yOTEsOCArMjk4LDggQEAKIFBST0dSQU1TICs9IGdpdC1ta3RyZWUkWAogUFJPR1JBTVMgKz0gZ2l0LXBhY2stcmVkdW5kYW50JFgKIFBST0dSQU1TICs9IGdpdC1wYXRjaC1pZCRYCi1QUk9HUkFNUyArPSBnaXQtcmVjZWl2ZS1wYWNrJFgKIFBST0dSQU1TICs9IGdpdC1zZW5kLXBhY2skWAorUFJPR1JBTVMgKz0gZ2l0LXNoZWxsJFgKIFBST0dSQU1TICs9IGdpdC1zaG93LWluZGV4JFgKIFBST0dSQU1TICs9IGdpdC11bnBhY2stZmlsZSRYCiBQUk9HUkFNUyArPSBnaXQtdXBkYXRlLXNlcnZlci1pbmZvJFgKQEAgLTMxMyw2ICszMjAsNyBAQAogQlVJTFRfSU5TICs9IGdpdC1wZWVrLXJlbW90ZSRYCiBCVUlMVF9JTlMgKz0gZ2l0LXJlcG8tY29uZmlnJFgKIEJVSUxUX0lOUyArPSBnaXQtc2hvdyRYCitCVUlMVF9JTlMgKz0gZ2l0LXN0YWdlJFgKIEJVSUxUX0lOUyArPSBnaXQtc3RhdHVzJFgKIEJVSUxUX0lOUyArPSBnaXQtd2hhdGNoYW5nZWQkWAogCkBAIC0zNDMsNiArMzUxLDcgQEAKIExJQl9IICs9IGNhY2hlLXRyZWUuaAogTElCX0ggKz0gY29tbWl0LmgKIExJQl9IICs9IGNvbXBhdC9taW5ndy5oCitMSUJfSCArPSBjb21wYXQvY3lnd2luLmgKIExJQl9IICs9IGNzdW0tZmlsZS5oCiBMSUJfSCArPSBkZWNvcmF0ZS5oCiBMSUJfSCArPSBkZWx0YS5oCkBAIC0zNTQsNiArMzYzLDggQEAKIExJQl9IICs9IGdyYXBoLmgKIExJQl9IICs9IGdyZXAuaAogTElCX0ggKz0gaGFzaC5oCitMSUJfSCArPSBoZWxwLmgKK0xJQl9IICs9IGxldmVuc2h0ZWluLmgKIExJQl9IICs9IGxpc3Qtb2JqZWN0cy5oCiBMSUJfSCArPSBsbC1tZXJnZS5oCiBMSUJfSCArPSBsb2ctdHJlZS5oCkBAIC0zODMsNiArMzk0LDcgQEAKIExJQl9IICs9IHRyZWUuaAogTElCX0ggKz0gdHJlZS13YWxrLmgKIExJQl9IICs9IHVucGFjay10cmVlcy5oCitMSUJfSCArPSB1c2VyZGlmZi5oCiBMSUJfSCArPSB1dGY4LmgKIExJQl9IICs9IHd0LXN0YXR1cy5oCiAKQEAgLTQyOSw3ICs0NDEsNyBAQAogTElCX09CSlMgKz0gaGFzaC5vCiBMSUJfT0JKUyArPSBoZWxwLm8KIExJQl9PQkpTICs9IGlkZW50Lm8KLUxJQl9PQkpTICs9IGludGVycG9sYXRlLm8KK0xJQl9PQkpTICs9IGxldmVuc2h0ZWluLm8KIExJQl9PQkpTICs9IGxpc3Qtb2JqZWN0cy5vCiBMSUJfT0JKUyArPSBsbC1tZXJnZS5vCiBMSUJfT0JKUyArPSBsb2NrZmlsZS5vCkBAIC00MzcsNiArNDQ5LDcgQEAKIExJQl9PQkpTICs9IG1haWxtYXAubwogTElCX09CSlMgKz0gbWF0Y2gtdHJlZXMubwogTElCX09CSlMgKz0gbWVyZ2UtZmlsZS5vCitMSUJfT0JKUyArPSBtZXJnZS1yZWN1cnNpdmUubwogTElCX09CSlMgKz0gbmFtZS1oYXNoLm8KIExJQl9PQkpTICs9IG9iamVjdC5vCiBMSUJfT0JKUyArPSBwYWNrLWNoZWNrLm8KQEAgLTQ3Nyw2ICs0OTAsNyBAQAogTElCX09CSlMgKz0gdHJlZS5vCiBMSUJfT0JKUyArPSB0cmVlLXdhbGsubwogTElCX09CSlMgKz0gdW5wYWNrLXRyZWVzLm8KK0xJQl9PQkpTICs9IHVzZXJkaWZmLm8KIExJQl9PQkpTICs9IHVzYWdlLm8KIExJQl9PQkpTICs9IHV0ZjgubwogTElCX09CSlMgKz0gd2Fsa2VyLm8KQEAgLTQ4NSw2ICs0OTksNyBAQAogTElCX09CSlMgKz0gd3MubwogTElCX09CSlMgKz0gd3Qtc3RhdHVzLm8KIExJQl9PQkpTICs9IHhkaWZmLWludGVyZmFjZS5vCitMSUJfT0JKUyArPSBwcmVsb2FkLWluZGV4Lm8KIAogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4tYWRkLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluLWFubm90YXRlLm8KQEAgLTUxOCw2ICs1MzMsNyBAQAogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4tZnNjay5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1nYy5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1ncmVwLm8KK0JVSUxUSU5fT0JKUyArPSBidWlsdGluLWhlbHAubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4taW5pdC1kYi5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1sb2cubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4tbHMtZmlsZXMubwpAQCAtNTM4LDYgKzU1NCw3IEBACiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1wcnVuZS5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1wdXNoLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluLXJlYWQtdHJlZS5vCitCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1yZWNlaXZlLXBhY2subwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4tcmVmbG9nLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluLXJlbW90ZS5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi1yZXJlcmUubwpAQCAtNTc1LDkgKzU5MiwxMSBAQAogCiBpZmVxICgkKHVuYW1lX1MpLExpbnV4KQogCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwlUSFJFQURFRF9ERUxUQV9TRUFSQ0ggPSBZZXNQbGVhc2UKIGVuZGlmCiBpZmVxICgkKHVuYW1lX1MpLEdOVS9rRnJlZUJTRCkKIAlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCisJVEhSRUFERURfREVMVEFfU0VBUkNIID0gWWVzUGxlYXNlCiBlbmRpZgogaWZlcSAoJCh1bmFtZV9TKSxVbml4V2FyZSkKIAlDQyA9IGNjCkBAIC02MjYsOCArNjQ1LDcgQEAKIAllbmRpZgogCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKIAlOT19NRU1NRU0gPSBZZXNQbGVhc2UKLQlDT01QQVRfQ0ZMQUdTICs9IC1JY29tcGF0L3JlZ2V4Ci0JQ09NUEFUX09CSlMgKz0gY29tcGF0L3JlZ2V4L3JlZ2V4Lm8KKwlUSFJFQURFRF9ERUxUQV9TRUFSQ0ggPSBZZXNQbGVhc2UKIGVuZGlmCiBpZmVxICgkKHVuYW1lX1MpLFN1bk9TKQogCU5FRURTX1NPQ0tFVCA9IFllc1BsZWFzZQpAQCAtNjc3LDggKzY5NSwxMiBAQAogCUJBU0lDX0NGTEFHUyArPSAtSS91c3IvbG9jYWwvaW5jbHVkZQogCUJBU0lDX0xERkxBR1MgKz0gLUwvdXNyL2xvY2FsL2xpYgogCURJUl9IQVNfQlNEX0dST1VQX1NFTUFOVElDUyA9IFllc1BsZWFzZQotCUNPTVBBVF9DRkxBR1MgKz0gLUljb21wYXQvcmVnZXgKLQlDT01QQVRfT0JKUyArPSBjb21wYXQvcmVnZXgvcmVnZXgubworCVRIUkVBREVEX0RFTFRBX1NFQVJDSCA9IFllc1BsZWFzZQorCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9SKSIgOiAnNFwuJyksMikKKwkJUFRIUkVBRF9MSUJTID0gLXB0aHJlYWQKKwkJTk9fVUlOVE1BWF9UID0gWWVzUGxlYXNlCisJCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQorCWVuZGlmCiBlbmRpZgogaWZlcSAoJCh1bmFtZV9TKSxPcGVuQlNEKQogCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKQEAgLTY4NiwxNCArNzA4LDE1IEBACiAJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKIAlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKIAlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIKKwlUSFJFQURFRF9ERUxUQV9TRUFSQ0ggPSBZZXNQbGVhc2UKIGVuZGlmCiBpZmVxICgkKHVuYW1lX1MpLE5ldEJTRCkKIAlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJ1swMV1cLicpLDIpCiAJCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCiAJZW5kaWYKIAlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL3BrZy9pbmNsdWRlCi0JQkFTSUNfTERGTEFHUyArPSAtTC91c3IvcGtnL2xpYgotCUFMTF9MREZMQUdTICs9IC1XbCwtcnBhdGgsL3Vzci9wa2cvbGliCisJQkFTSUNfTERGTEFHUyArPSAtTC91c3IvcGtnL2xpYiAkKENDX0xEX0RZTlBBVEgpL3Vzci9wa2cvbGliCisJVEhSRUFERURfREVMVEFfU0VBUkNIID0gWWVzUGxlYXNlCiBlbmRpZgogaWZlcSAoJCh1bmFtZV9TKSxBSVgpCiAJTk9fU1RSQ0FTRVNUUj1ZZXNQbGVhc2UKQEAgLTcwNCw4ICs3MjcsMTEgQEAKIAlJTlRFUk5BTF9RU09SVCA9IFVuZm9ydHVuYXRlbHlZZXMKIAlORUVEU19MSUJJQ09OVj1ZZXNQbGVhc2UKIAlCQVNJQ19DRkxBR1MgKz0gLURfTEFSR0VfRklMRVMKLQlDT01QQVRfQ0ZMQUdTICs9IC1JY29tcGF0L3JlZ2V4Ci0JQ09NUEFUX09CSlMgKz0gY29tcGF0L3JlZ2V4L3JlZ2V4Lm8KKwlpZm5lcSAoJChzaGVsbCBleHByICIkKHVuYW1lX1YpIiA6ICdbMTIzNF0nKSwxKQorCQlUSFJFQURFRF9ERUxUQV9TRUFSQ0ggPSBZZXNQbGVhc2UKKwllbHNlCisJCU5PX1BUSFJFQURTID0gWWVzUGxlYXNlCisJZW5kaWYKIGVuZGlmCiBpZmVxICgkKHVuYW1lX1MpLEdOVSkKIAkjIEdOVS9IdXJkCkBAIC03MzUsNiArNzYxLDkgQEAKIAlOT19TWVNfU0VMRUNUX0ggPSBZZXNQbGVhc2UKIAlTTlBSSU5URl9SRVRVUk5TX0JPR1VTID0gWWVzUGxlYXNlCiBlbmRpZgoraWZuZXEgKCwkKGZpbmRzdHJpbmcgQ1lHV0lOLCQodW5hbWVfUykpKQorCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9jeWd3aW4ubworZW5kaWYKIGlmbmVxICgsJChmaW5kc3RyaW5nIE1JTkdXLCQodW5hbWVfUykpKQogCU5PX01NQVAgPSBZZXNQbGVhc2UKIAlOT19QUkVBRCA9IFllc1BsZWFzZQpAQCAtNzQ3LDYgKzc3Niw3IEBACiAJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQogCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKIAlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlOT19QVEhSRUFEUyA9IFllc1BsZWFzZQogCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCiAJT0xEX0lDT05WID0gWWVzUGxlYXNlCiAJTk9fQzk5X0ZPUk1BVCA9IFllc1BsZWFzZQpAQCAtNzU2LDYgKzc4Niw3IEBACiAJTk9fU1ZOX1RFU1RTID0gWWVzUGxlYXNlCiAJTk9fUEVSTF9NQUtFTUFLRVIgPSBZZXNQbGVhc2UKIAlOT19QT1NJWF9PTkxZX1BST0dSQU1TID0gWWVzUGxlYXNlCisJTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUID0gWWVzUGxlYXNlCiAJQ09NUEFUX0NGTEFHUyArPSAtRF9fVVNFX01JTkdXX0FDQ0VTUyAtRE5PR0RJIC1JY29tcGF0IC1JY29tcGF0L3JlZ2V4IC1JY29tcGF0L2ZubWF0Y2gKIAlDT01QQVRfQ0ZMQUdTICs9IC1EU05QUklOVEZfU0laRV9DT1JSPTEKIAlDT01QQVRfQ0ZMQUdTICs9IC1EU1RSSVBfRVhURU5TSU9OPVwiLmV4ZVwiCkBAIC03ODgsMTIgKzgxOSwxNCBAQAogCWVuZGlmCiBlbmRpZgogCi1pZmRlZiBOT19SX1RPX0dDQ19MSU5LRVIKLQkjIFNvbWUgZ2NjIGRvZXMgbm90IGFjY2VwdCBhbmQgcGFzcyAtUiB0byB0aGUgbGlua2VyIHRvIHNwZWNpZnkKLQkjIHRoZSBydW50aW1lIGR5bmFtaWMgbGlicmFyeSBwYXRoLgotCUNDX0xEX0RZTlBBVEggPSAtV2wsLXJwYXRoPQotZWxzZQotCUNDX0xEX0RZTlBBVEggPSAtUgoraWZuZGVmIENDX0xEX0RZTlBBVEgKKwlpZmRlZiBOT19SX1RPX0dDQ19MSU5LRVIKKwkJIyBTb21lIGdjYyBkb2VzIG5vdCBhY2NlcHQgYW5kIHBhc3MgLVIgdG8gdGhlIGxpbmtlciB0byBzcGVjaWZ5CisJCSMgdGhlIHJ1bnRpbWUgZHluYW1pYyBsaWJyYXJ5IHBhdGguCisJCUNDX0xEX0RZTlBBVEggPSAtV2wsLXJwYXRoLAorCWVsc2UKKwkJQ0NfTERfRFlOUEFUSCA9IC1SCisJZW5kaWYKIGVuZGlmCiAKIGlmZGVmIE5PX0NVUkwKQEAgLTgyOSw3ICs4NjIsNiBAQAogaWZuZGVmIE5PX1BPU0lYX09OTFlfUFJPR1JBTVMKIAlQUk9HUkFNUyArPSBnaXQtZGFlbW9uJFgKIAlQUk9HUkFNUyArPSBnaXQtaW1hcC1zZW5kJFgKLQlQUk9HUkFNUyArPSBnaXQtc2hlbGwkWAogZW5kaWYKIGlmbmRlZiBOT19PUEVOU1NMCiAJT1BFTlNTTF9MSUJTU0wgPSAtbHNzbApAQCAtODcwLDYgKzkwMiw5IEBACiBpZmRlZiBOT19EX0lOT19JTl9ESVJFTlQKIAlCQVNJQ19DRkxBR1MgKz0gLUROT19EX0lOT19JTl9ESVJFTlQKIGVuZGlmCitpZmRlZiBOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQKKwlCQVNJQ19DRkxBR1MgKz0gLUROT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQKK2VuZGlmCiBpZmRlZiBOT19DOTlfRk9STUFUCiAJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fQzk5X0ZPUk1BVAogZW5kaWYKQEAgLTkzMSw2ICs5NjYsOSBAQAogaWZkZWYgTk9fSVBWNgogCUJBU0lDX0NGTEFHUyArPSAtRE5PX0lQVjYKIGVuZGlmCitpZmRlZiBOT19VSU5UTUFYX1QKKwlCQVNJQ19DRkxBR1MgKz0gLUR1aW50bWF4X3Q9dWludDMyX3QKK2VuZGlmCiBpZmRlZiBOT19TT0NLQUREUl9TVE9SQUdFCiBpZmRlZiBOT19JUFY2CiAJQkFTSUNfQ0ZMQUdTICs9IC1Ec29ja2FkZHJfc3RvcmFnZT1zb2NrYWRkcl9pbgpAQCAtOTkwLDkgKzEwMjgsMTUgQEAKIAlDT01QQVRfT0JKUyArPSBjb21wYXQvcXNvcnQubwogZW5kaWYKIAoraWZkZWYgTk9fUFRIUkVBRFMKKwlUSFJFQURFRF9ERUxUQV9TRUFSQ0ggPQorCUJBU0lDX0NGTEFHUyArPSAtRE5PX1BUSFJFQURTCitlbHNlCisJRVhUTElCUyArPSAkKFBUSFJFQURfTElCUykKK2VuZGlmCisKIGlmZGVmIFRIUkVBREVEX0RFTFRBX1NFQVJDSAogCUJBU0lDX0NGTEFHUyArPSAtRFRIUkVBREVEX0RFTFRBX1NFQVJDSAotCUVYVExJQlMgKz0gLWxwdGhyZWFkCiAJTElCX09CSlMgKz0gdGhyZWFkLXV0aWxzLm8KIGVuZGlmCiBpZmRlZiBESVJfSEFTX0JTRF9HUk9VUF9TRU1BTlRJQ1MKQEAgLTEwOTgsNyArMTE0Miw3IEBACiAJJChRVUlFVF9MSU5LKSQoQ0MpICQoQUxMX0NGTEFHUykgLW8gJEAgZ2l0Lm8gXAogCQkkKEJVSUxUSU5fT0JKUykgJChBTExfTERGTEFHUykgJChMSUJTKQogCi1oZWxwLm86IGhlbHAuYyBjb21tb24tY21kcy5oIEdJVC1DRkxBR1MKK2J1aWx0aW4taGVscC5vOiBidWlsdGluLWhlbHAuYyBjb21tb24tY21kcy5oIEdJVC1DRkxBR1MKIAkkKFFVSUVUX0NDKSQoQ0MpIC1vICQqLm8gLWMgJChBTExfQ0ZMQUdTKSBcCiAJCSctREdJVF9IVE1MX1BBVEg9IiQoaHRtbGRpcl9TUSkiJyBcCiAJCSctREdJVF9NQU5fUEFUSD0iJChtYW5kaXJfU1EpIicgXApAQCAtMTIyNSw3ICsxMjY5LDkgQEAKIGdpdC0lJFg6ICUubyAkKEdJVExJQlMpCiAJJChRVUlFVF9MSU5LKSQoQ0MpICQoQUxMX0NGTEFHUykgLW8gJEAgJChBTExfTERGTEFHUykgJChmaWx0ZXIgJS5vLCReKSAkKExJQlMpCiAKLWdpdC1pbWFwLXNlbmQkWDogaW1hcC1zZW5kLm8gJChMSUJfRklMRSkKK2dpdC1pbWFwLXNlbmQkWDogaW1hcC1zZW5kLm8gJChHSVRMSUJTKQorCSQoUVVJRVRfTElOSykkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAICQoQUxMX0xERkxBR1MpICQoZmlsdGVyICUubywkXikgXAorCQkkKExJQlMpICQoT1BFTlNTTF9MSU5LKSAkKE9QRU5TU0xfTElCU1NMKQogCiBodHRwLm8gaHR0cC13YWxrZXIubyBodHRwLXB1c2gubyB0cmFuc3BvcnQubzogaHR0cC5oCiAKQEAgLTEyNTIsNiArMTI5OCwxMiBAQAogZG9jOgogCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBhbGwKIAorbWFuOgorCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBtYW4KKworaHRtbDoKKwkkKE1BS0UpIC1DIERvY3VtZW50YXRpb24gaHRtbAorCiBpbmZvOgogCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBpbmZvCiAKQEAgLTEzODgsNiArMTQ0MCw5IEBACiBpbnN0YWxsLWRvYzoKIAkkKE1BS0UpIC1DIERvY3VtZW50YXRpb24gaW5zdGFsbAogCitpbnN0YWxsLW1hbjoKKwkkKE1BS0UpIC1DIERvY3VtZW50YXRpb24gaW5zdGFsbC1tYW4KKwogaW5zdGFsbC1odG1sOgogCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBpbnN0YWxsLWh0bWwKIApAQCAtMTM5Nyw2ICsxNDUyLDEyIEBACiBxdWljay1pbnN0YWxsLWRvYzoKIAkkKE1BS0UpIC1DIERvY3VtZW50YXRpb24gcXVpY2staW5zdGFsbAogCitxdWljay1pbnN0YWxsLW1hbjoKKwkkKE1BS0UpIC1DIERvY3VtZW50YXRpb24gcXVpY2staW5zdGFsbC1tYW4KKworcXVpY2staW5zdGFsbC1odG1sOgorCSQoTUFLRSkgLUMgRG9jdW1lbnRhdGlvbiBxdWljay1pbnN0YWxsLWh0bWwKKwogCiAKICMjIyBNYWludGFpbmVyJ3MgZGlzdCBydWxlcwpkaWZmIC0tZ2l0IGEvUmVsTm90ZXMgYi9SZWxOb3RlcwppbmRleCAwMDlkOGYwLi5kYTZlODEzIDEyMDAwMAotLS0gYS9SZWxOb3RlcworKysgYi9SZWxOb3RlcwpAQCAtMSArMSBAQAotRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy0xLjYuMC42LnR4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0RvY3VtZW50YXRpb24vUmVsTm90ZXMtMS42LjEuMi50eHQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9hYnNwYXRoLmMgYi9hYnNwYXRoLmMKaW5kZXggMGQ1NjEyNC4uNjQ5ZjM0ZiAxMDA2NDQKLS0tIGEvYWJzcGF0aC5jCisrKyBiL2Fic3BhdGguYwpAQCAtMSw1ICsxLDE2IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKIAorLyoKKyAqIERvIG5vdCB1c2UgdGhpcyBmb3IgaW5zcGVjdGluZyAqdHJhY2tlZCogY29udGVudC4gIFdoZW4gcGF0aCBpcyBhCisgKiBzeW1saW5rIHRvIGEgZGlyZWN0b3J5LCB3ZSBkbyBub3Qgd2FudCB0byBzYXkgaXQgaXMgYSBkaXJlY3Rvcnkgd2hlbgorICogZGVhbGluZyB3aXRoIHRyYWNrZWQgY29udGVudCBpbiB0aGUgd29ya2luZyB0cmVlLgorICovCitpbnQgaXNfZGlyZWN0b3J5KGNvbnN0IGNoYXIgKnBhdGgpCit7CisJc3RydWN0IHN0YXQgc3Q7CisJcmV0dXJuICghc3RhdChwYXRoLCAmc3QpICYmIFNfSVNESVIoc3Quc3RfbW9kZSkpOworfQorCiAvKiBXZSBhbGxvdyAicmVjdXJzaXZlIiBzeW1ib2xpYyBsaW5rcy4gT25seSB3aXRoaW4gcmVhc29uLCB0aG91Z2guICovCiAjZGVmaW5lIE1BWERFUFRIIDUKIApAQCAtMTcsNyArMjgsNyBAQAogCQlkaWUgKCJUb28gbG9uZyBwYXRoOiAlLipzIiwgNjAsIHBhdGgpOwogCiAJd2hpbGUgKGRlcHRoLS0pIHsKLQkJaWYgKHN0YXQoYnVmLCAmc3QpIHx8ICFTX0lTRElSKHN0LnN0X21vZGUpKSB7CisJCWlmICghaXNfZGlyZWN0b3J5KGJ1ZikpIHsKIAkJCWNoYXIgKmxhc3Rfc2xhc2ggPSBzdHJyY2hyKGJ1ZiwgJy8nKTsKIAkJCWlmIChsYXN0X3NsYXNoKSB7CiAJCQkJKmxhc3Rfc2xhc2ggPSAnXDAnOwpAQCAtNTMsNiArNjQsOCBAQAogCQkJbGVuID0gcmVhZGxpbmsoYnVmLCBuZXh0X2J1ZiwgUEFUSF9NQVgpOwogCQkJaWYgKGxlbiA8IDApCiAJCQkJZGllICgiSW52YWxpZCBzeW1saW5rOiAlcyIsIGJ1Zik7CisJCQlpZiAoUEFUSF9NQVggPD0gbGVuKQorCQkJCWRpZSgic3ltYm9saWMgbGluayB0b28gbG9uZzogJXMiLCBidWYpOwogCQkJbmV4dF9idWZbbGVuXSA9ICdcMCc7CiAJCQlidWYgPSBuZXh0X2J1ZjsKIAkJCWJ1Zl9pbmRleCA9IDEgLSBidWZfaW5kZXg7CmRpZmYgLS1naXQgYS9hcmNoaXZlLXRhci5jIGIvYXJjaGl2ZS10YXIuYwppbmRleCAxMzAyOTYxLi5iYTg5MGViIDEwMDY0NAotLS0gYS9hcmNoaXZlLXRhci5jCisrKyBiL2FyY2hpdmUtdGFyLmMKQEAgLTEyNCwxMSArMTI0LDEwIEBACiAJCXVuc2lnbmVkIGludCBtb2RlLCB2b2lkICpidWZmZXIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAlzdHJ1Y3QgdXN0YXJfaGVhZGVyIGhlYWRlcjsKLQlzdHJ1Y3Qgc3RyYnVmIGV4dF9oZWFkZXI7CisJc3RydWN0IHN0cmJ1ZiBleHRfaGVhZGVyID0gU1RSQlVGX0lOSVQ7CiAJaW50IGVyciA9IDA7CiAKIAltZW1zZXQoJmhlYWRlciwgMCwgc2l6ZW9mKGhlYWRlcikpOwotCXN0cmJ1Zl9pbml0KCZleHRfaGVhZGVyLCAwKTsKIAogCWlmICghc2hhMSkgewogCQkqaGVhZGVyLnR5cGVmbGFnID0gVFlQRUZMQUdfR0xPQkFMX0hFQURFUjsKQEAgLTIxMSwxMCArMjEwLDkgQEAKIHN0YXRpYyBpbnQgd3JpdGVfZ2xvYmFsX2V4dGVuZGVkX2hlYWRlcihzdHJ1Y3QgYXJjaGl2ZXJfYXJncyAqYXJncykKIHsKIAljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExID0gYXJncy0+Y29tbWl0X3NoYTE7Ci0Jc3RydWN0IHN0cmJ1ZiBleHRfaGVhZGVyOworCXN0cnVjdCBzdHJidWYgZXh0X2hlYWRlciA9IFNUUkJVRl9JTklUOwogCWludCBlcnI7CiAKLQlzdHJidWZfaW5pdCgmZXh0X2hlYWRlciwgMCk7CiAJc3RyYnVmX2FwcGVuZF9leHRfaGVhZGVyKCZleHRfaGVhZGVyLCAiY29tbWVudCIsIHNoYTFfdG9faGV4KHNoYTEpLCA0MCk7CiAJZXJyID0gd3JpdGVfdGFyX2VudHJ5KGFyZ3MsIE5VTEwsIE5VTEwsIDAsIDAsIGV4dF9oZWFkZXIuYnVmLAogCQkJZXh0X2hlYWRlci5sZW4pOwpkaWZmIC0tZ2l0IGEvYXJjaGl2ZS5jIGIvYXJjaGl2ZS5jCmluZGV4IDQ1ZDI0MmIuLjlhYzQ1NWQgMTAwNjQ0Ci0tLSBhL2FyY2hpdmUuYworKysgYi9hcmNoaXZlLmMKQEAgLTE1LDcgKzE1LDcgQEAKIAogI2RlZmluZSBVU0VTX1pMSUJfQ09NUFJFU1NJT04gMQogCi1jb25zdCBzdHJ1Y3QgYXJjaGl2ZXIgeworc3RhdGljIGNvbnN0IHN0cnVjdCBhcmNoaXZlciB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAl3cml0ZV9hcmNoaXZlX2ZuX3Qgd3JpdGVfYXJjaGl2ZTsKIAl1bnNpZ25lZCBpbnQgZmxhZ3M7CkBAIC0yOSwxMSArMjksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RyYnVmICpidWYpCiB7CiAJY2hhciAqdG9fZnJlZSA9IE5VTEw7Ci0Jc3RydWN0IHN0cmJ1ZiBmbXQ7CisJc3RydWN0IHN0cmJ1ZiBmbXQgPSBTVFJCVUZfSU5JVDsKIAogCWlmIChzcmMgPT0gYnVmLT5idWYpCiAJCXRvX2ZyZWUgPSBzdHJidWZfZGV0YWNoKGJ1ZiwgTlVMTCk7Ci0Jc3RyYnVmX2luaXQoJmZtdCwgMCk7CiAJZm9yICg7OykgewogCQljb25zdCBjaGFyICpiLCAqYzsKIApAQCAtNjUsMTAgKzY0LDkgQEAKIAogCWJ1ZmZlciA9IHJlYWRfc2hhMV9maWxlKHNoYTEsIHR5cGUsIHNpemVwKTsKIAlpZiAoYnVmZmVyICYmIFNfSVNSRUcobW9kZSkpIHsKLQkJc3RydWN0IHN0cmJ1ZiBidWY7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJCXNpemVfdCBzaXplID0gMDsKIAotCQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAkJc3RyYnVmX2F0dGFjaCgmYnVmLCBidWZmZXIsICpzaXplcCwgKnNpemVwICsgMSk7CiAJCWNvbnZlcnRfdG9fd29ya2luZ190cmVlKHBhdGgsIGJ1Zi5idWYsIGJ1Zi5sZW4sICZidWYpOwogCQlpZiAoY29tbWl0KQpkaWZmIC0tZ2l0IGEvYXJtL3NoYTEuYyBiL2FybS9zaGExLmMKaW5kZXggOWUzYWUwMy4uYzYxYWQ0YSAxMDA2NDQKLS0tIGEvYXJtL3NoYTEuYworKysgYi9hcm0vc2hhMS5jCkBAIC04LDkgKzgsOSBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgInNoYTEuaCIKIAotZXh0ZXJuIHZvaWQgc2hhX3RyYW5zZm9ybSh1aW50MzJfdCAqaGFzaCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdWludDMyX3QgKlcpOworZXh0ZXJuIHZvaWQgYXJtX3NoYV90cmFuc2Zvcm0odWludDMyX3QgKmhhc2gsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVpbnQzMl90ICpXKTsKIAotdm9pZCBTSEExX0luaXQoU0hBX0NUWCAqYykKK3ZvaWQgYXJtX1NIQTFfSW5pdChhcm1fU0hBX0NUWCAqYykKIHsKIAljLT5sZW4gPSAwOwogCWMtPmhhc2hbMF0gPSAweDY3NDUyMzAxOwpAQCAtMjAsNyArMjAsNyBAQAogCWMtPmhhc2hbNF0gPSAweGMzZDJlMWYwOwogfQogCi12b2lkIFNIQTFfVXBkYXRlKFNIQV9DVFggKmMsIGNvbnN0IHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgbikKK3ZvaWQgYXJtX1NIQTFfVXBkYXRlKGFybV9TSEFfQ1RYICpjLCBjb25zdCB2b2lkICpwLCB1bnNpZ25lZCBsb25nIG4pCiB7CiAJdWludDMyX3Qgd29ya3NwYWNlWzgwXTsKIAl1bnNpZ25lZCBpbnQgcGFydGlhbDsKQEAgLTMyLDEyICszMiwxMiBAQAogCQlpZiAocGFydGlhbCkgewogCQkJZG9uZSA9IDY0IC0gcGFydGlhbDsKIAkJCW1lbWNweShjLT5idWZmZXIgKyBwYXJ0aWFsLCBwLCBkb25lKTsKLQkJCXNoYV90cmFuc2Zvcm0oYy0+aGFzaCwgYy0+YnVmZmVyLCB3b3Jrc3BhY2UpOworCQkJYXJtX3NoYV90cmFuc2Zvcm0oYy0+aGFzaCwgYy0+YnVmZmVyLCB3b3Jrc3BhY2UpOwogCQkJcGFydGlhbCA9IDA7CiAJCX0gZWxzZQogCQkJZG9uZSA9IDA7CiAJCXdoaWxlIChuID49IGRvbmUgKyA2NCkgewotCQkJc2hhX3RyYW5zZm9ybShjLT5oYXNoLCBwICsgZG9uZSwgd29ya3NwYWNlKTsKKwkJCWFybV9zaGFfdHJhbnNmb3JtKGMtPmhhc2gsIHAgKyBkb25lLCB3b3Jrc3BhY2UpOwogCQkJZG9uZSArPSA2NDsKIAkJfQogCX0gZWxzZQpAQCAtNDYsNyArNDYsNyBAQAogCQltZW1jcHkoYy0+YnVmZmVyICsgcGFydGlhbCwgcCArIGRvbmUsIG4gLSBkb25lKTsKIH0KIAotdm9pZCBTSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmhhc2gsIFNIQV9DVFggKmMpCit2b2lkIGFybV9TSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmhhc2gsIGFybV9TSEFfQ1RYICpjKQogewogCXVpbnQ2NF90IGJpdGxlbjsKIAl1aW50MzJfdCBiaXRsZW5faGksIGJpdGxlbl9sbzsKQEAgLTU3LDcgKzU3LDcgQEAKIAliaXRsZW4gPSBjLT5sZW4gPDwgMzsKIAlvZmZzZXQgPSBjLT5sZW4gJiAweDNmOwogCXBhZGxlbiA9ICgob2Zmc2V0IDwgNTYpID8gNTYgOiAoNjQgKyA1NikpIC0gb2Zmc2V0OwotCVNIQTFfVXBkYXRlKGMsIHBhZGRpbmcsIHBhZGxlbik7CisJYXJtX1NIQTFfVXBkYXRlKGMsIHBhZGRpbmcsIHBhZGxlbik7CiAKIAliaXRsZW5faGkgPSBiaXRsZW4gPj4gMzI7CiAJYml0bGVuX2xvID0gYml0bGVuICYgMHhmZmZmZmZmZjsKQEAgLTY5LDcgKzY5LDcgQEAKIAliaXRzWzVdID0gYml0bGVuX2xvID4+IDE2OwogCWJpdHNbNl0gPSBiaXRsZW5fbG8gPj4gODsKIAliaXRzWzddID0gYml0bGVuX2xvOwotCVNIQTFfVXBkYXRlKGMsIGJpdHMsIDgpOworCWFybV9TSEExX1VwZGF0ZShjLCBiaXRzLCA4KTsKIAogCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspIHsKIAkJdWludDMyX3QgdiA9IGMtPmhhc2hbaV07CmRpZmYgLS1naXQgYS9hcm0vc2hhMS5oIGIvYXJtL3NoYTEuaAppbmRleCAzOTUyNjQ2Li5iNjFiNjE4IDEwMDY0NAotLS0gYS9hcm0vc2hhMS5oCisrKyBiL2FybS9zaGExLmgKQEAgLTcsMTIgKzcsMTcgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogCi10eXBlZGVmIHN0cnVjdCBzaGFfY29udGV4dCB7Cit0eXBlZGVmIHN0cnVjdCB7CiAJdWludDY0X3QgbGVuOwogCXVpbnQzMl90IGhhc2hbNV07CiAJdW5zaWduZWQgY2hhciBidWZmZXJbNjRdOwotfSBTSEFfQ1RYOworfSBhcm1fU0hBX0NUWDsKIAotdm9pZCBTSEExX0luaXQoU0hBX0NUWCAqYyk7Ci12b2lkIFNIQTFfVXBkYXRlKFNIQV9DVFggKmMsIGNvbnN0IHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgbik7Ci12b2lkIFNIQTFfRmluYWwodW5zaWduZWQgY2hhciAqaGFzaCwgU0hBX0NUWCAqYyk7Cit2b2lkIGFybV9TSEExX0luaXQoYXJtX1NIQV9DVFggKmMpOwordm9pZCBhcm1fU0hBMV9VcGRhdGUoYXJtX1NIQV9DVFggKmMsIGNvbnN0IHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgbik7Cit2b2lkIGFybV9TSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmhhc2gsIGFybV9TSEFfQ1RYICpjKTsKKworI2RlZmluZSBnaXRfU0hBX0NUWAlhcm1fU0hBX0NUWAorI2RlZmluZSBnaXRfU0hBMV9Jbml0CWFybV9TSEExX0luaXQKKyNkZWZpbmUgZ2l0X1NIQTFfVXBkYXRlCWFybV9TSEExX1VwZGF0ZQorI2RlZmluZSBnaXRfU0hBMV9GaW5hbAlhcm1fU0hBMV9GaW5hbApkaWZmIC0tZ2l0IGEvYXJtL3NoYTFfYXJtLlMgYi9hcm0vc2hhMV9hcm0uUwppbmRleCA4YzFjYjk5Li40MWU5MjYzIDEwMDY0NAotLS0gYS9hcm0vc2hhMV9hcm0uUworKysgYi9hcm0vc2hhMV9hcm0uUwpAQCAtMTAsNyArMTAsNyBAQAogICovCiAKIAkudGV4dAotCS5nbG9ibAlzaGFfdHJhbnNmb3JtCisJLmdsb2JsCWFybV9zaGFfdHJhbnNmb3JtCiAKIC8qCiAgKiB2b2lkIHNoYV90cmFuc2Zvcm0odWludDMyX3QgKmhhc2gsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVpbnQzMl90ICpXKTsKQEAgLTE4LDcgKzE4LDcgQEAKICAqIG5vdGU6IHRoZSAiZGF0YSIgcG9pbnRlciBtYXkgYmUgdW5hbGlnbmVkLgogICovCiAKLXNoYV90cmFuc2Zvcm06Cithcm1fc2hhX3RyYW5zZm9ybToKIAogCXN0bWZkCXNwISwge3I0IC0gcjgsIGxyfQogCmRpZmYgLS1naXQgYS9icmFuY2guYyBiL2JyYW5jaC5jCmluZGV4IDZhNzUwNTcuLmIxYWM4MzcgMTAwNjQ0Ci0tLSBhL2JyYW5jaC5jCisrKyBiL2JyYW5jaC5jCkBAIC0xNzAsNSArMTcwLDYgQEAKIAl1bmxpbmsoZ2l0X3BhdGgoIk1FUkdFX0hFQUQiKSk7CiAJdW5saW5rKGdpdF9wYXRoKCJNRVJHRV9SUiIpKTsKIAl1bmxpbmsoZ2l0X3BhdGgoIk1FUkdFX01TRyIpKTsKKwl1bmxpbmsoZ2l0X3BhdGgoIk1FUkdFX01PREUiKSk7CiAJdW5saW5rKGdpdF9wYXRoKCJTUVVBU0hfTVNHIikpOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1hZGQuYyBiL2J1aWx0aW4tYWRkLmMKaW5kZXggZmMzZjk2ZS4uYWM5OGM4MyAxMDA2NDQKLS0tIGEvYnVpbHRpbi1hZGQuYworKysgYi9idWlsdGluLWFkZC5jCkBAIC04LDEwICs4LDYgQEAKICNpbmNsdWRlICJkaXIuaCIKICNpbmNsdWRlICJleGVjX2NtZC5oIgogI2luY2x1ZGUgImNhY2hlLXRyZWUuaCIKLSNpbmNsdWRlICJkaWZmLmgiCi0jaW5jbHVkZSAiZGlmZmNvcmUuaCIKLSNpbmNsdWRlICJjb21taXQuaCIKLSNpbmNsdWRlICJyZXZpc2lvbi5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCkBAIC0yMiw2ICsxOCwyNyBAQAogc3RhdGljIGludCBwYXRjaF9pbnRlcmFjdGl2ZSA9IDAsIGFkZF9pbnRlcmFjdGl2ZSA9IDA7CiBzdGF0aWMgaW50IHRha2Vfd29ya3RyZWVfY2hhbmdlczsKIAorc3RhdGljIHZvaWQgZmlsbF9wYXRoc3BlY19tYXRjaGVzKGNvbnN0IGNoYXIgKipwYXRoc3BlYywgY2hhciAqc2VlbiwgaW50IHNwZWNzKQoreworCWludCBudW1fdW5tYXRjaGVkID0gMCwgaTsKKworCS8qCisJICogU2luY2Ugd2UgYXJlIHdhbGtpbmcgdGhlIGluZGV4IGFzIGlmIHdlIHdlcmUgd2Fsa2luZyB0aGUgZGlyZWN0b3J5LAorCSAqIHdlIGhhdmUgdG8gbWFyayB0aGUgbWF0Y2hlZCBwYXRoc3BlYyBhcyBzZWVuOyBvdGhlcndpc2Ugd2Ugd2lsbAorCSAqIG1pc3Rha2VubHkgdGhpbmsgdGhhdCB0aGUgdXNlciBnYXZlIGEgcGF0aHNwZWMgdGhhdCBkaWQgbm90IG1hdGNoCisJICogYW55dGhpbmcuCisJICovCisJZm9yIChpID0gMDsgaSA8IHNwZWNzOyBpKyspCisJCWlmICghc2VlbltpXSkKKwkJCW51bV91bm1hdGNoZWQrKzsKKwlpZiAoIW51bV91bm1hdGNoZWQpCisJCXJldHVybjsKKwlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKKwkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKKwkJbWF0Y2hfcGF0aHNwZWMocGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgMCwgc2Vlbik7CisJfQorfQorCiBzdGF0aWMgdm9pZCBwcnVuZV9kaXJlY3Rvcnkoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqKnBhdGhzcGVjLCBpbnQgcHJlZml4KQogewogCWNoYXIgKnNlZW47CkBAIC00MSw2ICs1OCw3IEBACiAJCQkqZHN0KysgPSBlbnRyeTsKIAl9CiAJZGlyLT5uciA9IGRzdCAtIGRpci0+ZW50cmllczsKKwlmaWxsX3BhdGhzcGVjX21hdGNoZXMocGF0aHNwZWMsIHNlZW4sIHNwZWNzKTsKIAogCWZvciAoaSA9IDA7IGkgPCBzcGVjczsgaSsrKSB7CiAJCWlmICghc2VlbltpXSAmJiAhZmlsZV9leGlzdHMocGF0aHNwZWNbaV0pKQpAQCAtNTAsNiArNjgsMzMgQEAKICAgICAgICAgZnJlZShzZWVuKTsKIH0KIAorc3RhdGljIHZvaWQgdHJlYXRfZ2l0bGlua3MoY29uc3QgY2hhciAqKnBhdGhzcGVjKQoreworCWludCBpOworCisJaWYgKCFwYXRoc3BlYyB8fCAhKnBhdGhzcGVjKQorCQlyZXR1cm47CisKKwlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKKwkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKKwkJaWYgKFNfSVNHSVRMSU5LKGNlLT5jZV9tb2RlKSkgeworCQkJaW50IGxlbiA9IGNlX25hbWVsZW4oY2UpLCBqOworCQkJZm9yIChqID0gMDsgcGF0aHNwZWNbal07IGorKykgeworCQkJCWludCBsZW4yID0gc3RybGVuKHBhdGhzcGVjW2pdKTsKKwkJCQlpZiAobGVuMiA8PSBsZW4gfHwgcGF0aHNwZWNbal1bbGVuXSAhPSAnLycgfHwKKwkJCQkgICAgbWVtY21wKGNlLT5uYW1lLCBwYXRoc3BlY1tqXSwgbGVuKSkKKwkJCQkJY29udGludWU7CisJCQkJaWYgKGxlbjIgPT0gbGVuICsgMSkKKwkJCQkJLyogc3RyaXAgdHJhaWxpbmcgc2xhc2ggKi8KKwkJCQkJcGF0aHNwZWNbal0gPSB4c3RybmR1cChjZS0+bmFtZSwgbGVuKTsKKwkJCQllbHNlCisJCQkJCWRpZSAoIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIiwKKwkJCQkJCXBhdGhzcGVjW2pdLCBsZW4sIGNlLT5uYW1lKTsKKwkJCX0KKwkJfQorCX0KK30KKwogc3RhdGljIHZvaWQgZmlsbF9kaXJlY3Rvcnkoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqKnBhdGhzcGVjLAogCQlpbnQgaWdub3JlZF90b28pCiB7CkBAIC03OSw1OSArMTI0LDYgQEAKIAkJcHJ1bmVfZGlyZWN0b3J5KGRpciwgcGF0aHNwZWMsIGJhc2VsZW4pOwogfQogCi1zdHJ1Y3QgdXBkYXRlX2NhbGxiYWNrX2RhdGEKLXsKLQlpbnQgZmxhZ3M7Ci0JaW50IGFkZF9lcnJvcnM7Ci19OwotCi1zdGF0aWMgdm9pZCB1cGRhdGVfY2FsbGJhY2soc3RydWN0IGRpZmZfcXVldWVfc3RydWN0ICpxLAotCQkJICAgIHN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdCwgdm9pZCAqY2JkYXRhKQotewotCWludCBpOwotCXN0cnVjdCB1cGRhdGVfY2FsbGJhY2tfZGF0YSAqZGF0YSA9IGNiZGF0YTsKLQotCWZvciAoaSA9IDA7IGkgPCBxLT5ucjsgaSsrKSB7Ci0JCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwID0gcS0+cXVldWVbaV07Ci0JCWNvbnN0IGNoYXIgKnBhdGggPSBwLT5vbmUtPnBhdGg7Ci0JCXN3aXRjaCAocC0+c3RhdHVzKSB7Ci0JCWRlZmF1bHQ6Ci0JCQlkaWUoInVuZXhwZWN0ZWQgZGlmZiBzdGF0dXMgJWMiLCBwLT5zdGF0dXMpOwotCQljYXNlIERJRkZfU1RBVFVTX1VOTUVSR0VEOgotCQljYXNlIERJRkZfU1RBVFVTX01PRElGSUVEOgotCQljYXNlIERJRkZfU1RBVFVTX1RZUEVfQ0hBTkdFRDoKLQkJCWlmIChhZGRfZmlsZV90b19jYWNoZShwYXRoLCBkYXRhLT5mbGFncykpIHsKLQkJCQlpZiAoIShkYXRhLT5mbGFncyAmIEFERF9DQUNIRV9JR05PUkVfRVJST1JTKSkKLQkJCQkJZGllKCJ1cGRhdGluZyBmaWxlcyBmYWlsZWQiKTsKLQkJCQlkYXRhLT5hZGRfZXJyb3JzKys7Ci0JCQl9Ci0JCQlicmVhazsKLQkJY2FzZSBESUZGX1NUQVRVU19ERUxFVEVEOgotCQkJaWYgKCEoZGF0YS0+ZmxhZ3MgJiBBRERfQ0FDSEVfUFJFVEVORCkpCi0JCQkJcmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShwYXRoKTsKLQkJCWlmIChkYXRhLT5mbGFncyAmIChBRERfQ0FDSEVfUFJFVEVORHxBRERfQ0FDSEVfVkVSQk9TRSkpCi0JCQkJcHJpbnRmKCJyZW1vdmUgJyVzJ1xuIiwgcGF0aCk7Ci0JCQlicmVhazsKLQkJfQotCX0KLX0KLQotaW50IGFkZF9maWxlc190b19jYWNoZShjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKipwYXRoc3BlYywgaW50IGZsYWdzKQotewotCXN0cnVjdCB1cGRhdGVfY2FsbGJhY2tfZGF0YSBkYXRhOwotCXN0cnVjdCByZXZfaW5mbyByZXY7Ci0JaW5pdF9yZXZpc2lvbnMoJnJldiwgcHJlZml4KTsKLQlzZXR1cF9yZXZpc2lvbnMoMCwgTlVMTCwgJnJldiwgTlVMTCk7Ci0JcmV2LnBydW5lX2RhdGEgPSBwYXRoc3BlYzsKLQlyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfQ0FMTEJBQ0s7Ci0JcmV2LmRpZmZvcHQuZm9ybWF0X2NhbGxiYWNrID0gdXBkYXRlX2NhbGxiYWNrOwotCWRhdGEuZmxhZ3MgPSBmbGFnczsKLQlkYXRhLmFkZF9lcnJvcnMgPSAwOwotCXJldi5kaWZmb3B0LmZvcm1hdF9jYWxsYmFja19kYXRhID0gJmRhdGE7Ci0JcnVuX2RpZmZfZmlsZXMoJnJldiwgRElGRl9SQUNZX0lTX01PRElGSUVEKTsKLQlyZXR1cm4gISFkYXRhLmFkZF9lcnJvcnM7Ci19Ci0KIHN0YXRpYyB2b2lkIHJlZnJlc2goaW50IHZlcmJvc2UsIGNvbnN0IGNoYXIgKipwYXRoc3BlYykKIHsKIAljaGFyICpzZWVuOwpAQCAtMTUzLDYgKzE0NSwxNiBAQAogewogCWNvbnN0IGNoYXIgKipwYXRoc3BlYyA9IGdldF9wYXRoc3BlYyhwcmVmaXgsIGFyZ3YpOwogCisJaWYgKHBhdGhzcGVjKSB7CisJCWNvbnN0IGNoYXIgKipwOworCQlmb3IgKHAgPSBwYXRoc3BlYzsgKnA7IHArKykgeworCQkJaWYgKGhhc19zeW1saW5rX2xlYWRpbmdfcGF0aChzdHJsZW4oKnApLCAqcCkpIHsKKwkJCQlpbnQgbGVuID0gcHJlZml4ID8gc3RybGVuKHByZWZpeCkgOiAwOworCQkJCWRpZSgiJyVzJyBpcyBiZXlvbmQgYSBzeW1ib2xpYyBsaW5rIiwgKnAgKyBsZW4pOworCQkJfQorCQl9CisJfQorCiAJcmV0dXJuIHBhdGhzcGVjOwogfQogCkBAIC0xOTEsNyArMTkzLDcgQEAKICJUaGUgZm9sbG93aW5nIHBhdGhzIGFyZSBpZ25vcmVkIGJ5IG9uZSBvZiB5b3VyIC5naXRpZ25vcmUgZmlsZXM6XG4iOwogCiBzdGF0aWMgaW50IHZlcmJvc2UgPSAwLCBzaG93X29ubHkgPSAwLCBpZ25vcmVkX3RvbyA9IDAsIHJlZnJlc2hfb25seSA9IDA7Ci1zdGF0aWMgaW50IGlnbm9yZV9hZGRfZXJyb3JzLCBhZGRyZW1vdmU7CitzdGF0aWMgaW50IGlnbm9yZV9hZGRfZXJyb3JzLCBhZGRyZW1vdmUsIGludGVudF90b19hZGQ7CiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fYWRkX29wdGlvbnNbXSA9IHsKIAlPUFRfX0RSWV9SVU4oJnNob3dfb25seSksCkBAIC0yMDEsNiArMjAzLDcgQEAKIAlPUFRfQk9PTEVBTigncCcsICJwYXRjaCIsICZwYXRjaF9pbnRlcmFjdGl2ZSwgImludGVyYWN0aXZlIHBhdGNoaW5nIiksCiAJT1BUX0JPT0xFQU4oJ2YnLCAiZm9yY2UiLCAmaWdub3JlZF90b28sICJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiKSwKIAlPUFRfQk9PTEVBTigndScsICJ1cGRhdGUiLCAmdGFrZV93b3JrdHJlZV9jaGFuZ2VzLCAidXBkYXRlIHRyYWNrZWQgZmlsZXMiKSwKKwlPUFRfQk9PTEVBTignTicsICJpbnRlbnQtdG8tYWRkIiwgJmludGVudF90b19hZGQsICJyZWNvcmQgb25seSB0aGUgZmFjdCB0aGF0IHRoZSBwYXRoIHdpbGwgYmUgYWRkZWQgbGF0ZXIiKSwKIAlPUFRfQk9PTEVBTignQScsICJhbGwiLCAmYWRkcmVtb3ZlLCAiYWRkIGFsbCwgbm90aWNpbmcgcmVtb3ZhbCBvZiB0cmFja2VkIGZpbGVzIiksCiAJT1BUX0JPT0xFQU4oIDAgLCAicmVmcmVzaCIsICZyZWZyZXNoX29ubHksICJkb24ndCBhZGQsIG9ubHkgcmVmcmVzaCB0aGUgaW5kZXgiKSwKIAlPUFRfQk9PTEVBTiggMCAsICJpZ25vcmUtZXJyb3JzIiwgJmlnbm9yZV9hZGRfZXJyb3JzLCAianVzdCBza2lwIGZpbGVzIHdoaWNoIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIG9mIGVycm9ycyIpLApAQCAtMjU4LDcgKzI2MSw3IEBACiAKIAlpZiAoYWRkcmVtb3ZlICYmIHRha2Vfd29ya3RyZWVfY2hhbmdlcykKIAkJZGllKCItQSBhbmQgLXUgYXJlIG11dHVhbGx5IGluY29tcGF0aWJsZSIpOwotCWlmIChhZGRyZW1vdmUgJiYgIWFyZ2MpIHsKKwlpZiAoKGFkZHJlbW92ZSB8fCB0YWtlX3dvcmt0cmVlX2NoYW5nZXMpICYmICFhcmdjKSB7CiAJCXN0YXRpYyBjb25zdCBjaGFyICpoZXJlWzJdID0geyAiLiIsIE5VTEwgfTsKIAkJYXJnYyA9IDE7CiAJCWFyZ3YgPSBoZXJlOwpAQCAtMjcxLDMzICsyNzQsMzIgQEAKIAogCWZsYWdzID0gKCh2ZXJib3NlID8gQUREX0NBQ0hFX1ZFUkJPU0UgOiAwKSB8CiAJCSAoc2hvd19vbmx5ID8gQUREX0NBQ0hFX1BSRVRFTkQgOiAwKSB8Ci0JCSAoaWdub3JlX2FkZF9lcnJvcnMgPyBBRERfQ0FDSEVfSUdOT1JFX0VSUk9SUyA6IDApKTsKKwkJIChpbnRlbnRfdG9fYWRkID8gQUREX0NBQ0hFX0lOVEVOVCA6IDApIHwKKwkJIChpZ25vcmVfYWRkX2Vycm9ycyA/IEFERF9DQUNIRV9JR05PUkVfRVJST1JTIDogMCkgfAorCQkgKCEoYWRkcmVtb3ZlIHx8IHRha2Vfd29ya3RyZWVfY2hhbmdlcykKKwkJICA/IEFERF9DQUNIRV9JR05PUkVfUkVNT1ZBTCA6IDApKTsKIAogCWlmIChyZXF1aXJlX3BhdGhzcGVjICYmIGFyZ2MgPT0gMCkgewogCQlmcHJpbnRmKHN0ZGVyciwgIk5vdGhpbmcgc3BlY2lmaWVkLCBub3RoaW5nIGFkZGVkLlxuIik7CiAJCWZwcmludGYoc3RkZXJyLCAiTWF5YmUgeW91IHdhbnRlZCB0byBzYXkgJ2dpdCBhZGQgLic/XG4iKTsKIAkJcmV0dXJuIDA7CiAJfQotCXBhdGhzcGVjID0gZ2V0X3BhdGhzcGVjKHByZWZpeCwgYXJndik7Ci0KLQkvKgotCSAqIElmIHdlIGFyZSBhZGRpbmcgbmV3IGZpbGVzLCB3ZSBuZWVkIHRvIHNjYW4gdGhlIHdvcmtpbmcKLQkgKiB0cmVlIHRvIGZpbmQgdGhlIG9uZXMgdGhhdCBtYXRjaCBwYXRoc3BlY3M7IHRoaXMgbmVlZHMKLQkgKiB0byBiZSBkb25lIGJlZm9yZSB3ZSByZWFkIHRoZSBpbmRleC4KLQkgKi8KLQlpZiAoYWRkX25ld19maWxlcykKLQkJZmlsbF9kaXJlY3RvcnkoJmRpciwgcGF0aHNwZWMsIGlnbm9yZWRfdG9vKTsKKwlwYXRoc3BlYyA9IHZhbGlkYXRlX3BhdGhzcGVjKGFyZ2MsIGFyZ3YsIHByZWZpeCk7CiAKIAlpZiAocmVhZF9jYWNoZSgpIDwgMCkKIAkJZGllKCJpbmRleCBmaWxlIGNvcnJ1cHQiKTsKKwl0cmVhdF9naXRsaW5rcyhwYXRoc3BlYyk7CisKKwlpZiAoYWRkX25ld19maWxlcykKKwkJLyogVGhpcyBwaWNrcyB1cCB0aGUgcGF0aHMgdGhhdCBhcmUgbm90IHRyYWNrZWQgKi8KKwkJZmlsbF9kaXJlY3RvcnkoJmRpciwgcGF0aHNwZWMsIGlnbm9yZWRfdG9vKTsKIAogCWlmIChyZWZyZXNoX29ubHkpIHsKIAkJcmVmcmVzaCh2ZXJib3NlLCBwYXRoc3BlYyk7CiAJCWdvdG8gZmluaXNoOwogCX0KIAotCWlmICh0YWtlX3dvcmt0cmVlX2NoYW5nZXMgfHwgYWRkcmVtb3ZlKQotCQlleGl0X3N0YXR1cyB8PSBhZGRfZmlsZXNfdG9fY2FjaGUocHJlZml4LCBwYXRoc3BlYywgZmxhZ3MpOworCWV4aXRfc3RhdHVzIHw9IGFkZF9maWxlc190b19jYWNoZShwcmVmaXgsIHBhdGhzcGVjLCBmbGFncyk7CiAKIAlpZiAoYWRkX25ld19maWxlcykKIAkJZXhpdF9zdGF0dXMgfD0gYWRkX2ZpbGVzKCZkaXIsIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tYXBwbHkuYyBiL2J1aWx0aW4tYXBwbHkuYwppbmRleCA3YTFmZjA0Li41OGQ5OTg1IDEwMDY0NAotLS0gYS9idWlsdGluLWFwcGx5LmMKKysrIGIvYnVpbHRpbi1hcHBseS5jCkBAIC0zMjEsMTMgKzMyMSwxMiBAQAogCWNvbnN0IGNoYXIgKnN0YXJ0ID0gbGluZTsKIAogCWlmICgqbGluZSA9PSAnIicpIHsKLQkJc3RydWN0IHN0cmJ1ZiBuYW1lOworCQlzdHJ1Y3Qgc3RyYnVmIG5hbWUgPSBTVFJCVUZfSU5JVDsKIAogCQkvKgogCQkgKiBQcm9wb3NlZCAibmV3LXN0eWxlIiBHTlUgcGF0Y2gvZGlmZiBmb3JtYXQ7IHNlZQogCQkgKiBodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWdpdCZtPTExMjkyNzMxNjQwODY5MCZ3PTIKIAkJICovCi0JCXN0cmJ1Zl9pbml0KCZuYW1lLCAwKTsKIAkJaWYgKCF1bnF1b3RlX2Nfc3R5bGUoJm5hbWUsIGxpbmUsIE5VTEwpKSB7CiAJCQljaGFyICpjcDsKIApAQCAtNjMxLDcgKzYzMCw3IEBACiAJbWVtY3B5KHBhdGNoLT5uZXdfc2hhMV9wcmVmaXgsIGxpbmUsIGxlbik7CiAJcGF0Y2gtPm5ld19zaGExX3ByZWZpeFtsZW5dID0gMDsKIAlpZiAoKnB0ciA9PSAnICcpCi0JCXBhdGNoLT5uZXdfbW9kZSA9IHBhdGNoLT5vbGRfbW9kZSA9IHN0cnRvdWwocHRyKzEsIE5VTEwsIDgpOworCQlwYXRjaC0+b2xkX21vZGUgPSBzdHJ0b3VsKHB0cisxLCBOVUxMLCA4KTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNjc1LDExICs2NzQsOCBAQAogCiAJaWYgKCpsaW5lID09ICciJykgewogCQljb25zdCBjaGFyICpjcDsKLQkJc3RydWN0IHN0cmJ1ZiBmaXJzdDsKLQkJc3RydWN0IHN0cmJ1ZiBzcDsKLQotCQlzdHJidWZfaW5pdCgmZmlyc3QsIDApOwotCQlzdHJidWZfaW5pdCgmc3AsIDApOworCQlzdHJ1Y3Qgc3RyYnVmIGZpcnN0ID0gU1RSQlVGX0lOSVQ7CisJCXN0cnVjdCBzdHJidWYgc3AgPSBTVFJCVUZfSU5JVDsKIAogCQlpZiAodW5xdW90ZV9jX3N0eWxlKCZmaXJzdCwgbGluZSwgJnNlY29uZCkpCiAJCQlnb3RvIGZyZWVfYW5kX2ZhaWwxOwpAQCAtNzQxLDEwICs3MzcsOSBAQAogCSAqLwogCWZvciAoc2Vjb25kID0gbmFtZTsgc2Vjb25kIDwgbGluZSArIGxsZW47IHNlY29uZCsrKSB7CiAJCWlmICgqc2Vjb25kID09ICciJykgewotCQkJc3RydWN0IHN0cmJ1ZiBzcDsKKwkJCXN0cnVjdCBzdHJidWYgc3AgPSBTVFJCVUZfSU5JVDsKIAkJCWNvbnN0IGNoYXIgKm5wOwogCi0JCQlzdHJidWZfaW5pdCgmc3AsIDApOwogCQkJaWYgKHVucXVvdGVfY19zdHlsZSgmc3AsIHNlY29uZCwgTlVMTCkpCiAJCQkJZ290byBmcmVlX2FuZF9mYWlsMjsKIApAQCAtMTI1OCw4ICsxMjUzLDkgQEAKIAlzdHJlYW0uYXZhaWxfaW4gPSBzaXplOwogCXN0cmVhbS5uZXh0X291dCA9IG91dCA9IHhtYWxsb2MoaW5mbGF0ZWRfc2l6ZSk7CiAJc3RyZWFtLmF2YWlsX291dCA9IGluZmxhdGVkX3NpemU7Ci0JaW5mbGF0ZUluaXQoJnN0cmVhbSk7Ci0Jc3QgPSBpbmZsYXRlKCZzdHJlYW0sIFpfRklOSVNIKTsKKwlnaXRfaW5mbGF0ZV9pbml0KCZzdHJlYW0pOworCXN0ID0gZ2l0X2luZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpOworCWdpdF9pbmZsYXRlX2VuZCgmc3RyZWFtKTsKIAlpZiAoKHN0ICE9IFpfU1RSRUFNX0VORCkgfHwgc3RyZWFtLnRvdGFsX291dCAhPSBpbmZsYXRlZF9zaXplKSB7CiAJCWZyZWUob3V0KTsKIAkJcmV0dXJuIE5VTEw7CkBAIC0xNTE1LDExICsxNTExLDEwIEBACiAKIHN0YXRpYyB2b2lkIHNob3dfc3RhdHMoc3RydWN0IHBhdGNoICpwYXRjaCkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIHFuYW1lOworCXN0cnVjdCBzdHJidWYgcW5hbWUgPSBTVFJCVUZfSU5JVDsKIAljaGFyICpjcCA9IHBhdGNoLT5uZXdfbmFtZSA/IHBhdGNoLT5uZXdfbmFtZSA6IHBhdGNoLT5vbGRfbmFtZTsKIAlpbnQgbWF4LCBhZGQsIGRlbDsKIAotCXN0cmJ1Zl9pbml0KCZxbmFtZSwgMCk7CiAJcXVvdGVfY19zdHlsZShjcCwgJnFuYW1lLCBOVUxMLCAwKTsKIAogCS8qCkBAIC0xNTY1LDEwICsxNTYwLDggQEAKIHsKIAlzd2l0Y2ggKHN0LT5zdF9tb2RlICYgU19JRk1UKSB7CiAJY2FzZSBTX0lGTE5LOgotCQlzdHJidWZfZ3JvdyhidWYsIHN0LT5zdF9zaXplKTsKLQkJaWYgKHJlYWRsaW5rKHBhdGgsIGJ1Zi0+YnVmLCBzdC0+c3Rfc2l6ZSkgIT0gc3QtPnN0X3NpemUpCi0JCQlyZXR1cm4gLTE7Ci0JCXN0cmJ1Zl9zZXRsZW4oYnVmLCBzdC0+c3Rfc2l6ZSk7CisJCWlmIChzdHJidWZfcmVhZGxpbmsoYnVmLCBwYXRoLCBzdC0+c3Rfc2l6ZSkgPCAwKQorCQkJcmV0dXJuIGVycm9yKCJ1bmFibGUgdG8gcmVhZCBzeW1saW5rICVzIiwgcGF0aCk7CiAJCXJldHVybiAwOwogCWNhc2UgU19JRlJFRzoKIAkJaWYgKHN0cmJ1Zl9yZWFkX2ZpbGUoYnVmLCBwYXRoLCBzdC0+c3Rfc2l6ZSkgIT0gc3QtPnN0X3NpemUpCkBAIC0yMjk5LDE0ICsyMjkyLDEyIEBACiAKIHN0YXRpYyBpbnQgYXBwbHlfZGF0YShzdHJ1Y3QgcGF0Y2ggKnBhdGNoLCBzdHJ1Y3Qgc3RhdCAqc3QsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3QgaW1hZ2UgaW1hZ2U7CiAJc2l6ZV90IGxlbjsKIAljaGFyICppbWc7CiAJc3RydWN0IHBhdGNoICp0cGF0Y2g7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKLQogCWlmICghKHBhdGNoLT5pc19jb3B5IHx8IHBhdGNoLT5pc19yZW5hbWUpICYmCiAJICAgICgodHBhdGNoID0gaW5fZm5fdGFibGUocGF0Y2gtPm9sZF9uYW1lKSkgIT0gTlVMTCkpIHsKIAkJaWYgKHRwYXRjaCA9PSAoc3RydWN0IHBhdGNoICopIC0xKSB7CkBAIC0yNDU3LDYgKzI0NDgsOCBAQAogCWlmIChzdF9tb2RlICE9IHBhdGNoLT5vbGRfbW9kZSkKIAkJZnByaW50ZihzdGRlcnIsICJ3YXJuaW5nOiAlcyBoYXMgdHlwZSAlbywgZXhwZWN0ZWQgJW9cbiIsCiAJCQlvbGRfbmFtZSwgc3RfbW9kZSwgcGF0Y2gtPm9sZF9tb2RlKTsKKwlpZiAoIXBhdGNoLT5uZXdfbW9kZSAmJiAhcGF0Y2gtPmlzX2RlbGV0ZSkKKwkJcGF0Y2gtPm5ld19tb2RlID0gc3RfbW9kZTsKIAlyZXR1cm4gMDsKIAogIGlzX25ldzoKQEAgLTI3ODYsNyArMjc3OSw3IEBACiBzdGF0aWMgaW50IHRyeV9jcmVhdGVfZmlsZShjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25lZCBpbnQgbW9kZSwgY29uc3QgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUpCiB7CiAJaW50IGZkOwotCXN0cnVjdCBzdHJidWYgbmJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIG5idWYgPSBTVFJCVUZfSU5JVDsKIAogCWlmIChTX0lTR0lUTElOSyhtb2RlKSkgewogCQlzdHJ1Y3Qgc3RhdCBzdDsKQEAgLTI4MDUsNyArMjc5OCw2IEBACiAJaWYgKGZkIDwgMCkKIAkJcmV0dXJuIC0xOwogCi0Jc3RyYnVmX2luaXQoJm5idWYsIDApOwogCWlmIChjb252ZXJ0X3RvX3dvcmtpbmdfdHJlZShwYXRoLCBidWYsIHNpemUsICZuYnVmKSkgewogCQlzaXplID0gbmJ1Zi5sZW47CiAJCWJ1ZiAgPSBuYnVmLmJ1ZjsKQEAgLTI5OTYsMjkgKzI5ODgsNDUgQEAKIAogc3RhdGljIHN0cnVjdCBsb2NrX2ZpbGUgbG9ja19maWxlOwogCi1zdGF0aWMgc3RydWN0IGV4Y2x1ZGVzIHsKLQlzdHJ1Y3QgZXhjbHVkZXMgKm5leHQ7Ci0JY29uc3QgY2hhciAqcGF0aDsKLX0gKmV4Y2x1ZGVzOworc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCBsaW1pdF9ieV9uYW1lOworc3RhdGljIGludCBoYXNfaW5jbHVkZTsKK3N0YXRpYyB2b2lkIGFkZF9uYW1lX2xpbWl0KGNvbnN0IGNoYXIgKm5hbWUsIGludCBleGNsdWRlKQoreworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdDsKKworCWl0ID0gc3RyaW5nX2xpc3RfYXBwZW5kKG5hbWUsICZsaW1pdF9ieV9uYW1lKTsKKwlpdC0+dXRpbCA9IGV4Y2x1ZGUgPyBOVUxMIDogKHZvaWQgKikgMTsKK30KIAogc3RhdGljIGludCB1c2VfcGF0Y2goc3RydWN0IHBhdGNoICpwKQogewogCWNvbnN0IGNoYXIgKnBhdGhuYW1lID0gcC0+bmV3X25hbWUgPyBwLT5uZXdfbmFtZSA6IHAtPm9sZF9uYW1lOwotCXN0cnVjdCBleGNsdWRlcyAqeCA9IGV4Y2x1ZGVzOwotCXdoaWxlICh4KSB7Ci0JCWlmIChmbm1hdGNoKHgtPnBhdGgsIHBhdGhuYW1lLCAwKSA9PSAwKQotCQkJcmV0dXJuIDA7Ci0JCXggPSB4LT5uZXh0OwotCX0KKwlpbnQgaTsKKworCS8qIFBhdGhzIG91dHNpZGUgYXJlIG5vdCB0b3VjaGVkIHJlZ2FyZGxlc3Mgb2YgIi0taW5jbHVkZSIgKi8KIAlpZiAoMCA8IHByZWZpeF9sZW5ndGgpIHsKIAkJaW50IHBhdGhsZW4gPSBzdHJsZW4ocGF0aG5hbWUpOwogCQlpZiAocGF0aGxlbiA8PSBwcmVmaXhfbGVuZ3RoIHx8CiAJCSAgICBtZW1jbXAocHJlZml4LCBwYXRobmFtZSwgcHJlZml4X2xlbmd0aCkpCiAJCQlyZXR1cm4gMDsKIAl9Ci0JcmV0dXJuIDE7CisKKwkvKiBTZWUgaWYgaXQgbWF0Y2hlcyBhbnkgb2YgZXhjbHVkZS9pbmNsdWRlIHJ1bGUgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbGltaXRfYnlfbmFtZS5ucjsgaSsrKSB7CisJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdCA9ICZsaW1pdF9ieV9uYW1lLml0ZW1zW2ldOworCQlpZiAoIWZubWF0Y2goaXQtPnN0cmluZywgcGF0aG5hbWUsIDApKQorCQkJcmV0dXJuIChpdC0+dXRpbCAhPSBOVUxMKTsKKwl9CisKKwkvKgorCSAqIElmIHdlIGhhZCBhbnkgaW5jbHVkZSwgYSBwYXRoIHRoYXQgZG9lcyBub3QgbWF0Y2ggYW55IHJ1bGUgaXMKKwkgKiBub3QgdXNlZC4gIE90aGVyd2lzZSwgd2Ugc2F3IGJ1bmNoIG9mIGV4Y2x1ZGUgcnVsZXMgKG9yIG5vbmUpCisJICogYW5kIHN1Y2ggYSBwYXRoIGlzIHVzZWQuCisJICovCisJcmV0dXJuICFoYXNfaW5jbHVkZTsKIH0KIAorCiBzdGF0aWMgdm9pZCBwcmVmaXhfb25lKGNoYXIgKipuYW1lKQogewogCWNoYXIgKm9sZF9uYW1lID0gKm5hbWU7CkBAIC0zMDUxLDEzICszMDU5LDEyIEBACiBzdGF0aWMgaW50IGFwcGx5X3BhdGNoKGludCBmZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBvcHRpb25zKQogewogCXNpemVfdCBvZmZzZXQ7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3QgcGF0Y2ggKmxpc3QgPSBOVUxMLCAqKmxpc3RwID0gJmxpc3Q7CiAJaW50IHNraXBwZWRfcGF0Y2ggPSAwOwogCiAJLyogRklYTUUgLSBtZW1vcnkgbGVhayB3aGVuIHVzaW5nIG11bHRpcGxlIHBhdGNoIGZpbGVzIGFzIGlucHV0cyAqLwogCW1lbXNldCgmZm5fdGFibGUsIDAsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAlwYXRjaF9pbnB1dF9maWxlID0gZmlsZW5hbWU7CiAJcmVhZF9wYXRjaF9maWxlKCZidWYsIGZkKTsKIAlvZmZzZXQgPSAwOwpAQCAtMzE1OSwxMCArMzE2NiwxMiBAQAogCQkJY29udGludWU7CiAJCX0KIAkJaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1leGNsdWRlPSIpKSB7Ci0JCQlzdHJ1Y3QgZXhjbHVkZXMgKnggPSB4bWFsbG9jKHNpemVvZigqeCkpOwotCQkJeC0+cGF0aCA9IGFyZyArIDEwOwotCQkJeC0+bmV4dCA9IGV4Y2x1ZGVzOwotCQkJZXhjbHVkZXMgPSB4OworCQkJYWRkX25hbWVfbGltaXQoYXJnICsgMTAsIDEpOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1pbmNsdWRlPSIpKSB7CisJCQlhZGRfbmFtZV9saW1pdChhcmcgKyAxMCwgMCk7CisJCQloYXNfaW5jbHVkZSA9IDE7CiAJCQljb250aW51ZTsKIAkJfQogCQlpZiAoIXByZWZpeGNtcChhcmcsICItcCIpKSB7CmRpZmYgLS1naXQgYS9idWlsdGluLWJsYW1lLmMgYi9idWlsdGluLWJsYW1lLmMKaW5kZXggMTAxYzQxNi4uYWFlMTRlZiAxMDA2NDQKLS0tIGEvYnVpbHRpbi1ibGFtZS5jCisrKyBiL2J1aWx0aW4tYmxhbWUuYwpAQCAtNDQzLDEzNSArNDQzLDYgQEAKIH0KIAogLyoKLSAqIFBhcnNpbmcgb2YgcGF0Y2ggY2h1bmtzLi4uCi0gKi8KLXN0cnVjdCBjaHVuayB7Ci0JLyogbGluZSBudW1iZXIgaW4gcG9zdGltYWdlOyB1cCB0byBidXQgbm90IGluY2x1ZGluZyB0aGlzCi0JICogbGluZSBpcyB0aGUgc2FtZSBhcyBwcmVpbWFnZQotCSAqLwotCWludCBzYW1lOwotCi0JLyogcHJlaW1hZ2UgbGluZSBudW1iZXIgYWZ0ZXIgdGhpcyBjaHVuayAqLwotCWludCBwX25leHQ7Ci0KLQkvKiBwb3N0aW1hZ2UgbGluZSBudW1iZXIgYWZ0ZXIgdGhpcyBjaHVuayAqLwotCWludCB0X25leHQ7Ci19OwotCi1zdHJ1Y3QgcGF0Y2ggewotCXN0cnVjdCBjaHVuayAqY2h1bmtzOwotCWludCBudW07Ci19OwotCi1zdHJ1Y3QgYmxhbWVfZGlmZl9zdGF0ZSB7Ci0Jc3RydWN0IHhkaWZmX2VtaXRfc3RhdGUgeG07Ci0Jc3RydWN0IHBhdGNoICpyZXQ7Ci0JdW5zaWduZWQgaHVua19wb3N0X2NvbnRleHQ7Ci0JdW5zaWduZWQgaHVua19pbl9wcmVfY29udGV4dCA6IDE7Ci19OwotCi1zdGF0aWMgdm9pZCBwcm9jZXNzX3VfZGlmZih2b2lkICpzdGF0ZV8sIGNoYXIgKmxpbmUsIHVuc2lnbmVkIGxvbmcgbGVuKQotewotCXN0cnVjdCBibGFtZV9kaWZmX3N0YXRlICpzdGF0ZSA9IHN0YXRlXzsKLQlzdHJ1Y3QgY2h1bmsgKmNodW5rOwotCWludCBvZmYxLCBvZmYyLCBsZW4xLCBsZW4yLCBudW07Ci0KLQludW0gPSBzdGF0ZS0+cmV0LT5udW07Ci0JaWYgKGxlbiA8IDQgfHwgbGluZVswXSAhPSAnQCcgfHwgbGluZVsxXSAhPSAnQCcpIHsKLQkJaWYgKHN0YXRlLT5odW5rX2luX3ByZV9jb250ZXh0ICYmIGxpbmVbMF0gPT0gJyAnKQotCQkJc3RhdGUtPnJldC0+Y2h1bmtzW251bSAtIDFdLnNhbWUrKzsKLQkJZWxzZSB7Ci0JCQlzdGF0ZS0+aHVua19pbl9wcmVfY29udGV4dCA9IDA7Ci0JCQlpZiAobGluZVswXSA9PSAnICcpCi0JCQkJc3RhdGUtPmh1bmtfcG9zdF9jb250ZXh0Kys7Ci0JCQllbHNlCi0JCQkJc3RhdGUtPmh1bmtfcG9zdF9jb250ZXh0ID0gMDsKLQkJfQotCQlyZXR1cm47Ci0JfQotCi0JaWYgKG51bSAmJiBzdGF0ZS0+aHVua19wb3N0X2NvbnRleHQpIHsKLQkJY2h1bmsgPSAmc3RhdGUtPnJldC0+Y2h1bmtzW251bSAtIDFdOwotCQljaHVuay0+cF9uZXh0IC09IHN0YXRlLT5odW5rX3Bvc3RfY29udGV4dDsKLQkJY2h1bmstPnRfbmV4dCAtPSBzdGF0ZS0+aHVua19wb3N0X2NvbnRleHQ7Ci0JfQotCXN0YXRlLT5yZXQtPm51bSA9ICsrbnVtOwotCXN0YXRlLT5yZXQtPmNodW5rcyA9IHhyZWFsbG9jKHN0YXRlLT5yZXQtPmNodW5rcywKLQkJCQkgICAgICBzaXplb2Yoc3RydWN0IGNodW5rKSAqIG51bSk7Ci0JY2h1bmsgPSAmc3RhdGUtPnJldC0+Y2h1bmtzW251bSAtIDFdOwotCWlmIChwYXJzZV9odW5rX2hlYWRlcihsaW5lLCBsZW4sICZvZmYxLCAmbGVuMSwgJm9mZjIsICZsZW4yKSkgewotCQlzdGF0ZS0+cmV0LT5udW0tLTsKLQkJcmV0dXJuOwotCX0KLQotCS8qIExpbmUgbnVtYmVycyBpbiBwYXRjaCBvdXRwdXQgYXJlIG9uZSBiYXNlZC4gKi8KLQlvZmYxLS07Ci0Jb2ZmMi0tOwotCi0JY2h1bmstPnNhbWUgPSBsZW4yID8gb2ZmMiA6IChvZmYyICsgMSk7Ci0KLQljaHVuay0+cF9uZXh0ID0gb2ZmMSArIChsZW4xID8gbGVuMSA6IDEpOwotCWNodW5rLT50X25leHQgPSBjaHVuay0+c2FtZSArIGxlbjI7Ci0Jc3RhdGUtPmh1bmtfaW5fcHJlX2NvbnRleHQgPSAxOwotCXN0YXRlLT5odW5rX3Bvc3RfY29udGV4dCA9IDA7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgcGF0Y2ggKmNvbXBhcmVfYnVmZmVyKG1tZmlsZV90ICpmaWxlX3AsIG1tZmlsZV90ICpmaWxlX28sCi0JCQkJICAgIGludCBjb250ZXh0KQotewotCXN0cnVjdCBibGFtZV9kaWZmX3N0YXRlIHN0YXRlOwotCXhwcGFyYW1fdCB4cHA7Ci0JeGRlbWl0Y29uZl90IHhlY2ZnOwotCXhkZW1pdGNiX3QgZWNiOwotCi0JeHBwLmZsYWdzID0geGRsX29wdHM7Ci0JbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7Ci0JeGVjZmcuY3R4bGVuID0gY29udGV4dDsKLQllY2Iub3V0ZiA9IHhkaWZmX291dGY7Ci0JZWNiLnByaXYgPSAmc3RhdGU7Ci0JbWVtc2V0KCZzdGF0ZSwgMCwgc2l6ZW9mKHN0YXRlKSk7Ci0Jc3RhdGUueG0uY29uc3VtZSA9IHByb2Nlc3NfdV9kaWZmOwotCXN0YXRlLnJldCA9IHhtYWxsb2Moc2l6ZW9mKHN0cnVjdCBwYXRjaCkpOwotCXN0YXRlLnJldC0+Y2h1bmtzID0gTlVMTDsKLQlzdGF0ZS5yZXQtPm51bSA9IDA7Ci0KLQl4ZGlfZGlmZihmaWxlX3AsIGZpbGVfbywgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKLQotCWlmIChzdGF0ZS5yZXQtPm51bSkgewotCQlzdHJ1Y3QgY2h1bmsgKmNodW5rOwotCQljaHVuayA9ICZzdGF0ZS5yZXQtPmNodW5rc1tzdGF0ZS5yZXQtPm51bSAtIDFdOwotCQljaHVuay0+cF9uZXh0IC09IHN0YXRlLmh1bmtfcG9zdF9jb250ZXh0OwotCQljaHVuay0+dF9uZXh0IC09IHN0YXRlLmh1bmtfcG9zdF9jb250ZXh0OwotCX0KLQlyZXR1cm4gc3RhdGUucmV0OwotfQotCi0vKgotICogUnVuIGRpZmYgYmV0d2VlbiB0d28gb3JpZ2lucyBhbmQgZ3JhYiB0aGUgcGF0Y2ggb3V0cHV0LCBzbyB0aGF0Ci0gKiB3ZSBjYW4gcGFzcyBibGFtZSBmb3IgbGluZXMgb3JpZ2luIGlzIGN1cnJlbnRseSBzdXNwZWN0ZWQgZm9yCi0gKiB0byBpdHMgcGFyZW50LgotICovCi1zdGF0aWMgc3RydWN0IHBhdGNoICpnZXRfcGF0Y2goc3RydWN0IG9yaWdpbiAqcGFyZW50LCBzdHJ1Y3Qgb3JpZ2luICpvcmlnaW4pCi17Ci0JbW1maWxlX3QgZmlsZV9wLCBmaWxlX287Ci0Jc3RydWN0IHBhdGNoICpwYXRjaDsKLQotCWZpbGxfb3JpZ2luX2Jsb2IocGFyZW50LCAmZmlsZV9wKTsKLQlmaWxsX29yaWdpbl9ibG9iKG9yaWdpbiwgJmZpbGVfbyk7Ci0JaWYgKCFmaWxlX3AucHRyIHx8ICFmaWxlX28ucHRyKQotCQlyZXR1cm4gTlVMTDsKLQlwYXRjaCA9IGNvbXBhcmVfYnVmZmVyKCZmaWxlX3AsICZmaWxlX28sIDApOwotCW51bV9nZXRfcGF0Y2grKzsKLQlyZXR1cm4gcGF0Y2g7Ci19Ci0KLXN0YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IHBhdGNoICpwKQotewotCWZyZWUocC0+Y2h1bmtzKTsKLQlmcmVlKHApOwotfQotCi0vKgogICogTGluayBpbiBhIG5ldyBibGFtZSBlbnRyeSB0byB0aGUgc2NvcmVib2FyZC4gIEVudHJpZXMgdGhhdCBjb3ZlciB0aGUKICAqIHNhbWUgbGluZSByYW5nZSBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzY29yZWJvYXJkIHByZXZpb3VzbHkuCiAgKi8KQEAgLTgxNyw2ICs2ODgsMjIgQEAKIAl9CiB9CiAKK3N0cnVjdCBibGFtZV9jaHVua19jYl9kYXRhIHsKKwlzdHJ1Y3Qgc2NvcmVib2FyZCAqc2I7CisJc3RydWN0IG9yaWdpbiAqdGFyZ2V0OworCXN0cnVjdCBvcmlnaW4gKnBhcmVudDsKKwlsb25nIHBsbm87CisJbG9uZyB0bG5vOworfTsKKworc3RhdGljIHZvaWQgYmxhbWVfY2h1bmtfY2Iodm9pZCAqZGF0YSwgbG9uZyBzYW1lLCBsb25nIHBfbmV4dCwgbG9uZyB0X25leHQpCit7CisJc3RydWN0IGJsYW1lX2NodW5rX2NiX2RhdGEgKmQgPSBkYXRhOworCWJsYW1lX2NodW5rKGQtPnNiLCBkLT50bG5vLCBkLT5wbG5vLCBzYW1lLCBkLT50YXJnZXQsIGQtPnBhcmVudCk7CisJZC0+cGxubyA9IHBfbmV4dDsKKwlkLT50bG5vID0gdF9uZXh0OworfQorCiAvKgogICogV2UgYXJlIGxvb2tpbmcgYXQgdGhlIG9yaWdpbiAndGFyZ2V0JyBhbmQgYWltaW5nIHRvIHBhc3MgYmxhbWUKICAqIGZvciB0aGUgbGluZXMgaXQgaXMgc3VzcGVjdGVkIHRvIGl0cyBwYXJlbnQuICBSdW4gZGlmZiB0byBmaW5kCkBAIC04MjYsMjYgKzcxMywyOCBAQAogCQkJCXN0cnVjdCBvcmlnaW4gKnRhcmdldCwKIAkJCQlzdHJ1Y3Qgb3JpZ2luICpwYXJlbnQpCiB7Ci0JaW50IGksIGxhc3RfaW5fdGFyZ2V0LCBwbG5vLCB0bG5vOwotCXN0cnVjdCBwYXRjaCAqcGF0Y2g7CisJaW50IGxhc3RfaW5fdGFyZ2V0OworCW1tZmlsZV90IGZpbGVfcCwgZmlsZV9vOworCXN0cnVjdCBibGFtZV9jaHVua19jYl9kYXRhIGQgPSB7IHNiLCB0YXJnZXQsIHBhcmVudCwgMCwgMCB9OworCXhwcGFyYW1fdCB4cHA7CisJeGRlbWl0Y29uZl90IHhlY2ZnOwogCiAJbGFzdF9pbl90YXJnZXQgPSBmaW5kX2xhc3RfaW5fdGFyZ2V0KHNiLCB0YXJnZXQpOwogCWlmIChsYXN0X2luX3RhcmdldCA8IDApCiAJCXJldHVybiAxOyAvKiBub3RoaW5nIHJlbWFpbnMgZm9yIHRoaXMgdGFyZ2V0ICovCiAKLQlwYXRjaCA9IGdldF9wYXRjaChwYXJlbnQsIHRhcmdldCk7Ci0JcGxubyA9IHRsbm8gPSAwOwotCWZvciAoaSA9IDA7IGkgPCBwYXRjaC0+bnVtOyBpKyspIHsKLQkJc3RydWN0IGNodW5rICpjaHVuayA9ICZwYXRjaC0+Y2h1bmtzW2ldOworCWZpbGxfb3JpZ2luX2Jsb2IocGFyZW50LCAmZmlsZV9wKTsKKwlmaWxsX29yaWdpbl9ibG9iKHRhcmdldCwgJmZpbGVfbyk7CisJbnVtX2dldF9wYXRjaCsrOwogCi0JCWJsYW1lX2NodW5rKHNiLCB0bG5vLCBwbG5vLCBjaHVuay0+c2FtZSwgdGFyZ2V0LCBwYXJlbnQpOwotCQlwbG5vID0gY2h1bmstPnBfbmV4dDsKLQkJdGxubyA9IGNodW5rLT50X25leHQ7Ci0JfQorCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CisJeHBwLmZsYWdzID0geGRsX29wdHM7CisJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CisJeGVjZmcuY3R4bGVuID0gMDsKKwl4ZGlfZGlmZl9odW5rcygmZmlsZV9wLCAmZmlsZV9vLCBibGFtZV9jaHVua19jYiwgJmQsICZ4cHAsICZ4ZWNmZyk7CiAJLyogVGhlIHJlc3QgKGkuZS4gYW55dGhpbmcgYWZ0ZXIgdGxubykgYXJlIHRoZSBzYW1lIGFzIHRoZSBwYXJlbnQgKi8KLQlibGFtZV9jaHVuayhzYiwgdGxubywgcGxubywgbGFzdF9pbl90YXJnZXQsIHRhcmdldCwgcGFyZW50KTsKKwlibGFtZV9jaHVuayhzYiwgZC50bG5vLCBkLnBsbm8sIGxhc3RfaW5fdGFyZ2V0LCB0YXJnZXQsIHBhcmVudCk7CiAKLQlmcmVlX3BhdGNoKHBhdGNoKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtOTM3LDYgKzgyNiwyMyBAQAogCX0KIH0KIAorc3RydWN0IGhhbmRsZV9zcGxpdF9jYl9kYXRhIHsKKwlzdHJ1Y3Qgc2NvcmVib2FyZCAqc2I7CisJc3RydWN0IGJsYW1lX2VudHJ5ICplbnQ7CisJc3RydWN0IG9yaWdpbiAqcGFyZW50OworCXN0cnVjdCBibGFtZV9lbnRyeSAqc3BsaXQ7CisJbG9uZyBwbG5vOworCWxvbmcgdGxubzsKK307CisKK3N0YXRpYyB2b2lkIGhhbmRsZV9zcGxpdF9jYih2b2lkICpkYXRhLCBsb25nIHNhbWUsIGxvbmcgcF9uZXh0LCBsb25nIHRfbmV4dCkKK3sKKwlzdHJ1Y3QgaGFuZGxlX3NwbGl0X2NiX2RhdGEgKmQgPSBkYXRhOworCWhhbmRsZV9zcGxpdChkLT5zYiwgZC0+ZW50LCBkLT50bG5vLCBkLT5wbG5vLCBzYW1lLCBkLT5wYXJlbnQsIGQtPnNwbGl0KTsKKwlkLT5wbG5vID0gcF9uZXh0OworCWQtPnRsbm8gPSB0X25leHQ7Cit9CisKIC8qCiAgKiBGaW5kIHRoZSBsaW5lcyBmcm9tIHBhcmVudCB0aGF0IGFyZSB0aGUgc2FtZSBhcyBlbnQgc28gdGhhdAogICogd2UgY2FuIHBhc3MgYmxhbWVzIHRvIGl0LiAgZmlsZV9wIGhhcyB0aGUgYmxvYiBjb250ZW50cyBmb3IKQEAgLTk1MSw4ICs4NTcsOSBAQAogCWNvbnN0IGNoYXIgKmNwOwogCWludCBjbnQ7CiAJbW1maWxlX3QgZmlsZV9vOwotCXN0cnVjdCBwYXRjaCAqcGF0Y2g7Ci0JaW50IGksIHBsbm8sIHRsbm87CisJc3RydWN0IGhhbmRsZV9zcGxpdF9jYl9kYXRhIGQgPSB7IHNiLCBlbnQsIHBhcmVudCwgc3BsaXQsIDAsIDAgfTsKKwl4cHBhcmFtX3QgeHBwOworCXhkZW1pdGNvbmZfdCB4ZWNmZzsKIAogCS8qCiAJICogUHJlcGFyZSBtbWZpbGUgdGhhdCBjb250YWlucyBvbmx5IHRoZSBsaW5lcyBpbiBlbnQuCkBAIC05NjcsMjQgKzg3NCwxOCBAQAogCX0KIAlmaWxlX28uc2l6ZSA9IGNwIC0gZmlsZV9vLnB0cjsKIAotCXBhdGNoID0gY29tcGFyZV9idWZmZXIoZmlsZV9wLCAmZmlsZV9vLCAxKTsKLQogCS8qCiAJICogZmlsZV9vIGlzIGEgcGFydCBvZiBmaW5hbCBpbWFnZSB3ZSBhcmUgYW5ub3RhdGluZy4KIAkgKiBmaWxlX3AgcGFydGlhbGx5IG1heSBtYXRjaCB0aGF0IGltYWdlLgogCSAqLworCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CisJeHBwLmZsYWdzID0geGRsX29wdHM7CisJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CisJeGVjZmcuY3R4bGVuID0gMTsKIAltZW1zZXQoc3BsaXQsIDAsIHNpemVvZihzdHJ1Y3QgYmxhbWVfZW50cnkgWzNdKSk7Ci0JcGxubyA9IHRsbm8gPSAwOwotCWZvciAoaSA9IDA7IGkgPCBwYXRjaC0+bnVtOyBpKyspIHsKLQkJc3RydWN0IGNodW5rICpjaHVuayA9ICZwYXRjaC0+Y2h1bmtzW2ldOwotCi0JCWhhbmRsZV9zcGxpdChzYiwgZW50LCB0bG5vLCBwbG5vLCBjaHVuay0+c2FtZSwgcGFyZW50LCBzcGxpdCk7Ci0JCXBsbm8gPSBjaHVuay0+cF9uZXh0OwotCQl0bG5vID0gY2h1bmstPnRfbmV4dDsKLQl9CisJeGRpX2RpZmZfaHVua3MoZmlsZV9wLCAmZmlsZV9vLCBoYW5kbGVfc3BsaXRfY2IsICZkLCAmeHBwLCAmeGVjZmcpOwogCS8qIHJlbWFpbmRlciwgaWYgYW55LCBhbGwgbWF0Y2ggdGhlIHByZWltYWdlICovCi0JaGFuZGxlX3NwbGl0KHNiLCBlbnQsIHRsbm8sIHBsbm8sIGVudC0+bnVtX2xpbmVzLCBwYXJlbnQsIHNwbGl0KTsKLQlmcmVlX3BhdGNoKHBhdGNoKTsKKwloYW5kbGVfc3BsaXQoc2IsIGVudCwgZC50bG5vLCBkLnBsbm8sIGVudC0+bnVtX2xpbmVzLCBwYXJlbnQsIHNwbGl0KTsKIH0KIAogLyoKQEAgLTE0MzUsNyArMTMzNiw3IEBACiAJCQkgICAgaW50IGRldGFpbGVkKQogewogCWludCBsZW47Ci0JY2hhciAqdG1wLCAqZW5kcDsKKwljaGFyICp0bXAsICplbmRwLCAqcmVlbmNvZGVkLCAqbWVzc2FnZTsKIAlzdGF0aWMgY2hhciBhdXRob3JfYnVmWzEwMjRdOwogCXN0YXRpYyBjaGFyIGNvbW1pdHRlcl9idWZbMTAyNF07CiAJc3RhdGljIGNoYXIgc3VtbWFyeV9idWZbMTAyNF07CkBAIC0xNDUzLDI0ICsxMzU0LDI5IEBACiAJCQlkaWUoIkNhbm5vdCByZWFkIGNvbW1pdCAlcyIsCiAJCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOwogCX0KKwlyZWVuY29kZWQgPSByZWVuY29kZV9jb21taXRfbWVzc2FnZShjb21taXQsIE5VTEwpOworCW1lc3NhZ2UgICA9IHJlZW5jb2RlZCA/IHJlZW5jb2RlZCA6IGNvbW1pdC0+YnVmZmVyOwogCXJldC0+YXV0aG9yID0gYXV0aG9yX2J1ZjsKLQlnZXRfYWNfbGluZShjb21taXQtPmJ1ZmZlciwgIlxuYXV0aG9yICIsCisJZ2V0X2FjX2xpbmUobWVzc2FnZSwgIlxuYXV0aG9yICIsCiAJCSAgICBzaXplb2YoYXV0aG9yX2J1ZiksIGF1dGhvcl9idWYsICZyZXQtPmF1dGhvcl9tYWlsLAogCQkgICAgJnJldC0+YXV0aG9yX3RpbWUsICZyZXQtPmF1dGhvcl90eik7CiAKLQlpZiAoIWRldGFpbGVkKQorCWlmICghZGV0YWlsZWQpIHsKKwkJZnJlZShyZWVuY29kZWQpOwogCQlyZXR1cm47CisJfQogCiAJcmV0LT5jb21taXR0ZXIgPSBjb21taXR0ZXJfYnVmOwotCWdldF9hY19saW5lKGNvbW1pdC0+YnVmZmVyLCAiXG5jb21taXR0ZXIgIiwKKwlnZXRfYWNfbGluZShtZXNzYWdlLCAiXG5jb21taXR0ZXIgIiwKIAkJICAgIHNpemVvZihjb21taXR0ZXJfYnVmKSwgY29tbWl0dGVyX2J1ZiwgJnJldC0+Y29tbWl0dGVyX21haWwsCiAJCSAgICAmcmV0LT5jb21taXR0ZXJfdGltZSwgJnJldC0+Y29tbWl0dGVyX3R6KTsKIAogCXJldC0+c3VtbWFyeSA9IHN1bW1hcnlfYnVmOwotCXRtcCA9IHN0cnN0cihjb21taXQtPmJ1ZmZlciwgIlxuXG4iKTsKKwl0bXAgPSBzdHJzdHIobWVzc2FnZSwgIlxuXG4iKTsKIAlpZiAoIXRtcCkgewogCWVycm9yX291dDoKIAkJc3ByaW50ZihzdW1tYXJ5X2J1ZiwgIiglcykiLCBzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CisJCWZyZWUocmVlbmNvZGVkKTsKIAkJcmV0dXJuOwogCX0KIAl0bXAgKz0gMjsKQEAgLTE0ODIsNiArMTM4OCw3IEBACiAJCWdvdG8gZXJyb3Jfb3V0OwogCW1lbWNweShzdW1tYXJ5X2J1ZiwgdG1wLCBsZW4pOwogCXN1bW1hcnlfYnVmW2xlbl0gPSAwOworCWZyZWUocmVlbmNvZGVkKTsKIH0KIAogLyoKQEAgLTIwNjYsNyArMTk3Myw3IEBACiAJc3RydWN0IGNvbW1pdCAqY29tbWl0OwogCXN0cnVjdCBvcmlnaW4gKm9yaWdpbjsKIAl1bnNpZ25lZCBjaGFyIGhlYWRfc2hhMVsyMF07Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICppZGVudDsKIAl0aW1lX3Qgbm93OwogCWludCBzaXplLCBsZW47CkBAIC0yMDg2LDExICsxOTkzLDkgQEAKIAogCW9yaWdpbiA9IG1ha2Vfb3JpZ2luKGNvbW1pdCwgcGF0aCk7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAlpZiAoIWNvbnRlbnRzX2Zyb20gfHwgc3RyY21wKCItIiwgY29udGVudHNfZnJvbSkpIHsKIAkJc3RydWN0IHN0YXQgc3Q7CiAJCWNvbnN0IGNoYXIgKnJlYWRfZnJvbTsKLQkJdW5zaWduZWQgbG9uZyBmaW5fc2l6ZTsKIAogCQlpZiAoY29udGVudHNfZnJvbSkgewogCQkJaWYgKHN0YXQoY29udGVudHNfZnJvbSwgJnN0KSA8IDApCkBAIC0yMTAyLDcgKzIwMDcsNiBAQAogCQkJCWRpZSgiQ2Fubm90IGxzdGF0ICVzIiwgcGF0aCk7CiAJCQlyZWFkX2Zyb20gPSBwYXRoOwogCQl9Ci0JCWZpbl9zaXplID0geHNpemVfdChzdC5zdF9zaXplKTsKIAkJbW9kZSA9IGNhbm9uX21vZGUoc3Quc3RfbW9kZSk7CiAJCXN3aXRjaCAoc3Quc3RfbW9kZSAmIFNfSUZNVCkgewogCQljYXNlIFNfSUZSRUc6CkBAIC0yMTEwLDkgKzIwMTQsOCBAQAogCQkJCWRpZSgiY2Fubm90IG9wZW4gb3IgcmVhZCAlcyIsIHJlYWRfZnJvbSk7CiAJCQlicmVhazsKIAkJY2FzZSBTX0lGTE5LOgotCQkJaWYgKHJlYWRsaW5rKHJlYWRfZnJvbSwgYnVmLmJ1ZiwgYnVmLmFsbG9jKSAhPSBmaW5fc2l6ZSkKKwkJCWlmIChzdHJidWZfcmVhZGxpbmsoJmJ1ZiwgcmVhZF9mcm9tLCBzdC5zdF9zaXplKSA8IDApCiAJCQkJZGllKCJjYW5ub3QgcmVhZGxpbmsgJXMiLCByZWFkX2Zyb20pOwotCQkJYnVmLmxlbiA9IGZpbl9zaXplOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlkaWUoInVuc3VwcG9ydGVkIGZpbGUgdHlwZSAlcyIsIHJlYWRfZnJvbSk7CmRpZmYgLS1naXQgYS9idWlsdGluLWJyYW5jaC5jIGIvYnVpbHRpbi1icmFuY2guYwppbmRleCA0YjRhYmZkLi4wMmZhMzhmIDEwMDY0NAotLS0gYS9idWlsdGluLWJyYW5jaC5jCisrKyBiL2J1aWx0aW4tYnJhbmNoLmMKQEAgLTk3LDcgKzk3LDYgQEAKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWNoYXIgKm5hbWUgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmZtdCwgKnJlbW90ZTsKLQljaGFyIHNlY3Rpb25bUEFUSF9NQVhdOwogCWludCBpOwogCWludCByZXQgPSAwOwogCkBAIC0xNjUsMTEgKzE2NCwxMyBAQAogCQkJICAgICAgIGFyZ3ZbaV0pOwogCQkJcmV0ID0gMTsKIAkJfSBlbHNlIHsKLQkJCXByaW50ZigiRGVsZXRlZCAlc2JyYW5jaCAlcy5cbiIsIHJlbW90ZSwgYXJndltpXSk7Ci0JCQlzbnByaW50ZihzZWN0aW9uLCBzaXplb2Yoc2VjdGlvbiksICJicmFuY2guJXMiLAotCQkJCSBhcmd2W2ldKTsKLQkJCWlmIChnaXRfY29uZmlnX3JlbmFtZV9zZWN0aW9uKHNlY3Rpb24sIE5VTEwpIDwgMCkKKwkJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJCQlwcmludGYoIkRlbGV0ZWQgJXNicmFuY2ggJXMgKCVzKS5cbiIsIHJlbW90ZSwgYXJndltpXSwKKwkJCQlmaW5kX3VuaXF1ZV9hYmJyZXYoc2hhMSwgREVGQVVMVF9BQkJSRVYpKTsKKwkJCXN0cmJ1Zl9hZGRmKCZidWYsICJicmFuY2guJXMiLCBhcmd2W2ldKTsKKwkJCWlmIChnaXRfY29uZmlnX3JlbmFtZV9zZWN0aW9uKGJ1Zi5idWYsIE5VTEwpIDwgMCkKIAkJCQl3YXJuaW5nKCJVcGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIik7CisJCQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIAkJfQogCX0KIApAQCAtMjc5LDcgKzI4MCw3IEBACiAJcmV0dXJuIHN0cmNtcChjMS0+bmFtZSwgYzItPm5hbWUpOwogfQogCi1zdGF0aWMgdm9pZCBmaWxsX3RyYWNraW5nX2luZm8oY2hhciAqc3RhdCwgY29uc3QgY2hhciAqYnJhbmNoX25hbWUpCitzdGF0aWMgdm9pZCBmaWxsX3RyYWNraW5nX2luZm8oc3RydWN0IHN0cmJ1ZiAqc3RhdCwgY29uc3QgY2hhciAqYnJhbmNoX25hbWUpCiB7CiAJaW50IG91cnMsIHRoZWlyczsKIAlzdHJ1Y3QgYnJhbmNoICpicmFuY2ggPSBicmFuY2hfZ2V0KGJyYW5jaF9uYW1lKTsKQEAgLTI4NywxMSArMjg4LDExIEBACiAJaWYgKCFzdGF0X3RyYWNraW5nX2luZm8oYnJhbmNoLCAmb3VycywgJnRoZWlycykgfHwgKCFvdXJzICYmICF0aGVpcnMpKQogCQlyZXR1cm47CiAJaWYgKCFvdXJzKQotCQlzcHJpbnRmKHN0YXQsICJbYmVoaW5kICVkXSAiLCB0aGVpcnMpOworCQlzdHJidWZfYWRkZihzdGF0LCAiW2JlaGluZCAlZF0gIiwgdGhlaXJzKTsKIAllbHNlIGlmICghdGhlaXJzKQotCQlzcHJpbnRmKHN0YXQsICJbYWhlYWQgJWRdICIsIG91cnMpOworCQlzdHJidWZfYWRkZihzdGF0LCAiW2FoZWFkICVkXSAiLCBvdXJzKTsKIAllbHNlCi0JCXNwcmludGYoc3RhdCwgIlthaGVhZCAlZCwgYmVoaW5kICVkXSAiLCBvdXJzLCB0aGVpcnMpOworCQlzdHJidWZfYWRkZihzdGF0LCAiW2FoZWFkICVkLCBiZWhpbmQgJWRdICIsIG91cnMsIHRoZWlycyk7CiB9CiAKIHN0YXRpYyBpbnQgbWF0Y2hlc19tZXJnZV9maWx0ZXIoc3RydWN0IGNvbW1pdCAqY29tbWl0KQpAQCAtMzM0LDEyICszMzUsOCBAQAogCX0KIAogCWlmICh2ZXJib3NlKSB7Ci0JCXN0cnVjdCBzdHJidWYgc3ViamVjdDsKKwkJc3RydWN0IHN0cmJ1ZiBzdWJqZWN0ID0gU1RSQlVGX0lOSVQsIHN0YXQgPSBTVFJCVUZfSU5JVDsKIAkJY29uc3QgY2hhciAqc3ViID0gIiAqKioqIGludmFsaWQgcmVmICoqKioiOwotCQljaGFyIHN0YXRbMTI4XTsKLQotCQlzdHJidWZfaW5pdCgmc3ViamVjdCwgMCk7Ci0JCXN0YXRbMF0gPSAnXDAnOwogCiAJCWNvbW1pdCA9IGl0ZW0tPmNvbW1pdDsKIAkJaWYgKGNvbW1pdCAmJiAhcGFyc2VfY29tbWl0KGNvbW1pdCkpIHsKQEAgLTM0OSwxMyArMzQ2LDE0IEBACiAJCX0KIAogCQlpZiAoaXRlbS0+a2luZCA9PSBSRUZfTE9DQUxfQlJBTkNIKQotCQkJZmlsbF90cmFja2luZ19pbmZvKHN0YXQsIGl0ZW0tPm5hbWUpOworCQkJZmlsbF90cmFja2luZ19pbmZvKCZzdGF0LCBpdGVtLT5uYW1lKTsKIAogCQlwcmludGYoIiVjICVzJS0qcyVzICVzICVzJXNcbiIsIGMsIGJyYW5jaF9nZXRfY29sb3IoY29sb3IpLAogCQkgICAgICAgbWF4d2lkdGgsIGl0ZW0tPm5hbWUsCiAJCSAgICAgICBicmFuY2hfZ2V0X2NvbG9yKENPTE9SX0JSQU5DSF9SRVNFVCksCiAJCSAgICAgICBmaW5kX3VuaXF1ZV9hYmJyZXYoaXRlbS0+Y29tbWl0LT5vYmplY3Quc2hhMSwgYWJicmV2KSwKLQkJICAgICAgIHN0YXQsIHN1Yik7CisJCSAgICAgICBzdGF0LmJ1Ziwgc3ViKTsKKwkJc3RyYnVmX3JlbGVhc2UoJnN0YXQpOwogCQlzdHJidWZfcmVsZWFzZSgmc3ViamVjdCk7CiAJfSBlbHNlIHsKIAkJcHJpbnRmKCIlYyAlcyVzJXNcbiIsIGMsIGJyYW5jaF9nZXRfY29sb3IoY29sb3IpLCBpdGVtLT5uYW1lLApAQCAtNDI3LDQyICs0MjUsNDUgQEAKIAogc3RhdGljIHZvaWQgcmVuYW1lX2JyYW5jaChjb25zdCBjaGFyICpvbGRuYW1lLCBjb25zdCBjaGFyICpuZXduYW1lLCBpbnQgZm9yY2UpCiB7Ci0JY2hhciBvbGRyZWZbUEFUSF9NQVhdLCBuZXdyZWZbUEFUSF9NQVhdLCBsb2dtc2dbUEFUSF9NQVgqMiArIDEwMF07CisJc3RydWN0IHN0cmJ1ZiBvbGRyZWYgPSBTVFJCVUZfSU5JVCwgbmV3cmVmID0gU1RSQlVGX0lOSVQsIGxvZ21zZyA9IFNUUkJVRl9JTklUOwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07Ci0JY2hhciBvbGRzZWN0aW9uW1BBVEhfTUFYXSwgbmV3c2VjdGlvbltQQVRIX01BWF07CisJc3RydWN0IHN0cmJ1ZiBvbGRzZWN0aW9uID0gU1RSQlVGX0lOSVQsIG5ld3NlY3Rpb24gPSBTVFJCVUZfSU5JVDsKIAogCWlmICghb2xkbmFtZSkKIAkJZGllKCJjYW5ub3QgcmVuYW1lIHRoZSBjdXJyZW50IGJyYW5jaCB3aGlsZSBub3Qgb24gYW55LiIpOwogCi0JaWYgKHNucHJpbnRmKG9sZHJlZiwgc2l6ZW9mKG9sZHJlZiksICJyZWZzL2hlYWRzLyVzIiwgb2xkbmFtZSkgPiBzaXplb2Yob2xkcmVmKSkKLQkJZGllKCJPbGQgYnJhbmNobmFtZSB0b28gbG9uZyIpOworCXN0cmJ1Zl9hZGRmKCZvbGRyZWYsICJyZWZzL2hlYWRzLyVzIiwgb2xkbmFtZSk7CiAKLQlpZiAoY2hlY2tfcmVmX2Zvcm1hdChvbGRyZWYpKQotCQlkaWUoIkludmFsaWQgYnJhbmNoIG5hbWU6ICVzIiwgb2xkcmVmKTsKKwlpZiAoY2hlY2tfcmVmX2Zvcm1hdChvbGRyZWYuYnVmKSkKKwkJZGllKCJJbnZhbGlkIGJyYW5jaCBuYW1lOiAlcyIsIG9sZHJlZi5idWYpOwogCi0JaWYgKHNucHJpbnRmKG5ld3JlZiwgc2l6ZW9mKG5ld3JlZiksICJyZWZzL2hlYWRzLyVzIiwgbmV3bmFtZSkgPiBzaXplb2YobmV3cmVmKSkKLQkJZGllKCJOZXcgYnJhbmNobmFtZSB0b28gbG9uZyIpOworCXN0cmJ1Zl9hZGRmKCZuZXdyZWYsICJyZWZzL2hlYWRzLyVzIiwgbmV3bmFtZSk7CiAKLQlpZiAoY2hlY2tfcmVmX2Zvcm1hdChuZXdyZWYpKQotCQlkaWUoIkludmFsaWQgYnJhbmNoIG5hbWU6ICVzIiwgbmV3cmVmKTsKKwlpZiAoY2hlY2tfcmVmX2Zvcm1hdChuZXdyZWYuYnVmKSkKKwkJZGllKCJJbnZhbGlkIGJyYW5jaCBuYW1lOiAlcyIsIG5ld3JlZi5idWYpOwogCi0JaWYgKHJlc29sdmVfcmVmKG5ld3JlZiwgc2hhMSwgMSwgTlVMTCkgJiYgIWZvcmNlKQorCWlmIChyZXNvbHZlX3JlZihuZXdyZWYuYnVmLCBzaGExLCAxLCBOVUxMKSAmJiAhZm9yY2UpCiAJCWRpZSgiQSBicmFuY2ggbmFtZWQgJyVzJyBhbHJlYWR5IGV4aXN0cy4iLCBuZXduYW1lKTsKIAotCXNucHJpbnRmKGxvZ21zZywgc2l6ZW9mKGxvZ21zZyksICJCcmFuY2g6IHJlbmFtZWQgJXMgdG8gJXMiLAotCQkgb2xkcmVmLCBuZXdyZWYpOworCXN0cmJ1Zl9hZGRmKCZsb2dtc2csICJCcmFuY2g6IHJlbmFtZWQgJXMgdG8gJXMiLAorCQkgb2xkcmVmLmJ1ZiwgbmV3cmVmLmJ1Zik7CiAKLQlpZiAocmVuYW1lX3JlZihvbGRyZWYsIG5ld3JlZiwgbG9nbXNnKSkKKwlpZiAocmVuYW1lX3JlZihvbGRyZWYuYnVmLCBuZXdyZWYuYnVmLCBsb2dtc2cuYnVmKSkKIAkJZGllKCJCcmFuY2ggcmVuYW1lIGZhaWxlZCIpOworCXN0cmJ1Zl9yZWxlYXNlKCZsb2dtc2cpOwogCiAJLyogbm8gbmVlZCB0byBwYXNzIGxvZ21zZyBoZXJlIGFzIEhFQUQgZGlkbid0IHJlYWxseSBtb3ZlICovCi0JaWYgKCFzdHJjbXAob2xkbmFtZSwgaGVhZCkgJiYgY3JlYXRlX3N5bXJlZigiSEVBRCIsIG5ld3JlZiwgTlVMTCkpCisJaWYgKCFzdHJjbXAob2xkbmFtZSwgaGVhZCkgJiYgY3JlYXRlX3N5bXJlZigiSEVBRCIsIG5ld3JlZi5idWYsIE5VTEwpKQogCQlkaWUoIkJyYW5jaCByZW5hbWVkIHRvICVzLCBidXQgSEVBRCBpcyBub3QgdXBkYXRlZCEiLCBuZXduYW1lKTsKIAotCXNucHJpbnRmKG9sZHNlY3Rpb24sIHNpemVvZihvbGRzZWN0aW9uKSwgImJyYW5jaC4lcyIsIG9sZHJlZiArIDExKTsKLQlzbnByaW50ZihuZXdzZWN0aW9uLCBzaXplb2YobmV3c2VjdGlvbiksICJicmFuY2guJXMiLCBuZXdyZWYgKyAxMSk7Ci0JaWYgKGdpdF9jb25maWdfcmVuYW1lX3NlY3Rpb24ob2xkc2VjdGlvbiwgbmV3c2VjdGlvbikgPCAwKQorCXN0cmJ1Zl9hZGRmKCZvbGRzZWN0aW9uLCAiYnJhbmNoLiVzIiwgb2xkcmVmLmJ1ZiArIDExKTsKKwlzdHJidWZfcmVsZWFzZSgmb2xkcmVmKTsKKwlzdHJidWZfYWRkZigmbmV3c2VjdGlvbiwgImJyYW5jaC4lcyIsIG5ld3JlZi5idWYgKyAxMSk7CisJc3RyYnVmX3JlbGVhc2UoJm5ld3JlZik7CisJaWYgKGdpdF9jb25maWdfcmVuYW1lX3NlY3Rpb24ob2xkc2VjdGlvbi5idWYsIG5ld3NlY3Rpb24uYnVmKSA8IDApCiAJCWRpZSgiQnJhbmNoIGlzIHJlbmFtZWQsIGJ1dCB1cGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIik7CisJc3RyYnVmX3JlbGVhc2UoJm9sZHNlY3Rpb24pOworCXN0cmJ1Zl9yZWxlYXNlKCZuZXdzZWN0aW9uKTsKIH0KIAogc3RhdGljIGludCBvcHRfcGFyc2Vfd2l0aF9jb21taXQoY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LCBjb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKZGlmZiAtLWdpdCBhL2J1aWx0aW4tY2F0LWZpbGUuYyBiL2J1aWx0aW4tY2F0LWZpbGUuYwppbmRleCAzZmJhNmI5Li4zMGQwMGE2IDEwMDY0NAotLS0gYS9idWlsdGluLWNhdC1maWxlLmMKKysrIGIvYnVpbHRpbi1jYXQtZmlsZS5jCkBAIC0xODksOSArMTg5LDggQEAKIAogc3RhdGljIGludCBiYXRjaF9vYmplY3RzKGludCBwcmludF9jb250ZW50cykKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CiAJd2hpbGUgKHN0cmJ1Zl9nZXRsaW5lKCZidWYsIHN0ZGluLCAnXG4nKSAhPSBFT0YpIHsKIAkJaW50IGVycm9yID0gYmF0Y2hfb25lX29iamVjdChidWYuYnVmLCBwcmludF9jb250ZW50cyk7CiAJCWlmIChlcnJvcikKZGlmZiAtLWdpdCBhL2J1aWx0aW4tY2hlY2stYXR0ci5jIGIvYnVpbHRpbi1jaGVjay1hdHRyLmMKaW5kZXggY2I3ODNmYy4uMTVhMDRiNyAxMDA2NDQKLS0tIGEvYnVpbHRpbi1jaGVjay1hdHRyLmMKKysrIGIvYnVpbHRpbi1jaGVjay1hdHRyLmMKQEAgLTIsMjEgKzIsODQgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImF0dHIuaCIKICNpbmNsdWRlICJxdW90ZS5oIgorI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAotc3RhdGljIGNvbnN0IGNoYXIgY2hlY2tfYXR0cl91c2FnZVtdID0KLSJnaXQgY2hlY2stYXR0ciBhdHRyLi4uIFstLV0gcGF0aG5hbWUuLi4iOworc3RhdGljIGludCBzdGRpbl9wYXRoczsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2hlY2tfYXR0cl91c2FnZVtdID0geworImdpdCBjaGVjay1hdHRyIGF0dHIuLi4gWy0tXSBwYXRobmFtZS4uLiIsCisiZ2l0IGNoZWNrLWF0dHIgLS1zdGRpbiBhdHRyLi4uIDwgPGxpc3Qtb2YtcGF0aHM+IiwKK05VTEwKK307CisKK3N0YXRpYyBpbnQgbnVsbF90ZXJtX2xpbmU7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGNoZWNrX2F0dHJfb3B0aW9uc1tdID0geworCU9QVF9CT09MRUFOKDAgLCAic3RkaW4iLCAmc3RkaW5fcGF0aHMsICJyZWFkIGZpbGUgbmFtZXMgZnJvbSBzdGRpbiIpLAorCU9QVF9CT09MRUFOKCd6JywgTlVMTCwgJm51bGxfdGVybV9saW5lLAorCQkiaW5wdXQgcGF0aHMgYXJlIHRlcm1pbmF0ZWQgYnkgYSBudWxsIGNoYXJhY3RlciIpLAorCU9QVF9FTkQoKQorfTsKKworc3RhdGljIHZvaWQgY2hlY2tfYXR0cihpbnQgY250LCBzdHJ1Y3QgZ2l0X2F0dHJfY2hlY2sgKmNoZWNrLAorCWNvbnN0IGNoYXIqKiBuYW1lLCBjb25zdCBjaGFyICpmaWxlKQoreworCWludCBqOworCWlmIChnaXRfY2hlY2thdHRyKGZpbGUsIGNudCwgY2hlY2spKQorCQlkaWUoImdpdF9jaGVja2F0dHIgZGllZCIpOworCWZvciAoaiA9IDA7IGogPCBjbnQ7IGorKykgeworCQljb25zdCBjaGFyICp2YWx1ZSA9IGNoZWNrW2pdLnZhbHVlOworCisJCWlmIChBVFRSX1RSVUUodmFsdWUpKQorCQkJdmFsdWUgPSAic2V0IjsKKwkJZWxzZSBpZiAoQVRUUl9GQUxTRSh2YWx1ZSkpCisJCQl2YWx1ZSA9ICJ1bnNldCI7CisJCWVsc2UgaWYgKEFUVFJfVU5TRVQodmFsdWUpKQorCQkJdmFsdWUgPSAidW5zcGVjaWZpZWQiOworCisJCXF1b3RlX2Nfc3R5bGUoZmlsZSwgTlVMTCwgc3Rkb3V0LCAwKTsKKwkJcHJpbnRmKCI6ICVzOiAlc1xuIiwgbmFtZVtqXSwgdmFsdWUpOworCX0KK30KKworc3RhdGljIHZvaWQgY2hlY2tfYXR0cl9zdGRpbl9wYXRocyhpbnQgY250LCBzdHJ1Y3QgZ2l0X2F0dHJfY2hlY2sgKmNoZWNrLAorCWNvbnN0IGNoYXIqKiBuYW1lKQoreworCXN0cnVjdCBzdHJidWYgYnVmLCBuYnVmOworCWludCBsaW5lX3Rlcm1pbmF0aW9uID0gbnVsbF90ZXJtX2xpbmUgPyAwIDogJ1xuJzsKKworCXN0cmJ1Zl9pbml0KCZidWYsIDApOworCXN0cmJ1Zl9pbml0KCZuYnVmLCAwKTsKKwl3aGlsZSAoc3RyYnVmX2dldGxpbmUoJmJ1Ziwgc3RkaW4sIGxpbmVfdGVybWluYXRpb24pICE9IEVPRikgeworCQlpZiAobGluZV90ZXJtaW5hdGlvbiAmJiBidWYuYnVmWzBdID09ICciJykgeworCQkJc3RyYnVmX3Jlc2V0KCZuYnVmKTsKKwkJCWlmICh1bnF1b3RlX2Nfc3R5bGUoJm5idWYsIGJ1Zi5idWYsIE5VTEwpKQorCQkJCWRpZSgibGluZSBpcyBiYWRseSBxdW90ZWQiKTsKKwkJCXN0cmJ1Zl9zd2FwKCZidWYsICZuYnVmKTsKKwkJfQorCQljaGVja19hdHRyKGNudCwgY2hlY2ssIG5hbWUsIGJ1Zi5idWYpOworCQltYXliZV9mbHVzaF9vcl9kaWUoc3Rkb3V0LCAiYXR0cmlidXRlIHRvIHN0ZG91dCIpOworCX0KKwlzdHJidWZfcmVsZWFzZSgmYnVmKTsKKwlzdHJidWZfcmVsZWFzZSgmbmJ1Zik7Cit9CiAKIGludCBjbWRfY2hlY2tfYXR0cihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKIAlzdHJ1Y3QgZ2l0X2F0dHJfY2hlY2sgKmNoZWNrOwogCWludCBjbnQsIGksIGRvdWJsZWRhc2g7CisJY29uc3QgY2hhciAqZXJyc3RyID0gTlVMTDsKKworCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIGNoZWNrX2F0dHJfb3B0aW9ucywgY2hlY2tfYXR0cl91c2FnZSwKKwkJUEFSU0VfT1BUX0tFRVBfREFTSERBU0gpOworCWlmICghYXJnYykKKwkJdXNhZ2Vfd2l0aF9vcHRpb25zKGNoZWNrX2F0dHJfdXNhZ2UsIGNoZWNrX2F0dHJfb3B0aW9ucyk7CiAKIAlpZiAocmVhZF9jYWNoZSgpIDwgMCkgewogCQlkaWUoImludmFsaWQgY2FjaGUiKTsKIAl9CiAKIAlkb3VibGVkYXNoID0gLTE7Ci0JZm9yIChpID0gMTsgZG91YmxlZGFzaCA8IDAgJiYgaSA8IGFyZ2M7IGkrKykgeworCWZvciAoaSA9IDA7IGRvdWJsZWRhc2ggPCAwICYmIGkgPCBhcmdjOyBpKyspIHsKIAkJaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tIikpCiAJCQlkb3VibGVkYXNoID0gaTsKIAl9CkBAIC0yNCw0MSArODcsMzcgQEAKIAkvKiBJZiB0aGVyZSBpcyBubyBkb3VibGUgZGFzaCwgd2UgaGFuZGxlIG9ubHkgb25lIGF0dHJpYnV0ZSAqLwogCWlmIChkb3VibGVkYXNoIDwgMCkgewogCQljbnQgPSAxOwotCQlkb3VibGVkYXNoID0gMTsKKwkJZG91YmxlZGFzaCA9IDA7CiAJfSBlbHNlCi0JCWNudCA9IGRvdWJsZWRhc2ggLSAxOworCQljbnQgPSBkb3VibGVkYXNoOwogCWRvdWJsZWRhc2grKzsKIAotCWlmIChjbnQgPD0gMCB8fCBhcmdjIDwgZG91YmxlZGFzaCkKLQkJdXNhZ2UoY2hlY2tfYXR0cl91c2FnZSk7CisJaWYgKGNudCA8PSAwKQorCQllcnJzdHIgPSAiTm8gYXR0cmlidXRlIHNwZWNpZmllZCI7CisJZWxzZSBpZiAoc3RkaW5fcGF0aHMgJiYgZG91YmxlZGFzaCA8IGFyZ2MpCisJCWVycnN0ciA9ICJDYW4ndCBzcGVjaWZ5IGZpbGVzIHdpdGggLS1zdGRpbiI7CisJaWYgKGVycnN0cikgeworCQllcnJvcigiJXMiLCBlcnJzdHIpOworCQl1c2FnZV93aXRoX29wdGlvbnMoY2hlY2tfYXR0cl91c2FnZSwgY2hlY2tfYXR0cl9vcHRpb25zKTsKKwl9CisKIAljaGVjayA9IHhjYWxsb2MoY250LCBzaXplb2YoKmNoZWNrKSk7CiAJZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7CiAJCWNvbnN0IGNoYXIgKm5hbWU7CiAJCXN0cnVjdCBnaXRfYXR0ciAqYTsKLQkJbmFtZSA9IGFyZ3ZbaSArIDFdOworCQluYW1lID0gYXJndltpXTsKIAkJYSA9IGdpdF9hdHRyKG5hbWUsIHN0cmxlbihuYW1lKSk7CiAJCWlmICghYSkKIAkJCXJldHVybiBlcnJvcigiJXM6IG5vdCBhIHZhbGlkIGF0dHJpYnV0ZSBuYW1lIiwgbmFtZSk7CiAJCWNoZWNrW2ldLmF0dHIgPSBhOwogCX0KIAotCWZvciAoaSA9IGRvdWJsZWRhc2g7IGkgPCBhcmdjOyBpKyspIHsKLQkJaW50IGo7Ci0JCWlmIChnaXRfY2hlY2thdHRyKGFyZ3ZbaV0sIGNudCwgY2hlY2spKQotCQkJZGllKCJnaXRfY2hlY2thdHRyIGRpZWQiKTsKLQkJZm9yIChqID0gMDsgaiA8IGNudDsgaisrKSB7Ci0JCQljb25zdCBjaGFyICp2YWx1ZSA9IGNoZWNrW2pdLnZhbHVlOwotCi0JCQlpZiAoQVRUUl9UUlVFKHZhbHVlKSkKLQkJCQl2YWx1ZSA9ICJzZXQiOwotCQkJZWxzZSBpZiAoQVRUUl9GQUxTRSh2YWx1ZSkpCi0JCQkJdmFsdWUgPSAidW5zZXQiOwotCQkJZWxzZSBpZiAoQVRUUl9VTlNFVCh2YWx1ZSkpCi0JCQkJdmFsdWUgPSAidW5zcGVjaWZpZWQiOwotCi0JCQlxdW90ZV9jX3N0eWxlKGFyZ3ZbaV0sIE5VTEwsIHN0ZG91dCwgMCk7Ci0JCQlwcmludGYoIjogJXM6ICVzXG4iLCBhcmd2W2orMV0sIHZhbHVlKTsKLQkJfQorCWlmIChzdGRpbl9wYXRocykKKwkJY2hlY2tfYXR0cl9zdGRpbl9wYXRocyhjbnQsIGNoZWNrLCBhcmd2KTsKKwllbHNlIHsKKwkJZm9yIChpID0gZG91YmxlZGFzaDsgaSA8IGFyZ2M7IGkrKykKKwkJCWNoZWNrX2F0dHIoY250LCBjaGVjaywgYXJndiwgYXJndltpXSk7CisJCW1heWJlX2ZsdXNoX29yX2RpZShzdGRvdXQsICJhdHRyaWJ1dGUgdG8gc3Rkb3V0Iik7CiAJfQogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1jaGVja291dC1pbmRleC5jIGIvYnVpbHRpbi1jaGVja291dC1pbmRleC5jCmluZGV4IDU1YjdhYWYuLjBkNTM0YmMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tY2hlY2tvdXQtaW5kZXguYworKysgYi9idWlsdGluLWNoZWNrb3V0LWluZGV4LmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgInF1b3RlLmgiCiAjaW5jbHVkZSAiY2FjaGUtdHJlZS5oIgorI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAogI2RlZmluZSBDSEVDS09VVF9BTEwgNAogc3RhdGljIGludCBsaW5lX3Rlcm1pbmF0aW9uID0gJ1xuJzsKQEAgLTE1MywxMSArMTU0LDU4IEBACiAJCWV4aXQoMTI4KTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgY2hlY2tvdXRfY2FjaGVfdXNhZ2VbXSA9Ci0iZ2l0IGNoZWNrb3V0LWluZGV4IFstdV0gWy1xXSBbLWFdIFstZl0gWy1uXSBbLS1zdGFnZT1bMTIzXXxhbGxdIFstLXByZWZpeD08c3RyaW5nPl0gWy0tdGVtcF0gWy0tXSA8ZmlsZT4uLi4iOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX2NoZWNrb3V0X2luZGV4X3VzYWdlW10gPSB7CisJImdpdCBjaGVja291dC1pbmRleCBbb3B0aW9uc10gWy0tXSA8ZmlsZT4uLi4iLAorCU5VTEwKK307CiAKIHN0YXRpYyBzdHJ1Y3QgbG9ja19maWxlIGxvY2tfZmlsZTsKIAorc3RhdGljIGludCBvcHRpb25fcGFyc2VfdShjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsCisJCQkgICAgICBjb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKK3sKKwlpbnQgKm5ld2ZkID0gb3B0LT52YWx1ZTsKKworCXN0YXRlLnJlZnJlc2hfY2FjaGUgPSAxOworCWlmICgqbmV3ZmQgPCAwKQorCQkqbmV3ZmQgPSBob2xkX2xvY2tlZF9pbmRleCgmbG9ja19maWxlLCAxKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvcHRpb25fcGFyc2Vfeihjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsCisJCQkgIGNvbnN0IGNoYXIgKmFyZywgaW50IHVuc2V0KQoreworCWlmICh1bnNldCkKKwkJbGluZV90ZXJtaW5hdGlvbiA9ICdcbic7CisJZWxzZQorCQlsaW5lX3Rlcm1pbmF0aW9uID0gMDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvcHRpb25fcGFyc2VfcHJlZml4KGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwKKwkJCSAgICAgICBjb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKK3sKKwlzdGF0ZS5iYXNlX2RpciA9IGFyZzsKKwlzdGF0ZS5iYXNlX2Rpcl9sZW4gPSBzdHJsZW4oYXJnKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvcHRpb25fcGFyc2Vfc3RhZ2UoY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LAorCQkJICAgICAgY29uc3QgY2hhciAqYXJnLCBpbnQgdW5zZXQpCit7CisJaWYgKCFzdHJjbXAoYXJnLCAiYWxsIikpIHsKKwkJdG9fdGVtcGZpbGUgPSAxOworCQljaGVja291dF9zdGFnZSA9IENIRUNLT1VUX0FMTDsKKwl9IGVsc2UgeworCQlpbnQgY2ggPSBhcmdbMF07CisJCWlmICgnMScgPD0gY2ggJiYgY2ggPD0gJzMnKQorCQkJY2hlY2tvdXRfc3RhZ2UgPSBhcmdbMF0gLSAnMCc7CisJCWVsc2UKKwkJCWRpZSgic3RhZ2Ugc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMyBvciBhbGwiKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKIGludCBjbWRfY2hlY2tvdXRfaW5kZXgoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJaW50IGk7CkBAIC0xNjUsNiArMjEzLDMzIEBACiAJaW50IGFsbCA9IDA7CiAJaW50IHJlYWRfZnJvbV9zdGRpbiA9IDA7CiAJaW50IHByZWZpeF9sZW5ndGg7CisJaW50IGZvcmNlID0gMCwgcXVpZXQgPSAwLCBub3RfbmV3ID0gMDsKKwlzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fY2hlY2tvdXRfaW5kZXhfb3B0aW9uc1tdID0geworCQlPUFRfQk9PTEVBTignYScsICJhbGwiLCAmYWxsLAorCQkJImNoZWNrcyBvdXQgYWxsIGZpbGVzIGluIHRoZSBpbmRleCIpLAorCQlPUFRfQk9PTEVBTignZicsICJmb3JjZSIsICZmb3JjZSwKKwkJCSJmb3JjZXMgb3ZlcndyaXRlIG9mIGV4aXN0aW5nIGZpbGVzIiksCisJCU9QVF9fUVVJRVQoJnF1aWV0KSwKKwkJT1BUX0JPT0xFQU4oJ24nLCAibm8tY3JlYXRlIiwgJm5vdF9uZXcsCisJCQkiZG9uJ3QgY2hlY2tvdXQgbmV3IGZpbGVzIiksCisJCXsgT1BUSU9OX0NBTExCQUNLLCAndScsICJpbmRleCIsICZuZXdmZCwgTlVMTCwKKwkJCSJ1cGRhdGUgc3RhdCBpbmZvcm1hdGlvbiBpbiB0aGUgaW5kZXggZmlsZSIsCisJCQlQQVJTRV9PUFRfTk9BUkcsIG9wdGlvbl9wYXJzZV91IH0sCisJCXsgT1BUSU9OX0NBTExCQUNLLCAneicsIE5VTEwsIE5VTEwsIE5VTEwsCisJCQkicGF0aHMgYXJlIHNlcGFyYXRlZCB3aXRoIE5VTCBjaGFyYWN0ZXIiLAorCQkJUEFSU0VfT1BUX05PQVJHLCBvcHRpb25fcGFyc2VfeiB9LAorCQlPUFRfQk9PTEVBTigwLCAic3RkaW4iLCAmcmVhZF9mcm9tX3N0ZGluLAorCQkJInJlYWQgbGlzdCBvZiBwYXRocyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIpLAorCQlPUFRfQk9PTEVBTigwLCAidGVtcCIsICZ0b190ZW1wZmlsZSwKKwkJCSJ3cml0ZSB0aGUgY29udGVudCB0byB0ZW1wb3JhcnkgZmlsZXMiKSwKKwkJT1BUX0NBTExCQUNLKDAsICJwcmVmaXgiLCBOVUxMLCAic3RyaW5nIiwKKwkJCSJ3aGVuIGNyZWF0aW5nIGZpbGVzLCBwcmVwZW5kIDxzdHJpbmc+IiwKKwkJCW9wdGlvbl9wYXJzZV9wcmVmaXgpLAorCQlPUFRfQ0FMTEJBQ0soMCwgInN0YWdlIiwgTlVMTCwgTlVMTCwKKwkJCSJjb3B5IG91dCB0aGUgZmlsZXMgZnJvbSBuYW1lZCBzdGFnZSIsCisJCQlvcHRpb25fcGFyc2Vfc3RhZ2UpLAorCQlPUFRfRU5EKCkKKwl9OwogCiAJZ2l0X2NvbmZpZyhnaXRfZGVmYXVsdF9jb25maWcsIE5VTEwpOwogCXN0YXRlLmJhc2VfZGlyID0gIiI7CkBAIC0xNzQsNzIgKzI0OSwxMSBAQAogCQlkaWUoImludmFsaWQgY2FjaGUiKTsKIAl9CiAKLQlmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7Ci0JCWNvbnN0IGNoYXIgKmFyZyA9IGFyZ3ZbaV07Ci0KLQkJaWYgKCFzdHJjbXAoYXJnLCAiLS0iKSkgewotCQkJaSsrOwotCQkJYnJlYWs7Ci0JCX0KLQkJaWYgKCFzdHJjbXAoYXJnLCAiLWEiKSB8fCAhc3RyY21wKGFyZywgIi0tYWxsIikpIHsKLQkJCWFsbCA9IDE7Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAoIXN0cmNtcChhcmcsICItZiIpIHx8ICFzdHJjbXAoYXJnLCAiLS1mb3JjZSIpKSB7Ci0JCQlzdGF0ZS5mb3JjZSA9IDE7Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAoIXN0cmNtcChhcmcsICItcSIpIHx8ICFzdHJjbXAoYXJnLCAiLS1xdWlldCIpKSB7Ci0JCQlzdGF0ZS5xdWlldCA9IDE7Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAoIXN0cmNtcChhcmcsICItbiIpIHx8ICFzdHJjbXAoYXJnLCAiLS1uby1jcmVhdGUiKSkgewotCQkJc3RhdGUubm90X25ldyA9IDE7Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAoIXN0cmNtcChhcmcsICItdSIpIHx8ICFzdHJjbXAoYXJnLCAiLS1pbmRleCIpKSB7Ci0JCQlzdGF0ZS5yZWZyZXNoX2NhY2hlID0gMTsKLQkJCWlmIChuZXdmZCA8IDApCi0JCQkJbmV3ZmQgPSBob2xkX2xvY2tlZF9pbmRleCgmbG9ja19maWxlLCAxKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWlmICghc3RyY21wKGFyZywgIi16IikpIHsKLQkJCWxpbmVfdGVybWluYXRpb24gPSAwOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCFzdHJjbXAoYXJnLCAiLS1zdGRpbiIpKSB7Ci0JCQlpZiAoaSAhPSBhcmdjIC0gMSkKLQkJCQlkaWUoIi0tc3RkaW4gbXVzdCBiZSBhdCB0aGUgZW5kIik7Ci0JCQlyZWFkX2Zyb21fc3RkaW4gPSAxOwotCQkJaSsrOyAvKiBkbyBub3QgY29uc2lkZXIgYXJnIGFzIGEgZmlsZSBuYW1lICovCi0JCQlicmVhazsKLQkJfQotCQlpZiAoIXN0cmNtcChhcmcsICItLXRlbXAiKSkgewotCQkJdG9fdGVtcGZpbGUgPSAxOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1wcmVmaXg9IikpIHsKLQkJCXN0YXRlLmJhc2VfZGlyID0gYXJnKzk7Ci0JCQlzdGF0ZS5iYXNlX2Rpcl9sZW4gPSBzdHJsZW4oc3RhdGUuYmFzZV9kaXIpOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1zdGFnZT0iKSkgewotCQkJaWYgKCFzdHJjbXAoYXJnICsgOCwgImFsbCIpKSB7Ci0JCQkJdG9fdGVtcGZpbGUgPSAxOwotCQkJCWNoZWNrb3V0X3N0YWdlID0gQ0hFQ0tPVVRfQUxMOwotCQkJfSBlbHNlIHsKLQkJCQlpbnQgY2ggPSBhcmdbOF07Ci0JCQkJaWYgKCcxJyA8PSBjaCAmJiBjaCA8PSAnMycpCi0JCQkJCWNoZWNrb3V0X3N0YWdlID0gYXJnWzhdIC0gJzAnOwotCQkJCWVsc2UKLQkJCQkJZGllKCJzdGFnZSBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzIG9yIGFsbCIpOwotCQkJfQotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKGFyZ1swXSA9PSAnLScpCi0JCQl1c2FnZShjaGVja291dF9jYWNoZV91c2FnZSk7Ci0JCWJyZWFrOwotCX0KKwlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBidWlsdGluX2NoZWNrb3V0X2luZGV4X29wdGlvbnMsCisJCQlidWlsdGluX2NoZWNrb3V0X2luZGV4X3VzYWdlLCAwKTsKKwlzdGF0ZS5mb3JjZSA9IGZvcmNlOworCXN0YXRlLnF1aWV0ID0gcXVpZXQ7CisJc3RhdGUubm90X25ldyA9IG5vdF9uZXc7CiAKIAlpZiAoc3RhdGUuYmFzZV9kaXJfbGVuIHx8IHRvX3RlbXBmaWxlKSB7CiAJCS8qIHdoZW4gLS1wcmVmaXggaXMgc3BlY2lmaWVkIHdlIGRvIG5vdApAQCAtMjUzLDcgKzI2Nyw3IEBACiAJfQogCiAJLyogQ2hlY2sgb3V0IG5hbWVkIGZpbGVzIGZpcnN0ICovCi0JZm9yICggOyBpIDwgYXJnYzsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewogCQljb25zdCBjaGFyICphcmcgPSBhcmd2W2ldOwogCQljb25zdCBjaGFyICpwOwogCkBAIC0yNjgsMTMgKzI4MiwxMSBAQAogCX0KIAogCWlmIChyZWFkX2Zyb21fc3RkaW4pIHsKLQkJc3RydWN0IHN0cmJ1ZiBidWYsIG5idWY7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQsIG5idWYgPSBTVFJCVUZfSU5JVDsKIAogCQlpZiAoYWxsKQogCQkJZGllKCJnaXQgY2hlY2tvdXQtaW5kZXg6IGRvbid0IG1peCAnLS1hbGwnIGFuZCAnLS1zdGRpbiciKTsKIAotCQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKLQkJc3RyYnVmX2luaXQoJm5idWYsIDApOwogCQl3aGlsZSAoc3RyYnVmX2dldGxpbmUoJmJ1Ziwgc3RkaW4sIGxpbmVfdGVybWluYXRpb24pICE9IEVPRikgewogCQkJY29uc3QgY2hhciAqcDsKIAkJCWlmIChsaW5lX3Rlcm1pbmF0aW9uICYmIGJ1Zi5idWZbMF0gPT0gJyInKSB7CmRpZmYgLS1naXQgYS9idWlsdGluLWNoZWNrb3V0LmMgYi9idWlsdGluLWNoZWNrb3V0LmMKaW5kZXggYzEwN2ZkNi4uYjVkZDljMCAxMDA2NDQKLS0tIGEvYnVpbHRpbi1jaGVja291dC5jCisrKyBiL2J1aWx0aW4tY2hlY2tvdXQuYwpAQCAtMTMsNiArMTMsOSBAQAogI2luY2x1ZGUgImRpZmYuaCIKICNpbmNsdWRlICJyZXZpc2lvbi5oIgogI2luY2x1ZGUgInJlbW90ZS5oIgorI2luY2x1ZGUgImJsb2IuaCIKKyNpbmNsdWRlICJ4ZGlmZi1pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJsbC1tZXJnZS5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGNoZWNrb3V0X3VzYWdlW10gPSB7CiAJImdpdCBjaGVja291dCBbb3B0aW9uc10gPGJyYW5jaD4iLApAQCAtMjAsNiArMjMsMTggQEAKIAlOVUxMLAogfTsKIAorc3RydWN0IGNoZWNrb3V0X29wdHMgeworCWludCBxdWlldDsKKwlpbnQgbWVyZ2U7CisJaW50IGZvcmNlOworCWludCB3cml0ZW91dF9zdGFnZTsKKwlpbnQgd3JpdGVvdXRfZXJyb3I7CisKKwljb25zdCBjaGFyICpuZXdfYnJhbmNoOworCWludCBuZXdfYnJhbmNoX2xvZzsKKwllbnVtIGJyYW5jaF90cmFjayB0cmFjazsKK307CisKIHN0YXRpYyBpbnQgcG9zdF9jaGVja291dF9ob29rKHN0cnVjdCBjb21taXQgKm9sZCwgc3RydWN0IGNvbW1pdCAqbmV3LAogCQkJICAgICAgaW50IGNoYW5nZWQpCiB7CkBAIC04NCw4ICs5OSwxMjEgQEAKIAlyZXR1cm4gcG9zOwogfQogCitzdGF0aWMgaW50IGNoZWNrX3N0YWdlKGludCBzdGFnZSwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgaW50IHBvcykKK3sKKwl3aGlsZSAocG9zIDwgYWN0aXZlX25yICYmCisJICAgICAgICFzdHJjbXAoYWN0aXZlX2NhY2hlW3Bvc10tPm5hbWUsIGNlLT5uYW1lKSkgeworCQlpZiAoY2Vfc3RhZ2UoYWN0aXZlX2NhY2hlW3Bvc10pID09IHN0YWdlKQorCQkJcmV0dXJuIDA7CisJCXBvcysrOworCX0KKwlyZXR1cm4gZXJyb3IoInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlICVzIHZlcnNpb24iLAorCQkgICAgIGNlLT5uYW1lLAorCQkgICAgIChzdGFnZSA9PSAyKSA/ICJvdXIiIDogInRoZWlyIik7Cit9CiAKLXN0YXRpYyBpbnQgY2hlY2tvdXRfcGF0aHMoc3RydWN0IHRyZWUgKnNvdXJjZV90cmVlLCBjb25zdCBjaGFyICoqcGF0aHNwZWMpCitzdGF0aWMgaW50IGNoZWNrX2FsbF9zdGFnZXMoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgaW50IHBvcykKK3sKKwlpZiAoY2Vfc3RhZ2UoY2UpICE9IDEgfHwKKwkgICAgYWN0aXZlX25yIDw9IHBvcyArIDIgfHwKKwkgICAgc3RyY21wKGFjdGl2ZV9jYWNoZVtwb3MrMV0tPm5hbWUsIGNlLT5uYW1lKSB8fAorCSAgICBjZV9zdGFnZShhY3RpdmVfY2FjaGVbcG9zKzFdKSAhPSAyIHx8CisJICAgIHN0cmNtcChhY3RpdmVfY2FjaGVbcG9zKzJdLT5uYW1lLCBjZS0+bmFtZSkgfHwKKwkgICAgY2Vfc3RhZ2UoYWN0aXZlX2NhY2hlW3BvcysyXSkgIT0gMykKKwkJcmV0dXJuIGVycm9yKCJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBhbGwgdGhyZWUgdmVyc2lvbnMiLAorCQkJICAgICBjZS0+bmFtZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tvdXRfc3RhZ2UoaW50IHN0YWdlLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBpbnQgcG9zLAorCQkJICBzdHJ1Y3QgY2hlY2tvdXQgKnN0YXRlKQoreworCXdoaWxlIChwb3MgPCBhY3RpdmVfbnIgJiYKKwkgICAgICAgIXN0cmNtcChhY3RpdmVfY2FjaGVbcG9zXS0+bmFtZSwgY2UtPm5hbWUpKSB7CisJCWlmIChjZV9zdGFnZShhY3RpdmVfY2FjaGVbcG9zXSkgPT0gc3RhZ2UpCisJCQlyZXR1cm4gY2hlY2tvdXRfZW50cnkoYWN0aXZlX2NhY2hlW3Bvc10sIHN0YXRlLCBOVUxMKTsKKwkJcG9zKys7CisJfQorCXJldHVybiBlcnJvcigicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgJXMgdmVyc2lvbiIsCisJCSAgICAgY2UtPm5hbWUsCisJCSAgICAgKHN0YWdlID09IDIpID8gIm91ciIgOiAidGhlaXIiKTsKK30KKworLyogTkVFRFNXT1JLOiBzaGFyZSB3aXRoIG1lcmdlLXJlY3Vyc2l2ZSAqLworc3RhdGljIHZvaWQgZmlsbF9tbShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBtbWZpbGVfdCAqbW0pCit7CisJdW5zaWduZWQgbG9uZyBzaXplOworCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKworCWlmICghaGFzaGNtcChzaGExLCBudWxsX3NoYTEpKSB7CisJCW1tLT5wdHIgPSB4c3RyZHVwKCIiKTsKKwkJbW0tPnNpemUgPSAwOworCQlyZXR1cm47CisJfQorCisJbW0tPnB0ciA9IHJlYWRfc2hhMV9maWxlKHNoYTEsICZ0eXBlLCAmc2l6ZSk7CisJaWYgKCFtbS0+cHRyIHx8IHR5cGUgIT0gT0JKX0JMT0IpCisJCWRpZSgidW5hYmxlIHRvIHJlYWQgYmxvYiBvYmplY3QgJXMiLCBzaGExX3RvX2hleChzaGExKSk7CisJbW0tPnNpemUgPSBzaXplOworfQorCitzdGF0aWMgaW50IGNoZWNrb3V0X21lcmdlZChpbnQgcG9zLCBzdHJ1Y3QgY2hlY2tvdXQgKnN0YXRlKQoreworCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKKwljb25zdCBjaGFyICpwYXRoID0gY2UtPm5hbWU7CisJbW1maWxlX3QgYW5jZXN0b3IsIG91cnMsIHRoZWlyczsKKwlpbnQgc3RhdHVzOworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJbW1idWZmZXJfdCByZXN1bHRfYnVmOworCisJaWYgKGNlX3N0YWdlKGNlKSAhPSAxIHx8CisJICAgIGFjdGl2ZV9uciA8PSBwb3MgKyAyIHx8CisJICAgIHN0cmNtcChhY3RpdmVfY2FjaGVbcG9zKzFdLT5uYW1lLCBwYXRoKSB8fAorCSAgICBjZV9zdGFnZShhY3RpdmVfY2FjaGVbcG9zKzFdKSAhPSAyIHx8CisJICAgIHN0cmNtcChhY3RpdmVfY2FjaGVbcG9zKzJdLT5uYW1lLCBwYXRoKSB8fAorCSAgICBjZV9zdGFnZShhY3RpdmVfY2FjaGVbcG9zKzJdKSAhPSAzKQorCQlyZXR1cm4gZXJyb3IoInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIGFsbCAzIHZlcnNpb25zIiwgcGF0aCk7CisKKwlmaWxsX21tKGFjdGl2ZV9jYWNoZVtwb3NdLT5zaGExLCAmYW5jZXN0b3IpOworCWZpbGxfbW0oYWN0aXZlX2NhY2hlW3BvcysxXS0+c2hhMSwgJm91cnMpOworCWZpbGxfbW0oYWN0aXZlX2NhY2hlW3BvcysyXS0+c2hhMSwgJnRoZWlycyk7CisKKwlzdGF0dXMgPSBsbF9tZXJnZSgmcmVzdWx0X2J1ZiwgcGF0aCwgJmFuY2VzdG9yLAorCQkJICAmb3VycywgIm91cnMiLCAmdGhlaXJzLCAidGhlaXJzIiwgMSk7CisJZnJlZShhbmNlc3Rvci5wdHIpOworCWZyZWUob3Vycy5wdHIpOworCWZyZWUodGhlaXJzLnB0cik7CisJaWYgKHN0YXR1cyA8IDAgfHwgIXJlc3VsdF9idWYucHRyKSB7CisJCWZyZWUocmVzdWx0X2J1Zi5wdHIpOworCQlyZXR1cm4gZXJyb3IoInBhdGggJyVzJzogY2Fubm90IG1lcmdlIiwgcGF0aCk7CisJfQorCisJLyoKKwkgKiBORUVEU1dPUks6CisJICogVGhlcmUgaXMgYWJzb2x1dGVseSBubyByZWFzb24gdG8gd3JpdGUgdGhpcyBhcyBhIGJsb2Igb2JqZWN0CisJICogYW5kIGNyZWF0ZSBhIHBob25leSBjYWNoZSBlbnRyeSBqdXN0IHRvIGxlYWsuICBUaGlzIGhhY2sgaXMKKwkgKiBwcmltYXJpbHkgdG8gZ2V0IHRvIHRoZSB3cml0ZV9lbnRyeSgpIG1hY2hpbmVyeSB0aGF0IG1hc3NhZ2VzCisJICogdGhlIGNvbnRlbnRzIHRvIHdvcmstdHJlZSBmb3JtYXQgYW5kIHdyaXRlcyBvdXQgd2hpY2ggb25seQorCSAqIGFsbG93cyBpdCBmb3IgYSBjYWNoZSBlbnRyeS4gIFRoZSBjb2RlIGluIHdyaXRlX2VudHJ5KCkgbmVlZHMKKwkgKiB0byBiZSByZWZhY3RvcmVkIHRvIGFsbG93IHVzIHRvIGZlZWQgYSA8YnVmZmVyLCBzaXplLCBtb2RlPgorCSAqIGluc3RlYWQgb2YgYSBjYWNoZSBlbnRyeS4gIFN1Y2ggYSByZWZhY3RvcmluZyB3b3VsZCBoZWxwCisJICogbWVyZ2VfcmVjdXJzaXZlIGFzIHdlbGwgKGl0IGFsc28gd3JpdGVzIHRoZSBtZXJnZSByZXN1bHQgdG8gdGhlCisJICogb2JqZWN0IGRhdGFiYXNlIGV2ZW4gd2hlbiBpdCBtYXkgY29udGFpbiBjb25mbGljdHMpLgorCSAqLworCWlmICh3cml0ZV9zaGExX2ZpbGUocmVzdWx0X2J1Zi5wdHIsIHJlc3VsdF9idWYuc2l6ZSwKKwkJCSAgICBibG9iX3R5cGUsIHNoYTEpKQorCQlkaWUoIlVuYWJsZSB0byBhZGQgbWVyZ2UgcmVzdWx0IGZvciAnJXMnIiwgcGF0aCk7CisJY2UgPSBtYWtlX2NhY2hlX2VudHJ5KGNyZWF0ZV9jZV9tb2RlKGFjdGl2ZV9jYWNoZVtwb3MrMV0tPmNlX21vZGUpLAorCQkJICAgICAgc2hhMSwKKwkJCSAgICAgIHBhdGgsIDIsIDApOworCWlmICghY2UpCisJCWRpZSgibWFrZV9jYWNoZV9lbnRyeSBmYWlsZWQgZm9yIHBhdGggJyVzJyIsIHBhdGgpOworCXN0YXR1cyA9IGNoZWNrb3V0X2VudHJ5KGNlLCBzdGF0ZSwgTlVMTCk7CisJcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIGludCBjaGVja291dF9wYXRocyhzdHJ1Y3QgdHJlZSAqc291cmNlX3RyZWUsIGNvbnN0IGNoYXIgKipwYXRoc3BlYywKKwkJCSAgc3RydWN0IGNoZWNrb3V0X29wdHMgKm9wdHMpCiB7CiAJaW50IHBvczsKIAlzdHJ1Y3QgY2hlY2tvdXQgc3RhdGU7CkBAIC05NCwxMiArMjIyLDE0IEBACiAJaW50IGZsYWc7CiAJc3RydWN0IGNvbW1pdCAqaGVhZDsKIAlpbnQgZXJycyA9IDA7Ci0KKwlpbnQgc3RhZ2UgPSBvcHRzLT53cml0ZW91dF9zdGFnZTsKKwlpbnQgbWVyZ2UgPSBvcHRzLT5tZXJnZTsKIAlpbnQgbmV3ZmQ7CiAJc3RydWN0IGxvY2tfZmlsZSAqbG9ja19maWxlID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOwogCiAJbmV3ZmQgPSBob2xkX2xvY2tlZF9pbmRleChsb2NrX2ZpbGUsIDEpOwotCXJlYWRfY2FjaGUoKTsKKwlpZiAocmVhZF9jYWNoZSgpIDwgMCkKKwkJcmV0dXJuIGVycm9yKCJjb3JydXB0IGluZGV4IGZpbGUiKTsKIAogCWlmIChzb3VyY2VfdHJlZSkKIAkJcmVhZF90cmVlX3NvbWUoc291cmNlX3RyZWUsIHBhdGhzcGVjKTsKQEAgLTEyMiw4ICsyNTIsMTYgQEAKIAkJaWYgKHBhdGhzcGVjX21hdGNoKHBhdGhzcGVjLCBOVUxMLCBjZS0+bmFtZSwgMCkpIHsKIAkJCWlmICghY2Vfc3RhZ2UoY2UpKQogCQkJCWNvbnRpbnVlOwotCQkJZXJycyA9IDE7Ci0JCQllcnJvcigicGF0aCAnJXMnIGlzIHVubWVyZ2VkIiwgY2UtPm5hbWUpOworCQkJaWYgKG9wdHMtPmZvcmNlKSB7CisJCQkJd2FybmluZygicGF0aCAnJXMnIGlzIHVubWVyZ2VkIiwgY2UtPm5hbWUpOworCQkJfSBlbHNlIGlmIChzdGFnZSkgeworCQkJCWVycnMgfD0gY2hlY2tfc3RhZ2Uoc3RhZ2UsIGNlLCBwb3MpOworCQkJfSBlbHNlIGlmIChvcHRzLT5tZXJnZSkgeworCQkJCWVycnMgfD0gY2hlY2tfYWxsX3N0YWdlcyhjZSwgcG9zKTsKKwkJCX0gZWxzZSB7CisJCQkJZXJycyA9IDE7CisJCQkJZXJyb3IoInBhdGggJyVzJyBpcyB1bm1lcmdlZCIsIGNlLT5uYW1lKTsKKwkJCX0KIAkJCXBvcyA9IHNraXBfc2FtZV9uYW1lKGNlLCBwb3MpIC0gMTsKIAkJfQogCX0KQEAgLTE0MSw2ICsyNzksMTAgQEAKIAkJCQllcnJzIHw9IGNoZWNrb3V0X2VudHJ5KGNlLCAmc3RhdGUsIE5VTEwpOwogCQkJCWNvbnRpbnVlOwogCQkJfQorCQkJaWYgKHN0YWdlKQorCQkJCWVycnMgfD0gY2hlY2tvdXRfc3RhZ2Uoc3RhZ2UsIGNlLCBwb3MsICZzdGF0ZSk7CisJCQllbHNlIGlmIChtZXJnZSkKKwkJCQllcnJzIHw9IGNoZWNrb3V0X21lcmdlZChwb3MsICZzdGF0ZSk7CiAJCQlwb3MgPSBza2lwX3NhbWVfbmFtZShjZSwgcG9zKSAtIDE7CiAJCX0KIAl9CkBAIC0xNjksOCArMzExLDcgQEAKIAogc3RhdGljIHZvaWQgZGVzY3JpYmVfZGV0YWNoZWRfaGVhZChjaGFyICptc2csIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIHNiOwotCXN0cmJ1Zl9pbml0KCZzYiwgMCk7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCXBhcnNlX2NvbW1pdChjb21taXQpOwogCXByZXR0eV9wcmludF9jb21taXQoQ01JVF9GTVRfT05FTElORSwgY29tbWl0LCAmc2IsIDAsIE5VTEwsIE5VTEwsIDAsIDApOwogCWZwcmludGYoc3RkZXJyLCAiJXMgJXMuLi4gJXNcbiIsIG1zZywKQEAgLTE3OCwxNyArMzE5LDYgQEAKIAlzdHJidWZfcmVsZWFzZSgmc2IpOwogfQogCi1zdHJ1Y3QgY2hlY2tvdXRfb3B0cyB7Ci0JaW50IHF1aWV0OwotCWludCBtZXJnZTsKLQlpbnQgZm9yY2U7Ci0JaW50IHdyaXRlb3V0X2Vycm9yOwotCi0JY2hhciAqbmV3X2JyYW5jaDsKLQlpbnQgbmV3X2JyYW5jaF9sb2c7Ci0JZW51bSBicmFuY2hfdHJhY2sgdHJhY2s7Ci19OwotCiBzdGF0aWMgaW50IHJlc2V0X3RyZWUoc3RydWN0IHRyZWUgKnRyZWUsIHN0cnVjdCBjaGVja291dF9vcHRzICpvLCBpbnQgd29ya3RyZWUpCiB7CiAJc3RydWN0IHVucGFja190cmVlc19vcHRpb25zIG9wdHM7CkBAIC0yMzAsOCArMzYwLDcgQEAKIAogc3RhdGljIHZvaWQgc2V0dXBfYnJhbmNoX3BhdGgoc3RydWN0IGJyYW5jaF9pbmZvICpicmFuY2gpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7Ci0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJidWZfYWRkc3RyKCZidWYsICJyZWZzL2hlYWRzLyIpOwogCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgYnJhbmNoLT5uYW1lKTsKIAlicmFuY2gtPnBhdGggPSBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOwpAQCAtMjQzLDcgKzM3Miw5IEBACiAJaW50IHJldDsKIAlzdHJ1Y3QgbG9ja19maWxlICpsb2NrX2ZpbGUgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbG9ja19maWxlKSk7CiAJaW50IG5ld2ZkID0gaG9sZF9sb2NrZWRfaW5kZXgobG9ja19maWxlLCAxKTsKLQlyZWFkX2NhY2hlKCk7CisKKwlpZiAocmVhZF9jYWNoZSgpIDwgMCkKKwkJcmV0dXJuIGVycm9yKCJjb3JydXB0IGluZGV4IGZpbGUiKTsKIAogCWlmIChvcHRzLT5mb3JjZSkgewogCQlyZXQgPSByZXNldF90cmVlKG5ldy0+Y29tbWl0LT50cmVlLCBvcHRzLCAxKTsKQEAgLTI5Miw2ICs0MjMsNyBAQAogCQkJICovCiAJCQlzdHJ1Y3QgdHJlZSAqcmVzdWx0OwogCQkJc3RydWN0IHRyZWUgKndvcms7CisJCQlzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyBvOwogCQkJaWYgKCFvcHRzLT5tZXJnZSkKIAkJCQlyZXR1cm4gMTsKIAkJCXBhcnNlX2NvbW1pdChvbGQtPmNvbW1pdCk7CkBAIC0zMTAsMTMgKzQ0MiwxNyBAQAogCQkJICovCiAKIAkJCWFkZF9maWxlc190b19jYWNoZShOVUxMLCBOVUxMLCAwKTsKLQkJCXdvcmsgPSB3cml0ZV90cmVlX2Zyb21fbWVtb3J5KCk7CisJCQlpbml0X21lcmdlX29wdGlvbnMoJm8pOworCQkJby52ZXJib3NpdHkgPSAwOworCQkJd29yayA9IHdyaXRlX3RyZWVfZnJvbV9tZW1vcnkoJm8pOwogCiAJCQlyZXQgPSByZXNldF90cmVlKG5ldy0+Y29tbWl0LT50cmVlLCBvcHRzLCAxKTsKIAkJCWlmIChyZXQpCiAJCQkJcmV0dXJuIHJldDsKLQkJCW1lcmdlX3RyZWVzKG5ldy0+Y29tbWl0LT50cmVlLCB3b3JrLCBvbGQtPmNvbW1pdC0+dHJlZSwKLQkJCQkgICAgbmV3LT5uYW1lLCAibG9jYWwiLCAmcmVzdWx0KTsKKwkJCW8uYnJhbmNoMSA9IG5ldy0+bmFtZTsKKwkJCW8uYnJhbmNoMiA9ICJsb2NhbCI7CisJCQltZXJnZV90cmVlcygmbywgbmV3LT5jb21taXQtPnRyZWUsIHdvcmssCisJCQkJb2xkLT5jb21taXQtPnRyZWUsICZyZXN1bHQpOwogCQkJcmV0ID0gcmVzZXRfdHJlZShuZXctPmNvbW1pdC0+dHJlZSwgb3B0cywgMCk7CiAJCQlpZiAocmV0KQogCQkJCXJldHVybiByZXQ7CkBAIC0zNDgsNyArNDg0LDcgQEAKIAkJCQkgICBzdHJ1Y3QgYnJhbmNoX2luZm8gKm9sZCwKIAkJCQkgICBzdHJ1Y3QgYnJhbmNoX2luZm8gKm5ldykKIHsKLQlzdHJ1Y3Qgc3RyYnVmIG1zZzsKKwlzdHJ1Y3Qgc3RyYnVmIG1zZyA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKm9sZF9kZXNjOwogCWlmIChvcHRzLT5uZXdfYnJhbmNoKSB7CiAJCWNyZWF0ZV9icmFuY2gob2xkLT5uYW1lLCBvcHRzLT5uZXdfYnJhbmNoLCBuZXctPm5hbWUsIDAsCkBAIC0zNTcsNyArNDkzLDYgQEAKIAkJc2V0dXBfYnJhbmNoX3BhdGgobmV3KTsKIAl9CiAKLQlzdHJidWZfaW5pdCgmbXNnLCAwKTsKIAlvbGRfZGVzYyA9IG9sZC0+bmFtZTsKIAlpZiAoIW9sZF9kZXNjICYmIG9sZC0+Y29tbWl0KQogCQlvbGRfZGVzYyA9IHNoYTFfdG9faGV4KG9sZC0+Y29tbWl0LT5vYmplY3Quc2hhMSk7CkBAIC00MzksNiArNTc0LDExIEBACiAJcmV0dXJuIHJldCB8fCBvcHRzLT53cml0ZW91dF9lcnJvcjsKIH0KIAorc3RhdGljIGludCBnaXRfY2hlY2tvdXRfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQoreworCXJldHVybiBnaXRfeG1lcmdlX2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7Cit9CisKIGludCBjbWRfY2hlY2tvdXQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJc3RydWN0IGNoZWNrb3V0X29wdHMgb3B0czsKQEAgLTQ0NiwxNCArNTg2LDIxIEBACiAJY29uc3QgY2hhciAqYXJnOwogCXN0cnVjdCBicmFuY2hfaW5mbyBuZXc7CiAJc3RydWN0IHRyZWUgKnNvdXJjZV90cmVlID0gTlVMTDsKKwljaGFyICpjb25mbGljdF9zdHlsZSA9IE5VTEw7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CiAJCU9QVF9fUVVJRVQoJm9wdHMucXVpZXQpLAogCQlPUFRfU1RSSU5HKCdiJywgTlVMTCwgJm9wdHMubmV3X2JyYW5jaCwgIm5ldyBicmFuY2giLCAiYnJhbmNoIiksCiAJCU9QVF9CT09MRUFOKCdsJywgTlVMTCwgJm9wdHMubmV3X2JyYW5jaF9sb2csICJsb2cgZm9yIG5ldyBicmFuY2giKSwKIAkJT1BUX1NFVF9JTlQoJ3QnLCAidHJhY2siLCAgJm9wdHMudHJhY2ssICJ0cmFjayIsCiAJCQlCUkFOQ0hfVFJBQ0tfRVhQTElDSVQpLAorCQlPUFRfU0VUX0lOVCgnMicsICJvdXJzIiwgJm9wdHMud3JpdGVvdXRfc3RhZ2UsICJzdGFnZSIsCisJCQkgICAgMiksCisJCU9QVF9TRVRfSU5UKCczJywgInRoZWlycyIsICZvcHRzLndyaXRlb3V0X3N0YWdlLCAic3RhZ2UiLAorCQkJICAgIDMpLAogCQlPUFRfQk9PTEVBTignZicsIE5VTEwsICZvcHRzLmZvcmNlLCAiZm9yY2UiKSwKLQkJT1BUX0JPT0xFQU4oJ20nLCBOVUxMLCAmb3B0cy5tZXJnZSwgIm1lcmdlIiksCisJCU9QVF9CT09MRUFOKCdtJywgIm1lcmdlIiwgJm9wdHMubWVyZ2UsICJtZXJnZSIpLAorCQlPUFRfU1RSSU5HKDAsICJjb25mbGljdCIsICZjb25mbGljdF9zdHlsZSwgInN0eWxlIiwKKwkJCSAgICJjb25mbGljdCBzdHlsZSAobWVyZ2Ugb3IgZGlmZjMpIiksCiAJCU9QVF9FTkQoKSwKIAl9OwogCWludCBoYXNfZGFzaF9kYXNoOwpAQCAtNDYxLDE1ICs2MDgsMzQgQEAKIAltZW1zZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CiAJbWVtc2V0KCZuZXcsIDAsIHNpemVvZihuZXcpKTsKIAotCWdpdF9jb25maWcoZ2l0X2RlZmF1bHRfY29uZmlnLCBOVUxMKTsKKwlnaXRfY29uZmlnKGdpdF9jaGVja291dF9jb25maWcsIE5VTEwpOwogCi0Jb3B0cy50cmFjayA9IGdpdF9icmFuY2hfdHJhY2s7CisJb3B0cy50cmFjayA9IEJSQU5DSF9UUkFDS19VTlNQRUNJRklFRDsKIAogCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGNoZWNrb3V0X3VzYWdlLAogCQkJICAgICBQQVJTRV9PUFRfS0VFUF9EQVNIREFTSCk7CiAKLQlpZiAoIW9wdHMubmV3X2JyYW5jaCAmJiAob3B0cy50cmFjayAhPSBnaXRfYnJhbmNoX3RyYWNrKSkKLQkJZGllKCJnaXQgY2hlY2tvdXQ6IC0tdHJhY2sgYW5kIC0tbm8tdHJhY2sgcmVxdWlyZSAtYiIpOworCS8qIC0tdHJhY2sgd2l0aG91dCAtYiBzaG91bGQgRFdJTSAqLworCWlmICgwIDwgb3B0cy50cmFjayAmJiAhb3B0cy5uZXdfYnJhbmNoKSB7CisJCWNvbnN0IGNoYXIgKmFyZ3YwID0gYXJndlswXTsKKwkJaWYgKCFhcmdjIHx8ICFzdHJjbXAoYXJndjAsICItLSIpKQorCQkJZGllICgiLS10cmFjayBuZWVkcyBhIGJyYW5jaCBuYW1lIik7CisJCWlmICghcHJlZml4Y21wKGFyZ3YwLCAicmVmcy8iKSkKKwkJCWFyZ3YwICs9IDU7CisJCWlmICghcHJlZml4Y21wKGFyZ3YwLCAicmVtb3Rlcy8iKSkKKwkJCWFyZ3YwICs9IDg7CisJCWFyZ3YwID0gc3RyY2hyKGFyZ3YwLCAnLycpOworCQlpZiAoIWFyZ3YwIHx8ICFhcmd2MFsxXSkKKwkJCWRpZSAoIk1pc3NpbmcgYnJhbmNoIG5hbWU7IHRyeSAtYiIpOworCQlvcHRzLm5ld19icmFuY2ggPSBhcmd2MCArIDE7CisJfQorCisJaWYgKG9wdHMudHJhY2sgPT0gQlJBTkNIX1RSQUNLX1VOU1BFQ0lGSUVEKQorCQlvcHRzLnRyYWNrID0gZ2l0X2JyYW5jaF90cmFjazsKKwlpZiAoY29uZmxpY3Rfc3R5bGUpIHsKKwkJb3B0cy5tZXJnZSA9IDE7IC8qIGltcGxpZWQgKi8KKwkJZ2l0X3htZXJnZV9jb25maWcoIm1lcmdlLmNvbmZsaWN0c3R5bGUiLCBjb25mbGljdF9zdHlsZSwgTlVMTCk7CisJfQogCiAJaWYgKG9wdHMuZm9yY2UgJiYgb3B0cy5tZXJnZSkKIAkJZGllKCJnaXQgY2hlY2tvdXQ6IC1mIGFuZCAtbSBhcmUgaW5jb21wYXRpYmxlIik7CkBAIC01MTUsOCArNjgxLDggQEAKIAkJYXJndisrOwogCQlhcmdjLS07CiAKKwkJbmV3Lm5hbWUgPSBhcmc7CiAJCWlmICgobmV3LmNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShyZXYsIDEpKSkgewotCQkJbmV3Lm5hbWUgPSBhcmc7CiAJCQlzZXR1cF9icmFuY2hfcGF0aCgmbmV3KTsKIAkJCWlmIChyZXNvbHZlX3JlZihuZXcucGF0aCwgcmV2LCAxLCBOVUxMKSkKIAkJCQluZXcuY29tbWl0ID0gbG9va3VwX2NvbW1pdF9yZWZlcmVuY2UocmV2KTsKQEAgLTU1MywyMCArNzE5LDIyIEBACiAJCQlkaWUoImludmFsaWQgcGF0aCBzcGVjaWZpY2F0aW9uIik7CiAKIAkJLyogQ2hlY2tvdXQgcGF0aHMgKi8KLQkJaWYgKG9wdHMubmV3X2JyYW5jaCB8fCBvcHRzLmZvcmNlIHx8IG9wdHMubWVyZ2UpIHsKKwkJaWYgKG9wdHMubmV3X2JyYW5jaCkgewogCQkJaWYgKGFyZ2MgPT0gMSkgewotCQkJCWRpZSgiZ2l0IGNoZWNrb3V0OiB1cGRhdGluZyBwYXRocyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMvZm9yY2luZ1xuRGlkIHlvdSBpbnRlbmQgdG8gY2hlY2tvdXQgJyVzJyB3aGljaCBjYW4gbm90IGJlIHJlc29sdmVkIGFzIGNvbW1pdD8iLCBhcmd2WzBdKTsKKwkJCQlkaWUoImdpdCBjaGVja291dDogdXBkYXRpbmcgcGF0aHMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzLlxuRGlkIHlvdSBpbnRlbmQgdG8gY2hlY2tvdXQgJyVzJyB3aGljaCBjYW4gbm90IGJlIHJlc29sdmVkIGFzIGNvbW1pdD8iLCBhcmd2WzBdKTsKIAkJCX0gZWxzZSB7Ci0JCQkJZGllKCJnaXQgY2hlY2tvdXQ6IHVwZGF0aW5nIHBhdGhzIGlzIGluY29tcGF0aWJsZSB3aXRoIHN3aXRjaGluZyBicmFuY2hlcy9mb3JjaW5nIik7CisJCQkJZGllKCJnaXQgY2hlY2tvdXQ6IHVwZGF0aW5nIHBhdGhzIGlzIGluY29tcGF0aWJsZSB3aXRoIHN3aXRjaGluZyBicmFuY2hlcy4iKTsKIAkJCX0KIAkJfQogCi0JCXJldHVybiBjaGVja291dF9wYXRocyhzb3VyY2VfdHJlZSwgcGF0aHNwZWMpOworCQlpZiAoMSA8ICEhb3B0cy53cml0ZW91dF9zdGFnZSArICEhb3B0cy5mb3JjZSArICEhb3B0cy5tZXJnZSkKKwkJCWRpZSgiZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2UgYW5kIC0tbWVyZ2UgYXJlIGluY29tcGF0aWJsZSB3aGVuXG5jaGVja2luZyBvdXQgb2YgdGhlIGluZGV4LiIpOworCisJCXJldHVybiBjaGVja291dF9wYXRocyhzb3VyY2VfdHJlZSwgcGF0aHNwZWMsICZvcHRzKTsKIAl9CiAKIAlpZiAob3B0cy5uZXdfYnJhbmNoKSB7Ci0JCXN0cnVjdCBzdHJidWYgYnVmOwotCQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKKwkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAkJc3RyYnVmX2FkZHN0cigmYnVmLCAicmVmcy9oZWFkcy8iKTsKIAkJc3RyYnVmX2FkZHN0cigmYnVmLCBvcHRzLm5ld19icmFuY2gpOwogCQlpZiAoIWdldF9zaGExKGJ1Zi5idWYsIHJldikpCkBAIC01NzksNiArNzQ3LDggQEAKIAlpZiAobmV3Lm5hbWUgJiYgIW5ldy5jb21taXQpIHsKIAkJZGllKCJDYW5ub3Qgc3dpdGNoIGJyYW5jaCB0byBhIG5vbi1jb21taXQuIik7CiAJfQorCWlmIChvcHRzLndyaXRlb3V0X3N0YWdlKQorCQlkaWUoIi0tb3Vycy8tLXRoZWlycyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMuIik7CiAKIAlyZXR1cm4gc3dpdGNoX2JyYW5jaGVzKCZvcHRzLCAmbmV3KTsKIH0KZGlmZiAtLWdpdCBhL2J1aWx0aW4tY2xlYW4uYyBiL2J1aWx0aW4tY2xlYW4uYwppbmRleCA0OGJmMjlmLi5mNzhjMmZiIDEwMDY0NAotLS0gYS9idWlsdGluLWNsZWFuLmMKKysrIGIvYnVpbHRpbi1jbGVhbi5jCkBAIC0zMSwxMSArMzEsMTEgQEAKIAlpbnQgaTsKIAlpbnQgc2hvd19vbmx5ID0gMCwgcmVtb3ZlX2RpcmVjdG9yaWVzID0gMCwgcXVpZXQgPSAwLCBpZ25vcmVkID0gMDsKIAlpbnQgaWdub3JlZF9vbmx5ID0gMCwgYmFzZWxlbiA9IDAsIGNvbmZpZ19zZXQgPSAwLCBlcnJvcnMgPSAwOwotCXN0cnVjdCBzdHJidWYgZGlyZWN0b3J5OworCXN0cnVjdCBzdHJidWYgZGlyZWN0b3J5ID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IGRpcl9zdHJ1Y3QgZGlyOwogCWNvbnN0IGNoYXIgKnBhdGgsICpiYXNlOwogCXN0YXRpYyBjb25zdCBjaGFyICoqcGF0aHNwZWM7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICpxbmFtZTsKIAljaGFyICpzZWVuID0gTlVMTDsKIAlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKQEAgLTU4LDcgKzU4LDYgQEAKIAogCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGJ1aWx0aW5fY2xlYW5fdXNhZ2UsIDApOwogCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CiAJbWVtc2V0KCZkaXIsIDAsIHNpemVvZihkaXIpKTsKIAlpZiAoaWdub3JlZF9vbmx5KQogCQlkaXIuc2hvd19pZ25vcmVkID0gMTsKQEAgLTg4LDcgKzg3LDYgQEAKIAlpZiAoYmFzZWxlbikKIAkJcGF0aCA9IGJhc2UgPSB4bWVtZHVweigqcGF0aHNwZWMsIGJhc2VsZW4pOwogCXJlYWRfZGlyZWN0b3J5KCZkaXIsIHBhdGgsIGJhc2UsIGJhc2VsZW4sIHBhdGhzcGVjKTsKLQlzdHJidWZfaW5pdCgmZGlyZWN0b3J5LCAwKTsKIAogCWlmIChwYXRoc3BlYykKIAkJc2VlbiA9IHhtYWxsb2MoYXJnYyA+IDAgPyBhcmdjIDogMSk7CmRpZmYgLS1naXQgYS9idWlsdGluLWNsb25lLmMgYi9idWlsdGluLWNsb25lLmMKaW5kZXggNWI0MGUwNy4uMmZlYWM5YyAxMDA2NDQKLS0tIGEvYnVpbHRpbi1jbG9uZS5jCisrKyBiL2J1aWx0aW4tY2xvbmUuYwpAQCAtMzgsOSArMzgsMTEgQEAKIHN0YXRpYyBjaGFyICpvcHRpb25fdGVtcGxhdGUsICpvcHRpb25fcmVmZXJlbmNlLCAqb3B0aW9uX2RlcHRoOwogc3RhdGljIGNoYXIgKm9wdGlvbl9vcmlnaW4gPSBOVUxMOwogc3RhdGljIGNoYXIgKm9wdGlvbl91cGxvYWRfcGFjayA9ICJnaXQtdXBsb2FkLXBhY2siOworc3RhdGljIGludCBvcHRpb25fdmVyYm9zZTsKIAogc3RhdGljIHN0cnVjdCBvcHRpb24gYnVpbHRpbl9jbG9uZV9vcHRpb25zW10gPSB7CiAJT1BUX19RVUlFVCgmb3B0aW9uX3F1aWV0KSwKKwlPUFRfX1ZFUkJPU0UoJm9wdGlvbl92ZXJib3NlKSwKIAlPUFRfQk9PTEVBTignbicsICJuby1jaGVja291dCIsICZvcHRpb25fbm9fY2hlY2tvdXQsCiAJCSAgICAiZG9uJ3QgY3JlYXRlIGEgY2hlY2tvdXQiKSwKIAlPUFRfQk9PTEVBTigwLCAiYmFyZSIsICZvcHRpb25fYmFyZSwgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIpLApAQCAtNzcsNyArNzksNyBAQAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN1ZmZpeCk7IGkrKykgewogCQljb25zdCBjaGFyICpwYXRoOwogCQlwYXRoID0gbWtwYXRoKCIlcyVzIiwgcmVwbywgc3VmZml4W2ldKTsKLQkJaWYgKCFzdGF0KHBhdGgsICZzdCkgJiYgU19JU0RJUihzdC5zdF9tb2RlKSkgeworCQlpZiAoaXNfZGlyZWN0b3J5KHBhdGgpKSB7CiAJCQkqaXNfYnVuZGxlID0gMDsKIAkJCXJldHVybiB4c3RyZHVwKG1ha2Vfbm9ucmVsYXRpdmVfcGF0aChwYXRoKSk7CiAJCX0KQEAgLTEzMiwyMSArMTM0LDE0IEBACiAJfQogCiAJaWYgKGlzX2JhcmUpIHsKLQkJY2hhciAqcmVzdWx0ID0geG1hbGxvYyhlbmQgLSBzdGFydCArIDUpOwotCQlzcHJpbnRmKHJlc3VsdCwgIiUuKnMuZ2l0IiwgKGludCkoZW5kIC0gc3RhcnQpLCBzdGFydCk7Ci0JCXJldHVybiByZXN1bHQ7CisJCXN0cnVjdCBzdHJidWYgcmVzdWx0ID0gU1RSQlVGX0lOSVQ7CisJCXN0cmJ1Zl9hZGRmKCZyZXN1bHQsICIlLipzLmdpdCIsIChpbnQpKGVuZCAtIHN0YXJ0KSwgc3RhcnQpOworCQlyZXR1cm4gc3RyYnVmX2RldGFjaCgmcmVzdWx0LCAwKTsKIAl9CiAKIAlyZXR1cm4geHN0cm5kdXAoc3RhcnQsIGVuZCAtIHN0YXJ0KTsKIH0KIAotc3RhdGljIGludCBpc19kaXJlY3RvcnkoY29uc3QgY2hhciAqcGF0aCkKLXsKLQlzdHJ1Y3Qgc3RhdCBidWY7Ci0KLQlyZXR1cm4gIXN0YXQocGF0aCwgJmJ1ZikgJiYgU19JU0RJUihidWYuc3RfbW9kZSk7Ci19Ci0KIHN0YXRpYyB2b2lkIHN0cmlwX3RyYWlsaW5nX3NsYXNoZXMoY2hhciAqZGlyKQogewogCWNoYXIgKmVuZCA9IGRpciArIHN0cmxlbihkaXIpOwpAQCAtMTg4LDM2ICsxODMsMzggQEAKIAlmcmVlKHJlZl9naXRfY29weSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvcHlfb3JfbGlua19kaXJlY3RvcnkoY2hhciAqc3JjLCBjaGFyICpkZXN0KQorc3RhdGljIHZvaWQgY29weV9vcl9saW5rX2RpcmVjdG9yeShzdHJ1Y3Qgc3RyYnVmICpzcmMsIHN0cnVjdCBzdHJidWYgKmRlc3QpCiB7CiAJc3RydWN0IGRpcmVudCAqZGU7CiAJc3RydWN0IHN0YXQgYnVmOwogCWludCBzcmNfbGVuLCBkZXN0X2xlbjsKIAlESVIgKmRpcjsKIAotCWRpciA9IG9wZW5kaXIoc3JjKTsKKwlkaXIgPSBvcGVuZGlyKHNyYy0+YnVmKTsKIAlpZiAoIWRpcikKLQkJZGllKCJmYWlsZWQgdG8gb3BlbiAlc1xuIiwgc3JjKTsKKwkJZGllKCJmYWlsZWQgdG8gb3BlbiAlc1xuIiwgc3JjLT5idWYpOwogCi0JaWYgKG1rZGlyKGRlc3QsIDA3NzcpKSB7CisJaWYgKG1rZGlyKGRlc3QtPmJ1ZiwgMDc3NykpIHsKIAkJaWYgKGVycm5vICE9IEVFWElTVCkKLQkJCWRpZSgiZmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJXNcbiIsIGRlc3QpOwotCQllbHNlIGlmIChzdGF0KGRlc3QsICZidWYpKQotCQkJZGllKCJmYWlsZWQgdG8gc3RhdCAlc1xuIiwgZGVzdCk7CisJCQlkaWUoImZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVzXG4iLCBkZXN0LT5idWYpOworCQllbHNlIGlmIChzdGF0KGRlc3QtPmJ1ZiwgJmJ1ZikpCisJCQlkaWUoImZhaWxlZCB0byBzdGF0ICVzXG4iLCBkZXN0LT5idWYpOwogCQllbHNlIGlmICghU19JU0RJUihidWYuc3RfbW9kZSkpCi0JCQlkaWUoIiVzIGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5XG4iLCBkZXN0KTsKKwkJCWRpZSgiJXMgZXhpc3RzIGFuZCBpcyBub3QgYSBkaXJlY3RvcnlcbiIsIGRlc3QtPmJ1Zik7CiAJfQogCi0Jc3JjX2xlbiA9IHN0cmxlbihzcmMpOwotCXNyY1tzcmNfbGVuXSA9ICcvJzsKLQlkZXN0X2xlbiA9IHN0cmxlbihkZXN0KTsKLQlkZXN0W2Rlc3RfbGVuXSA9ICcvJzsKKwlzdHJidWZfYWRkY2goc3JjLCAnLycpOworCXNyY19sZW4gPSBzcmMtPmxlbjsKKwlzdHJidWZfYWRkY2goZGVzdCwgJy8nKTsKKwlkZXN0X2xlbiA9IGRlc3QtPmxlbjsKIAogCXdoaWxlICgoZGUgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKLQkJc3RyY3B5KHNyYyArIHNyY19sZW4gKyAxLCBkZS0+ZF9uYW1lKTsKLQkJc3RyY3B5KGRlc3QgKyBkZXN0X2xlbiArIDEsIGRlLT5kX25hbWUpOwotCQlpZiAoc3RhdChzcmMsICZidWYpKSB7Ci0JCQl3YXJuaW5nICgiZmFpbGVkIHRvIHN0YXQgJXNcbiIsIHNyYyk7CisJCXN0cmJ1Zl9zZXRsZW4oc3JjLCBzcmNfbGVuKTsKKwkJc3RyYnVmX2FkZHN0cihzcmMsIGRlLT5kX25hbWUpOworCQlzdHJidWZfc2V0bGVuKGRlc3QsIGRlc3RfbGVuKTsKKwkJc3RyYnVmX2FkZHN0cihkZXN0LCBkZS0+ZF9uYW1lKTsKKwkJaWYgKHN0YXQoc3JjLT5idWYsICZidWYpKSB7CisJCQl3YXJuaW5nICgiZmFpbGVkIHRvIHN0YXQgJXNcbiIsIHNyYy0+YnVmKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWlmIChTX0lTRElSKGJ1Zi5zdF9tb2RlKSkgewpAQCAtMjI2LDE3ICsyMjMsMTcgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJaWYgKHVubGluayhkZXN0KSAmJiBlcnJubyAhPSBFTk9FTlQpCi0JCQlkaWUoImZhaWxlZCB0byB1bmxpbmsgJXNcbiIsIGRlc3QpOworCQlpZiAodW5saW5rKGRlc3QtPmJ1ZikgJiYgZXJybm8gIT0gRU5PRU5UKQorCQkJZGllKCJmYWlsZWQgdG8gdW5saW5rICVzXG4iLCBkZXN0LT5idWYpOwogCQlpZiAoIW9wdGlvbl9ub19oYXJkbGlua3MpIHsKLQkJCWlmICghbGluayhzcmMsIGRlc3QpKQorCQkJaWYgKCFsaW5rKHNyYy0+YnVmLCBkZXN0LT5idWYpKQogCQkJCWNvbnRpbnVlOwogCQkJaWYgKG9wdGlvbl9sb2NhbCkKLQkJCQlkaWUoImZhaWxlZCB0byBjcmVhdGUgbGluayAlc1xuIiwgZGVzdCk7CisJCQkJZGllKCJmYWlsZWQgdG8gY3JlYXRlIGxpbmsgJXNcbiIsIGRlc3QtPmJ1Zik7CiAJCQlvcHRpb25fbm9faGFyZGxpbmtzID0gMTsKIAkJfQotCQlpZiAoY29weV9maWxlKGRlc3QsIHNyYywgMDY2NikpCi0JCQlkaWUoImZhaWxlZCB0byBjb3B5IGZpbGUgdG8gJXNcbiIsIGRlc3QpOworCQlpZiAoY29weV9maWxlKGRlc3QtPmJ1Ziwgc3JjLT5idWYsIDA2NjYpKQorCQkJZGllKCJmYWlsZWQgdG8gY29weSBmaWxlIHRvICVzXG4iLCBkZXN0LT5idWYpOwogCX0KIAljbG9zZWRpcihkaXIpOwogfQpAQCAtMjQ1LDE3ICsyNDIsMTkgQEAKIAkJCQkgICAgIGNvbnN0IGNoYXIgKmRlc3RfcmVwbykKIHsKIAljb25zdCBzdHJ1Y3QgcmVmICpyZXQ7Ci0JY2hhciBzcmNbUEFUSF9NQVhdOwotCWNoYXIgZGVzdFtQQVRIX01BWF07CisJc3RydWN0IHN0cmJ1ZiBzcmMgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIGRlc3QgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3QgcmVtb3RlICpyZW1vdGU7CiAJc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0OwogCiAJaWYgKG9wdGlvbl9zaGFyZWQpCiAJCWFkZF90b19hbHRlcm5hdGVzX2ZpbGUoc3JjX3JlcG8pOwogCWVsc2UgewotCQlzbnByaW50ZihzcmMsIFBBVEhfTUFYLCAiJXMvb2JqZWN0cyIsIHNyY19yZXBvKTsKLQkJc25wcmludGYoZGVzdCwgUEFUSF9NQVgsICIlcy9vYmplY3RzIiwgZGVzdF9yZXBvKTsKLQkJY29weV9vcl9saW5rX2RpcmVjdG9yeShzcmMsIGRlc3QpOworCQlzdHJidWZfYWRkZigmc3JjLCAiJXMvb2JqZWN0cyIsIHNyY19yZXBvKTsKKwkJc3RyYnVmX2FkZGYoJmRlc3QsICIlcy9vYmplY3RzIiwgZGVzdF9yZXBvKTsKKwkJY29weV9vcl9saW5rX2RpcmVjdG9yeSgmc3JjLCAmZGVzdCk7CisJCXN0cmJ1Zl9yZWxlYXNlKCZzcmMpOworCQlzdHJidWZfcmVsZWFzZSgmZGVzdCk7CiAJfQogCiAJcmVtb3RlID0gcmVtb3RlX2dldChzcmNfcmVwbyk7CkBAIC0yNzEsMTAgKzI3MCw5IEBACiAKIHN0YXRpYyB2b2lkIHJlbW92ZV9qdW5rKHZvaWQpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBzYjsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CiAJaWYgKGdldHBpZCgpICE9IGp1bmtfcGlkKQogCQlyZXR1cm47Ci0Jc3RyYnVmX2luaXQoJnNiLCAwKTsKIAlpZiAoanVua19naXRfZGlyKSB7CiAJCXN0cmJ1Zl9hZGRzdHIoJnNiLCBqdW5rX2dpdF9kaXIpOwogCQlyZW1vdmVfZGlyX3JlY3Vyc2l2ZWx5KCZzYiwgMCk7CkBAIC0zNjAsOCArMzU4LDggQEAKIAljb25zdCBjaGFyICpyZXBvX25hbWUsICpyZXBvLCAqd29ya190cmVlLCAqZ2l0X2RpcjsKIAljaGFyICpwYXRoLCAqZGlyOwogCWNvbnN0IHN0cnVjdCByZWYgKnJlZnMsICpoZWFkX3BvaW50c19hdCwgKnJlbW90ZV9oZWFkLCAqbWFwcGVkX3JlZnM7Ci0JY2hhciBicmFuY2hfdG9wWzI1Nl0sIGtleVsyNTZdLCB2YWx1ZVsyNTZdOwotCXN0cnVjdCBzdHJidWYgcmVmbG9nX21zZzsKKwlzdHJ1Y3Qgc3RyYnVmIGtleSA9IFNUUkJVRl9JTklULCB2YWx1ZSA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgYnJhbmNoX3RvcCA9IFNUUkJVRl9JTklULCByZWZsb2dfbXNnID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0ID0gTlVMTDsKIAljaGFyICpzcmNfcmVmX3ByZWZpeCA9ICJyZWZzL2hlYWRzLyI7CiAKQEAgLTQxMSw3ICs0MDksNiBAQAogCWlmICghc3RhdChkaXIsICZidWYpKQogCQlkaWUoImRlc3RpbmF0aW9uIGRpcmVjdG9yeSAnJXMnIGFscmVhZHkgZXhpc3RzLiIsIGRpcik7CiAKLQlzdHJidWZfaW5pdCgmcmVmbG9nX21zZywgMCk7CiAJc3RyYnVmX2FkZGYoJnJlZmxvZ19tc2csICJjbG9uZTogZnJvbSAlcyIsIHJlcG8pOwogCiAJaWYgKG9wdGlvbl9iYXJlKQpAQCAtNDY2LDM1ICs0NjMsMzYgQEAKIAlpZiAob3B0aW9uX2JhcmUpIHsKIAkJaWYgKG9wdGlvbl9taXJyb3IpCiAJCQlzcmNfcmVmX3ByZWZpeCA9ICJyZWZzLyI7Ci0JCXN0cmNweShicmFuY2hfdG9wLCBzcmNfcmVmX3ByZWZpeCk7CisJCXN0cmJ1Zl9hZGRzdHIoJmJyYW5jaF90b3AsIHNyY19yZWZfcHJlZml4KTsKIAogCQlnaXRfY29uZmlnX3NldCgiY29yZS5iYXJlIiwgInRydWUiKTsKIAl9IGVsc2UgewotCQlzbnByaW50ZihicmFuY2hfdG9wLCBzaXplb2YoYnJhbmNoX3RvcCksCi0JCQkgInJlZnMvcmVtb3Rlcy8lcy8iLCBvcHRpb25fb3JpZ2luKTsKKwkJc3RyYnVmX2FkZGYoJmJyYW5jaF90b3AsICJyZWZzL3JlbW90ZXMvJXMvIiwgb3B0aW9uX29yaWdpbik7CiAJfQogCiAJaWYgKG9wdGlvbl9taXJyb3IgfHwgIW9wdGlvbl9iYXJlKSB7CiAJCS8qIENvbmZpZ3VyZSB0aGUgcmVtb3RlICovCiAJCWlmIChvcHRpb25fbWlycm9yKSB7Ci0JCQlzbnByaW50ZihrZXksIHNpemVvZihrZXkpLAotCQkJCQkicmVtb3RlLiVzLm1pcnJvciIsIG9wdGlvbl9vcmlnaW4pOwotCQkJZ2l0X2NvbmZpZ19zZXQoa2V5LCAidHJ1ZSIpOworCQkJc3RyYnVmX2FkZGYoJmtleSwgInJlbW90ZS4lcy5taXJyb3IiLCBvcHRpb25fb3JpZ2luKTsKKwkJCWdpdF9jb25maWdfc2V0KGtleS5idWYsICJ0cnVlIik7CisJCQlzdHJidWZfcmVzZXQoJmtleSk7CiAJCX0KIAotCQlzbnByaW50ZihrZXksIHNpemVvZihrZXkpLCAicmVtb3RlLiVzLnVybCIsIG9wdGlvbl9vcmlnaW4pOwotCQlnaXRfY29uZmlnX3NldChrZXksIHJlcG8pOworCQlzdHJidWZfYWRkZigma2V5LCAicmVtb3RlLiVzLnVybCIsIG9wdGlvbl9vcmlnaW4pOworCQlnaXRfY29uZmlnX3NldChrZXkuYnVmLCByZXBvKTsKKwkJCXN0cmJ1Zl9yZXNldCgma2V5KTsKIAotCQlzbnByaW50ZihrZXksIHNpemVvZihrZXkpLCAicmVtb3RlLiVzLmZldGNoIiwgb3B0aW9uX29yaWdpbik7Ci0JCXNucHJpbnRmKHZhbHVlLCBzaXplb2YodmFsdWUpLAotCQkJCSIrJXMqOiVzKiIsIHNyY19yZWZfcHJlZml4LCBicmFuY2hfdG9wKTsKLQkJZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXIoa2V5LCB2YWx1ZSwgIl4kIiwgMCk7CisJCXN0cmJ1Zl9hZGRmKCZrZXksICJyZW1vdGUuJXMuZmV0Y2giLCBvcHRpb25fb3JpZ2luKTsKKwkJc3RyYnVmX2FkZGYoJnZhbHVlLCAiKyVzKjolcyoiLCBzcmNfcmVmX3ByZWZpeCwgYnJhbmNoX3RvcC5idWYpOworCQlnaXRfY29uZmlnX3NldF9tdWx0aXZhcihrZXkuYnVmLCB2YWx1ZS5idWYsICJeJCIsIDApOworCQlzdHJidWZfcmVzZXQoJmtleSk7CisJCXN0cmJ1Zl9yZXNldCgmdmFsdWUpOwogCX0KIAogCXJlZnNwZWMuZm9yY2UgPSAwOwogCXJlZnNwZWMucGF0dGVybiA9IDE7CiAJcmVmc3BlYy5zcmMgPSBzcmNfcmVmX3ByZWZpeDsKLQlyZWZzcGVjLmRzdCA9IGJyYW5jaF90b3A7CisJcmVmc3BlYy5kc3QgPSBicmFuY2hfdG9wLmJ1ZjsKIAogCWlmIChwYXRoICYmICFpc19idW5kbGUpCiAJCXJlZnMgPSBjbG9uZV9sb2NhbChwYXRoLCBnaXRfZGlyKTsKQEAgLTUxMyw2ICs1MTEsOCBAQAogCiAJCWlmIChvcHRpb25fcXVpZXQpCiAJCQl0cmFuc3BvcnQtPnZlcmJvc2UgPSAtMTsKKwkJZWxzZSBpZiAob3B0aW9uX3ZlcmJvc2UpCisJCQl0cmFuc3BvcnQtPnByb2dyZXNzID0gMTsKIAogCQlpZiAob3B0aW9uX3VwbG9hZF9wYWNrKQogCQkJdHJhbnNwb3J0X3NldF9vcHRpb24odHJhbnNwb3J0LCBUUkFOU19PUFRfVVBMT0FEUEFDSywKQEAgLTUzMyw3ICs1MzMsNyBAQAogCQljcmVhdGVfc3ltcmVmKCJIRUFEIiwgaGVhZF9wb2ludHNfYXQtPm5hbWUsIE5VTEwpOwogCiAJCWlmICghb3B0aW9uX2JhcmUpIHsKLQkJCXN0cnVjdCBzdHJidWYgaGVhZF9yZWY7CisJCQlzdHJ1Y3Qgc3RyYnVmIGhlYWRfcmVmID0gU1RSQlVGX0lOSVQ7CiAJCQljb25zdCBjaGFyICpoZWFkID0gaGVhZF9wb2ludHNfYXQtPm5hbWU7CiAKIAkJCWlmICghcHJlZml4Y21wKGhlYWQsICJyZWZzL2hlYWRzLyIpKQpAQCAtNTQ2LDggKzU0Niw3IEBACiAJCQkJICAgaGVhZF9wb2ludHNfYXQtPm9sZF9zaGExLAogCQkJCSAgIE5VTEwsIDAsIERJRV9PTl9FUlIpOwogCi0JCQlzdHJidWZfaW5pdCgmaGVhZF9yZWYsIDApOwotCQkJc3RyYnVmX2FkZHN0cigmaGVhZF9yZWYsIGJyYW5jaF90b3ApOworCQkJc3RyYnVmX2FkZHN0cigmaGVhZF9yZWYsIGJyYW5jaF90b3AuYnVmKTsKIAkJCXN0cmJ1Zl9hZGRzdHIoJmhlYWRfcmVmLCAiSEVBRCIpOwogCiAJCQkvKiBSZW1vdGUgYnJhbmNoIGxpbmsgKi8KQEAgLTU1NSwxMCArNTU0LDExIEBACiAJCQkJICAgICAgaGVhZF9wb2ludHNfYXQtPnBlZXJfcmVmLT5uYW1lLAogCQkJCSAgICAgIHJlZmxvZ19tc2cuYnVmKTsKIAotCQkJc25wcmludGYoa2V5LCBzaXplb2Yoa2V5KSwgImJyYW5jaC4lcy5yZW1vdGUiLCBoZWFkKTsKLQkJCWdpdF9jb25maWdfc2V0KGtleSwgb3B0aW9uX29yaWdpbik7Ci0JCQlzbnByaW50ZihrZXksIHNpemVvZihrZXkpLCAiYnJhbmNoLiVzLm1lcmdlIiwgaGVhZCk7Ci0JCQlnaXRfY29uZmlnX3NldChrZXksIGhlYWRfcG9pbnRzX2F0LT5uYW1lKTsKKwkJCXN0cmJ1Zl9hZGRmKCZrZXksICJicmFuY2guJXMucmVtb3RlIiwgaGVhZCk7CisJCQlnaXRfY29uZmlnX3NldChrZXkuYnVmLCBvcHRpb25fb3JpZ2luKTsKKwkJCXN0cmJ1Zl9yZXNldCgma2V5KTsKKwkJCXN0cmJ1Zl9hZGRmKCZrZXksICJicmFuY2guJXMubWVyZ2UiLCBoZWFkKTsKKwkJCWdpdF9jb25maWdfc2V0KGtleS5idWYsIGhlYWRfcG9pbnRzX2F0LT5uYW1lKTsKIAkJfQogCX0gZWxzZSBpZiAocmVtb3RlX2hlYWQpIHsKIAkJLyogU291cmNlIGhhZCBkZXRhY2hlZCBIRUFEIHBvaW50aW5nIHNvbWV3aGVyZS4gKi8KQEAgLTYwOCw2ICs2MDgsOSBAQAogCX0KIAogCXN0cmJ1Zl9yZWxlYXNlKCZyZWZsb2dfbXNnKTsKKwlzdHJidWZfcmVsZWFzZSgmYnJhbmNoX3RvcCk7CisJc3RyYnVmX3JlbGVhc2UoJmtleSk7CisJc3RyYnVmX3JlbGVhc2UoJnZhbHVlKTsKIAlqdW5rX3BpZCA9IDA7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluLWNvbW1pdC10cmVlLmMgYi9idWlsdGluLWNvbW1pdC10cmVlLmMKaW5kZXggOWI4NGM0OC4uMDQ1MzQyNSAxMDA2NDQKLS0tIGEvYnVpbHRpbi1jb21taXQtdHJlZS5jCisrKyBiL2J1aWx0aW4tY29tbWl0LXRyZWUuYwpAQCAtNDYsOCArNDYsMTAgQEAKICJ2YXJpYWJsZSBpMThuLmNvbW1pdGVuY29kaW5nIHRvIHRoZSBlbmNvZGluZyB5b3VyIHByb2plY3QgdXNlcy5cbiI7CiAKIGludCBjb21taXRfdHJlZShjb25zdCBjaGFyICptc2csIHVuc2lnbmVkIGNoYXIgKnRyZWUsCi0JCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cywgdW5zaWduZWQgY2hhciAqcmV0KQorCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHMsIHVuc2lnbmVkIGNoYXIgKnJldCwKKwkJY29uc3QgY2hhciAqYXV0aG9yKQogeworCWludCByZXN1bHQ7CiAJaW50IGVuY29kaW5nX2lzX3V0Zjg7CiAJc3RydWN0IHN0cmJ1ZiBidWZmZXI7CiAKQEAgLTczLDcgKzc1LDkgQEAKIAl9CiAKIAkvKiBQZXJzb24vZGF0ZSBpbmZvcm1hdGlvbiAqLwotCXN0cmJ1Zl9hZGRmKCZidWZmZXIsICJhdXRob3IgJXNcbiIsIGdpdF9hdXRob3JfaW5mbyhJREVOVF9FUlJPUl9PTl9OT19OQU1FKSk7CisJaWYgKCFhdXRob3IpCisJCWF1dGhvciA9IGdpdF9hdXRob3JfaW5mbyhJREVOVF9FUlJPUl9PTl9OT19OQU1FKTsKKwlzdHJidWZfYWRkZigmYnVmZmVyLCAiYXV0aG9yICVzXG4iLCBhdXRob3IpOwogCXN0cmJ1Zl9hZGRmKCZidWZmZXIsICJjb21taXR0ZXIgJXNcbiIsIGdpdF9jb21taXR0ZXJfaW5mbyhJREVOVF9FUlJPUl9PTl9OT19OQU1FKSk7CiAJaWYgKCFlbmNvZGluZ19pc191dGY4KQogCQlzdHJidWZfYWRkZigmYnVmZmVyLCAiZW5jb2RpbmcgJXNcbiIsIGdpdF9jb21taXRfZW5jb2RpbmcpOwpAQCAtODYsNyArOTAsOSBAQAogCWlmIChlbmNvZGluZ19pc191dGY4ICYmICFpc191dGY4KGJ1ZmZlci5idWYpKQogCQlmcHJpbnRmKHN0ZGVyciwgY29tbWl0X3V0Zjhfd2Fybik7CiAKLQlyZXR1cm4gd3JpdGVfc2hhMV9maWxlKGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4sIGNvbW1pdF90eXBlLCByZXQpOworCXJlc3VsdCA9IHdyaXRlX3NoYTFfZmlsZShidWZmZXIuYnVmLCBidWZmZXIubGVuLCBjb21taXRfdHlwZSwgcmV0KTsKKwlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKKwlyZXR1cm4gcmVzdWx0OwogfQogCiBpbnQgY21kX2NvbW1pdF90cmVlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQpAQCAtMTIwLDcgKzEyNiw3IEBACiAJaWYgKHN0cmJ1Zl9yZWFkKCZidWZmZXIsIDAsIDApIDwgMCkKIAkJZGllKCJnaXQgY29tbWl0LXRyZWU6IHJlYWQgcmV0dXJuZWQgJXMiLCBzdHJlcnJvcihlcnJubykpOwogCi0JaWYgKCFjb21taXRfdHJlZShidWZmZXIuYnVmLCB0cmVlX3NoYTEsIHBhcmVudHMsIGNvbW1pdF9zaGExKSkgeworCWlmICghY29tbWl0X3RyZWUoYnVmZmVyLmJ1ZiwgdHJlZV9zaGExLCBwYXJlbnRzLCBjb21taXRfc2hhMSwgTlVMTCkpIHsKIAkJcHJpbnRmKCIlc1xuIiwgc2hhMV90b19oZXgoY29tbWl0X3NoYTEpKTsKIAkJcmV0dXJuIDA7CiAJfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1jb21taXQuYyBiL2J1aWx0aW4tY29tbWl0LmMKaW5kZXggNmNiZGQ1NS4uMmYwYjAwYSAxMDA2NDQKLS0tIGEvYnVpbHRpbi1jb21taXQuYworKysgYi9idWlsdGluLWNvbW1pdC5jCkBAIC0yMjUsMTggKzIyNSwxOCBAQAogCiAJaWYgKGludGVyYWN0aXZlKSB7CiAJCWludGVyYWN0aXZlX2FkZChhcmdjLCBhcmd2LCBwcmVmaXgpOwotCQlpZiAocmVhZF9jYWNoZSgpIDwgMCkKKwkJaWYgKHJlYWRfY2FjaGVfcHJlbG9hZChOVUxMKSA8IDApCiAJCQlkaWUoImluZGV4IGZpbGUgY29ycnVwdCIpOwogCQljb21taXRfc3R5bGUgPSBDT01NSVRfQVNfSVM7CiAJCXJldHVybiBnZXRfaW5kZXhfZmlsZSgpOwogCX0KIAotCWlmIChyZWFkX2NhY2hlKCkgPCAwKQotCQlkaWUoImluZGV4IGZpbGUgY29ycnVwdCIpOwotCiAJaWYgKCphcmd2KQogCQlwYXRoc3BlYyA9IGdldF9wYXRoc3BlYyhwcmVmaXgsIGFyZ3YpOwogCisJaWYgKHJlYWRfY2FjaGVfcHJlbG9hZChwYXRoc3BlYykgPCAwKQorCQlkaWUoImluZGV4IGZpbGUgY29ycnVwdCIpOworCiAJLyoKIAkgKiBOb24gcGFydGlhbCwgbm9uIGFzLWlzIGNvbW1pdC4KIAkgKgpAQCAtMzIwLDcgKzMyMCw4IEBACiAJCWRpZSgidW5hYmxlIHRvIHdyaXRlIG5ld19pbmRleCBmaWxlIik7CiAKIAlmZCA9IGhvbGRfbG9ja19maWxlX2Zvcl91cGRhdGUoJmZhbHNlX2xvY2ssCi0JCQkJICAgICAgIGdpdF9wYXRoKCJuZXh0LWluZGV4LSVkIiwgZ2V0cGlkKCkpLAorCQkJCSAgICAgICBnaXRfcGF0aCgibmV4dC1pbmRleC0lIlBSSXVNQVgsCisJCQkJCQkodWludG1heF90KSBnZXRwaWQoKSksCiAJCQkJICAgICAgIExPQ0tfRElFX09OX0VSUk9SKTsKIAogCWNyZWF0ZV9iYXNlX2luZGV4KCk7CkBAIC00NDksNyArNDUwLDcgQEAKIHsKIAlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwogCWludCBjb21taXRhYmxlLCBzYXZlZF9jb2xvcl9zZXR0aW5nOwotCXN0cnVjdCBzdHJidWYgc2I7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCWNoYXIgKmJ1ZmZlcjsKIAlGSUxFICpmcDsKIAljb25zdCBjaGFyICpob29rX2FyZzEgPSBOVUxMOwpAQCAtNDU5LDcgKzQ2MCw2IEBACiAJaWYgKCFub192ZXJpZnkgJiYgcnVuX2hvb2soaW5kZXhfZmlsZSwgInByZS1jb21taXQiLCBOVUxMKSkKIAkJcmV0dXJuIDA7CiAKLQlzdHJidWZfaW5pdCgmc2IsIDApOwogCWlmIChtZXNzYWdlLmxlbikgewogCQlzdHJidWZfYWRkYnVmKCZzYiwgJm1lc3NhZ2UpOwogCQlob29rX2FyZzEgPSAibWVzc2FnZSI7CkBAIC01MTIsMTAgKzUxMiw5IEBACiAJCXN0cmlwc3BhY2UoJnNiLCAwKTsKIAogCWlmIChzaWdub2ZmKSB7Ci0JCXN0cnVjdCBzdHJidWYgc29iOworCQlzdHJ1Y3Qgc3RyYnVmIHNvYiA9IFNUUkJVRl9JTklUOwogCQlpbnQgaTsKIAotCQlzdHJidWZfaW5pdCgmc29iLCAwKTsKIAkJc3RyYnVmX2FkZHN0cigmc29iLCBzaWduX29mZl9oZWFkZXIpOwogCQlzdHJidWZfYWRkc3RyKCZzb2IsIGZtdF9uYW1lKGdldGVudigiR0lUX0NPTU1JVFRFUl9OQU1FIiksCiAJCQkJCSAgICAgZ2V0ZW52KCJHSVRfQ09NTUlUVEVSX0VNQUlMIikpKTsKQEAgLTYzOSw3ICs2MzgsNyBAQAogCQlhY3RpdmVfY2FjaGVfdHJlZSA9IGNhY2hlX3RyZWUoKTsKIAlpZiAoY2FjaGVfdHJlZV91cGRhdGUoYWN0aXZlX2NhY2hlX3RyZWUsCiAJCQkgICAgICBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9uciwgMCwgMCkgPCAwKSB7Ci0JCWVycm9yKCJFcnJvciBidWlsZGluZyB0cmVlczsgdGhlIGluZGV4IGlzIHVubWVyZ2VkPyIpOworCQllcnJvcigiRXJyb3IgYnVpbGRpbmcgdHJlZXMiKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC02NjcsMjAgKzY2NiwxOSBAQAogfQogCiAvKgotICogRmluZCBvdXQgaWYgdGhlIG1lc3NhZ2Ugc3RhcnRpbmcgYXQgcG9zaXRpb24gJ3N0YXJ0JyBpbiB0aGUgc3RyYnVmCi0gKiBjb250YWlucyBvbmx5IHdoaXRlc3BhY2UgYW5kIFNpZ25lZC1vZmYtYnkgbGluZXMuCisgKiBGaW5kIG91dCBpZiB0aGUgbWVzc2FnZSBpbiB0aGUgc3RyYnVmIGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZSBhbmQKKyAqIFNpZ25lZC1vZmYtYnkgbGluZXMuCiAgKi8KLXN0YXRpYyBpbnQgbWVzc2FnZV9pc19lbXB0eShzdHJ1Y3Qgc3RyYnVmICpzYiwgaW50IHN0YXJ0KQorc3RhdGljIGludCBtZXNzYWdlX2lzX2VtcHR5KHN0cnVjdCBzdHJidWYgKnNiKQogewotCXN0cnVjdCBzdHJidWYgdG1wbDsKKwlzdHJ1Y3Qgc3RyYnVmIHRtcGwgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICpubDsKLQlpbnQgZW9sLCBpOworCWludCBlb2wsIGksIHN0YXJ0ID0gMDsKIAogCWlmIChjbGVhbnVwX21vZGUgPT0gQ0xFQU5VUF9OT05FICYmIHNiLT5sZW4pCiAJCXJldHVybiAwOwogCiAJLyogU2VlIGlmIHRoZSB0ZW1wbGF0ZSBpcyBqdXN0IGEgcHJlZml4IG9mIHRoZSBtZXNzYWdlLiAqLwotCXN0cmJ1Zl9pbml0KCZ0bXBsLCAwKTsKIAlpZiAodGVtcGxhdGVfZmlsZSAmJiBzdHJidWZfcmVhZF9maWxlKCZ0bXBsLCB0ZW1wbGF0ZV9maWxlLCAwKSA+IDApIHsKIAkJc3RyaXBzcGFjZSgmdG1wbCwgY2xlYW51cF9tb2RlID09IENMRUFOVVBfQUxMKTsKIAkJaWYgKHN0YXJ0ICsgdG1wbC5sZW4gPD0gc2ItPmxlbiAmJgpAQCAtNzEwLDYgKzcwOCwzMSBAQAogCXJldHVybiAxOwogfQogCitzdGF0aWMgY29uc3QgY2hhciAqZmluZF9hdXRob3JfYnlfbmlja25hbWUoY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3QgcmV2X2luZm8gcmV2czsKKwlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKwljb25zdCBjaGFyICphdlsyMF07CisJaW50IGFjID0gMDsKKworCWluaXRfcmV2aXNpb25zKCZyZXZzLCBOVUxMKTsKKwlzdHJidWZfYWRkZigmYnVmLCAiLS1hdXRob3I9JXMiLCBuYW1lKTsKKwlhdlsrK2FjXSA9ICItLWFsbCI7CisJYXZbKythY10gPSAiLWkiOworCWF2WysrYWNdID0gYnVmLmJ1ZjsKKwlhdlsrK2FjXSA9IE5VTEw7CisJc2V0dXBfcmV2aXNpb25zKGFjLCBhdiwgJnJldnMsIE5VTEwpOworCXByZXBhcmVfcmV2aXNpb25fd2FsaygmcmV2cyk7CisJY29tbWl0ID0gZ2V0X3JldmlzaW9uKCZyZXZzKTsKKwlpZiAoY29tbWl0KSB7CisJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCQlmb3JtYXRfY29tbWl0X21lc3NhZ2UoY29tbWl0LCAiJWFuIDwlYWU+IiwgJmJ1ZiwgREFURV9OT1JNQUwpOworCQlyZXR1cm4gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKKwl9CisJZGllKCJObyBleGlzdGluZyBhdXRob3IgZm91bmQgd2l0aCAnJXMnIiwgbmFtZSk7Cit9CisKIHN0YXRpYyBpbnQgcGFyc2VfYW5kX3ZhbGlkYXRlX29wdGlvbnMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSwKIAkJCQkgICAgICBjb25zdCBjaGFyICogY29uc3QgdXNhZ2VbXSwKIAkJCQkgICAgICBjb25zdCBjaGFyICpwcmVmaXgpCkBAIC03MjAsNiArNzQzLDkgQEAKIAlsb2dmaWxlID0gcGFyc2Vfb3B0aW9uc19maXhfZmlsZW5hbWUocHJlZml4LCBsb2dmaWxlKTsKIAl0ZW1wbGF0ZV9maWxlID0gcGFyc2Vfb3B0aW9uc19maXhfZmlsZW5hbWUocHJlZml4LCB0ZW1wbGF0ZV9maWxlKTsKIAorCWlmIChmb3JjZV9hdXRob3IgJiYgIXN0cmNocihmb3JjZV9hdXRob3IsICc+JykpCisJCWZvcmNlX2F1dGhvciA9IGZpbmRfYXV0aG9yX2J5X25pY2tuYW1lKGZvcmNlX2F1dGhvcik7CisKIAlpZiAobG9nZmlsZSB8fCBtZXNzYWdlLmxlbiB8fCB1c2VfbWVzc2FnZSkKIAkJdXNlX2VkaXRvciA9IDA7CiAJaWYgKGVkaXRfZmxhZykKQEAgLTgzOSw2ICs4NjUsOSBAQAogCWlmICh3dF9zdGF0dXNfdXNlX2NvbG9yID09IC0xKQogCQl3dF9zdGF0dXNfdXNlX2NvbG9yID0gZ2l0X3VzZV9jb2xvcl9kZWZhdWx0OwogCisJaWYgKGRpZmZfdXNlX2NvbG9yX2RlZmF1bHQgPT0gLTEpCisJCWRpZmZfdXNlX2NvbG9yX2RlZmF1bHQgPSBnaXRfdXNlX2NvbG9yX2RlZmF1bHQ7CisKIAlhcmdjID0gcGFyc2VfYW5kX3ZhbGlkYXRlX29wdGlvbnMoYXJnYywgYXJndiwgYnVpbHRpbl9zdGF0dXNfdXNhZ2UsIHByZWZpeCk7CiAKIAlpbmRleF9maWxlID0gcHJlcGFyZV9pbmRleChhcmdjLCBhcmd2LCBwcmVmaXgpOwpAQCAtODU0LDYgKzg4Myw5IEBACiB7CiAJc3RydWN0IHJldl9pbmZvIHJldjsKIAlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CisJc3RhdGljIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICJmb3JtYXQ6JWg6IFwiJXNcIiI7CisJdW5zaWduZWQgY2hhciBqdW5rX3NoYTFbMjBdOworCWNvbnN0IGNoYXIgKmhlYWQgPSByZXNvbHZlX3JlZigiSEVBRCIsIGp1bmtfc2hhMSwgMCwgTlVMTCk7CiAKIAljb21taXQgPSBsb29rdXBfY29tbWl0KHNoYTEpOwogCWlmICghY29tbWl0KQpAQCAtODcxLDE4ICs5MDMsMjQgQEAKIAogCXJldi52ZXJib3NlX2hlYWRlciA9IDE7CiAJcmV2LnNob3dfcm9vdF9kaWZmID0gMTsKLQlnZXRfY29tbWl0X2Zvcm1hdCgiZm9ybWF0OiVoOiAlcyIsICZyZXYpOworCWdldF9jb21taXRfZm9ybWF0KGZvcm1hdCwgJnJldik7CiAJcmV2LmFsd2F5c19zaG93X2hlYWRlciA9IDA7CiAJcmV2LmRpZmZvcHQuZGV0ZWN0X3JlbmFtZSA9IDE7CiAJcmV2LmRpZmZvcHQucmVuYW1lX2xpbWl0ID0gMTAwOwogCXJldi5kaWZmb3B0LmJyZWFrX29wdCA9IDA7CiAJZGlmZl9zZXR1cF9kb25lKCZyZXYuZGlmZm9wdCk7CiAKLQlwcmludGYoIkNyZWF0ZWQgJXNjb21taXQgIiwgaW5pdGlhbF9jb21taXQgPyAiaW5pdGlhbCAiIDogIiIpOworCXByaW50ZigiWyVzJXNdOiBjcmVhdGVkICIsCisJCSFwcmVmaXhjbXAoaGVhZCwgInJlZnMvaGVhZHMvIikgPworCQkJaGVhZCArIDExIDoKKwkJCSFzdHJjbXAoaGVhZCwgIkhFQUQiKSA/CisJCQkJImRldGFjaGVkIEhFQUQiIDoKKwkJCQloZWFkLAorCQlpbml0aWFsX2NvbW1pdCA/ICIgKHJvb3QtY29tbWl0KSIgOiAiIik7CiAKIAlpZiAoIWxvZ190cmVlX2NvbW1pdCgmcmV2LCBjb21taXQpKSB7CiAJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7Ci0JCWZvcm1hdF9jb21taXRfbWVzc2FnZShjb21taXQsICIlaDogJXMiLCAmYnVmLCBEQVRFX05PUk1BTCk7CisJCWZvcm1hdF9jb21taXRfbWVzc2FnZShjb21taXQsIGZvcm1hdCArIDcsICZidWYsIERBVEVfTk9STUFMKTsKIAkJcHJpbnRmKCIlc1xuIiwgYnVmLmJ1Zik7CiAJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCX0KQEAgLTg5Niw0MiArOTM0LDIyIEBACiAJcmV0dXJuIGdpdF9zdGF0dXNfY29uZmlnKGssIHYsIGNiKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgY29tbWl0X3V0Zjhfd2FybltdID0KLSJXYXJuaW5nOiBjb21taXQgbWVzc2FnZSBkb2VzIG5vdCBjb25mb3JtIHRvIFVURi04LlxuIgotIllvdSBtYXkgd2FudCB0byBhbWVuZCBpdCBhZnRlciBmaXhpbmcgdGhlIG1lc3NhZ2UsIG9yIHNldCB0aGUgY29uZmlnXG4iCi0idmFyaWFibGUgaTE4bi5jb21taXRlbmNvZGluZyB0byB0aGUgZW5jb2RpbmcgeW91ciBwcm9qZWN0IHVzZXMuXG4iOwotCi1zdGF0aWMgdm9pZCBhZGRfcGFyZW50KHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQotewotCXN0cnVjdCBvYmplY3QgKm9iaiA9IHBhcnNlX29iamVjdChzaGExKTsKLQljb25zdCBjaGFyICpwYXJlbnQgPSBzaGExX3RvX2hleChzaGExKTsKLQljb25zdCBjaGFyICpjcDsKLQotCWlmICghb2JqKQotCQlkaWUoIlVuYWJsZSB0byBmaW5kIGNvbW1pdCBwYXJlbnQgJXMiLCBwYXJlbnQpOwotCWlmIChvYmotPnR5cGUgIT0gT0JKX0NPTU1JVCkKLQkJZGllKCJQYXJlbnQgJXMgaXNuJ3QgYSBwcm9wZXIgY29tbWl0IiwgcGFyZW50KTsKLQotCWZvciAoY3AgPSBzYi0+YnVmOyBjcCAmJiAoY3AgPSBzdHJzdHIoY3AsICJcbnBhcmVudCAiKSk7IGNwICs9IDgpIHsKLQkJaWYgKCFtZW1jbXAoY3AgKyA4LCBwYXJlbnQsIDQwKSAmJiBjcFs0OF0gPT0gJ1xuJykgewotCQkJZXJyb3IoImR1cGxpY2F0ZSBwYXJlbnQgJXMgaWdub3JlZCIsIHBhcmVudCk7Ci0JCQlyZXR1cm47Ci0JCX0KLQl9Ci0Jc3RyYnVmX2FkZGYoc2IsICJwYXJlbnQgJXNcbiIsIHBhcmVudCk7Ci19Ci0KIGludCBjbWRfY29tbWl0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewotCWludCBoZWFkZXJfbGVuOwotCXN0cnVjdCBzdHJidWYgc2I7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKmluZGV4X2ZpbGUsICpyZWZsb2dfbXNnOwogCWNoYXIgKm5sLCAqcDsKIAl1bnNpZ25lZCBjaGFyIGNvbW1pdF9zaGExWzIwXTsKIAlzdHJ1Y3QgcmVmX2xvY2sgKnJlZl9sb2NrOworCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cyA9IE5VTEwsICoqcHB0ciA9ICZwYXJlbnRzOworCXN0cnVjdCBzdGF0IHN0YXRidWY7CisJaW50IGFsbG93X2Zhc3RfZm9yd2FyZCA9IDE7CiAKIAlnaXRfY29uZmlnKGdpdF9jb21taXRfY29uZmlnLCBOVUxMKTsKIAorCWlmICh3dF9zdGF0dXNfdXNlX2NvbG9yID09IC0xKQorCQl3dF9zdGF0dXNfdXNlX2NvbG9yID0gZ2l0X3VzZV9jb2xvcl9kZWZhdWx0OworCiAJYXJnYyA9IHBhcnNlX2FuZF92YWxpZGF0ZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIGJ1aWx0aW5fY29tbWl0X3VzYWdlLCBwcmVmaXgpOwogCiAJaW5kZXhfZmlsZSA9IHByZXBhcmVfaW5kZXgoYXJnYywgYXJndiwgcHJlZml4KTsKQEAgLTk0MywxMyArOTYxLDYgQEAKIAkJcmV0dXJuIDE7CiAJfQogCi0JLyoKLQkgKiBUaGUgY29tbWl0IG9iamVjdAotCSAqLwotCXN0cmJ1Zl9pbml0KCZzYiwgMCk7Ci0Jc3RyYnVmX2FkZGYoJnNiLCAidHJlZSAlc1xuIiwKLQkJICAgIHNoYTFfdG9faGV4KGFjdGl2ZV9jYWNoZV90cmVlLT5zaGExKSk7Ci0KIAkvKiBEZXRlcm1pbmUgcGFyZW50cyAqLwogCWlmIChpbml0aWFsX2NvbW1pdCkgewogCQlyZWZsb2dfbXNnID0gImNvbW1pdCAoaW5pdGlhbCkiOwpAQCAtOTYzLDE0ICs5NzQsMTMgQEAKIAkJCWRpZSgiY291bGQgbm90IHBhcnNlIEhFQUQgY29tbWl0Iik7CiAKIAkJZm9yIChjID0gY29tbWl0LT5wYXJlbnRzOyBjOyBjID0gYy0+bmV4dCkKLQkJCWFkZF9wYXJlbnQoJnNiLCBjLT5pdGVtLT5vYmplY3Quc2hhMSk7CisJCQlwcHRyID0gJmNvbW1pdF9saXN0X2luc2VydChjLT5pdGVtLCBwcHRyKS0+bmV4dDsKIAl9IGVsc2UgaWYgKGluX21lcmdlKSB7Ci0JCXN0cnVjdCBzdHJidWYgbTsKKwkJc3RydWN0IHN0cmJ1ZiBtID0gU1RSQlVGX0lOSVQ7CiAJCUZJTEUgKmZwOwogCiAJCXJlZmxvZ19tc2cgPSAiY29tbWl0IChtZXJnZSkiOwotCQlhZGRfcGFyZW50KCZzYiwgaGVhZF9zaGExKTsKLQkJc3RyYnVmX2luaXQoJm0sIDApOworCQlwcHRyID0gJmNvbW1pdF9saXN0X2luc2VydChsb29rdXBfY29tbWl0KGhlYWRfc2hhMSksIHBwdHIpLT5uZXh0OwogCQlmcCA9IGZvcGVuKGdpdF9wYXRoKCJNRVJHRV9IRUFEIiksICJyIik7CiAJCWlmIChmcCA9PSBOVUxMKQogCQkJZGllKCJjb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZGluZzogJXMiLApAQCAtOTc5LDI0ICs5ODksMjYgQEAKIAkJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJCQlpZiAoZ2V0X3NoYTFfaGV4KG0uYnVmLCBzaGExKSA8IDApCiAJCQkJZGllKCJDb3JydXB0IE1FUkdFX0hFQUQgZmlsZSAoJXMpIiwgbS5idWYpOwotCQkJYWRkX3BhcmVudCgmc2IsIHNoYTEpOworCQkJcHB0ciA9ICZjb21taXRfbGlzdF9pbnNlcnQobG9va3VwX2NvbW1pdChzaGExKSwgcHB0ciktPm5leHQ7CiAJCX0KIAkJZmNsb3NlKGZwKTsKIAkJc3RyYnVmX3JlbGVhc2UoJm0pOworCQlpZiAoIXN0YXQoZ2l0X3BhdGgoIk1FUkdFX01PREUiKSwgJnN0YXRidWYpKSB7CisJCQlpZiAoc3RyYnVmX3JlYWRfZmlsZSgmc2IsIGdpdF9wYXRoKCJNRVJHRV9NT0RFIiksIDApIDwgMCkKKwkJCQlkaWUoImNvdWxkIG5vdCByZWFkIE1FUkdFX01PREU6ICVzIiwKKwkJCQkJCXN0cmVycm9yKGVycm5vKSk7CisJCQlpZiAoIXN0cmNtcChzYi5idWYsICJuby1mZiIpKQorCQkJCWFsbG93X2Zhc3RfZm9yd2FyZCA9IDA7CisJCX0KKwkJaWYgKGFsbG93X2Zhc3RfZm9yd2FyZCkKKwkJCXBhcmVudHMgPSByZWR1Y2VfaGVhZHMocGFyZW50cyk7CiAJfSBlbHNlIHsKIAkJcmVmbG9nX21zZyA9ICJjb21taXQiOwotCQlzdHJidWZfYWRkZigmc2IsICJwYXJlbnQgJXNcbiIsIHNoYTFfdG9faGV4KGhlYWRfc2hhMSkpOworCQlwcHRyID0gJmNvbW1pdF9saXN0X2luc2VydChsb29rdXBfY29tbWl0KGhlYWRfc2hhMSksIHBwdHIpLT5uZXh0OwogCX0KIAotCXN0cmJ1Zl9hZGRmKCZzYiwgImF1dGhvciAlc1xuIiwKLQkJICAgIGZtdF9pZGVudChhdXRob3JfbmFtZSwgYXV0aG9yX2VtYWlsLCBhdXRob3JfZGF0ZSwgSURFTlRfRVJST1JfT05fTk9fTkFNRSkpOwotCXN0cmJ1Zl9hZGRmKCZzYiwgImNvbW1pdHRlciAlc1xuIiwgZ2l0X2NvbW1pdHRlcl9pbmZvKElERU5UX0VSUk9SX09OX05PX05BTUUpKTsKLQlpZiAoIWlzX2VuY29kaW5nX3V0ZjgoZ2l0X2NvbW1pdF9lbmNvZGluZykpCi0JCXN0cmJ1Zl9hZGRmKCZzYiwgImVuY29kaW5nICVzXG4iLCBnaXRfY29tbWl0X2VuY29kaW5nKTsKLQlzdHJidWZfYWRkY2goJnNiLCAnXG4nKTsKLQogCS8qIEZpbmFsbHksIGdldCB0aGUgY29tbWl0IG1lc3NhZ2UgKi8KLQloZWFkZXJfbGVuID0gc2IubGVuOworCXN0cmJ1Zl9yZXNldCgmc2IpOwogCWlmIChzdHJidWZfcmVhZF9maWxlKCZzYiwgZ2l0X3BhdGgoY29tbWl0X2VkaXRtc2cpLCAwKSA8IDApIHsKIAkJcm9sbGJhY2tfaW5kZXhfZmlsZXMoKTsKIAkJZGllKCJjb3VsZCBub3QgcmVhZCBjb21taXQgbWVzc2FnZSIpOwpAQCAtMTAxMSwxNiArMTAyMywxNSBAQAogCiAJaWYgKGNsZWFudXBfbW9kZSAhPSBDTEVBTlVQX05PTkUpCiAJCXN0cmlwc3BhY2UoJnNiLCBjbGVhbnVwX21vZGUgPT0gQ0xFQU5VUF9BTEwpOwotCWlmIChzYi5sZW4gPCBoZWFkZXJfbGVuIHx8IG1lc3NhZ2VfaXNfZW1wdHkoJnNiLCBoZWFkZXJfbGVuKSkgeworCWlmIChtZXNzYWdlX2lzX2VtcHR5KCZzYikpIHsKIAkJcm9sbGJhY2tfaW5kZXhfZmlsZXMoKTsKIAkJZnByaW50ZihzdGRlcnIsICJBYm9ydGluZyBjb21taXQgZHVlIHRvIGVtcHR5IGNvbW1pdCBtZXNzYWdlLlxuIik7CiAJCWV4aXQoMSk7CiAJfQotCXN0cmJ1Zl9hZGRjaCgmc2IsICdcMCcpOwotCWlmIChpc19lbmNvZGluZ191dGY4KGdpdF9jb21taXRfZW5jb2RpbmcpICYmICFpc191dGY4KHNiLmJ1ZikpCi0JCWZwcmludGYoc3RkZXJyLCBjb21taXRfdXRmOF93YXJuKTsKIAotCWlmICh3cml0ZV9zaGExX2ZpbGUoc2IuYnVmLCBzYi5sZW4gLSAxLCBjb21taXRfdHlwZSwgY29tbWl0X3NoYTEpKSB7CisJaWYgKGNvbW1pdF90cmVlKHNiLmJ1ZiwgYWN0aXZlX2NhY2hlX3RyZWUtPnNoYTEsIHBhcmVudHMsIGNvbW1pdF9zaGExLAorCQkJZm10X2lkZW50KGF1dGhvcl9uYW1lLCBhdXRob3JfZW1haWwsIGF1dGhvcl9kYXRlLAorCQkJCUlERU5UX0VSUk9SX09OX05PX05BTUUpKSkgewogCQlyb2xsYmFja19pbmRleF9maWxlcygpOwogCQlkaWUoImZhaWxlZCB0byB3cml0ZSBjb21taXQgb2JqZWN0Iik7CiAJfQpAQCAtMTAyOSwxMiArMTA0MCwxMSBAQAogCQkJCQkgICBpbml0aWFsX2NvbW1pdCA/IE5VTEwgOiBoZWFkX3NoYTEsCiAJCQkJCSAgIDApOwogCi0JbmwgPSBzdHJjaHIoc2IuYnVmICsgaGVhZGVyX2xlbiwgJ1xuJyk7CisJbmwgPSBzdHJjaHIoc2IuYnVmLCAnXG4nKTsKIAlpZiAobmwpCiAJCXN0cmJ1Zl9zZXRsZW4oJnNiLCBubCArIDEgLSBzYi5idWYpOwogCWVsc2UKIAkJc3RyYnVmX2FkZGNoKCZzYiwgJ1xuJyk7Ci0Jc3RyYnVmX3JlbW92ZSgmc2IsIDAsIGhlYWRlcl9sZW4pOwogCXN0cmJ1Zl9pbnNlcnQoJnNiLCAwLCByZWZsb2dfbXNnLCBzdHJsZW4ocmVmbG9nX21zZykpOwogCXN0cmJ1Zl9pbnNlcnQoJnNiLCBzdHJsZW4ocmVmbG9nX21zZyksICI6ICIsIDIpOwogCkBAIC0xMDQ5LDYgKzEwNTksNyBAQAogCiAJdW5saW5rKGdpdF9wYXRoKCJNRVJHRV9IRUFEIikpOwogCXVubGluayhnaXRfcGF0aCgiTUVSR0VfTVNHIikpOworCXVubGluayhnaXRfcGF0aCgiTUVSR0VfTU9ERSIpKTsKIAl1bmxpbmsoZ2l0X3BhdGgoIlNRVUFTSF9NU0ciKSk7CiAKIAlpZiAoY29tbWl0X2luZGV4X2ZpbGVzKCkpCmRpZmYgLS1naXQgYS9idWlsdGluLWNvdW50LW9iamVjdHMuYyBiL2J1aWx0aW4tY291bnQtb2JqZWN0cy5jCmluZGV4IDkxYjU0ODcuLmFiMzViNjUgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tY291bnQtb2JqZWN0cy5jCisrKyBiL2J1aWx0aW4tY291bnQtb2JqZWN0cy5jCkBAIC00Myw3ICs0Myw3IEBACiAJCQlpZiAobHN0YXQocGF0aCwgJnN0KSB8fCAhU19JU1JFRyhzdC5zdF9tb2RlKSkKIAkJCQliYWQgPSAxOwogCQkJZWxzZQotCQkJCSgqbG9vc2Vfc2l6ZSkgKz0geHNpemVfdChzdC5zdF9ibG9ja3MpOworCQkJCSgqbG9vc2Vfc2l6ZSkgKz0geHNpemVfdChvbl9kaXNrX2J5dGVzKHN0KSk7CiAJCX0KIAkJaWYgKGJhZCkgewogCQkJaWYgKHZlcmJvc2UpIHsKQEAgLTEwNCw2ICsxMDQsNyBAQAogCWlmICh2ZXJib3NlKSB7CiAJCXN0cnVjdCBwYWNrZWRfZ2l0ICpwOwogCQl1bnNpZ25lZCBsb25nIG51bV9wYWNrID0gMDsKKwkJdW5zaWduZWQgbG9uZyBzaXplX3BhY2sgPSAwOwogCQlpZiAoIXBhY2tlZF9naXQpCiAJCQlwcmVwYXJlX3BhY2tlZF9naXQoKTsKIAkJZm9yIChwID0gcGFja2VkX2dpdDsgcDsgcCA9IHAtPm5leHQpIHsKQEAgLTExMiwxNyArMTEzLDE5IEBACiAJCQlpZiAob3Blbl9wYWNrX2luZGV4KHApKQogCQkJCWNvbnRpbnVlOwogCQkJcGFja2VkICs9IHAtPm51bV9vYmplY3RzOworCQkJc2l6ZV9wYWNrICs9IHAtPnBhY2tfc2l6ZSArIHAtPmluZGV4X3NpemU7CiAJCQludW1fcGFjaysrOwogCQl9CiAJCXByaW50ZigiY291bnQ6ICVsdVxuIiwgbG9vc2UpOwotCQlwcmludGYoInNpemU6ICVsdVxuIiwgbG9vc2Vfc2l6ZSAvIDIpOworCQlwcmludGYoInNpemU6ICVsdVxuIiwgbG9vc2Vfc2l6ZSAvIDEwMjQpOwogCQlwcmludGYoImluLXBhY2s6ICVsdVxuIiwgcGFja2VkKTsKIAkJcHJpbnRmKCJwYWNrczogJWx1XG4iLCBudW1fcGFjayk7CisJCXByaW50Zigic2l6ZS1wYWNrOiAlbHVcbiIsIHNpemVfcGFjayAvIDEwMjQpOwogCQlwcmludGYoInBydW5lLXBhY2thYmxlOiAlbHVcbiIsIHBhY2tlZF9sb29zZSk7CiAJCXByaW50ZigiZ2FyYmFnZTogJWx1XG4iLCBnYXJiYWdlKTsKIAl9CiAJZWxzZQogCQlwcmludGYoIiVsdSBvYmplY3RzLCAlbHUga2lsb2J5dGVzXG4iLAotCQkgICAgICAgbG9vc2UsIGxvb3NlX3NpemUgLyAyKTsKKwkJICAgICAgIGxvb3NlLCBsb29zZV9zaXplIC8gMTAyNCk7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluLWRlc2NyaWJlLmMgYi9idWlsdGluLWRlc2NyaWJlLmMKaW5kZXggZWM0MDRjOC4uM2EwMDdlZCAxMDA2NDQKLS0tIGEvYnVpbHRpbi1kZXNjcmliZS5jCisrKyBiL2J1aWx0aW4tZGVzY3JpYmUuYwpAQCAtMTUsOCArMTUsOCBAQAogfTsKIAogc3RhdGljIGludCBkZWJ1ZzsJLyogRGlzcGxheSBsb3RzIG9mIHZlcmJvc2UgaW5mbyAqLwotc3RhdGljIGludCBhbGw7CS8qIERlZmF1bHQgdG8gYW5ub3RhdGVkIHRhZ3Mgb25seSAqLwotc3RhdGljIGludCB0YWdzOwkvKiBCdXQgYWxsb3cgYW55IHRhZ3MgaWYgLS10YWdzIGlzIHNwZWNpZmllZCAqLworc3RhdGljIGludCBhbGw7CS8qIEFueSB2YWxpZCByZWYgY2FuIGJlIHVzZWQgKi8KK3N0YXRpYyBpbnQgdGFnczsJLyogQWxsb3cgbGlnaHR3ZWlnaHQgdGFncyAqLwogc3RhdGljIGludCBsb25nZm9ybWF0Owogc3RhdGljIGludCBhYmJyZXYgPSBERUZBVUxUX0FCQlJFVjsKIHN0YXRpYyBpbnQgbWF4X2NhbmRpZGF0ZXMgPSAxMDsKQEAgLTExMiw4ICsxMTIsNiBAQAogewogCXN0cnVjdCBwb3NzaWJsZV90YWcgKmEgPSAoc3RydWN0IHBvc3NpYmxlX3RhZyAqKWFfOwogCXN0cnVjdCBwb3NzaWJsZV90YWcgKmIgPSAoc3RydWN0IHBvc3NpYmxlX3RhZyAqKWJfOwotCWlmIChhLT5uYW1lLT5wcmlvICE9IGItPm5hbWUtPnByaW8pCi0JCXJldHVybiBiLT5uYW1lLT5wcmlvIC0gYS0+bmFtZS0+cHJpbzsKIAlpZiAoYS0+ZGVwdGggIT0gYi0+ZGVwdGgpCiAJCXJldHVybiBhLT5kZXB0aCAtIGItPmRlcHRoOwogCWlmIChhLT5mb3VuZF9vcmRlciAhPSBiLT5mb3VuZF9vcmRlcikKQEAgLTE2MCw3ICsxNTgsNyBAQAogCQluLT50YWcgPSBsb29rdXBfdGFnKG4tPnNoYTEpOwogCQlpZiAoIW4tPnRhZyB8fCBwYXJzZV90YWcobi0+dGFnKSB8fCAhbi0+dGFnLT50YWcpCiAJCQlkaWUoImFubm90YXRlZCB0YWcgJXMgbm90IGF2YWlsYWJsZSIsIG4tPnBhdGgpOwotCQlpZiAoc3RyY21wKG4tPnRhZy0+dGFnLCBuLT5wYXRoKSkKKwkJaWYgKHN0cmNtcChuLT50YWctPnRhZywgYWxsID8gbi0+cGF0aCArIDUgOiBuLT5wYXRoKSkKIAkJCXdhcm5pbmcoInRhZyAnJXMnIGlzIHJlYWxseSAnJXMnIGhlcmUiLCBuLT50YWctPnRhZywgbi0+cGF0aCk7CiAJfQogCmRpZmYgLS1naXQgYS9idWlsdGluLWRpZmYtZmlsZXMuYyBiL2J1aWx0aW4tZGlmZi1maWxlcy5jCmluZGV4IDJiNTc4YzcuLjViNjQwMTEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZGlmZi1maWxlcy5jCisrKyBiL2J1aWx0aW4tZGlmZi1maWxlcy5jCkBAIC01OSw4ICs1OSw4IEBACiAJICAgIChyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0ICYgRElGRl9GT1JNQVRfUEFUQ0gpKQogCQlyZXYuY29tYmluZV9tZXJnZXMgPSByZXYuZGVuc2VfY29tYmluZWRfbWVyZ2VzID0gMTsKIAotCWlmIChyZWFkX2NhY2hlKCkgPCAwKSB7Ci0JCXBlcnJvcigicmVhZF9jYWNoZSIpOworCWlmIChyZWFkX2NhY2hlX3ByZWxvYWQocmV2LmRpZmZvcHQucGF0aHMpIDwgMCkgeworCQlwZXJyb3IoInJlYWRfY2FjaGVfcHJlbG9hZCIpOwogCQlyZXR1cm4gLTE7CiAJfQogCXJlc3VsdCA9IHJ1bl9kaWZmX2ZpbGVzKCZyZXYsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1kaWZmLXRyZWUuYyBiL2J1aWx0aW4tZGlmZi10cmVlLmMKaW5kZXggNDE1Y2IxNi4uOGVjZWZkNCAxMDA2NDQKLS0tIGEvYnVpbHRpbi1kaWZmLXRyZWUuYworKysgYi9idWlsdGluLWRpZmYtdHJlZS5jCkBAIC0xNCwyMCArMTQsMTAgQEAKIAlyZXR1cm4gbG9nX3RyZWVfY29tbWl0KCZsb2dfdHJlZV9vcHQsIGNvbW1pdCk7CiB9CiAKLXN0YXRpYyBpbnQgZGlmZl90cmVlX3N0ZGluKGNoYXIgKmxpbmUpCisvKiBEaWZmIG9uZSBvciBtb3JlIGNvbW1pdHMuICovCitzdGF0aWMgaW50IHN0ZGluX2RpZmZfY29tbWl0KHN0cnVjdCBjb21taXQgKmNvbW1pdCwgY2hhciAqbGluZSwgaW50IGxlbikKIHsKLQlpbnQgbGVuID0gc3RybGVuKGxpbmUpOwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07Ci0Jc3RydWN0IGNvbW1pdCAqY29tbWl0OwotCi0JaWYgKCFsZW4gfHwgbGluZVtsZW4tMV0gIT0gJ1xuJykKLQkJcmV0dXJuIC0xOwotCWxpbmVbbGVuLTFdID0gMDsKLQlpZiAoZ2V0X3NoYTFfaGV4KGxpbmUsIHNoYTEpKQotCQlyZXR1cm4gLTE7Ci0JY29tbWl0ID0gbG9va3VwX2NvbW1pdChzaGExKTsKLQlpZiAoIWNvbW1pdCB8fCBwYXJzZV9jb21taXQoY29tbWl0KSkKLQkJcmV0dXJuIC0xOwogCWlmIChpc3NwYWNlKGxpbmVbNDBdKSAmJiAhZ2V0X3NoYTFfaGV4KGxpbmUrNDEsIHNoYTEpKSB7CiAJCS8qIEdyYWZ0IHRoZSBmYWtlIHBhcmVudHMgbG9jYWxseSB0byB0aGUgY29tbWl0ICovCiAJCWludCBwb3MgPSA0MTsKQEAgLTUyLDYgKzQyLDQ5IEBACiAJcmV0dXJuIGxvZ190cmVlX2NvbW1pdCgmbG9nX3RyZWVfb3B0LCBjb21taXQpOwogfQogCisvKiBEaWZmIHR3byB0cmVlcy4gKi8KK3N0YXRpYyBpbnQgc3RkaW5fZGlmZl90cmVlcyhzdHJ1Y3QgdHJlZSAqdHJlZTEsIGNoYXIgKmxpbmUsIGludCBsZW4pCit7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwlzdHJ1Y3QgdHJlZSAqdHJlZTI7CisJaWYgKGxlbiAhPSA4MiB8fCAhaXNzcGFjZShsaW5lWzQwXSkgfHwgZ2V0X3NoYTFfaGV4KGxpbmUgKyA0MSwgc2hhMSkpCisJCXJldHVybiBlcnJvcigiTmVlZCBleGFjdGx5IHR3byB0cmVlcywgc2VwYXJhdGVkIGJ5IGEgc3BhY2UiKTsKKwl0cmVlMiA9IGxvb2t1cF90cmVlKHNoYTEpOworCWlmICghdHJlZTIgfHwgcGFyc2VfdHJlZSh0cmVlMikpCisJCXJldHVybiAtMTsKKwlwcmludGYoIiVzICVzXG4iLCBzaGExX3RvX2hleCh0cmVlMS0+b2JqZWN0LnNoYTEpLAorCQkJICBzaGExX3RvX2hleCh0cmVlMi0+b2JqZWN0LnNoYTEpKTsKKwlkaWZmX3RyZWVfc2hhMSh0cmVlMS0+b2JqZWN0LnNoYTEsIHRyZWUyLT5vYmplY3Quc2hhMSwKKwkJICAgICAgICIiLCAmbG9nX3RyZWVfb3B0LmRpZmZvcHQpOworCWxvZ190cmVlX2RpZmZfZmx1c2goJmxvZ190cmVlX29wdCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGlmZl90cmVlX3N0ZGluKGNoYXIgKmxpbmUpCit7CisJaW50IGxlbiA9IHN0cmxlbihsaW5lKTsKKwl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCXN0cnVjdCBvYmplY3QgKm9iajsKKworCWlmICghbGVuIHx8IGxpbmVbbGVuLTFdICE9ICdcbicpCisJCXJldHVybiAtMTsKKwlsaW5lW2xlbi0xXSA9IDA7CisJaWYgKGdldF9zaGExX2hleChsaW5lLCBzaGExKSkKKwkJcmV0dXJuIC0xOworCW9iaiA9IGxvb2t1cF91bmtub3duX29iamVjdChzaGExKTsKKwlpZiAoIW9iaiB8fCAhb2JqLT5wYXJzZWQpCisJCW9iaiA9IHBhcnNlX29iamVjdChzaGExKTsKKwlpZiAoIW9iaikKKwkJcmV0dXJuIC0xOworCWlmIChvYmotPnR5cGUgPT0gT0JKX0NPTU1JVCkKKwkJcmV0dXJuIHN0ZGluX2RpZmZfY29tbWl0KChzdHJ1Y3QgY29tbWl0ICopb2JqLCBsaW5lLCBsZW4pOworCWlmIChvYmotPnR5cGUgPT0gT0JKX1RSRUUpCisJCXJldHVybiBzdGRpbl9kaWZmX3RyZWVzKChzdHJ1Y3QgdHJlZSAqKW9iaiwgbGluZSwgbGVuKTsKKwllcnJvcigiT2JqZWN0ICVzIGlzIGEgJXMsIG5vdCBhIGNvbW1pdCBvciB0cmVlIiwKKwkgICAgICBzaGExX3RvX2hleChzaGExKSwgdHlwZW5hbWUob2JqLT50eXBlKSk7CisJcmV0dXJuIC0xOworfQorCiBzdGF0aWMgY29uc3QgY2hhciBkaWZmX3RyZWVfdXNhZ2VbXSA9CiAiZ2l0IGRpZmYtdHJlZSBbLS1zdGRpbl0gWy1tXSBbLWNdIFstLWNjXSBbLXNdIFstdl0gWy0tcHJldHR5XSBbLXRdIFstcl0gWy0tcm9vdF0gIgogIls8Y29tbW9uIGRpZmYgb3B0aW9ucz5dIDx0cmVlLWlzaD4gWzx0cmVlLWlzaD5dIFs8cGF0aD4uLi5dXG4iCmRpZmYgLS1naXQgYS9idWlsdGluLWRpZmYuYyBiL2J1aWx0aW4tZGlmZi5jCmluZGV4IDM3NWEwZDMuLmQ3NWQ2OWIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZGlmZi5jCisrKyBiL2J1aWx0aW4tZGlmZi5jCkBAIC03NCw2ICs3NCw4IEBACiAJaWYgKCEoU19JU1JFRyhzdC5zdF9tb2RlKSB8fCBTX0lTTE5LKHN0LnN0X21vZGUpKSkKIAkJZGllKCInJXMnOiBub3QgYSByZWd1bGFyIGZpbGUgb3Igc3ltbGluayIsIHBhdGgpOwogCisJZGlmZl9zZXRfbW5lbW9uaWNfcHJlZml4KCZyZXZzLT5kaWZmb3B0LCAiby8iLCAidy8iKTsKKwogCWlmIChibG9iWzBdLm1vZGUgPT0gU19JRklOVkFMSUQpCiAJCWJsb2JbMF0ubW9kZSA9IGNhbm9uX21vZGUoc3Quc3RfbW9kZSk7CiAKQEAgLTExNiw3ICsxMTgsNyBAQAogCWludCBjYWNoZWQgPSAwOwogCXdoaWxlICgxIDwgYXJnYykgewogCQljb25zdCBjaGFyICphcmcgPSBhcmd2WzFdOwotCQlpZiAoIXN0cmNtcChhcmcsICItLWNhY2hlZCIpKQorCQlpZiAoIXN0cmNtcChhcmcsICItLWNhY2hlZCIpIHx8ICFzdHJjbXAoYXJnLCAiLS1zdGFnZWQiKSkKIAkJCWNhY2hlZCA9IDE7CiAJCWVsc2UKIAkJCXVzYWdlKGJ1aWx0aW5fZGlmZl91c2FnZSk7CkBAIC0xMzIsOCArMTM0LDggQEAKIAkgICAgcmV2cy0+bWF4X2NvdW50ICE9IC0xIHx8IHJldnMtPm1pbl9hZ2UgIT0gLTEgfHwKIAkgICAgcmV2cy0+bWF4X2FnZSAhPSAtMSkKIAkJdXNhZ2UoYnVpbHRpbl9kaWZmX3VzYWdlKTsKLQlpZiAocmVhZF9jYWNoZSgpIDwgMCkgewotCQlwZXJyb3IoInJlYWRfY2FjaGUiKTsKKwlpZiAocmVhZF9jYWNoZV9wcmVsb2FkKHJldnMtPmRpZmZvcHQucGF0aHMpIDwgMCkgeworCQlwZXJyb3IoInJlYWRfY2FjaGVfcHJlbG9hZCIpOwogCQlyZXR1cm4gLTE7CiAJfQogCXJldHVybiBydW5fZGlmZl9pbmRleChyZXZzLCBjYWNoZWQpOwpAQCAtMjMyLDggKzIzNCw4IEBACiAJCXJldnMtPmNvbWJpbmVfbWVyZ2VzID0gcmV2cy0+ZGVuc2VfY29tYmluZWRfbWVyZ2VzID0gMTsKIAogCXNldHVwX3dvcmtfdHJlZSgpOwotCWlmIChyZWFkX2NhY2hlKCkgPCAwKSB7Ci0JCXBlcnJvcigicmVhZF9jYWNoZSIpOworCWlmIChyZWFkX2NhY2hlX3ByZWxvYWQocmV2cy0+ZGlmZm9wdC5wYXRocykgPCAwKSB7CisJCXBlcnJvcigicmVhZF9jYWNoZV9wcmVsb2FkIik7CiAJCXJldHVybiAtMTsKIAl9CiAJcmVzdWx0ID0gcnVuX2RpZmZfZmlsZXMocmV2cywgb3B0aW9ucyk7CkBAIC0yODgsOCArMjkwLDkgQEAKIAkvKiBPdGhlcndpc2UsIHdlIGFyZSBkb2luZyB0aGUgdXN1YWwgImdpdCIgZGlmZiAqLwogCXJldi5kaWZmb3B0LnNraXBfc3RhdF91bm1hdGNoID0gISFkaWZmX2F1dG9fcmVmcmVzaF9pbmRleDsKIAotCS8qIERlZmF1bHQgdG8gbGV0IGV4dGVybmFsIGJlIHVzZWQgKi8KKwkvKiBEZWZhdWx0IHRvIGxldCBleHRlcm5hbCBhbmQgdGV4dGNvbnYgYmUgdXNlZCAqLwogCURJRkZfT1BUX1NFVCgmcmV2LmRpZmZvcHQsIEFMTE9XX0VYVEVSTkFMKTsKKwlESUZGX09QVF9TRVQoJnJldi5kaWZmb3B0LCBBTExPV19URVhUQ09OVik7CiAKIAlpZiAobm9uZ2l0KQogCQlkaWUoIk5vdCBhIGdpdCByZXBvc2l0b3J5Iik7CkBAIC0zMjAsNyArMzIzLDggQEAKIAkJCWNvbnN0IGNoYXIgKmFyZyA9IGFyZ3ZbaV07CiAJCQlpZiAoIXN0cmNtcChhcmcsICItLSIpKQogCQkJCWJyZWFrOwotCQkJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWNhY2hlZCIpKSB7CisJCQllbHNlIGlmICghc3RyY21wKGFyZywgIi0tY2FjaGVkIikgfHwKKwkJCQkgIXN0cmNtcChhcmcsICItLXN0YWdlZCIpKSB7CiAJCQkJYWRkX2hlYWRfdG9fcGVuZGluZygmcmV2KTsKIAkJCQlpZiAoIXJldi5wZW5kaW5nLm5yKQogCQkJCQlkaWUoIk5vIEhFQUQgY29tbWl0IHRvIGNvbXBhcmUgd2l0aCAoeWV0KSIpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1mYXN0LWV4cG9ydC5jIGIvYnVpbHRpbi1mYXN0LWV4cG9ydC5jCmluZGV4IDgzODYzMzguLmU5ZWUyYzcgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZmFzdC1leHBvcnQuYworKysgYi9idWlsdGluLWZhc3QtZXhwb3J0LmMKQEAgLTQ5Nyw2ICs0OTcsOSBAQAogCQlPUFRfRU5EKCkKIAl9OwogCisJaWYgKGFyZ2MgPT0gMSkKKwkJdXNhZ2Vfd2l0aF9vcHRpb25zIChmYXN0X2V4cG9ydF91c2FnZSwgb3B0aW9ucyk7CisKIAkvKiB3ZSBoYW5kbGUgZW5jb2RpbmdzICovCiAJZ2l0X2NvbmZpZyhnaXRfZGVmYXVsdF9jb25maWcsIE5VTEwpOwogCmRpZmYgLS1naXQgYS9idWlsdGluLWZldGNoLS10b29sLmMgYi9idWlsdGluLWZldGNoLS10b29sLmMKaW5kZXggNzQ2MGFiNy4uNDY5YjA3ZSAxMDA2NDQKLS0tIGEvYnVpbHRpbi1mZXRjaC0tdG9vbC5jCisrKyBiL2J1aWx0aW4tZmV0Y2gtLXRvb2wuYwpAQCAtNSw4ICs1LDcgQEAKIAogc3RhdGljIGNoYXIgKmdldF9zdGRpbih2b2lkKQogewotCXN0cnVjdCBzdHJidWYgYnVmOwotCXN0cmJ1Zl9pbml0KCZidWYsIDApOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJaWYgKHN0cmJ1Zl9yZWFkKCZidWYsIDAsIDEwMjQpIDwgMCkgewogCQlkaWUoImVycm9yIHJlYWRpbmcgc3RhbmRhcmQgaW5wdXQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAl9CmRpZmYgLS1naXQgYS9idWlsdGluLWZldGNoLXBhY2suYyBiL2J1aWx0aW4tZmV0Y2gtcGFjay5jCmluZGV4IDIyYTU3MTIuLjY3ZmI4MGUgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZmV0Y2gtcGFjay5jCisrKyBiL2J1aWx0aW4tZmV0Y2gtcGFjay5jCkBAIC01NDAsNyArNTQwLDcgQEAKIAkJCSphdisrID0gIi0tZml4LXRoaW4iOwogCQlpZiAoYXJncy5sb2NrX3BhY2sgfHwgdW5wYWNrX2xpbWl0KSB7CiAJCQlpbnQgcyA9IHNwcmludGYoa2VlcF9hcmcsCi0JCQkJCSItLWtlZXA9ZmV0Y2gtcGFjayAlZCBvbiAiLCBnZXRwaWQoKSk7CisJCQkJCSItLWtlZXA9ZmV0Y2gtcGFjayAlIlBSSXVNQVggIiBvbiAiLCAodWludG1heF90KSBnZXRwaWQoKSk7CiAJCQlpZiAoZ2V0aG9zdG5hbWUoa2VlcF9hcmcgKyBzLCBzaXplb2Yoa2VlcF9hcmcpIC0gcykpCiAJCQkJc3RyY3B5KGtlZXBfYXJnICsgcywgImxvY2FsaG9zdCIpOwogCQkJKmF2KysgPSBrZWVwX2FyZzsKQEAgLTczNSw3ICs3MzUsNyBAQAogCWNvbm4gPSBnaXRfY29ubmVjdChmZCwgKGNoYXIgKilkZXN0LCBhcmdzLnVwbG9hZHBhY2ssCiAJCQkgICBhcmdzLnZlcmJvc2UgPyBDT05ORUNUX1ZFUkJPU0UgOiAwKTsKIAlpZiAoY29ubikgewotCQlnZXRfcmVtb3RlX2hlYWRzKGZkWzBdLCAmcmVmLCAwLCBOVUxMLCAwKTsKKwkJZ2V0X3JlbW90ZV9oZWFkcyhmZFswXSwgJnJlZiwgMCwgTlVMTCwgMCwgTlVMTCk7CiAKIAkJcmVmID0gZmV0Y2hfcGFjaygmYXJncywgZmQsIGNvbm4sIHJlZiwgZGVzdCwgbnJfaGVhZHMsIGhlYWRzLCBOVUxMKTsKIAkJY2xvc2UoZmRbMF0pOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1mZXRjaC5jIGIvYnVpbHRpbi1mZXRjaC5jCmluZGV4IDU3YzE2MWQuLjc1NjgxNjMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZmV0Y2guYworKysgYi9idWlsdGluLWZldGNoLmMKQEAgLTIyLDcgKzIyLDcgQEAKIAlUQUdTX1NFVCA9IDIKIH07CiAKLXN0YXRpYyBpbnQgYXBwZW5kLCBmb3JjZSwga2VlcCwgdXBkYXRlX2hlYWRfb2ssIHZlcmJvc2UsIHF1aWV0Oworc3RhdGljIGludCBhcHBlbmQsIGZvcmNlLCBrZWVwLCB1cGRhdGVfaGVhZF9vaywgdmVyYm9zaXR5Owogc3RhdGljIGludCB0YWdzID0gVEFHU19ERUZBVUxUOwogc3RhdGljIGNvbnN0IGNoYXIgKmRlcHRoOwogc3RhdGljIGNvbnN0IGNoYXIgKnVwbG9hZF9wYWNrOwpAQCAtMzAsOCArMzAsNyBAQAogc3RhdGljIHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydDsKIAogc3RhdGljIHN0cnVjdCBvcHRpb24gYnVpbHRpbl9mZXRjaF9vcHRpb25zW10gPSB7Ci0JT1BUX19RVUlFVCgmcXVpZXQpLAotCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSksCisJT1BUX19WRVJCT1NJVFkoJnZlcmJvc2l0eSksCiAJT1BUX0JPT0xFQU4oJ2EnLCAiYXBwZW5kIiwgJmFwcGVuZCwKIAkJICAgICJhcHBlbmQgdG8gLmdpdC9GRVRDSF9IRUFEIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmciKSwKIAlPUFRfU1RSSU5HKDAsICJ1cGxvYWQtcGFjayIsICZ1cGxvYWRfcGFjaywgIlBBVEgiLApAQCAtMTkyLDcgKzE5MSw2IEBACiAKIHN0YXRpYyBpbnQgdXBkYXRlX2xvY2FsX3JlZihzdHJ1Y3QgcmVmICpyZWYsCiAJCQkgICAgY29uc3QgY2hhciAqcmVtb3RlLAotCQkJICAgIGludCB2ZXJib3NlLAogCQkJICAgIGNoYXIgKmRpc3BsYXkpCiB7CiAJc3RydWN0IGNvbW1pdCAqY3VycmVudCA9IE5VTEwsICp1cGRhdGVkOwpAQCAtMjEwLDcgKzIwOCw3IEBACiAJCWRpZSgib2JqZWN0ICVzIG5vdCBmb3VuZCIsIHNoYTFfdG9faGV4KHJlZi0+bmV3X3NoYTEpKTsKIAogCWlmICghaGFzaGNtcChyZWYtPm9sZF9zaGExLCByZWYtPm5ld19zaGExKSkgewotCQlpZiAodmVyYm9zZSkKKwkJaWYgKHZlcmJvc2l0eSA+IDApCiAJCQlzcHJpbnRmKGRpc3BsYXksICI9ICUtKnMgJS0qcyAtPiAlcyIsIFNVTU1BUllfV0lEVEgsCiAJCQkJIlt1cCB0byBkYXRlXSIsIFJFRkNPTF9XSURUSCwgcmVtb3RlLAogCQkJCXByZXR0eV9yZWYpOwpAQCAtMzY2LDE4ICszNjQsMTkgQEAKIAkJCW5vdGUpOwogCiAJCWlmIChyZWYpCi0JCQlyYyB8PSB1cGRhdGVfbG9jYWxfcmVmKHJlZiwgd2hhdCwgdmVyYm9zZSwgbm90ZSk7CisJCQlyYyB8PSB1cGRhdGVfbG9jYWxfcmVmKHJlZiwgd2hhdCwgbm90ZSk7CiAJCWVsc2UKIAkJCXNwcmludGYobm90ZSwgIiogJS0qcyAlLSpzIC0+IEZFVENIX0hFQUQiLAogCQkJCVNVTU1BUllfV0lEVEgsICpraW5kID8ga2luZCA6ICJicmFuY2giLAogCQkJCSBSRUZDT0xfV0lEVEgsICp3aGF0ID8gd2hhdCA6ICJIRUFEIik7CiAJCWlmICgqbm90ZSkgewotCQkJaWYgKCFzaG93bl91cmwpIHsKKwkJCWlmICh2ZXJib3NpdHkgPj0gMCAmJiAhc2hvd25fdXJsKSB7CiAJCQkJZnByaW50ZihzdGRlcnIsICJGcm9tICUuKnNcbiIsCiAJCQkJCQl1cmxfbGVuLCB1cmwpOwogCQkJCXNob3duX3VybCA9IDE7CiAJCQl9Ci0JCQlmcHJpbnRmKHN0ZGVyciwgIiAlc1xuIiwgbm90ZSk7CisJCQlpZiAodmVyYm9zaXR5ID49IDApCisJCQkJZnByaW50ZihzdGRlcnIsICIgJXNcbiIsIG5vdGUpOwogCQl9CiAJfQogCWZjbG9zZShmcCk7CkBAIC01MjEsOCArNTIwLDggQEAKIAkJICAgICB3aWxsX2ZldGNoKGhlYWQsIHJlZi0+b2xkX3NoYTEpKSkgewogCQkJc3RyaW5nX2xpc3RfaW5zZXJ0KHJlZl9uYW1lLCAmbmV3X3JlZnMpOwogCi0JCQlybSA9IGFsbG9jX3JlZl9mcm9tX3N0cihyZWZfbmFtZSk7Ci0JCQlybS0+cGVlcl9yZWYgPSBhbGxvY19yZWZfZnJvbV9zdHIocmVmX25hbWUpOworCQkJcm0gPSBhbGxvY19yZWYocmVmX25hbWUpOworCQkJcm0tPnBlZXJfcmVmID0gYWxsb2NfcmVmKHJlZl9uYW1lKTsKIAkJCWhhc2hjcHkocm0tPm9sZF9zaGExLCByZWZfc2hhMSk7CiAKIAkJCSoqdGFpbCA9IHJtOwpAQCAtNjM3LDkgKzYzNiw5IEBACiAJCXJlbW90ZSA9IHJlbW90ZV9nZXQoYXJndlswXSk7CiAKIAl0cmFuc3BvcnQgPSB0cmFuc3BvcnRfZ2V0KHJlbW90ZSwgcmVtb3RlLT51cmxbMF0pOwotCWlmICh2ZXJib3NlID49IDIpCisJaWYgKHZlcmJvc2l0eSA+PSAyKQogCQl0cmFuc3BvcnQtPnZlcmJvc2UgPSAxOwotCWlmIChxdWlldCkKKwlpZiAodmVyYm9zaXR5IDwgMCkKIAkJdHJhbnNwb3J0LT52ZXJib3NlID0gLTE7CiAJaWYgKHVwbG9hZF9wYWNrKQogCQlzZXRfb3B0aW9uKFRSQU5TX09QVF9VUExPQURQQUNLLCB1cGxvYWRfcGFjayk7CmRpZmYgLS1naXQgYS9idWlsdGluLWZtdC1tZXJnZS1tc2cuYyBiL2J1aWx0aW4tZm10LW1lcmdlLW1zZy5jCmluZGV4IGRmMDJiYTcuLmRmMThmNDAgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZm10LW1lcmdlLW1zZy5jCisrKyBiL2J1aWx0aW4tZm10LW1lcmdlLW1zZy5jCkBAIC01LDggKzUsMTAgQEAKICNpbmNsdWRlICJyZXZpc2lvbi5oIgogI2luY2x1ZGUgInRhZy5oIgogCi1zdGF0aWMgY29uc3QgY2hhciAqZm10X21lcmdlX21zZ191c2FnZSA9Ci0JImdpdCBmbXQtbWVyZ2UtbXNnIFstLWxvZ10gWy0tbm8tbG9nXSBbLS1maWxlIDxmaWxlPl0iOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBmbXRfbWVyZ2VfbXNnX3VzYWdlW10gPSB7CisJImdpdCBmbXQtbWVyZ2UtbXNnIFstLWxvZ3wtLW5vLWxvZ10gWy0tZmlsZSA8ZmlsZT5dIiwKKwlOVUxMCit9OwogCiBzdGF0aWMgaW50IG1lcmdlX3N1bW1hcnk7CiAKQEAgLTM0Nyw0NiArMzQ5LDM1IEBACiAKIGludCBjbWRfZm10X21lcmdlX21zZyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKKwljb25zdCBjaGFyICppbnBhdGggPSBOVUxMOworCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geworCQlPUFRfQk9PTEVBTigwLCAibG9nIiwgICAgICZtZXJnZV9zdW1tYXJ5LCAicG9wdWxhdGUgbG9nIHdpdGggdGhlIHNob3J0bG9nIiksCisJCU9QVF9CT09MRUFOKDAsICJzdW1tYXJ5IiwgJm1lcmdlX3N1bW1hcnksICJhbGlhcyBmb3IgLS1sb2ciKSwKKwkJT1BUX1NUUklORygnRicsICJmaWxlIiwgICAmaW5wYXRoLCAiZmlsZSIsICJmaWxlIHRvIHJlYWQgZnJvbSIpLAorCQlPUFRfRU5EKCkKKwl9OworCiAJRklMRSAqaW4gPSBzdGRpbjsKLQlzdHJ1Y3Qgc3RyYnVmIGlucHV0LCBvdXRwdXQ7CisJc3RydWN0IHN0cmJ1ZiBpbnB1dCA9IFNUUkJVRl9JTklULCBvdXRwdXQgPSBTVFJCVUZfSU5JVDsKIAlpbnQgcmV0OwogCiAJZ2l0X2NvbmZpZyhmbXRfbWVyZ2VfbXNnX2NvbmZpZywgTlVMTCk7CisJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgb3B0aW9ucywgZm10X21lcmdlX21zZ191c2FnZSwgMCk7CisJaWYgKGFyZ2MgPiAwKQorCQl1c2FnZV93aXRoX29wdGlvbnMoZm10X21lcmdlX21zZ191c2FnZSwgb3B0aW9ucyk7CiAKLQl3aGlsZSAoYXJnYyA+IDEpIHsKLQkJaWYgKCFzdHJjbXAoYXJndlsxXSwgIi0tbG9nIikgfHwgIXN0cmNtcChhcmd2WzFdLCAiLS1zdW1tYXJ5IikpCi0JCQltZXJnZV9zdW1tYXJ5ID0gMTsKLQkJZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAiLS1uby1sb2ciKQotCQkJCXx8ICFzdHJjbXAoYXJndlsxXSwgIi0tbm8tc3VtbWFyeSIpKQotCQkJbWVyZ2Vfc3VtbWFyeSA9IDA7Ci0JCWVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgIi1GIikgfHwgIXN0cmNtcChhcmd2WzFdLCAiLS1maWxlIikpIHsKLQkJCWlmIChhcmdjIDwgMykKLQkJCQlkaWUgKCJXaGljaCBmaWxlPyIpOwotCQkJaWYgKCFzdHJjbXAoYXJndlsyXSwgIi0iKSkKLQkJCQlpbiA9IHN0ZGluOwotCQkJZWxzZSB7Ci0JCQkJZmNsb3NlKGluKTsKLQkJCQlpbiA9IGZvcGVuKGFyZ3ZbMl0sICJyIik7Ci0JCQkJaWYgKCFpbikKLQkJCQkJZGllKCJjYW5ub3Qgb3BlbiAlcyIsIGFyZ3ZbMl0pOwotCQkJfQotCQkJYXJnYy0tOyBhcmd2Kys7Ci0JCX0gZWxzZQotCQkJYnJlYWs7Ci0JCWFyZ2MtLTsgYXJndisrOworCWlmIChpbnBhdGggJiYgc3RyY21wKGlucGF0aCwgIi0iKSkgeworCQlpbiA9IGZvcGVuKGlucGF0aCwgInIiKTsKKwkJaWYgKCFpbikKKwkJCWRpZSgiY2Fubm90IG9wZW4gJXMiLCBpbnBhdGgpOwogCX0KIAotCWlmIChhcmdjID4gMSkKLQkJdXNhZ2UoZm10X21lcmdlX21zZ191c2FnZSk7Ci0KLQlzdHJidWZfaW5pdCgmaW5wdXQsIDApOwogCWlmIChzdHJidWZfcmVhZCgmaW5wdXQsIGZpbGVubyhpbiksIDApIDwgMCkKIAkJZGllKCJjb3VsZCBub3QgcmVhZCBpbnB1dCBmaWxlICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKLQlzdHJidWZfaW5pdCgmb3V0cHV0LCAwKTsKIAogCXJldCA9IGZtdF9tZXJnZV9tc2cobWVyZ2Vfc3VtbWFyeSwgJmlucHV0LCAmb3V0cHV0KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwotCXByaW50ZigiJXMiLCBvdXRwdXQuYnVmKTsKKwl3cml0ZV9pbl9mdWxsKFNURE9VVF9GSUxFTk8sIG91dHB1dC5idWYsIG91dHB1dC5sZW4pOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1mb3ItZWFjaC1yZWYuYyBiL2J1aWx0aW4tZm9yLWVhY2gtcmVmLmMKaW5kZXggNzJjMDg3OC4uZTQ2YjdhZCAxMDA2NDQKLS0tIGEvYnVpbHRpbi1mb3ItZWFjaC1yZWYuYworKysgYi9idWlsdGluLWZvci1lYWNoLXJlZi5jCkBAIC01NDQsNiArNTQ0LDEwOSBAQAogfQogCiAvKgorICogZ2VuZXJhdGUgYSBmb3JtYXQgc3VpdGFibGUgZm9yIHNjYW5mIGZyb20gYSByZWZfcmV2X3BhcnNlX3J1bGVzCisgKiBydWxlLCB0aGF0IGlzIHJlcGxhY2UgdGhlICIlLipzIiBzcGVjIHdpdGggYSAiJXMiIHNwZWMKKyAqLworc3RhdGljIHZvaWQgZ2VuX3NjYW5mX2ZtdChjaGFyICpzY2FuZl9mbXQsIGNvbnN0IGNoYXIgKnJ1bGUpCit7CisJY2hhciAqc3BlYzsKKworCXNwZWMgPSBzdHJzdHIocnVsZSwgIiUuKnMiKTsKKwlpZiAoIXNwZWMgfHwgc3Ryc3RyKHNwZWMgKyA0LCAiJS4qcyIpKQorCQlkaWUoImludmFsaWQgcnVsZSBpbiByZWZfcmV2X3BhcnNlX3J1bGVzOiAlcyIsIHJ1bGUpOworCisJLyogY29weSBhbGwgdW50aWwgc3BlYyAqLworCXN0cm5jcHkoc2NhbmZfZm10LCBydWxlLCBzcGVjIC0gcnVsZSk7CisJc2NhbmZfZm10W3NwZWMgLSBydWxlXSA9ICdcMCc7CisJLyogY29weSBuZXcgc3BlYyAqLworCXN0cmNhdChzY2FuZl9mbXQsICIlcyIpOworCS8qIGNvcHkgcmVtYWluaW5nIHJ1bGUgKi8KKwlzdHJjYXQoc2NhbmZfZm10LCBzcGVjICsgNCk7CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBTaG9ydGVuIHRoZSByZWZuYW1lIHRvIGFuIG5vbi1hbWJpZ3VvdXMgZm9ybQorICovCitzdGF0aWMgY2hhciAqZ2V0X3Nob3J0X3JlZihzdHJ1Y3QgcmVmaW5mbyAqcmVmKQoreworCWludCBpOworCXN0YXRpYyBjaGFyICoqc2NhbmZfZm10czsKKwlzdGF0aWMgaW50IG5yX3J1bGVzOworCWNoYXIgKnNob3J0X25hbWU7CisKKwkvKiBwcmUgZ2VuZXJhdGUgc2NhbmYgZm9ybWF0cyBmcm9tIHJlZl9yZXZfcGFyc2VfcnVsZXNbXSAqLworCWlmICghbnJfcnVsZXMpIHsKKwkJc2l6ZV90IHRvdGFsX2xlbiA9IDA7CisKKwkJLyogdGhlIHJ1bGUgbGlzdCBpcyBOVUxMIHRlcm1pbmF0ZWQsIGNvdW50IHRoZW0gZmlyc3QgKi8KKwkJZm9yICg7IHJlZl9yZXZfcGFyc2VfcnVsZXNbbnJfcnVsZXNdOyBucl9ydWxlcysrKQorCQkJLyogbm8gKzEgYmVjYXVzZSBzdHJsZW4oIiVzIikgPCBzdHJsZW4oIiUuKnMiKSAqLworCQkJdG90YWxfbGVuICs9IHN0cmxlbihyZWZfcmV2X3BhcnNlX3J1bGVzW25yX3J1bGVzXSk7CisKKwkJc2NhbmZfZm10cyA9IHhtYWxsb2MobnJfcnVsZXMgKiBzaXplb2YoY2hhciAqKSArIHRvdGFsX2xlbik7CisKKwkJdG90YWxfbGVuID0gMDsKKwkJZm9yIChpID0gMDsgaSA8IG5yX3J1bGVzOyBpKyspIHsKKwkJCXNjYW5mX2ZtdHNbaV0gPSAoY2hhciAqKSZzY2FuZl9mbXRzW25yX3J1bGVzXQorCQkJCQkrIHRvdGFsX2xlbjsKKwkJCWdlbl9zY2FuZl9mbXQoc2NhbmZfZm10c1tpXSwgcmVmX3Jldl9wYXJzZV9ydWxlc1tpXSk7CisJCQl0b3RhbF9sZW4gKz0gc3RybGVuKHJlZl9yZXZfcGFyc2VfcnVsZXNbaV0pOworCQl9CisJfQorCisJLyogYmFpbCBvdXQgaWYgdGhlcmUgYXJlIG5vIHJ1bGVzICovCisJaWYgKCFucl9ydWxlcykKKwkJcmV0dXJuIHJlZi0+cmVmbmFtZTsKKworCS8qIGJ1ZmZlciBmb3Igc2NhbmYgcmVzdWx0LCBhdCBtb3N0IHJlZi0+cmVmbmFtZSBtdXN0IGZpdCAqLworCXNob3J0X25hbWUgPSB4c3RyZHVwKHJlZi0+cmVmbmFtZSk7CisKKwkvKiBza2lwIGZpcnN0IHJ1bGUsIGl0IHdpbGwgYWx3YXlzIG1hdGNoICovCisJZm9yIChpID0gbnJfcnVsZXMgLSAxOyBpID4gMCA7IC0taSkgeworCQlpbnQgajsKKwkJaW50IHNob3J0X25hbWVfbGVuOworCisJCWlmICgxICE9IHNzY2FuZihyZWYtPnJlZm5hbWUsIHNjYW5mX2ZtdHNbaV0sIHNob3J0X25hbWUpKQorCQkJY29udGludWU7CisKKwkJc2hvcnRfbmFtZV9sZW4gPSBzdHJsZW4oc2hvcnRfbmFtZSk7CisKKwkJLyoKKwkJICogY2hlY2sgaWYgdGhlIHNob3J0IG5hbWUgcmVzb2x2ZXMgdG8gYSB2YWxpZCByZWYsCisJCSAqIGJ1dCB1c2Ugb25seSBydWxlcyBwcmlvciB0byB0aGUgbWF0Y2hlZCBvbmUKKwkJICovCisJCWZvciAoaiA9IDA7IGogPCBpOyBqKyspIHsKKwkJCWNvbnN0IGNoYXIgKnJ1bGUgPSByZWZfcmV2X3BhcnNlX3J1bGVzW2pdOworCQkJdW5zaWduZWQgY2hhciBzaG9ydF9vYmplY3RuYW1lWzIwXTsKKwkJCWNoYXIgcmVmbmFtZVtQQVRIX01BWF07CisKKwkJCS8qCisJCQkgKiB0aGUgc2hvcnQgbmFtZSBpcyBhbWJpZ3VvdXMsIGlmIGl0IHJlc29sdmVzCisJCQkgKiAod2l0aCB0aGlzIHByZXZpb3VzIHJ1bGUpIHRvIGEgdmFsaWQgcmVmCisJCQkgKiByZWFkX3JlZigpIHJldHVybnMgMCBvbiBzdWNjZXNzCisJCQkgKi8KKwkJCW1rc25wYXRoKHJlZm5hbWUsIHNpemVvZihyZWZuYW1lKSwKKwkJCQkgcnVsZSwgc2hvcnRfbmFtZV9sZW4sIHNob3J0X25hbWUpOworCQkJaWYgKCFyZWFkX3JlZihyZWZuYW1lLCBzaG9ydF9vYmplY3RuYW1lKSkKKwkJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIHNob3J0IG5hbWUgaXMgbm9uLWFtYmlndW91cyBpZiBhbGwgcHJldmlvdXMgcnVsZXMKKwkJICogaGF2ZW4ndCByZXNvbHZlZCB0byBhIHZhbGlkIHJlZgorCQkgKi8KKwkJaWYgKGogPT0gaSkKKwkJCXJldHVybiBzaG9ydF9uYW1lOworCX0KKworCWZyZWUoc2hvcnRfbmFtZSk7CisJcmV0dXJuIHJlZi0+cmVmbmFtZTsKK30KKworCisvKgogICogUGFyc2UgdGhlIG9iamVjdCByZWZlcnJlZCBieSByZWYsIGFuZCBncmFiIG5lZWRlZCB2YWx1ZS4KICAqLwogc3RhdGljIHZvaWQgcG9wdWxhdGVfdmFsdWUoc3RydWN0IHJlZmluZm8gKnJlZikKQEAgLTU2OCwxMyArNjcxLDMzIEBACiAJZm9yIChpID0gMDsgaSA8IHVzZWRfYXRvbV9jbnQ7IGkrKykgewogCQljb25zdCBjaGFyICpuYW1lID0gdXNlZF9hdG9tW2ldOwogCQlzdHJ1Y3QgYXRvbV92YWx1ZSAqdiA9ICZyZWYtPnZhbHVlW2ldOwotCQlpZiAoIXN0cmNtcChuYW1lLCAicmVmbmFtZSIpKQotCQkJdi0+cyA9IHJlZi0+cmVmbmFtZTsKLQkJZWxzZSBpZiAoIXN0cmNtcChuYW1lLCAiKnJlZm5hbWUiKSkgewotCQkJaW50IGxlbiA9IHN0cmxlbihyZWYtPnJlZm5hbWUpOwotCQkJY2hhciAqcyA9IHhtYWxsb2MobGVuICsgNCk7Ci0JCQlzcHJpbnRmKHMsICIlc157fSIsIHJlZi0+cmVmbmFtZSk7Ci0JCQl2LT5zID0gczsKKwkJaW50IGRlcmVmID0gMDsKKwkJaWYgKCpuYW1lID09ICcqJykgeworCQkJZGVyZWYgPSAxOworCQkJbmFtZSsrOworCQl9CisJCWlmICghcHJlZml4Y21wKG5hbWUsICJyZWZuYW1lIikpIHsKKwkJCWNvbnN0IGNoYXIgKmZvcm1hdHAgPSBzdHJjaHIobmFtZSwgJzonKTsKKwkJCWNvbnN0IGNoYXIgKnJlZm5hbWUgPSByZWYtPnJlZm5hbWU7CisKKwkJCS8qIGxvb2sgZm9yICJzaG9ydCIgcmVmbmFtZSBmb3JtYXQgKi8KKwkJCWlmIChmb3JtYXRwKSB7CisJCQkJZm9ybWF0cCsrOworCQkJCWlmICghc3RyY21wKGZvcm1hdHAsICJzaG9ydCIpKQorCQkJCQlyZWZuYW1lID0gZ2V0X3Nob3J0X3JlZihyZWYpOworCQkJCWVsc2UKKwkJCQkJZGllKCJ1bmtub3duIHJlZm5hbWUgZm9ybWF0ICVzIiwKKwkJCQkJICAgIGZvcm1hdHApOworCQkJfQorCisJCQlpZiAoIWRlcmVmKQorCQkJCXYtPnMgPSByZWZuYW1lOworCQkJZWxzZSB7CisJCQkJaW50IGxlbiA9IHN0cmxlbihyZWZuYW1lKTsKKwkJCQljaGFyICpzID0geG1hbGxvYyhsZW4gKyA0KTsKKwkJCQlzcHJpbnRmKHMsICIlc157fSIsIHJlZm5hbWUpOworCQkJCXYtPnMgPSBzOworCQkJfQogCQl9CiAJfQogCmRpZmYgLS1naXQgYS9idWlsdGluLWZzY2suYyBiL2J1aWx0aW4tZnNjay5jCmluZGV4IGFhNGIyMzkuLjVjNGM3N2EgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tZnNjay5jCisrKyBiL2J1aWx0aW4tZnNjay5jCkBAIC0yMjIsMTIgKzIyMiwxNiBAQAogCQkJCWNoYXIgKmJ1ZiA9IHJlYWRfc2hhMV9maWxlKG9iai0+c2hhMSwKIAkJCQkJCSZ0eXBlLCAmc2l6ZSk7CiAJCQkJaWYgKGJ1ZikgewotCQkJCQlmd3JpdGUoYnVmLCBzaXplLCAxLCBmKTsKKwkJCQkJaWYgKGZ3cml0ZShidWYsIHNpemUsIDEsIGYpICE9IDEpCisJCQkJCQlkaWUoIkNvdWxkIG5vdCB3cml0ZSAlczogJXMiLAorCQkJCQkJICAgIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwogCQkJCQlmcmVlKGJ1Zik7CiAJCQkJfQogCQkJfSBlbHNlCiAJCQkJZnByaW50ZihmLCAiJXNcbiIsIHNoYTFfdG9faGV4KG9iai0+c2hhMSkpOwotCQkJZmNsb3NlKGYpOworCQkJaWYgKGZjbG9zZShmKSkKKwkJCQlkaWUoIkNvdWxkIG5vdCBmaW5pc2ggJXM6ICVzIiwKKwkJCQkgICAgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CiAJCX0KIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL2J1aWx0aW4tZ2MuYyBiL2J1aWx0aW4tZ2MuYwppbmRleCA1M2EwZDQzLi5mOGVhZTRhIDEwMDY0NAotLS0gYS9idWlsdGluLWdjLmMKKysrIGIvYnVpbHRpbi1nYy5jCkBAIC0yNiw3ICsyNiw3IEBACiBzdGF0aWMgaW50IGFnZ3Jlc3NpdmVfd2luZG93ID0gLTE7CiBzdGF0aWMgaW50IGdjX2F1dG9fdGhyZXNob2xkID0gNjcwMDsKIHN0YXRpYyBpbnQgZ2NfYXV0b19wYWNrX2xpbWl0ID0gNTA7Ci1zdGF0aWMgY2hhciAqcHJ1bmVfZXhwaXJlID0gIjIud2Vla3MuYWdvIjsKK3N0YXRpYyBjb25zdCBjaGFyICpwcnVuZV9leHBpcmUgPSAiMi53ZWVrcy5hZ28iOwogCiAjZGVmaW5lIE1BWF9BREQgMTAKIHN0YXRpYyBjb25zdCBjaGFyICphcmd2X3BhY2tfcmVmc1tdID0geyJwYWNrLXJlZnMiLCAiLS1hbGwiLCAiLS1wcnVuZSIsIE5VTEx9OwpAQCAtNTcsMTUgKzU3LDEyIEBACiAJCXJldHVybiAwOwogCX0KIAlpZiAoIXN0cmNtcCh2YXIsICJnYy5wcnVuZWV4cGlyZSIpKSB7Ci0JCWlmICghdmFsdWUpCi0JCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKLQkJaWYgKHN0cmNtcCh2YWx1ZSwgIm5vdyIpKSB7CisJCWlmICh2YWx1ZSAmJiBzdHJjbXAodmFsdWUsICJub3ciKSkgewogCQkJdW5zaWduZWQgbG9uZyBub3cgPSBhcHByb3hpZGF0ZSgibm93Iik7CiAJCQlpZiAoYXBwcm94aWRhdGUodmFsdWUpID49IG5vdykKIAkJCQlyZXR1cm4gZXJyb3IoIkludmFsaWQgJXM6ICclcyciLCB2YXIsIHZhbHVlKTsKIAkJfQotCQlwcnVuZV9leHBpcmUgPSB4c3RyZHVwKHZhbHVlKTsKLQkJcmV0dXJuIDA7CisJCXJldHVybiBnaXRfY29uZmlnX3N0cmluZygmcHJ1bmVfZXhwaXJlLCB2YXIsIHZhbHVlKTsKIAl9CiAJcmV0dXJuIGdpdF9kZWZhdWx0X2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7CiB9CkBAIC0xOTEsNyArMTg4LDkgQEAKIAkgKiB0aGVyZSBpcyBubyBuZWVkLgogCSAqLwogCWlmICh0b29fbWFueV9wYWNrcygpKQotCQlhcHBlbmRfb3B0aW9uKGFyZ3ZfcmVwYWNrLCAiLUEiLCBNQVhfQUREKTsKKwkJYXBwZW5kX29wdGlvbihhcmd2X3JlcGFjaywKKwkJCSAgICAgICFzdHJjbXAocHJ1bmVfZXhwaXJlLCAibm93IikgPyAiLWEiIDogIi1BIiwKKwkJCSAgICAgIE1BWF9BREQpOwogCWVsc2UgaWYgKCF0b29fbWFueV9sb29zZV9vYmplY3RzKCkpCiAJCXJldHVybiAwOwogCkBAIC0yNDYsNyArMjQ1LDkgQEAKIAkJCSJydW4gXCJnaXQgZ2NcIiBtYW51YWxseS4gU2VlICIKIAkJCSJcImdpdCBoZWxwIGdjXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKTsKIAl9IGVsc2UKLQkJYXBwZW5kX29wdGlvbihhcmd2X3JlcGFjaywgIi1BIiwgTUFYX0FERCk7CisJCWFwcGVuZF9vcHRpb24oYXJndl9yZXBhY2ssCisJCQkgICAgICAhc3RyY21wKHBydW5lX2V4cGlyZSwgIm5vdyIpID8gIi1hIiA6ICItQSIsCisJCQkgICAgICBNQVhfQUREKTsKIAogCWlmIChwYWNrX3JlZnMgJiYgcnVuX2NvbW1hbmRfdl9vcHQoYXJndl9wYWNrX3JlZnMsIFJVTl9HSVRfQ01EKSkKIAkJcmV0dXJuIGVycm9yKEZBSUxFRF9SVU4sIGFyZ3ZfcGFja19yZWZzWzBdKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tZ3JlcC5jIGIvYnVpbHRpbi1ncmVwLmMKaW5kZXggZDNjYzc1ZS4uM2YxMmJhMyAxMDA2NDQKLS0tIGEvYnVpbHRpbi1ncmVwLmMKKysrIGIvYnVpbHRpbi1ncmVwLmMKQEAgLTIwLDYgKzIwLDggQEAKICNlbmRpZgogI2VuZGlmCiAKK3N0YXRpYyBpbnQgYnVpbHRpbl9ncmVwOworCiAvKgogICogZ2l0IGdyZXAgcGF0aHNwZWNzIGFyZSBzb21ld2hhdCBkaWZmZXJlbnQgZnJvbSBkaWZmLXRyZWUgcGF0aHNwZWNzOwogICogcGF0aG5hbWUgd2lsZGNhcmRzIGFyZSBhbGxvd2VkLgpAQCAtMjk3LDYgKzI5OSw5IEBACiAJCXB1c2hfYXJnKCItbCIpOwogCWlmIChvcHQtPnVubWF0Y2hfbmFtZV9vbmx5KQogCQlwdXNoX2FyZygiLUwiKTsKKwlpZiAob3B0LT5udWxsX2ZvbGxvd2luZ19uYW1lKQorCQkvKiBpbiBHTlUgZ3JlcCBnaXQncyAiLXoiIHRyYW5zbGF0ZXMgdG8gIi1aIiAqLworCQlwdXNoX2FyZygiLVoiKTsKIAlpZiAob3B0LT5jb3VudCkKIAkJcHVzaF9hcmcoIi1jIik7CiAJaWYgKG9wdC0+cG9zdF9jb250ZXh0IHx8IG9wdC0+cHJlX2NvbnRleHQpIHsKQEAgLTM4OCw3ICszOTMsNyBAQAogCSAqIHdlIGdyZXAgdGhyb3VnaCB0aGUgY2hlY2tlZC1vdXQgZmlsZXMuIEl0IHRlbmRzIHRvCiAJICogYmUgYSBsb3QgbW9yZSBvcHRpbWl6ZWQKIAkgKi8KLQlpZiAoIWNhY2hlZCkgeworCWlmICghY2FjaGVkICYmICFidWlsdGluX2dyZXApIHsKIAkJaGl0ID0gZXh0ZXJuYWxfZ3JlcChvcHQsIHBhdGhzLCBjYWNoZWQpOwogCQlpZiAoaGl0ID49IDApCiAJCQlyZXR1cm4gaGl0OwpAQCAtNDAxLDcgKzQwNiwxMiBAQAogCQkJY29udGludWU7CiAJCWlmICghcGF0aHNwZWNfbWF0Y2hlcyhwYXRocywgY2UtPm5hbWUpKQogCQkJY29udGludWU7Ci0JCWlmIChjYWNoZWQpIHsKKwkJLyoKKwkJICogSWYgQ0VfVkFMSUQgaXMgb24sIHdlIGFzc3VtZSB3b3JrdHJlZSBmaWxlIGFuZCBpdHMgY2FjaGUgZW50cnkKKwkJICogYXJlIGlkZW50aWNhbCwgZXZlbiBpZiB3b3JrdHJlZSBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkLCBzbyB1c2UKKwkJICogY2FjaGUgdmVyc2lvbiBpbnN0ZWFkCisJCSAqLworCQlpZiAoY2FjaGVkIHx8IChjZS0+Y2VfZmxhZ3MgJiBDRV9WQUxJRCkpIHsKIAkJCWlmIChjZV9zdGFnZShjZSkpCiAJCQkJY29udGludWU7CiAJCQloaXQgfD0gZ3JlcF9zaGExKG9wdCwgY2UtPnNoYTEsIGNlLT5uYW1lLCAwKTsKQEAgLTU0NCw2ICs1NTQsMTAgQEAKIAkJCWNhY2hlZCA9IDE7CiAJCQljb250aW51ZTsKIAkJfQorCQlpZiAoIXN0cmNtcCgiLS1uby1leHQtZ3JlcCIsIGFyZykpIHsKKwkJCWJ1aWx0aW5fZ3JlcCA9IDE7CisJCQljb250aW51ZTsKKwkJfQogCQlpZiAoIXN0cmNtcCgiLWEiLCBhcmcpIHx8CiAJCSAgICAhc3RyY21wKCItLXRleHQiLCBhcmcpKSB7CiAJCQlvcHQuYmluYXJ5ID0gR1JFUF9CSU5BUllfVEVYVDsKQEAgLTYwMSw2ICs2MTUsMTEgQEAKIAkJCW9wdC51bm1hdGNoX25hbWVfb25seSA9IDE7CiAJCQljb250aW51ZTsKIAkJfQorCQlpZiAoIXN0cmNtcCgiLXoiLCBhcmcpIHx8CisJCSAgICAhc3RyY21wKCItLW51bGwiLCBhcmcpKSB7CisJCQlvcHQubnVsbF9mb2xsb3dpbmdfbmFtZSA9IDE7CisJCQljb250aW51ZTsKKwkJfQogCQlpZiAoIXN0cmNtcCgiLWMiLCBhcmcpIHx8CiAJCSAgICAhc3RyY21wKCItLWNvdW50IiwgYXJnKSkgewogCQkJb3B0LmNvdW50ID0gMTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4taGVscC5jIGIvYnVpbHRpbi1oZWxwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA3NmVmYQotLS0gL2Rldi9udWxsCisrKyBiL2J1aWx0aW4taGVscC5jCkBAIC0wLDAgKzEsNDYzIEBACisvKgorICogYnVpbHRpbi1oZWxwLmMKKyAqCisgKiBCdWlsdGluIGhlbHAgY29tbWFuZAorICovCisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJidWlsdGluLmgiCisjaW5jbHVkZSAiZXhlY19jbWQuaCIKKyNpbmNsdWRlICJjb21tb24tY21kcy5oIgorI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKKyNpbmNsdWRlICJydW4tY29tbWFuZC5oIgorI2luY2x1ZGUgImhlbHAuaCIKKworc3RhdGljIHN0cnVjdCBtYW5fdmlld2VyX2xpc3QgeworCXN0cnVjdCBtYW5fdmlld2VyX2xpc3QgKm5leHQ7CisJY2hhciBuYW1lW0ZMRVhfQVJSQVldOworfSAqbWFuX3ZpZXdlcl9saXN0OworCitzdGF0aWMgc3RydWN0IG1hbl92aWV3ZXJfaW5mb19saXN0IHsKKwlzdHJ1Y3QgbWFuX3ZpZXdlcl9pbmZvX2xpc3QgKm5leHQ7CisJY29uc3QgY2hhciAqaW5mbzsKKwljaGFyIG5hbWVbRkxFWF9BUlJBWV07Cit9ICptYW5fdmlld2VyX2luZm9fbGlzdDsKKworZW51bSBoZWxwX2Zvcm1hdCB7CisJSEVMUF9GT1JNQVRfTUFOLAorCUhFTFBfRk9STUFUX0lORk8sCisJSEVMUF9GT1JNQVRfV0VCLAorfTsKKworc3RhdGljIGludCBzaG93X2FsbCA9IDA7CitzdGF0aWMgZW51bSBoZWxwX2Zvcm1hdCBoZWxwX2Zvcm1hdCA9IEhFTFBfRk9STUFUX01BTjsKK3N0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5faGVscF9vcHRpb25zW10gPSB7CisJT1BUX0JPT0xFQU4oJ2EnLCAiYWxsIiwgJnNob3dfYWxsLCAicHJpbnQgYWxsIGF2YWlsYWJsZSBjb21tYW5kcyIpLAorCU9QVF9TRVRfSU5UKCdtJywgIm1hbiIsICZoZWxwX2Zvcm1hdCwgInNob3cgbWFuIHBhZ2UiLCBIRUxQX0ZPUk1BVF9NQU4pLAorCU9QVF9TRVRfSU5UKCd3JywgIndlYiIsICZoZWxwX2Zvcm1hdCwgInNob3cgbWFudWFsIGluIHdlYiBicm93c2VyIiwKKwkJCUhFTFBfRk9STUFUX1dFQiksCisJT1BUX1NFVF9JTlQoJ2knLCAiaW5mbyIsICZoZWxwX2Zvcm1hdCwgInNob3cgaW5mbyBwYWdlIiwKKwkJCUhFTFBfRk9STUFUX0lORk8pLAorCU9QVF9FTkQoKSwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9oZWxwX3VzYWdlW10gPSB7CisJImdpdCBoZWxwIFstLWFsbF0gWy0tbWFufC0td2VifC0taW5mb10gW2NvbW1hbmRdIiwKKwlOVUxMCit9OworCitzdGF0aWMgZW51bSBoZWxwX2Zvcm1hdCBwYXJzZV9oZWxwX2Zvcm1hdChjb25zdCBjaGFyICpmb3JtYXQpCit7CisJaWYgKCFzdHJjbXAoZm9ybWF0LCAibWFuIikpCisJCXJldHVybiBIRUxQX0ZPUk1BVF9NQU47CisJaWYgKCFzdHJjbXAoZm9ybWF0LCAiaW5mbyIpKQorCQlyZXR1cm4gSEVMUF9GT1JNQVRfSU5GTzsKKwlpZiAoIXN0cmNtcChmb3JtYXQsICJ3ZWIiKSB8fCAhc3RyY21wKGZvcm1hdCwgImh0bWwiKSkKKwkJcmV0dXJuIEhFTFBfRk9STUFUX1dFQjsKKwlkaWUoInVucmVjb2duaXplZCBoZWxwIGZvcm1hdCAnJXMnIiwgZm9ybWF0KTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmdldF9tYW5fdmlld2VyX2luZm8oY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3QgbWFuX3ZpZXdlcl9pbmZvX2xpc3QgKnZpZXdlcjsKKworCWZvciAodmlld2VyID0gbWFuX3ZpZXdlcl9pbmZvX2xpc3Q7IHZpZXdlcjsgdmlld2VyID0gdmlld2VyLT5uZXh0KQorCXsKKwkJaWYgKCFzdHJjYXNlY21wKG5hbWUsIHZpZXdlci0+bmFtZSkpCisJCQlyZXR1cm4gdmlld2VyLT5pbmZvOworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludCBjaGVja19lbWFjc2NsaWVudF92ZXJzaW9uKHZvaWQpCit7CisJc3RydWN0IHN0cmJ1ZiBidWZmZXIgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBlY19wcm9jZXNzOworCWNvbnN0IGNoYXIgKmFyZ3ZfZWNbXSA9IHsgImVtYWNzY2xpZW50IiwgIi0tdmVyc2lvbiIsIE5VTEwgfTsKKwlpbnQgdmVyc2lvbjsKKworCS8qIGVtYWNzY2xpZW50IHByaW50cyBpdHMgdmVyc2lvbiBudW1iZXIgb24gc3RkZXJyICovCisJbWVtc2V0KCZlY19wcm9jZXNzLCAwLCBzaXplb2YoZWNfcHJvY2VzcykpOworCWVjX3Byb2Nlc3MuYXJndiA9IGFyZ3ZfZWM7CisJZWNfcHJvY2Vzcy5lcnIgPSAtMTsKKwllY19wcm9jZXNzLnN0ZG91dF90b19zdGRlcnIgPSAxOworCWlmIChzdGFydF9jb21tYW5kKCZlY19wcm9jZXNzKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzdGFydCBlbWFjc2NsaWVudC5cbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXN0cmJ1Zl9yZWFkKCZidWZmZXIsIGVjX3Byb2Nlc3MuZXJyLCAyMCk7CisJY2xvc2UoZWNfcHJvY2Vzcy5lcnIpOworCisJLyoKKwkgKiBEb24ndCBib3RoZXIgY2hlY2tpbmcgcmV0dXJuIHZhbHVlLCBiZWNhdXNlICJlbWFjc2NsaWVudCAtLXZlcnNpb24iCisJICogc2VlbXMgdG8gYWx3YXlzIGV4aXRzIHdpdGggY29kZSAxLgorCSAqLworCWZpbmlzaF9jb21tYW5kKCZlY19wcm9jZXNzKTsKKworCWlmIChwcmVmaXhjbXAoYnVmZmVyLmJ1ZiwgImVtYWNzY2xpZW50IikpIHsKKwkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcGFyc2UgZW1hY3NjbGllbnQgdmVyc2lvbi5cbiIpOworCQlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXN0cmJ1Zl9yZW1vdmUoJmJ1ZmZlciwgMCwgc3RybGVuKCJlbWFjc2NsaWVudCIpKTsKKwl2ZXJzaW9uID0gYXRvaShidWZmZXIuYnVmKTsKKworCWlmICh2ZXJzaW9uIDwgMjIpIHsKKwkJZnByaW50ZihzdGRlcnIsCisJCQkiZW1hY3NjbGllbnQgdmVyc2lvbiAnJWQnIHRvbyBvbGQgKDwgMjIpLlxuIiwKKwkJCXZlcnNpb24pOworCQlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXN0cmJ1Zl9yZWxlYXNlKCZidWZmZXIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBleGVjX3dvbWFuX2VtYWNzKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIgKnBhZ2UpCit7CisJaWYgKCFjaGVja19lbWFjc2NsaWVudF92ZXJzaW9uKCkpIHsKKwkJLyogVGhpcyB3b3JrcyBvbmx5IHdpdGggZW1hY3NjbGllbnQgdmVyc2lvbiA+PSAyMi4gKi8KKwkJc3RydWN0IHN0cmJ1ZiBtYW5fcGFnZSA9IFNUUkJVRl9JTklUOworCisJCWlmICghcGF0aCkKKwkJCXBhdGggPSAiZW1hY3NjbGllbnQiOworCQlzdHJidWZfYWRkZigmbWFuX3BhZ2UsICIod29tYW4gXCIlc1wiKSIsIHBhZ2UpOworCQlleGVjbHAocGF0aCwgImVtYWNzY2xpZW50IiwgIi1lIiwgbWFuX3BhZ2UuYnVmLCBOVUxMKTsKKwkJd2FybmluZygiZmFpbGVkIHRvIGV4ZWMgJyVzJzogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCX0KK30KKworc3RhdGljIHZvaWQgZXhlY19tYW5fa29ucXVlcm9yKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIgKnBhZ2UpCit7CisJY29uc3QgY2hhciAqZGlzcGxheSA9IGdldGVudigiRElTUExBWSIpOworCWlmIChkaXNwbGF5ICYmICpkaXNwbGF5KSB7CisJCXN0cnVjdCBzdHJidWYgbWFuX3BhZ2UgPSBTVFJCVUZfSU5JVDsKKwkJY29uc3QgY2hhciAqZmlsZW5hbWUgPSAia2ZtY2xpZW50IjsKKworCQkvKiBJdCdzIHNpbXBsZXIgdG8gbGF1bmNoIGtvbnF1ZXJvciB1c2luZyBrZm1jbGllbnQuICovCisJCWlmIChwYXRoKSB7CisJCQljb25zdCBjaGFyICpmaWxlID0gc3RycmNocihwYXRoLCAnLycpOworCQkJaWYgKGZpbGUgJiYgIXN0cmNtcChmaWxlICsgMSwgImtvbnF1ZXJvciIpKSB7CisJCQkJY2hhciAqbmV3ID0geHN0cmR1cChwYXRoKTsKKwkJCQljaGFyICpkZXN0ID0gc3RycmNocihuZXcsICcvJyk7CisKKwkJCQkvKiBzdHJsZW4oImtvbnF1ZXJvciIpID09IHN0cmxlbigia2ZtY2xpZW50IikgKi8KKwkJCQlzdHJjcHkoZGVzdCArIDEsICJrZm1jbGllbnQiKTsKKwkJCQlwYXRoID0gbmV3OworCQkJfQorCQkJaWYgKGZpbGUpCisJCQkJZmlsZW5hbWUgPSBmaWxlOworCQl9IGVsc2UKKwkJCXBhdGggPSAia2ZtY2xpZW50IjsKKwkJc3RyYnVmX2FkZGYoJm1hbl9wYWdlLCAibWFuOiVzKDEpIiwgcGFnZSk7CisJCWV4ZWNscChwYXRoLCBmaWxlbmFtZSwgIm5ld1RhYiIsIG1hbl9wYWdlLmJ1ZiwgTlVMTCk7CisJCXdhcm5pbmcoImZhaWxlZCB0byBleGVjICclcyc6ICVzIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGV4ZWNfbWFuX21hbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyICpwYWdlKQoreworCWlmICghcGF0aCkKKwkJcGF0aCA9ICJtYW4iOworCWV4ZWNscChwYXRoLCAibWFuIiwgcGFnZSwgTlVMTCk7CisJd2FybmluZygiZmFpbGVkIHRvIGV4ZWMgJyVzJzogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworfQorCitzdGF0aWMgdm9pZCBleGVjX21hbl9jbWQoY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGFyICpwYWdlKQoreworCXN0cnVjdCBzdHJidWYgc2hlbGxfY21kID0gU1RSQlVGX0lOSVQ7CisJc3RyYnVmX2FkZGYoJnNoZWxsX2NtZCwgIiVzICVzIiwgY21kLCBwYWdlKTsKKwlleGVjbCgiL2Jpbi9zaCIsICJzaCIsICItYyIsIHNoZWxsX2NtZC5idWYsIE5VTEwpOworCXdhcm5pbmcoImZhaWxlZCB0byBleGVjICclcyc6ICVzIiwgY21kLCBzdHJlcnJvcihlcnJubykpOworfQorCitzdGF0aWMgdm9pZCBhZGRfbWFuX3ZpZXdlcihjb25zdCBjaGFyICpuYW1lKQoreworCXN0cnVjdCBtYW5fdmlld2VyX2xpc3QgKipwID0gJm1hbl92aWV3ZXJfbGlzdDsKKwlzaXplX3QgbGVuID0gc3RybGVuKG5hbWUpOworCisJd2hpbGUgKCpwKQorCQlwID0gJigoKnApLT5uZXh0KTsKKwkqcCA9IHhjYWxsb2MoMSwgKHNpemVvZigqKnApICsgbGVuICsgMSkpOworCXN0cm5jcHkoKCpwKS0+bmFtZSwgbmFtZSwgbGVuKTsKK30KKworc3RhdGljIGludCBzdXBwb3J0ZWRfbWFuX3ZpZXdlcihjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbGVuKQoreworCXJldHVybiAoIXN0cm5jYXNlY21wKCJtYW4iLCBuYW1lLCBsZW4pIHx8CisJCSFzdHJuY2FzZWNtcCgid29tYW4iLCBuYW1lLCBsZW4pIHx8CisJCSFzdHJuY2FzZWNtcCgia29ucXVlcm9yIiwgbmFtZSwgbGVuKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRvX2FkZF9tYW5fdmlld2VyX2luZm8oY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICBzaXplX3QgbGVuLAorCQkJCSAgIGNvbnN0IGNoYXIgKnZhbHVlKQoreworCXN0cnVjdCBtYW5fdmlld2VyX2luZm9fbGlzdCAqbmV3ID0geGNhbGxvYygxLCBzaXplb2YoKm5ldykgKyBsZW4gKyAxKTsKKworCXN0cm5jcHkobmV3LT5uYW1lLCBuYW1lLCBsZW4pOworCW5ldy0+aW5mbyA9IHhzdHJkdXAodmFsdWUpOworCW5ldy0+bmV4dCA9IG1hbl92aWV3ZXJfaW5mb19saXN0OworCW1hbl92aWV3ZXJfaW5mb19saXN0ID0gbmV3OworfQorCitzdGF0aWMgaW50IGFkZF9tYW5fdmlld2VyX3BhdGgoY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgICAgICBzaXplX3QgbGVuLAorCQkJICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlKQoreworCWlmIChzdXBwb3J0ZWRfbWFuX3ZpZXdlcihuYW1lLCBsZW4pKQorCQlkb19hZGRfbWFuX3ZpZXdlcl9pbmZvKG5hbWUsIGxlbiwgdmFsdWUpOworCWVsc2UKKwkJd2FybmluZygiJyVzJzogcGF0aCBmb3IgdW5zdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKKwkJCSJQbGVhc2UgY29uc2lkZXIgdXNpbmcgJ21hbi48dG9vbD4uY21kJyBpbnN0ZWFkLiIsCisJCQluYW1lKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFkZF9tYW5fdmlld2VyX2NtZChjb25zdCBjaGFyICpuYW1lLAorCQkJICAgICAgc2l6ZV90IGxlbiwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKnZhbHVlKQoreworCWlmIChzdXBwb3J0ZWRfbWFuX3ZpZXdlcihuYW1lLCBsZW4pKQorCQl3YXJuaW5nKCInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgorCQkJIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5wYXRoJyBpbnN0ZWFkLiIsCisJCQluYW1lKTsKKwllbHNlCisJCWRvX2FkZF9tYW5fdmlld2VyX2luZm8obmFtZSwgbGVuLCB2YWx1ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhZGRfbWFuX3ZpZXdlcl9pbmZvKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUpCit7CisJY29uc3QgY2hhciAqbmFtZSA9IHZhciArIDQ7CisJY29uc3QgY2hhciAqc3Via2V5ID0gc3RycmNocihuYW1lLCAnLicpOworCisJaWYgKCFzdWJrZXkpCisJCXJldHVybiBlcnJvcigiQ29uZmlnIHdpdGggbm8ga2V5IGZvciBtYW4gdmlld2VyOiAlcyIsIG5hbWUpOworCisJaWYgKCFzdHJjbXAoc3Via2V5LCAiLnBhdGgiKSkgeworCQlpZiAoIXZhbHVlKQorCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7CisJCXJldHVybiBhZGRfbWFuX3ZpZXdlcl9wYXRoKG5hbWUsIHN1YmtleSAtIG5hbWUsIHZhbHVlKTsKKwl9CisJaWYgKCFzdHJjbXAoc3Via2V5LCAiLmNtZCIpKSB7CisJCWlmICghdmFsdWUpCisJCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKKwkJcmV0dXJuIGFkZF9tYW5fdmlld2VyX2NtZChuYW1lLCBzdWJrZXkgLSBuYW1lLCB2YWx1ZSk7CisJfQorCisJd2FybmluZygiJyVzJzogdW5zdXBwb3J0ZWQgbWFuIHZpZXdlciBzdWIga2V5LiIsIHN1YmtleSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ2l0X2hlbHBfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQoreworCWlmICghc3RyY21wKHZhciwgImhlbHAuZm9ybWF0IikpIHsKKwkJaWYgKCF2YWx1ZSkKKwkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOworCQloZWxwX2Zvcm1hdCA9IHBhcnNlX2hlbHBfZm9ybWF0KHZhbHVlKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICghc3RyY21wKHZhciwgIm1hbi52aWV3ZXIiKSkgeworCQlpZiAoIXZhbHVlKQorCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7CisJCWFkZF9tYW5fdmlld2VyKHZhbHVlKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICghcHJlZml4Y21wKHZhciwgIm1hbi4iKSkKKwkJcmV0dXJuIGFkZF9tYW5fdmlld2VyX2luZm8odmFyLCB2YWx1ZSk7CisKKwlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKK30KKworc3RhdGljIHN0cnVjdCBjbWRuYW1lcyBtYWluX2NtZHMsIG90aGVyX2NtZHM7CisKK3ZvaWQgbGlzdF9jb21tb25fY21kc19oZWxwKHZvaWQpCit7CisJaW50IGksIGxvbmdlc3QgPSAwOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29tbW9uX2NtZHMpOyBpKyspIHsKKwkJaWYgKGxvbmdlc3QgPCBzdHJsZW4oY29tbW9uX2NtZHNbaV0ubmFtZSkpCisJCQlsb25nZXN0ID0gc3RybGVuKGNvbW1vbl9jbWRzW2ldLm5hbWUpOworCX0KKworCXB1dHMoIlRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZ2l0IGNvbW1hbmRzIGFyZToiKTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb21tb25fY21kcyk7IGkrKykgeworCQlwcmludGYoIiAgICVzICAgIiwgY29tbW9uX2NtZHNbaV0ubmFtZSk7CisJCW1wdXRfY2hhcignICcsIGxvbmdlc3QgLSBzdHJsZW4oY29tbW9uX2NtZHNbaV0ubmFtZSkpOworCQlwdXRzKGNvbW1vbl9jbWRzW2ldLmhlbHApOworCX0KK30KKworc3RhdGljIGludCBpc19naXRfY29tbWFuZChjb25zdCBjaGFyICpzKQoreworCXJldHVybiBpc19pbl9jbWRsaXN0KCZtYWluX2NtZHMsIHMpIHx8CisJCWlzX2luX2NtZGxpc3QoJm90aGVyX2NtZHMsIHMpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqcHJlcGVuZChjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKmNtZCkKK3sKKwlzaXplX3QgcHJlX2xlbiA9IHN0cmxlbihwcmVmaXgpOworCXNpemVfdCBjbWRfbGVuID0gc3RybGVuKGNtZCk7CisJY2hhciAqcCA9IHhtYWxsb2MocHJlX2xlbiArIGNtZF9sZW4gKyAxKTsKKwltZW1jcHkocCwgcHJlZml4LCBwcmVfbGVuKTsKKwlzdHJjcHkocCArIHByZV9sZW4sIGNtZCk7CisJcmV0dXJuIHA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpjbWRfdG9fcGFnZShjb25zdCBjaGFyICpnaXRfY21kKQoreworCWlmICghZ2l0X2NtZCkKKwkJcmV0dXJuICJnaXQiOworCWVsc2UgaWYgKCFwcmVmaXhjbXAoZ2l0X2NtZCwgImdpdCIpKQorCQlyZXR1cm4gZ2l0X2NtZDsKKwllbHNlIGlmIChpc19naXRfY29tbWFuZChnaXRfY21kKSkKKwkJcmV0dXJuIHByZXBlbmQoImdpdC0iLCBnaXRfY21kKTsKKwllbHNlCisJCXJldHVybiBwcmVwZW5kKCJnaXQiLCBnaXRfY21kKTsKK30KKworc3RhdGljIHZvaWQgc2V0dXBfbWFuX3BhdGgodm9pZCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIG5ld19wYXRoID0gU1RSQlVGX0lOSVQ7CisJY29uc3QgY2hhciAqb2xkX3BhdGggPSBnZXRlbnYoIk1BTlBBVEgiKTsKKworCS8qIFdlIHNob3VsZCBhbHdheXMgcHV0ICc6JyBhZnRlciBvdXIgcGF0aC4gSWYgdGhlcmUgaXMgbm8KKwkgKiBvbGRfcGF0aCwgdGhlICc6JyBhdCB0aGUgZW5kIHdpbGwgbGV0ICdtYW4nIHRvIHRyeQorCSAqIHN5c3RlbS13aWRlIHBhdGhzIGFmdGVyIG91cnMgdG8gZmluZCB0aGUgbWFudWFsIHBhZ2UuIElmCisJICogdGhlcmUgaXMgb2xkX3BhdGgsIHdlIG5lZWQgJzonIGFzIGRlbGltaXRlci4gKi8KKwlzdHJidWZfYWRkc3RyKCZuZXdfcGF0aCwgR0lUX01BTl9QQVRIKTsKKwlzdHJidWZfYWRkY2goJm5ld19wYXRoLCAnOicpOworCWlmIChvbGRfcGF0aCkKKwkJc3RyYnVmX2FkZHN0cigmbmV3X3BhdGgsIG9sZF9wYXRoKTsKKworCXNldGVudigiTUFOUEFUSCIsIG5ld19wYXRoLmJ1ZiwgMSk7CisKKwlzdHJidWZfcmVsZWFzZSgmbmV3X3BhdGgpOworfQorCitzdGF0aWMgdm9pZCBleGVjX3ZpZXdlcihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwYWdlKQoreworCWNvbnN0IGNoYXIgKmluZm8gPSBnZXRfbWFuX3ZpZXdlcl9pbmZvKG5hbWUpOworCisJaWYgKCFzdHJjYXNlY21wKG5hbWUsICJtYW4iKSkKKwkJZXhlY19tYW5fbWFuKGluZm8sIHBhZ2UpOworCWVsc2UgaWYgKCFzdHJjYXNlY21wKG5hbWUsICJ3b21hbiIpKQorCQlleGVjX3dvbWFuX2VtYWNzKGluZm8sIHBhZ2UpOworCWVsc2UgaWYgKCFzdHJjYXNlY21wKG5hbWUsICJrb25xdWVyb3IiKSkKKwkJZXhlY19tYW5fa29ucXVlcm9yKGluZm8sIHBhZ2UpOworCWVsc2UgaWYgKGluZm8pCisJCWV4ZWNfbWFuX2NtZChpbmZvLCBwYWdlKTsKKwllbHNlCisJCXdhcm5pbmcoIiclcyc6IHVua25vd24gbWFuIHZpZXdlci4iLCBuYW1lKTsKK30KKworc3RhdGljIHZvaWQgc2hvd19tYW5fcGFnZShjb25zdCBjaGFyICpnaXRfY21kKQoreworCXN0cnVjdCBtYW5fdmlld2VyX2xpc3QgKnZpZXdlcjsKKwljb25zdCBjaGFyICpwYWdlID0gY21kX3RvX3BhZ2UoZ2l0X2NtZCk7CisJY29uc3QgY2hhciAqZmFsbGJhY2sgPSBnZXRlbnYoIkdJVF9NQU5fVklFV0VSIik7CisKKwlzZXR1cF9tYW5fcGF0aCgpOworCWZvciAodmlld2VyID0gbWFuX3ZpZXdlcl9saXN0OyB2aWV3ZXI7IHZpZXdlciA9IHZpZXdlci0+bmV4dCkKKwl7CisJCWV4ZWNfdmlld2VyKHZpZXdlci0+bmFtZSwgcGFnZSk7IC8qIHdpbGwgcmV0dXJuIHdoZW4gdW5hYmxlICovCisJfQorCWlmIChmYWxsYmFjaykKKwkJZXhlY192aWV3ZXIoZmFsbGJhY2ssIHBhZ2UpOworCWV4ZWNfdmlld2VyKCJtYW4iLCBwYWdlKTsKKwlkaWUoIm5vIG1hbiB2aWV3ZXIgaGFuZGxlZCB0aGUgcmVxdWVzdCIpOworfQorCitzdGF0aWMgdm9pZCBzaG93X2luZm9fcGFnZShjb25zdCBjaGFyICpnaXRfY21kKQoreworCWNvbnN0IGNoYXIgKnBhZ2UgPSBjbWRfdG9fcGFnZShnaXRfY21kKTsKKwlzZXRlbnYoIklORk9QQVRIIiwgR0lUX0lORk9fUEFUSCwgMSk7CisJZXhlY2xwKCJpbmZvIiwgImluZm8iLCAiZ2l0bWFuIiwgcGFnZSwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkIGdldF9odG1sX3BhZ2VfcGF0aChzdHJ1Y3Qgc3RyYnVmICpwYWdlX3BhdGgsIGNvbnN0IGNoYXIgKnBhZ2UpCit7CisJc3RydWN0IHN0YXQgc3Q7CisJY29uc3QgY2hhciAqaHRtbF9wYXRoID0gc3lzdGVtX3BhdGgoR0lUX0hUTUxfUEFUSCk7CisKKwkvKiBDaGVjayB0aGF0IHdlIGhhdmUgYSBnaXQgZG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuICovCisJaWYgKHN0YXQobWtwYXRoKCIlcy9naXQuaHRtbCIsIGh0bWxfcGF0aCksICZzdCkKKwkgICAgfHwgIVNfSVNSRUcoc3Quc3RfbW9kZSkpCisJCWRpZSgiJyVzJzogbm90IGEgZG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuIiwgaHRtbF9wYXRoKTsKKworCXN0cmJ1Zl9pbml0KHBhZ2VfcGF0aCwgMCk7CisJc3RyYnVmX2FkZGYocGFnZV9wYXRoLCAiJXMvJXMuaHRtbCIsIGh0bWxfcGF0aCwgcGFnZSk7Cit9CisKKy8qCisgKiBJZiBvcGVuX2h0bWwgaXMgbm90IGRlZmluZWQgaW4gYSBwbGF0Zm9ybS1zcGVjaWZpYyB3YXkgKHNlZSBmb3IKKyAqIGV4YW1wbGUgY29tcGF0L21pbmd3LmgpLCB3ZSB1c2UgdGhlIHNjcmlwdCB3ZWItLWJyb3dzZSB0byBkaXNwbGF5CisgKiBIVE1MLgorICovCisjaWZuZGVmIG9wZW5faHRtbAordm9pZCBvcGVuX2h0bWwoY29uc3QgY2hhciAqcGF0aCkKK3sKKwlleGVjbF9naXRfY21kKCJ3ZWItLWJyb3dzZSIsICItYyIsICJoZWxwLmJyb3dzZXIiLCBwYXRoLCBOVUxMKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBzaG93X2h0bWxfcGFnZShjb25zdCBjaGFyICpnaXRfY21kKQoreworCWNvbnN0IGNoYXIgKnBhZ2UgPSBjbWRfdG9fcGFnZShnaXRfY21kKTsKKwlzdHJ1Y3Qgc3RyYnVmIHBhZ2VfcGF0aDsgLyogaXQgbGVha3MgYnV0IHdlIGV4ZWMgYmVsbG93ICovCisKKwlnZXRfaHRtbF9wYWdlX3BhdGgoJnBhZ2VfcGF0aCwgcGFnZSk7CisKKwlvcGVuX2h0bWwocGFnZV9wYXRoLmJ1Zik7Cit9CisKK2ludCBjbWRfaGVscChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKK3sKKwlpbnQgbm9uZ2l0OworCWNvbnN0IGNoYXIgKmFsaWFzOworCWxvYWRfY29tbWFuZF9saXN0KCJnaXQtIiwgJm1haW5fY21kcywgJm90aGVyX2NtZHMpOworCisJc2V0dXBfZ2l0X2RpcmVjdG9yeV9nZW50bHkoJm5vbmdpdCk7CisJZ2l0X2NvbmZpZyhnaXRfaGVscF9jb25maWcsIE5VTEwpOworCisJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgYnVpbHRpbl9oZWxwX29wdGlvbnMsCisJCQlidWlsdGluX2hlbHBfdXNhZ2UsIDApOworCisJaWYgKHNob3dfYWxsKSB7CisJCXByaW50ZigidXNhZ2U6ICVzXG5cbiIsIGdpdF91c2FnZV9zdHJpbmcpOworCQlsaXN0X2NvbW1hbmRzKCJnaXQgY29tbWFuZHMiLCAmbWFpbl9jbWRzLCAmb3RoZXJfY21kcyk7CisJCXByaW50ZigiJXNcbiIsIGdpdF9tb3JlX2luZm9fc3RyaW5nKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKCFhcmd2WzBdKSB7CisJCXByaW50ZigidXNhZ2U6ICVzXG5cbiIsIGdpdF91c2FnZV9zdHJpbmcpOworCQlsaXN0X2NvbW1vbl9jbWRzX2hlbHAoKTsKKwkJcHJpbnRmKCJcbiVzXG4iLCBnaXRfbW9yZV9pbmZvX3N0cmluZyk7CisJCXJldHVybiAwOworCX0KKworCWFsaWFzID0gYWxpYXNfbG9va3VwKGFyZ3ZbMF0pOworCWlmIChhbGlhcyAmJiAhaXNfZ2l0X2NvbW1hbmQoYXJndlswXSkpIHsKKwkJcHJpbnRmKCJgZ2l0ICVzJyBpcyBhbGlhc2VkIHRvIGAlcydcbiIsIGFyZ3ZbMF0sIGFsaWFzKTsKKwkJcmV0dXJuIDA7CisJfQorCisJc3dpdGNoIChoZWxwX2Zvcm1hdCkgeworCWNhc2UgSEVMUF9GT1JNQVRfTUFOOgorCQlzaG93X21hbl9wYWdlKGFyZ3ZbMF0pOworCQlicmVhazsKKwljYXNlIEhFTFBfRk9STUFUX0lORk86CisJCXNob3dfaW5mb19wYWdlKGFyZ3ZbMF0pOworCQlicmVhazsKKwljYXNlIEhFTFBfRk9STUFUX1dFQjoKKwkJc2hvd19odG1sX3BhZ2UoYXJndlswXSk7CisJCWJyZWFrOworCX0KKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1odHRwLWZldGNoLmMgYi9idWlsdGluLWh0dHAtZmV0Y2guYwppbmRleCAwM2YzNGQ3Li5mM2U2M2Q3IDEwMDY0NAotLS0gYS9idWlsdGluLWh0dHAtZmV0Y2guYworKysgYi9idWlsdGluLWh0dHAtZmV0Y2guYwpAQCAtNTMsNyArNTMsNyBAQAogCX0KIAl1cmwgPSBhcmd2W2FyZ107CiAJaWYgKHVybCAmJiB1cmxbc3RybGVuKHVybCktMV0gIT0gJy8nKSB7Ci0JCXJld3JpdHRlbl91cmwgPSBtYWxsb2Moc3RybGVuKHVybCkrMik7CisJCXJld3JpdHRlbl91cmwgPSB4bWFsbG9jKHN0cmxlbih1cmwpKzIpOwogCQlzdHJjcHkocmV3cml0dGVuX3VybCwgdXJsKTsKIAkJc3RyY2F0KHJld3JpdHRlbl91cmwsICIvIik7CiAJCXVybCA9IHJld3JpdHRlbl91cmw7CmRpZmYgLS1naXQgYS9idWlsdGluLWxvZy5jIGIvYnVpbHRpbi1sb2cuYwppbmRleCBkYjcxZTBkLi42MGY4ZGQ4IDEwMDY0NAotLS0gYS9idWlsdGluLWxvZy5jCisrKyBiL2J1aWx0aW4tbG9nLmMKQEAgLTE0LDcgKzE0LDYgQEAKICNpbmNsdWRlICJ0YWcuaCIKICNpbmNsdWRlICJyZWZsb2ctd2Fsay5oIgogI2luY2x1ZGUgInBhdGNoLWlkcy5oIgotI2luY2x1ZGUgInJlZnMuaCIKICNpbmNsdWRlICJydW4tY29tbWFuZC5oIgogI2luY2x1ZGUgInNob3J0bG9nLmgiCiAKQEAgLTI1LDM2ICsyNCwxMCBAQAogc3RhdGljIGNvbnN0IGNoYXIgKmZtdF9wYXRjaF9zdWJqZWN0X3ByZWZpeCA9ICJQQVRDSCI7CiBzdGF0aWMgY29uc3QgY2hhciAqZm10X3ByZXR0eTsKIAotc3RhdGljIHZvaWQgYWRkX25hbWVfZGVjb3JhdGlvbihjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmplY3QgKm9iaikKLXsKLQlpbnQgcGxlbiA9IHN0cmxlbihwcmVmaXgpOwotCWludCBubGVuID0gc3RybGVuKG5hbWUpOwotCXN0cnVjdCBuYW1lX2RlY29yYXRpb24gKnJlcyA9IHhtYWxsb2Moc2l6ZW9mKHN0cnVjdCBuYW1lX2RlY29yYXRpb24pICsgcGxlbiArIG5sZW4pOwotCW1lbWNweShyZXMtPm5hbWUsIHByZWZpeCwgcGxlbik7Ci0JbWVtY3B5KHJlcy0+bmFtZSArIHBsZW4sIG5hbWUsIG5sZW4gKyAxKTsKLQlyZXMtPm5leHQgPSBhZGRfZGVjb3JhdGlvbigmbmFtZV9kZWNvcmF0aW9uLCBvYmosIHJlcyk7Ci19Ci0KLXN0YXRpYyBpbnQgYWRkX3JlZl9kZWNvcmF0aW9uKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFncywgdm9pZCAqY2JfZGF0YSkKLXsKLQlzdHJ1Y3Qgb2JqZWN0ICpvYmogPSBwYXJzZV9vYmplY3Qoc2hhMSk7Ci0JaWYgKCFvYmopCi0JCXJldHVybiAwOwotCWFkZF9uYW1lX2RlY29yYXRpb24oIiIsIHJlZm5hbWUsIG9iaik7Ci0Jd2hpbGUgKG9iai0+dHlwZSA9PSBPQkpfVEFHKSB7Ci0JCW9iaiA9ICgoc3RydWN0IHRhZyAqKW9iaiktPnRhZ2dlZDsKLQkJaWYgKCFvYmopCi0JCQlicmVhazsKLQkJYWRkX25hbWVfZGVjb3JhdGlvbigidGFnOiAiLCByZWZuYW1lLCBvYmopOwotCX0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgY21kX2xvZ19pbml0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4LAogCQkgICAgICBzdHJ1Y3QgcmV2X2luZm8gKnJldikKIHsKIAlpbnQgaTsKLQlpbnQgZGVjb3JhdGUgPSAwOwogCiAJcmV2LT5hYmJyZXYgPSBERUZBVUxUX0FCQlJFVjsKIAlyZXYtPmNvbW1pdF9mb3JtYXQgPSBDTUlUX0ZNVF9ERUZBVUxUOwpAQCAtNjQsNiArMzcsNyBAQAogCURJRkZfT1BUX1NFVCgmcmV2LT5kaWZmb3B0LCBSRUNVUlNJVkUpOwogCXJldi0+c2hvd19yb290X2RpZmYgPSBkZWZhdWx0X3Nob3dfcm9vdDsKIAlyZXYtPnN1YmplY3RfcHJlZml4ID0gZm10X3BhdGNoX3N1YmplY3RfcHJlZml4OworCURJRkZfT1BUX1NFVCgmcmV2LT5kaWZmb3B0LCBBTExPV19URVhUQ09OVik7CiAKIAlpZiAoZGVmYXVsdF9kYXRlX21vZGUpCiAJCXJldi0+ZGF0ZV9tb2RlID0gcGFyc2VfZGF0ZV9mb3JtYXQoZGVmYXVsdF9kYXRlX21vZGUpOwpAQCAtODAsOSArNTQsMTAgQEAKIAlmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKSB7CiAJCWNvbnN0IGNoYXIgKmFyZyA9IGFyZ3ZbaV07CiAJCWlmICghc3RyY21wKGFyZywgIi0tZGVjb3JhdGUiKSkgewotCQkJaWYgKCFkZWNvcmF0ZSkKLQkJCQlmb3JfZWFjaF9yZWYoYWRkX3JlZl9kZWNvcmF0aW9uLCBOVUxMKTsKLQkJCWRlY29yYXRlID0gMTsKKwkJCWxvYWRfcmVmX2RlY29yYXRpb25zKCk7CisJCQlyZXYtPnNob3dfZGVjb3JhdGlvbnMgPSAxOworCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1zb3VyY2UiKSkgeworCQkJcmV2LT5zaG93X3NvdXJjZSA9IDE7CiAJCX0gZWxzZQogCQkJZGllKCJ1bnJlY29nbml6ZWQgYXJndW1lbnQ6ICVzIiwgYXJnKTsKIAl9CkBAIC0yMTcsNiArMTkyLDExIEBACiAJaWYgKHJldi0+ZWFybHlfb3V0cHV0KQogCQlmaW5pc2hfZWFybHlfb3V0cHV0KHJldik7CiAKKwkvKgorCSAqIEZvciAtLWNoZWNrIGFuZCAtLWV4aXQtY29kZSwgdGhlIGV4aXQgY29kZSBpcyBiYXNlZCBvbiBDSEVDS19GQUlMRUQKKwkgKiBhbmQgSEFTX0NIQU5HRVMgYmVpbmcgYWNjdW11bGF0ZWQgaW4gcmV2LT5kaWZmb3B0LCBzbyBiZSBjYXJlZnVsIHRvCisJICogcmV0YWluIHRoYXQgc3RhdGUgaW5mb3JtYXRpb24gaWYgcmVwbGFjaW5nIHJldi0+ZGlmZm9wdCBpbiB0aGlzIGxvb3AKKwkgKi8KIAl3aGlsZSAoKGNvbW1pdCA9IGdldF9yZXZpc2lvbihyZXYpKSAhPSBOVUxMKSB7CiAJCWxvZ190cmVlX2NvbW1pdChyZXYsIGNvbW1pdCk7CiAJCWlmICghcmV2LT5yZWZsb2dfaW5mbykgewpAQCAtMjI3LDcgKzIwNywxMSBAQAogCQlmcmVlX2NvbW1pdF9saXN0KGNvbW1pdC0+cGFyZW50cyk7CiAJCWNvbW1pdC0+cGFyZW50cyA9IE5VTEw7CiAJfQotCXJldHVybiAwOworCWlmIChyZXYtPmRpZmZvcHQub3V0cHV0X2Zvcm1hdCAmIERJRkZfRk9STUFUX0NIRUNLRElGRiAmJgorCSAgICBESUZGX09QVF9UU1QoJnJldi0+ZGlmZm9wdCwgQ0hFQ0tfRkFJTEVEKSkgeworCQlyZXR1cm4gMDI7CisJfQorCXJldHVybiBkaWZmX3Jlc3VsdF9jb2RlKCZyZXYtPmRpZmZvcHQsIDApOwogfQogCiBzdGF0aWMgaW50IGdpdF9sb2dfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQpAQCAtNDUwLDcgKzQzNCw3IEBACiAKIHN0YXRpYyBjb25zdCBjaGFyICpmbXRfcGF0Y2hfc3VmZml4ID0gIi5wYXRjaCI7CiBzdGF0aWMgaW50IG51bWJlcmVkID0gMDsKLXN0YXRpYyBpbnQgYXV0b19udW1iZXIgPSAwOworc3RhdGljIGludCBhdXRvX251bWJlciA9IDE7CiAKIHN0YXRpYyBjaGFyICoqZXh0cmFfaGRyOwogc3RhdGljIGludCBleHRyYV9oZHJfbnI7CkBAIC01MDksNiArNDkzLDcgQEAKIAkJCXJldHVybiAwOwogCQl9CiAJCW51bWJlcmVkID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCQlhdXRvX251bWJlciA9IGF1dG9fbnVtYmVyICYmIG51bWJlcmVkOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTU2OCw2ICs1NTMsNyBAQAogCiBzdGF0aWMgRklMRSAqcmVhbHN0ZG91dCA9IE5VTEw7CiBzdGF0aWMgY29uc3QgY2hhciAqb3V0cHV0X2RpcmVjdG9yeSA9IE5VTEw7CitzdGF0aWMgaW50IG91dGRpcl9vZmZzZXQ7CiAKIHN0YXRpYyBpbnQgcmVvcGVuX3N0ZG91dChjb25zdCBjaGFyICpvbmVsaW5lLCBpbnQgbnIsIGludCB0b3RhbCkKIHsKQEAgLTU5NCw3ICs1ODAsNyBAQAogCQlzdHJjcHkoZmlsZW5hbWUgKyBsZW4sIGZtdF9wYXRjaF9zdWZmaXgpOwogCX0KIAotCWZwcmludGYocmVhbHN0ZG91dCwgIiVzXG4iLCBmaWxlbmFtZSk7CisJZnByaW50ZihyZWFsc3Rkb3V0LCAiJXNcbiIsIGZpbGVuYW1lICsgb3V0ZGlyX29mZnNldCk7CiAJaWYgKGZyZW9wZW4oZmlsZW5hbWUsICJ3Iiwgc3Rkb3V0KSA9PSBOVUxMKQogCQlyZXR1cm4gZXJyb3IoIkNhbm5vdCBvcGVuIHBhdGNoIGZpbGUgJXMiLGZpbGVuYW1lKTsKIApAQCAtNjUyLDEwICs2MzgsOSBAQAogCWNvbnN0IGNoYXIgKmNvbW1pdHRlciA9IGdpdF9jb21taXR0ZXJfaW5mbyhJREVOVF9XQVJOX09OX05PX05BTUUpOwogCWNvbnN0IGNoYXIgKmVtYWlsX3N0YXJ0ID0gc3RycmNocihjb21taXR0ZXIsICc8Jyk7CiAJY29uc3QgY2hhciAqZW1haWxfZW5kID0gc3RycmNocihjb21taXR0ZXIsICc+Jyk7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlpZiAoIWVtYWlsX3N0YXJ0IHx8ICFlbWFpbF9lbmQgfHwgZW1haWxfc3RhcnQgPiBlbWFpbF9lbmQgLSAxKQogCQlkaWUoIkNvdWxkIG5vdCBleHRyYWN0IGVtYWlsIGZyb20gY29tbWl0dGVyIGlkZW50aXR5LiIpOwotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCXN0cmJ1Zl9hZGRmKCZidWYsICIlcy4lbHUuZ2l0LiUuKnMiLCBiYXNlLAogCQkgICAgKHVuc2lnbmVkIGxvbmcpIHRpbWUoTlVMTCksCiAJCSAgICAoaW50KShlbWFpbF9lbmQgLSBlbWFpbF9zdGFydCAtIDEpLCBlbWFpbF9zdGFydCArIDEpOwpAQCAtNjc0LDcgKzY1OSw3IEBACiAJY29uc3QgY2hhciAqbXNnOwogCWNvbnN0IGNoYXIgKmV4dHJhX2hlYWRlcnMgPSByZXYtPmV4dHJhX2hlYWRlcnM7CiAJc3RydWN0IHNob3J0bG9nIGxvZzsKLQlzdHJ1Y3Qgc3RyYnVmIHNiOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAlpbnQgaTsKIAljb25zdCBjaGFyICplbmNvZGluZyA9ICJ1dGYtOCI7CiAJc3RydWN0IGRpZmZfb3B0aW9ucyBvcHRzOwpAQCAtNjk1LDcgKzY4MCw2IEBACiAJY29tbWl0dGVyID0gZ2l0X2NvbW1pdHRlcl9pbmZvKDApOwogCiAJbXNnID0gYm9keTsKLQlzdHJidWZfaW5pdCgmc2IsIDApOwogCXBwX3VzZXJfaW5mbyhOVUxMLCBDTUlUX0ZNVF9FTUFJTCwgJnNiLCBjb21taXR0ZXIsIERBVEVfUkZDMjgyMiwKIAkJICAgICBlbmNvZGluZyk7CiAJcHBfdGl0bGVfbGluZShDTUlUX0ZNVF9FTUFJTCwgJm1zZywgJnNiLCBzdWJqZWN0X3N0YXJ0LCBleHRyYV9oZWFkZXJzLApAQCAtNzU3LDYgKzc0MSwyNyBAQAogCXJldHVybiB4bWVtZHVweihhLCB6IC0gYSk7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICpzZXRfb3V0ZGlyKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqb3V0cHV0X2RpcmVjdG9yeSkKK3sKKwlpZiAob3V0cHV0X2RpcmVjdG9yeSAmJiBpc19hYnNvbHV0ZV9wYXRoKG91dHB1dF9kaXJlY3RvcnkpKQorCQlyZXR1cm4gb3V0cHV0X2RpcmVjdG9yeTsKKworCWlmICghcHJlZml4IHx8ICEqcHJlZml4KSB7CisJCWlmIChvdXRwdXRfZGlyZWN0b3J5KQorCQkJcmV0dXJuIG91dHB1dF9kaXJlY3Rvcnk7CisJCS8qIFRoZSB1c2VyIGRpZCBub3QgZXhwbGljaXRseSBhc2sgZm9yICIuLyIgKi8KKwkJb3V0ZGlyX29mZnNldCA9IDI7CisJCXJldHVybiAiLi8iOworCX0KKworCW91dGRpcl9vZmZzZXQgPSBzdHJsZW4ocHJlZml4KTsKKwlpZiAoIW91dHB1dF9kaXJlY3RvcnkpCisJCXJldHVybiBwcmVmaXg7CisKKwlyZXR1cm4geHN0cmR1cChwcmVmaXhfZmlsZW5hbWUocHJlZml4LCBvdXRkaXJfb2Zmc2V0LAorCQkJCSAgICAgICBvdXRwdXRfZGlyZWN0b3J5KSk7Cit9CisKIGludCBjbWRfZm9ybWF0X3BhdGNoKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKQEAgLTc3Nyw3ICs3ODIsNyBAQAogCWNvbnN0IGNoYXIgKmluX3JlcGx5X3RvID0gTlVMTDsKIAlzdHJ1Y3QgcGF0Y2hfaWRzIGlkczsKIAljaGFyICphZGRfc2lnbm9mZiA9IE5VTEw7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAogCWdpdF9jb25maWcoZ2l0X2Zvcm1hdF9jb25maWcsIE5VTEwpOwogCWluaXRfcmV2aXNpb25zKCZyZXYsIHByZWZpeCk7CkBAIC04ODUsOCArODkwLDYgQEAKIAl9CiAJYXJnYyA9IGo7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKLQogCWZvciAoaSA9IDA7IGkgPCBleHRyYV9oZHJfbnI7IGkrKykgewogCQlzdHJidWZfYWRkc3RyKCZidWYsIGV4dHJhX2hkcltpXSk7CiAJCXN0cmJ1Zl9hZGRjaCgmYnVmLCAnXG4nKTsKQEAgLTkyOSwxNCArOTMyLDE1IEBACiAJaWYgKGFyZ2MgPiAxKQogCQlkaWUgKCJ1bnJlY29nbml6ZWQgYXJndW1lbnQ6ICVzIiwgYXJndlsxXSk7CiAKLQlpZiAoIXJldi5kaWZmb3B0Lm91dHB1dF9mb3JtYXQpCisJaWYgKCFyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0CisJCXx8IHJldi5kaWZmb3B0Lm91dHB1dF9mb3JtYXQgPT0gRElGRl9GT1JNQVRfUEFUQ0gpCiAJCXJldi5kaWZmb3B0Lm91dHB1dF9mb3JtYXQgPSBESUZGX0ZPUk1BVF9ESUZGU1RBVCB8IERJRkZfRk9STUFUX1NVTU1BUlkgfCBESUZGX0ZPUk1BVF9QQVRDSDsKIAogCWlmICghRElGRl9PUFRfVFNUKCZyZXYuZGlmZm9wdCwgVEVYVCkgJiYgIW5vX2JpbmFyeV9kaWZmKQogCQlESUZGX09QVF9TRVQoJnJldi5kaWZmb3B0LCBCSU5BUlkpOwogCi0JaWYgKCFvdXRwdXRfZGlyZWN0b3J5ICYmICF1c2Vfc3Rkb3V0KQotCQlvdXRwdXRfZGlyZWN0b3J5ID0gcHJlZml4OworCWlmICghdXNlX3N0ZG91dCkKKwkJb3V0cHV0X2RpcmVjdG9yeSA9IHNldF9vdXRkaXIocHJlZml4LCBvdXRwdXRfZGlyZWN0b3J5KTsKIAogCWlmIChvdXRwdXRfZGlyZWN0b3J5KSB7CiAJCWlmICh1c2Vfc3Rkb3V0KQpAQCAtOTYyLDYgKzk2NiwxMyBAQAogCQkgKiBnZXRfcmV2aXNpb24oKSB0byBkbyB0aGUgdXN1YWwgdHJhdmVyc2FsLgogCQkgKi8KIAl9CisKKwkvKgorCSAqIFdlIGNhbm5vdCBtb3ZlIHRoaXMgYW55d2hlcmUgZWFybGllciBiZWNhdXNlIHdlIGRvIHdhbnQgdG8KKwkgKiBrbm93IGlmIC0tcm9vdCB3YXMgZ2l2ZW4gZXhwbGljaXRseSBmcm9tIHRoZSBjb21hbmQgbGluZS4KKwkgKi8KKwlyZXYuc2hvd19yb290X2RpZmYgPSAxOworCiAJaWYgKGNvdmVyX2xldHRlcikgewogCQkvKiByZW1lbWJlciB0aGUgcmFuZ2UgKi8KIAkJaW50IGk7CkBAIC0xMTYyLDggKzExNzMsNyBAQAogCQkJc2lnbiA9ICctJzsKIAogCQlpZiAodmVyYm9zZSkgewotCQkJc3RydWN0IHN0cmJ1ZiBidWY7Ci0JCQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKKwkJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJCQlwcmV0dHlfcHJpbnRfY29tbWl0KENNSVRfRk1UX09ORUxJTkUsIGNvbW1pdCwKIAkJCSAgICAgICAgICAgICAgICAgICAgJmJ1ZiwgMCwgTlVMTCwgTlVMTCwgMCwgMCk7CiAJCQlwcmludGYoIiVjICVzICVzXG4iLCBzaWduLApkaWZmIC0tZ2l0IGEvYnVpbHRpbi1scy10cmVlLmMgYi9idWlsdGluLWxzLXRyZWUuYwppbmRleCBjYjYxNzE3Li41YjYzZTZlIDEwMDY0NAotLS0gYS9idWlsdGluLWxzLXRyZWUuYworKysgYi9idWlsdGluLWxzLXRyZWUuYwpAQCAtMjMsNyArMjMsNyBAQAogc3RhdGljIGNvbnN0IGNoYXIgKmxzX3RyZWVfcHJlZml4OwogCiBzdGF0aWMgY29uc3QgY2hhciBsc190cmVlX3VzYWdlW10gPQotCSJnaXQgbHMtdHJlZSBbLWRdIFstcl0gWy10XSBbLWxdIFstel0gWy0tbmFtZS1vbmx5XSBbLS1uYW1lLXN0YXR1c10gWy0tZnVsbC1uYW1lXSBbLS1hYmJyZXZbPTxuPl1dIDx0cmVlLWlzaD4gW3BhdGguLi5dIjsKKwkiZ2l0IGxzLXRyZWUgWy1kXSBbLXJdIFstdF0gWy1sXSBbLXpdIFstLW5hbWUtb25seV0gWy0tbmFtZS1zdGF0dXNdIFstLWZ1bGwtbmFtZV0gWy0tZnVsbC10cmVlXSBbLS1hYmJyZXZbPTxuPl1dIDx0cmVlLWlzaD4gW3BhdGguLi5dIjsKIAogc3RhdGljIGludCBzaG93X3JlY3Vyc2l2ZShjb25zdCBjaGFyICpiYXNlLCBpbnQgYmFzZWxlbiwgY29uc3QgY2hhciAqcGF0aG5hbWUpCiB7CkBAIC0xNTYsNiArMTU2LDExIEBACiAJCQkJY2hvbXBfcHJlZml4ID0gMDsKIAkJCQlicmVhazsKIAkJCX0KKwkJCWlmICghc3RyY21wKGFyZ3ZbMV0rMiwgImZ1bGwtdHJlZSIpKSB7CisJCQkJbHNfdHJlZV9wcmVmaXggPSBwcmVmaXggPSBOVUxMOworCQkJCWNob21wX3ByZWZpeCA9IDA7CisJCQkJYnJlYWs7CisJCQl9CiAJCQlpZiAoIXByZWZpeGNtcChhcmd2WzFdKzIsICJhYmJyZXY9IikpIHsKIAkJCQlhYmJyZXYgPSBzdHJ0b3VsKGFyZ3ZbMV0rOSwgTlVMTCwgMTApOwogCQkJCWlmIChhYmJyZXYgJiYgYWJicmV2IDwgTUlOSU1VTV9BQkJSRVYpCmRpZmYgLS1naXQgYS9idWlsdGluLW1lcmdlLWJhc2UuYyBiL2J1aWx0aW4tbWVyZ2UtYmFzZS5jCmluZGV4IDMzODJiMTMuLjAzZmMxYzIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tbWVyZ2UtYmFzZS5jCisrKyBiL2J1aWx0aW4tbWVyZ2UtYmFzZS5jCkBAIC0xLDEwICsxLDEzIEBACiAjaW5jbHVkZSAiYnVpbHRpbi5oIgogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiY29tbWl0LmgiCisjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCi1zdGF0aWMgaW50IHNob3dfbWVyZ2VfYmFzZShzdHJ1Y3QgY29tbWl0ICpyZXYxLCBzdHJ1Y3QgY29tbWl0ICpyZXYyLCBpbnQgc2hvd19hbGwpCitzdGF0aWMgaW50IHNob3dfbWVyZ2VfYmFzZShzdHJ1Y3QgY29tbWl0ICoqcmV2LCBpbnQgcmV2X25yLCBpbnQgc2hvd19hbGwpCiB7Ci0Jc3RydWN0IGNvbW1pdF9saXN0ICpyZXN1bHQgPSBnZXRfbWVyZ2VfYmFzZXMocmV2MSwgcmV2MiwgMCk7CisJc3RydWN0IGNvbW1pdF9saXN0ICpyZXN1bHQ7CisKKwlyZXN1bHQgPSBnZXRfbWVyZ2VfYmFzZXNfbWFueShyZXZbMF0sIHJldl9uciAtIDEsIHJldiArIDEsIDApOwogCiAJaWYgKCFyZXN1bHQpCiAJCXJldHVybiAxOwpAQCAtMTksOCArMjIsMTAgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgbWVyZ2VfYmFzZV91c2FnZVtdID0KLSJnaXQgbWVyZ2UtYmFzZSBbLS1hbGxdIDxjb21taXQtaWQ+IDxjb21taXQtaWQ+IjsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbWVyZ2VfYmFzZV91c2FnZVtdID0geworCSJnaXQgbWVyZ2UtYmFzZSBbLS1hbGxdIDxjb21taXQtaWQ+IDxjb21taXQtaWQ+Li4uIiwKKwlOVUxMCit9OwogCiBzdGF0aWMgc3RydWN0IGNvbW1pdCAqZ2V0X2NvbW1pdF9yZWZlcmVuY2UoY29uc3QgY2hhciAqYXJnKQogewpAQCAtMzgsMjMgKzQzLDIxIEBACiAKIGludCBjbWRfbWVyZ2VfYmFzZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlzdHJ1Y3QgY29tbWl0ICpyZXYxLCAqcmV2MjsKKwlzdHJ1Y3QgY29tbWl0ICoqcmV2OworCWludCByZXZfbnIgPSAwOwogCWludCBzaG93X2FsbCA9IDA7CiAKKwlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKKwkJT1BUX0JPT0xFQU4oJ2EnLCAiYWxsIiwgJnNob3dfYWxsLCAib3V0cHV0cyBhbGwgY29tbW9uIGFuY2VzdG9ycyIpLAorCQlPUFRfRU5EKCkKKwl9OworCiAJZ2l0X2NvbmZpZyhnaXRfZGVmYXVsdF9jb25maWcsIE5VTEwpOwotCi0Jd2hpbGUgKDEgPCBhcmdjICYmIGFyZ3ZbMV1bMF0gPT0gJy0nKSB7Ci0JCWNvbnN0IGNoYXIgKmFyZyA9IGFyZ3ZbMV07Ci0JCWlmICghc3RyY21wKGFyZywgIi1hIikgfHwgIXN0cmNtcChhcmcsICItLWFsbCIpKQotCQkJc2hvd19hbGwgPSAxOwotCQllbHNlCi0JCQl1c2FnZShtZXJnZV9iYXNlX3VzYWdlKTsKLQkJYXJnYy0tOyBhcmd2Kys7Ci0JfQotCWlmIChhcmdjICE9IDMpCi0JCXVzYWdlKG1lcmdlX2Jhc2VfdXNhZ2UpOwotCXJldjEgPSBnZXRfY29tbWl0X3JlZmVyZW5jZShhcmd2WzFdKTsKLQlyZXYyID0gZ2V0X2NvbW1pdF9yZWZlcmVuY2UoYXJndlsyXSk7Ci0KLQlyZXR1cm4gc2hvd19tZXJnZV9iYXNlKHJldjEsIHJldjIsIHNob3dfYWxsKTsKKwlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBvcHRpb25zLCBtZXJnZV9iYXNlX3VzYWdlLCAwKTsKKwlpZiAoYXJnYyA8IDIpCisJCXVzYWdlX3dpdGhfb3B0aW9ucyhtZXJnZV9iYXNlX3VzYWdlLCBvcHRpb25zKTsKKwlyZXYgPSB4bWFsbG9jKGFyZ2MgKiBzaXplb2YoKnJldikpOworCXdoaWxlIChhcmdjLS0gPiAwKQorCQlyZXZbcmV2X25yKytdID0gZ2V0X2NvbW1pdF9yZWZlcmVuY2UoKmFyZ3YrKyk7CisJcmV0dXJuIHNob3dfbWVyZ2VfYmFzZShyZXYsIHJldl9uciwgc2hvd19hbGwpOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1tZXJnZS1maWxlLmMgYi9idWlsdGluLW1lcmdlLWZpbGUuYwppbmRleCAzNjA1OTYwLi45NmVkYjk3IDEwMDY0NAotLS0gYS9idWlsdGluLW1lcmdlLWZpbGUuYworKysgYi9idWlsdGluLW1lcmdlLWZpbGUuYwpAQCAtMiw1NyArMiw3OSBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAieGRpZmYveGRpZmYuaCIKICNpbmNsdWRlICJ4ZGlmZi1pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKLXN0YXRpYyBjb25zdCBjaGFyIG1lcmdlX2ZpbGVfdXNhZ2VbXSA9Ci0iZ2l0IG1lcmdlLWZpbGUgWy1wIHwgLS1zdGRvdXRdIFstcSB8IC0tcXVpZXRdIFstTCBuYW1lMSBbLUwgb3JpZyBbLUwgbmFtZTJdXV0gZmlsZTEgb3JpZ19maWxlIGZpbGUyIjsKK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBtZXJnZV9maWxlX3VzYWdlW10gPSB7CisJImdpdCBtZXJnZS1maWxlIFtvcHRpb25zXSBbLUwgbmFtZTEgWy1MIG9yaWcgWy1MIG5hbWUyXV1dIGZpbGUxIG9yaWdfZmlsZSBmaWxlMiIsCisJTlVMTAorfTsKKworc3RhdGljIGludCBsYWJlbF9jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsIGNvbnN0IGNoYXIgKmFyZywgaW50IHVuc2V0KQoreworCXN0YXRpYyBpbnQgbGFiZWxfY291bnQgPSAwOworCWNvbnN0IGNoYXIgKipuYW1lcyA9IChjb25zdCBjaGFyICoqKW9wdC0+dmFsdWU7CisKKwlpZiAobGFiZWxfY291bnQgPj0gMykKKwkJcmV0dXJuIGVycm9yKCJ0b28gbWFueSBsYWJlbHMgb24gdGhlIGNvbW1hbmQgbGluZSIpOworCW5hbWVzW2xhYmVsX2NvdW50KytdID0gYXJnOworCXJldHVybiAwOworfQogCiBpbnQgY21kX21lcmdlX2ZpbGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7Ci0JY29uc3QgY2hhciAqbmFtZXNbM107CisJY29uc3QgY2hhciAqbmFtZXNbM10gPSB7IE5VTEwsIE5VTEwsIE5VTEwgfTsKIAltbWZpbGVfdCBtbWZzWzNdOwogCW1tYnVmZmVyX3QgcmVzdWx0ID0ge05VTEwsIDB9OwogCXhwcGFyYW1fdCB4cHAgPSB7WERGX05FRURfTUlOSU1BTH07CiAJaW50IHJldCA9IDAsIGkgPSAwLCB0b19zdGRvdXQgPSAwOworCWludCBtZXJnZV9sZXZlbCA9IFhETF9NRVJHRV9aRUFMT1VTX0FMTlVNOworCWludCBtZXJnZV9zdHlsZSA9IDAsIHF1aWV0ID0gMDsKKwlpbnQgbm9uZ2l0OwogCi0Jd2hpbGUgKGFyZ2MgPiA0KSB7Ci0JCWlmICghc3RyY21wKGFyZ3ZbMV0sICItTCIpICYmIGkgPCAzKSB7Ci0JCQluYW1lc1tpKytdID0gYXJndlsyXTsKLQkJCWFyZ2MtLTsKLQkJCWFyZ3YrKzsKLQkJfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICItcCIpIHx8Ci0JCQkJIXN0cmNtcChhcmd2WzFdLCAiLS1zdGRvdXQiKSkKLQkJCXRvX3N0ZG91dCA9IDE7Ci0JCWVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgIi1xIikgfHwKLQkJCQkhc3RyY21wKGFyZ3ZbMV0sICItLXF1aWV0IikpCi0JCQlmcmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZGVycik7Ci0JCWVsc2UKLQkJCXVzYWdlKG1lcmdlX2ZpbGVfdXNhZ2UpOwotCQlhcmdjLS07Ci0JCWFyZ3YrKzsKKwlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKKwkJT1BUX0JPT0xFQU4oJ3AnLCAic3Rkb3V0IiwgJnRvX3N0ZG91dCwgInNlbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBvdXRwdXQiKSwKKwkJT1BUX1NFVF9JTlQoMCwgImRpZmYzIiwgJm1lcmdlX3N0eWxlLCAidXNlIGEgZGlmZjMgYmFzZWQgbWVyZ2UiLCBYRExfTUVSR0VfRElGRjMpLAorCQlPUFRfX1FVSUVUKCZxdWlldCksCisJCU9QVF9DQUxMQkFDSygnTCcsIE5VTEwsIG5hbWVzLCAibmFtZSIsCisJCQkgICAgICJzZXQgbGFiZWxzIGZvciBmaWxlMS9vcmlnX2ZpbGUvZmlsZTIiLCAmbGFiZWxfY2IpLAorCQlPUFRfRU5EKCksCisJfTsKKworCXByZWZpeCA9IHNldHVwX2dpdF9kaXJlY3RvcnlfZ2VudGx5KCZub25naXQpOworCWlmICghbm9uZ2l0KSB7CisJCS8qIFJlYWQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSAqLworCQlnaXRfY29uZmlnKGdpdF94bWVyZ2VfY29uZmlnLCBOVUxMKTsKKwkJaWYgKDAgPD0gZ2l0X3htZXJnZV9zdHlsZSkKKwkJCW1lcmdlX3N0eWxlID0gZ2l0X3htZXJnZV9zdHlsZTsKIAl9CiAKLQlpZiAoYXJnYyAhPSA0KQotCQl1c2FnZShtZXJnZV9maWxlX3VzYWdlKTsKLQotCWZvciAoOyBpIDwgMzsgaSsrKQotCQluYW1lc1tpXSA9IGFyZ3ZbaSArIDFdOworCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIG1lcmdlX2ZpbGVfdXNhZ2UsIDApOworCWlmIChhcmdjICE9IDMpCisJCXVzYWdlX3dpdGhfb3B0aW9ucyhtZXJnZV9maWxlX3VzYWdlLCBvcHRpb25zKTsKKwlpZiAocXVpZXQpIHsKKwkJaWYgKCFmcmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZGVycikpCisJCQlyZXR1cm4gZXJyb3IoImZhaWxlZCB0byByZWRpcmVjdCBzdGRlcnIgdG8gL2Rldi9udWxsOiAiCisJCQkJICAgICAiJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJfQogCiAJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewotCQlpZiAocmVhZF9tbWZpbGUobW1mcyArIGksIGFyZ3ZbaSArIDFdKSkKKwkJaWYgKCFuYW1lc1tpXSkKKwkJCW5hbWVzW2ldID0gYXJndltpXTsKKwkJaWYgKHJlYWRfbW1maWxlKG1tZnMgKyBpLCBhcmd2W2ldKSkKIAkJCXJldHVybiAtMTsKIAkJaWYgKGJ1ZmZlcl9pc19iaW5hcnkobW1mc1tpXS5wdHIsIG1tZnNbaV0uc2l6ZSkpCiAJCQlyZXR1cm4gZXJyb3IoIkNhbm5vdCBtZXJnZSBiaW5hcnkgZmlsZXM6ICVzXG4iLAotCQkJCQlhcmd2W2kgKyAxXSk7CisJCQkJCWFyZ3ZbaV0pOwogCX0KIAogCXJldCA9IHhkbF9tZXJnZShtbWZzICsgMSwgbW1mcyArIDAsIG5hbWVzWzBdLCBtbWZzICsgMiwgbmFtZXNbMl0sCi0JCQkmeHBwLCBYRExfTUVSR0VfWkVBTE9VU19BTE5VTSwgJnJlc3VsdCk7CisJCQkmeHBwLCBtZXJnZV9sZXZlbCB8IG1lcmdlX3N0eWxlLCAmcmVzdWx0KTsKIAogCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCiAJCWZyZWUobW1mc1tpXS5wdHIpOwogCiAJaWYgKHJldCA+PSAwKSB7Ci0JCWNvbnN0IGNoYXIgKmZpbGVuYW1lID0gYXJndlsxXTsKKwkJY29uc3QgY2hhciAqZmlsZW5hbWUgPSBhcmd2WzBdOwogCQlGSUxFICpmID0gdG9fc3Rkb3V0ID8gc3Rkb3V0IDogZm9wZW4oZmlsZW5hbWUsICJ3YiIpOwogCiAJCWlmICghZikKZGlmZiAtLWdpdCBhL2J1aWx0aW4tbWVyZ2UtcmVjdXJzaXZlLmMgYi9idWlsdGluLW1lcmdlLXJlY3Vyc2l2ZS5jCmluZGV4IGI5NzM4NjUuLjZiNTM0YzEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tbWVyZ2UtcmVjdXJzaXZlLmMKKysrIGIvYnVpbHRpbi1tZXJnZS1yZWN1cnNpdmUuYwpAQCAtMSwxMjg4ICsxLDggQEAKLS8qCi0gKiBSZWN1cnNpdmUgTWVyZ2UgYWxnb3JpdGhtIHN0b2xlbiBmcm9tIGdpdC1tZXJnZS1yZWN1cnNpdmUucHkgYnkKLSAqIEZyZWRyaWsgS3VpdmluZW4uCi0gKiBUaGUgdGhpZXZlcyB3ZXJlIEFsZXggUmllc2VuIGFuZCBKb2hhbm5lcyBTY2hpbmRlbGluLCBpbiBKdW5lL0p1bHkgMjAwNgotICovCiAjaW5jbHVkZSAiY2FjaGUuaCIKLSNpbmNsdWRlICJjYWNoZS10cmVlLmgiCiAjaW5jbHVkZSAiY29tbWl0LmgiCi0jaW5jbHVkZSAiYmxvYi5oIgotI2luY2x1ZGUgImJ1aWx0aW4uaCIKLSNpbmNsdWRlICJ0cmVlLXdhbGsuaCIKLSNpbmNsdWRlICJkaWZmLmgiCi0jaW5jbHVkZSAiZGlmZmNvcmUuaCIKICNpbmNsdWRlICJ0YWcuaCIKLSNpbmNsdWRlICJ1bnBhY2stdHJlZXMuaCIKLSNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgotI2luY2x1ZGUgInhkaWZmLWludGVyZmFjZS5oIgotI2luY2x1ZGUgImxsLW1lcmdlLmgiCi0jaW5jbHVkZSAiaW50ZXJwb2xhdGUuaCIKLSNpbmNsdWRlICJhdHRyLmgiCi0jaW5jbHVkZSAiZGlyLmgiCiAjaW5jbHVkZSAibWVyZ2UtcmVjdXJzaXZlLmgiCiAKLXN0YXRpYyBpbnQgc3VidHJlZV9tZXJnZTsKLQotc3RhdGljIHN0cnVjdCB0cmVlICpzaGlmdF90cmVlX29iamVjdChzdHJ1Y3QgdHJlZSAqb25lLCBzdHJ1Y3QgdHJlZSAqdHdvKQotewotCXVuc2lnbmVkIGNoYXIgc2hpZnRlZFsyMF07Ci0KLQkvKgotCSAqIE5FRURTV09SSzogdGhpcyBsaW1pdHMgdGhlIHJlY3Vyc2lvbiBkZXB0aCB0byBoYXJkY29kZWQKLQkgKiB2YWx1ZSAnMicgdG8gYXZvaWQgZXhjZXNzaXZlIG92ZXJoZWFkLgotCSAqLwotCXNoaWZ0X3RyZWUob25lLT5vYmplY3Quc2hhMSwgdHdvLT5vYmplY3Quc2hhMSwgc2hpZnRlZCwgMik7Ci0JaWYgKCFoYXNoY21wKHR3by0+b2JqZWN0LnNoYTEsIHNoaWZ0ZWQpKQotCQlyZXR1cm4gdHdvOwotCXJldHVybiBsb29rdXBfdHJlZShzaGlmdGVkKTsKLX0KLQotLyoKLSAqIEEgdmlydHVhbCBjb21taXQgaGFzCi0gKiAtIChjb25zdCBjaGFyICopY29tbWl0LT51dGlsIHNldCB0byB0aGUgbmFtZSwgYW5kCi0gKiAtICooaW50ICopY29tbWl0LT5vYmplY3Quc2hhMSBzZXQgdG8gdGhlIHZpcnR1YWwgaWQuCi0gKi8KLQotc3RhdGljIHN0cnVjdCBjb21taXQgKm1ha2VfdmlydHVhbF9jb21taXQoc3RydWN0IHRyZWUgKnRyZWUsIGNvbnN0IGNoYXIgKmNvbW1lbnQpCi17Ci0Jc3RydWN0IGNvbW1pdCAqY29tbWl0ID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGNvbW1pdCkpOwotCXN0YXRpYyB1bnNpZ25lZCB2aXJ0dWFsX2lkID0gMTsKLQljb21taXQtPnRyZWUgPSB0cmVlOwotCWNvbW1pdC0+dXRpbCA9ICh2b2lkKiljb21tZW50OwotCSooaW50Kiljb21taXQtPm9iamVjdC5zaGExID0gdmlydHVhbF9pZCsrOwotCS8qIGF2b2lkIHdhcm5pbmdzICovCi0JY29tbWl0LT5vYmplY3QucGFyc2VkID0gMTsKLQlyZXR1cm4gY29tbWl0OwotfQotCi0vKgotICogU2luY2Ugd2UgdXNlIGdldF90cmVlX2VudHJ5KCksIHdoaWNoIGRvZXMgbm90IHB1dCB0aGUgcmVhZCBvYmplY3QgaW50bwotICogdGhlIG9iamVjdCBwb29sLCB3ZSBjYW5ub3QgcmVseSBvbiBhID09IGIuCi0gKi8KLXN0YXRpYyBpbnQgc2hhX2VxKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmIpCi17Ci0JaWYgKCFhICYmICFiKQotCQlyZXR1cm4gMjsKLQlyZXR1cm4gYSAmJiBiICYmIGhhc2hjbXAoYSwgYikgPT0gMDsKLX0KLQotLyoKLSAqIFNpbmNlIHdlIHdhbnQgdG8gd3JpdGUgdGhlIGluZGV4IGV2ZW50dWFsbHksIHdlIGNhbm5vdCByZXVzZSB0aGUgaW5kZXgKLSAqIGZvciB0aGVzZSAodGVtcG9yYXJ5KSBkYXRhLgotICovCi1zdHJ1Y3Qgc3RhZ2VfZGF0YQotewotCXN0cnVjdAotCXsKLQkJdW5zaWduZWQgbW9kZTsKLQkJdW5zaWduZWQgY2hhciBzaGFbMjBdOwotCX0gc3RhZ2VzWzRdOwotCXVuc2lnbmVkIHByb2Nlc3NlZDoxOwotfTsKLQotc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCBjdXJyZW50X2ZpbGVfc2V0ID0ge05VTEwsIDAsIDAsIDF9Owotc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCBjdXJyZW50X2RpcmVjdG9yeV9zZXQgPSB7TlVMTCwgMCwgMCwgMX07Ci0KLXN0YXRpYyBpbnQgY2FsbF9kZXB0aCA9IDA7Ci1zdGF0aWMgaW50IHZlcmJvc2l0eSA9IDI7Ci1zdGF0aWMgaW50IGRpZmZfcmVuYW1lX2xpbWl0ID0gLTE7Ci1zdGF0aWMgaW50IG1lcmdlX3JlbmFtZV9saW1pdCA9IC0xOwotc3RhdGljIGludCBidWZmZXJfb3V0cHV0ID0gMTsKLXN0YXRpYyBzdHJ1Y3Qgc3RyYnVmIG9idWYgPSBTVFJCVUZfSU5JVDsKLQotc3RhdGljIGludCBzaG93KGludCB2KQotewotCXJldHVybiAoIWNhbGxfZGVwdGggJiYgdmVyYm9zaXR5ID49IHYpIHx8IHZlcmJvc2l0eSA+PSA1OwotfQotCi1zdGF0aWMgdm9pZCBmbHVzaF9vdXRwdXQodm9pZCkKLXsKLQlpZiAob2J1Zi5sZW4pIHsKLQkJZnB1dHMob2J1Zi5idWYsIHN0ZG91dCk7Ci0JCXN0cmJ1Zl9yZXNldCgmb2J1Zik7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBvdXRwdXQoaW50IHYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotewotCWludCBsZW47Ci0JdmFfbGlzdCBhcDsKLQotCWlmICghc2hvdyh2KSkKLQkJcmV0dXJuOwotCi0Jc3RyYnVmX2dyb3coJm9idWYsIGNhbGxfZGVwdGggKiAyICsgMik7Ci0JbWVtc2V0KG9idWYuYnVmICsgb2J1Zi5sZW4sICcgJywgY2FsbF9kZXB0aCAqIDIpOwotCXN0cmJ1Zl9zZXRsZW4oJm9idWYsIG9idWYubGVuICsgY2FsbF9kZXB0aCAqIDIpOwotCi0JdmFfc3RhcnQoYXAsIGZtdCk7Ci0JbGVuID0gdnNucHJpbnRmKG9idWYuYnVmICsgb2J1Zi5sZW4sIHN0cmJ1Zl9hdmFpbCgmb2J1ZiksIGZtdCwgYXApOwotCXZhX2VuZChhcCk7Ci0KLQlpZiAobGVuIDwgMCkKLQkJbGVuID0gMDsKLQlpZiAobGVuID49IHN0cmJ1Zl9hdmFpbCgmb2J1ZikpIHsKLQkJc3RyYnVmX2dyb3coJm9idWYsIGxlbiArIDIpOwotCQl2YV9zdGFydChhcCwgZm10KTsKLQkJbGVuID0gdnNucHJpbnRmKG9idWYuYnVmICsgb2J1Zi5sZW4sIHN0cmJ1Zl9hdmFpbCgmb2J1ZiksIGZtdCwgYXApOwotCQl2YV9lbmQoYXApOwotCQlpZiAobGVuID49IHN0cmJ1Zl9hdmFpbCgmb2J1ZikpIHsKLQkJCWRpZSgidGhpcyBzaG91bGQgbm90IGhhcHBlbiwgeW91ciBzbnByaW50ZiBpcyBicm9rZW4iKTsKLQkJfQotCX0KLQlzdHJidWZfc2V0bGVuKCZvYnVmLCBvYnVmLmxlbiArIGxlbik7Ci0Jc3RyYnVmX2FkZCgmb2J1ZiwgIlxuIiwgMSk7Ci0JaWYgKCFidWZmZXJfb3V0cHV0KQotCQlmbHVzaF9vdXRwdXQoKTsKLX0KLQotc3RhdGljIHZvaWQgb3V0cHV0X2NvbW1pdF90aXRsZShzdHJ1Y3QgY29tbWl0ICpjb21taXQpCi17Ci0JaW50IGk7Ci0JZmx1c2hfb3V0cHV0KCk7Ci0JZm9yIChpID0gY2FsbF9kZXB0aDsgaS0tOykKLQkJZnB1dHMoIiAgIiwgc3Rkb3V0KTsKLQlpZiAoY29tbWl0LT51dGlsKQotCQlwcmludGYoInZpcnR1YWwgJXNcbiIsIChjaGFyICopY29tbWl0LT51dGlsKTsKLQllbHNlIHsKLQkJcHJpbnRmKCIlcyAiLCBmaW5kX3VuaXF1ZV9hYmJyZXYoY29tbWl0LT5vYmplY3Quc2hhMSwgREVGQVVMVF9BQkJSRVYpKTsKLQkJaWYgKHBhcnNlX2NvbW1pdChjb21taXQpICE9IDApCi0JCQlwcmludGYoIihiYWQgY29tbWl0KVxuIik7Ci0JCWVsc2UgewotCQkJY29uc3QgY2hhciAqczsKLQkJCWludCBsZW47Ci0JCQlmb3IgKHMgPSBjb21taXQtPmJ1ZmZlcjsgKnM7IHMrKykKLQkJCQlpZiAoKnMgPT0gJ1xuJyAmJiBzWzFdID09ICdcbicpIHsKLQkJCQkJcyArPSAyOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQlmb3IgKGxlbiA9IDA7IHNbbGVuXSAmJiAnXG4nICE9IHNbbGVuXTsgbGVuKyspCi0JCQkJOyAvKiBkbyBub3RoaW5nICovCi0JCQlwcmludGYoIiUuKnNcbiIsIGxlbiwgcyk7Ci0JCX0KLQl9Ci19Ci0KLXN0YXRpYyBpbnQgYWRkX2NhY2hlaW5mbyh1bnNpZ25lZCBpbnQgbW9kZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJY29uc3QgY2hhciAqcGF0aCwgaW50IHN0YWdlLCBpbnQgcmVmcmVzaCwgaW50IG9wdGlvbnMpCi17Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKLQljZSA9IG1ha2VfY2FjaGVfZW50cnkobW9kZSwgc2hhMSA/IHNoYTEgOiBudWxsX3NoYTEsIHBhdGgsIHN0YWdlLCByZWZyZXNoKTsKLQlpZiAoIWNlKQotCQlyZXR1cm4gZXJyb3IoImFkZGluZm9fY2FjaGUgZmFpbGVkIGZvciBwYXRoICclcyciLCBwYXRoKTsKLQlyZXR1cm4gYWRkX2NhY2hlX2VudHJ5KGNlLCBvcHRpb25zKTsKLX0KLQotLyoKLSAqIFRoaXMgaXMgYSBnbG9iYWwgdmFyaWFibGUgd2hpY2ggaXMgdXNlZCBpbiBhIG51bWJlciBvZiBwbGFjZXMgYnV0Ci0gKiBvbmx5IHdyaXR0ZW4gdG8gaW4gdGhlICdtZXJnZScgZnVuY3Rpb24uCi0gKgotICogaW5kZXhfb25seSA9PSAxICAgID0+IERvbid0IGxlYXZlIGFueSBub24tc3RhZ2UgMCBlbnRyaWVzIGluIHRoZSBjYWNoZSBhbmQKLSAqICAgICAgICAgICAgICAgICAgICAgICBkb24ndCB1cGRhdGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgotICogICAgICAgICAgICAgICAwICAgID0+IExlYXZlIHVubWVyZ2VkIGVudHJpZXMgaW4gdGhlIGNhY2hlIGFuZCB1cGRhdGUKLSAqICAgICAgICAgICAgICAgICAgICAgICB0aGUgd29ya2luZyBkaXJlY3RvcnkuCi0gKi8KLXN0YXRpYyBpbnQgaW5kZXhfb25seSA9IDA7Ci0KLXN0YXRpYyB2b2lkIGluaXRfdHJlZV9kZXNjX2Zyb21fdHJlZShzdHJ1Y3QgdHJlZV9kZXNjICpkZXNjLCBzdHJ1Y3QgdHJlZSAqdHJlZSkKLXsKLQlwYXJzZV90cmVlKHRyZWUpOwotCWluaXRfdHJlZV9kZXNjKGRlc2MsIHRyZWUtPmJ1ZmZlciwgdHJlZS0+c2l6ZSk7Ci19Ci0KLXN0YXRpYyBpbnQgZ2l0X21lcmdlX3RyZWVzKGludCBpbmRleF9vbmx5LAotCQkJICAgc3RydWN0IHRyZWUgKmNvbW1vbiwKLQkJCSAgIHN0cnVjdCB0cmVlICpoZWFkLAotCQkJICAgc3RydWN0IHRyZWUgKm1lcmdlKQotewotCWludCByYzsKLQlzdHJ1Y3QgdHJlZV9kZXNjIHRbM107Ci0Jc3RydWN0IHVucGFja190cmVlc19vcHRpb25zIG9wdHM7Ci0KLQltZW1zZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7Ci0JaWYgKGluZGV4X29ubHkpCi0JCW9wdHMuaW5kZXhfb25seSA9IDE7Ci0JZWxzZQotCQlvcHRzLnVwZGF0ZSA9IDE7Ci0Jb3B0cy5tZXJnZSA9IDE7Ci0Jb3B0cy5oZWFkX2lkeCA9IDI7Ci0Jb3B0cy5mbiA9IHRocmVld2F5X21lcmdlOwotCW9wdHMuc3JjX2luZGV4ID0gJnRoZV9pbmRleDsKLQlvcHRzLmRzdF9pbmRleCA9ICZ0aGVfaW5kZXg7Ci0KLQlpbml0X3RyZWVfZGVzY19mcm9tX3RyZWUodCswLCBjb21tb24pOwotCWluaXRfdHJlZV9kZXNjX2Zyb21fdHJlZSh0KzEsIGhlYWQpOwotCWluaXRfdHJlZV9kZXNjX2Zyb21fdHJlZSh0KzIsIG1lcmdlKTsKLQotCXJjID0gdW5wYWNrX3RyZWVzKDMsIHQsICZvcHRzKTsKLQljYWNoZV90cmVlX2ZyZWUoJmFjdGl2ZV9jYWNoZV90cmVlKTsKLQlyZXR1cm4gcmM7Ci19Ci0KLXN0cnVjdCB0cmVlICp3cml0ZV90cmVlX2Zyb21fbWVtb3J5KHZvaWQpCi17Ci0Jc3RydWN0IHRyZWUgKnJlc3VsdCA9IE5VTEw7Ci0KLQlpZiAodW5tZXJnZWRfY2FjaGUoKSkgewotCQlpbnQgaTsKLQkJb3V0cHV0KDAsICJUaGVyZSBhcmUgdW5tZXJnZWQgaW5kZXggZW50cmllczoiKTsKLQkJZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9ucjsgaSsrKSB7Ci0JCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwotCQkJaWYgKGNlX3N0YWdlKGNlKSkKLQkJCQlvdXRwdXQoMCwgIiVkICUuKnMiLCBjZV9zdGFnZShjZSksIGNlX25hbWVsZW4oY2UpLCBjZS0+bmFtZSk7Ci0JCX0KLQkJcmV0dXJuIE5VTEw7Ci0JfQotCi0JaWYgKCFhY3RpdmVfY2FjaGVfdHJlZSkKLQkJYWN0aXZlX2NhY2hlX3RyZWUgPSBjYWNoZV90cmVlKCk7Ci0KLQlpZiAoIWNhY2hlX3RyZWVfZnVsbHlfdmFsaWQoYWN0aXZlX2NhY2hlX3RyZWUpICYmCi0JICAgIGNhY2hlX3RyZWVfdXBkYXRlKGFjdGl2ZV9jYWNoZV90cmVlLAotCQkJICAgICAgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIsIDAsIDApIDwgMCkKLQkJZGllKCJlcnJvciBidWlsZGluZyB0cmVlcyIpOwotCi0JcmVzdWx0ID0gbG9va3VwX3RyZWUoYWN0aXZlX2NhY2hlX3RyZWUtPnNoYTEpOwotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludCBzYXZlX2ZpbGVzX2RpcnMoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJY29uc3QgY2hhciAqYmFzZSwgaW50IGJhc2VsZW4sIGNvbnN0IGNoYXIgKnBhdGgsCi0JCXVuc2lnbmVkIGludCBtb2RlLCBpbnQgc3RhZ2UsIHZvaWQgKmNvbnRleHQpCi17Ci0JaW50IGxlbiA9IHN0cmxlbihwYXRoKTsKLQljaGFyICpuZXdwYXRoID0geG1hbGxvYyhiYXNlbGVuICsgbGVuICsgMSk7Ci0JbWVtY3B5KG5ld3BhdGgsIGJhc2UsIGJhc2VsZW4pOwotCW1lbWNweShuZXdwYXRoICsgYmFzZWxlbiwgcGF0aCwgbGVuKTsKLQluZXdwYXRoW2Jhc2VsZW4gKyBsZW5dID0gJ1wwJzsKLQotCWlmIChTX0lTRElSKG1vZGUpKQotCQlzdHJpbmdfbGlzdF9pbnNlcnQobmV3cGF0aCwgJmN1cnJlbnRfZGlyZWN0b3J5X3NldCk7Ci0JZWxzZQotCQlzdHJpbmdfbGlzdF9pbnNlcnQobmV3cGF0aCwgJmN1cnJlbnRfZmlsZV9zZXQpOwotCWZyZWUobmV3cGF0aCk7Ci0KLQlyZXR1cm4gUkVBRF9UUkVFX1JFQ1VSU0lWRTsKLX0KLQotc3RhdGljIGludCBnZXRfZmlsZXNfZGlycyhzdHJ1Y3QgdHJlZSAqdHJlZSkKLXsKLQlpbnQgbjsKLQlpZiAocmVhZF90cmVlX3JlY3Vyc2l2ZSh0cmVlLCAiIiwgMCwgMCwgTlVMTCwgc2F2ZV9maWxlc19kaXJzLCBOVUxMKSkKLQkJcmV0dXJuIDA7Ci0JbiA9IGN1cnJlbnRfZmlsZV9zZXQubnIgKyBjdXJyZW50X2RpcmVjdG9yeV9zZXQubnI7Ci0JcmV0dXJuIG47Ci19Ci0KLS8qCi0gKiBSZXR1cm5zIGFuIGluZGV4X2VudHJ5IGluc3RhbmNlIHdoaWNoIGRvZXNuJ3QgaGF2ZSB0byBjb3JyZXNwb25kIHRvCi0gKiBhIHJlYWwgY2FjaGUgZW50cnkgaW4gR2l0J3MgaW5kZXguCi0gKi8KLXN0YXRpYyBzdHJ1Y3Qgc3RhZ2VfZGF0YSAqaW5zZXJ0X3N0YWdlX2RhdGEoY29uc3QgY2hhciAqcGF0aCwKLQkJc3RydWN0IHRyZWUgKm8sIHN0cnVjdCB0cmVlICphLCBzdHJ1Y3QgdHJlZSAqYiwKLQkJc3RydWN0IHN0cmluZ19saXN0ICplbnRyaWVzKQotewotCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOwotCXN0cnVjdCBzdGFnZV9kYXRhICplID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHN0YWdlX2RhdGEpKTsKLQlnZXRfdHJlZV9lbnRyeShvLT5vYmplY3Quc2hhMSwgcGF0aCwKLQkJCWUtPnN0YWdlc1sxXS5zaGEsICZlLT5zdGFnZXNbMV0ubW9kZSk7Ci0JZ2V0X3RyZWVfZW50cnkoYS0+b2JqZWN0LnNoYTEsIHBhdGgsCi0JCQllLT5zdGFnZXNbMl0uc2hhLCAmZS0+c3RhZ2VzWzJdLm1vZGUpOwotCWdldF90cmVlX2VudHJ5KGItPm9iamVjdC5zaGExLCBwYXRoLAotCQkJZS0+c3RhZ2VzWzNdLnNoYSwgJmUtPnN0YWdlc1szXS5tb2RlKTsKLQlpdGVtID0gc3RyaW5nX2xpc3RfaW5zZXJ0KHBhdGgsIGVudHJpZXMpOwotCWl0ZW0tPnV0aWwgPSBlOwotCXJldHVybiBlOwotfQotCi0vKgotICogQ3JlYXRlIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZpbGUgbmFtZXMgdG8gc3RhZ2VfZGF0YSBvYmplY3RzLiBUaGUKLSAqIGRpY3Rpb25hcnkgY29udGFpbnMgb25lIGVudHJ5IGZvciBldmVyeSBwYXRoIHdpdGggYSBub24temVybyBzdGFnZSBlbnRyeS4KLSAqLwotc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCAqZ2V0X3VubWVyZ2VkKHZvaWQpCi17Ci0Jc3RydWN0IHN0cmluZ19saXN0ICp1bm1lcmdlZCA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOwotCWludCBpOwotCi0JdW5tZXJnZWQtPnN0cmR1cF9zdHJpbmdzID0gMTsKLQotCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgewotCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKLQkJc3RydWN0IHN0YWdlX2RhdGEgKmU7Ci0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbaV07Ci0JCWlmICghY2Vfc3RhZ2UoY2UpKQotCQkJY29udGludWU7Ci0KLQkJaXRlbSA9IHN0cmluZ19saXN0X2xvb2t1cChjZS0+bmFtZSwgdW5tZXJnZWQpOwotCQlpZiAoIWl0ZW0pIHsKLQkJCWl0ZW0gPSBzdHJpbmdfbGlzdF9pbnNlcnQoY2UtPm5hbWUsIHVubWVyZ2VkKTsKLQkJCWl0ZW0tPnV0aWwgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RhZ2VfZGF0YSkpOwotCQl9Ci0JCWUgPSBpdGVtLT51dGlsOwotCQllLT5zdGFnZXNbY2Vfc3RhZ2UoY2UpXS5tb2RlID0gY2UtPmNlX21vZGU7Ci0JCWhhc2hjcHkoZS0+c3RhZ2VzW2NlX3N0YWdlKGNlKV0uc2hhLCBjZS0+c2hhMSk7Ci0JfQotCi0JcmV0dXJuIHVubWVyZ2VkOwotfQotCi1zdHJ1Y3QgcmVuYW1lCi17Ci0Jc3RydWN0IGRpZmZfZmlsZXBhaXIgKnBhaXI7Ci0Jc3RydWN0IHN0YWdlX2RhdGEgKnNyY19lbnRyeTsKLQlzdHJ1Y3Qgc3RhZ2VfZGF0YSAqZHN0X2VudHJ5OwotCXVuc2lnbmVkIHByb2Nlc3NlZDoxOwotfTsKLQotLyoKLSAqIEdldCBpbmZvcm1hdGlvbiBvZiBhbGwgcmVuYW1lcyB3aGljaCBvY2N1cnJlZCBiZXR3ZWVuICdvX3RyZWUnIGFuZAotICogJ3RyZWUnLiBXZSBuZWVkIHRoZSB0aHJlZSB0cmVlcyBpbiB0aGUgbWVyZ2UgKCdvX3RyZWUnLCAnYV90cmVlJyBhbmQKLSAqICdiX3RyZWUnKSB0byBiZSBhYmxlIHRvIGFzc29jaWF0ZSB0aGUgY29ycmVjdCBjYWNoZSBlbnRyaWVzIHdpdGgKLSAqIHRoZSByZW5hbWUgaW5mb3JtYXRpb24uICd0cmVlJyBpcyBhbHdheXMgZXF1YWwgdG8gZWl0aGVyIGFfdHJlZSBvciBiX3RyZWUuCi0gKi8KLXN0YXRpYyBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmdldF9yZW5hbWVzKHN0cnVjdCB0cmVlICp0cmVlLAotCQkJCQlzdHJ1Y3QgdHJlZSAqb190cmVlLAotCQkJCQlzdHJ1Y3QgdHJlZSAqYV90cmVlLAotCQkJCQlzdHJ1Y3QgdHJlZSAqYl90cmVlLAotCQkJCQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmVudHJpZXMpCi17Ci0JaW50IGk7Ci0Jc3RydWN0IHN0cmluZ19saXN0ICpyZW5hbWVzOwotCXN0cnVjdCBkaWZmX29wdGlvbnMgb3B0czsKLQotCXJlbmFtZXMgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKLQlkaWZmX3NldHVwKCZvcHRzKTsKLQlESUZGX09QVF9TRVQoJm9wdHMsIFJFQ1VSU0lWRSk7Ci0Jb3B0cy5kZXRlY3RfcmVuYW1lID0gRElGRl9ERVRFQ1RfUkVOQU1FOwotCW9wdHMucmVuYW1lX2xpbWl0ID0gbWVyZ2VfcmVuYW1lX2xpbWl0ID49IDAgPyBtZXJnZV9yZW5hbWVfbGltaXQgOgotCQkJICAgIGRpZmZfcmVuYW1lX2xpbWl0ID49IDAgPyBkaWZmX3JlbmFtZV9saW1pdCA6Ci0JCQkgICAgNTAwOwotCW9wdHMud2Fybl9vbl90b29fbGFyZ2VfcmVuYW1lID0gMTsKLQlvcHRzLm91dHB1dF9mb3JtYXQgPSBESUZGX0ZPUk1BVF9OT19PVVRQVVQ7Ci0JaWYgKGRpZmZfc2V0dXBfZG9uZSgmb3B0cykgPCAwKQotCQlkaWUoImRpZmYgc2V0dXAgZmFpbGVkIik7Ci0JZGlmZl90cmVlX3NoYTEob190cmVlLT5vYmplY3Quc2hhMSwgdHJlZS0+b2JqZWN0LnNoYTEsICIiLCAmb3B0cyk7Ci0JZGlmZmNvcmVfc3RkKCZvcHRzKTsKLQlmb3IgKGkgPSAwOyBpIDwgZGlmZl9xdWV1ZWRfZGlmZi5ucjsgKytpKSB7Ci0JCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOwotCQlzdHJ1Y3QgcmVuYW1lICpyZTsKLQkJc3RydWN0IGRpZmZfZmlsZXBhaXIgKnBhaXIgPSBkaWZmX3F1ZXVlZF9kaWZmLnF1ZXVlW2ldOwotCQlpZiAocGFpci0+c3RhdHVzICE9ICdSJykgewotCQkJZGlmZl9mcmVlX2ZpbGVwYWlyKHBhaXIpOwotCQkJY29udGludWU7Ci0JCX0KLQkJcmUgPSB4bWFsbG9jKHNpemVvZigqcmUpKTsKLQkJcmUtPnByb2Nlc3NlZCA9IDA7Ci0JCXJlLT5wYWlyID0gcGFpcjsKLQkJaXRlbSA9IHN0cmluZ19saXN0X2xvb2t1cChyZS0+cGFpci0+b25lLT5wYXRoLCBlbnRyaWVzKTsKLQkJaWYgKCFpdGVtKQotCQkJcmUtPnNyY19lbnRyeSA9IGluc2VydF9zdGFnZV9kYXRhKHJlLT5wYWlyLT5vbmUtPnBhdGgsCi0JCQkJCW9fdHJlZSwgYV90cmVlLCBiX3RyZWUsIGVudHJpZXMpOwotCQllbHNlCi0JCQlyZS0+c3JjX2VudHJ5ID0gaXRlbS0+dXRpbDsKLQotCQlpdGVtID0gc3RyaW5nX2xpc3RfbG9va3VwKHJlLT5wYWlyLT50d28tPnBhdGgsIGVudHJpZXMpOwotCQlpZiAoIWl0ZW0pCi0JCQlyZS0+ZHN0X2VudHJ5ID0gaW5zZXJ0X3N0YWdlX2RhdGEocmUtPnBhaXItPnR3by0+cGF0aCwKLQkJCQkJb190cmVlLCBhX3RyZWUsIGJfdHJlZSwgZW50cmllcyk7Ci0JCWVsc2UKLQkJCXJlLT5kc3RfZW50cnkgPSBpdGVtLT51dGlsOwotCQlpdGVtID0gc3RyaW5nX2xpc3RfaW5zZXJ0KHBhaXItPm9uZS0+cGF0aCwgcmVuYW1lcyk7Ci0JCWl0ZW0tPnV0aWwgPSByZTsKLQl9Ci0Jb3B0cy5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfTk9fT1VUUFVUOwotCWRpZmZfcXVldWVkX2RpZmYubnIgPSAwOwotCWRpZmZfZmx1c2goJm9wdHMpOwotCXJldHVybiByZW5hbWVzOwotfQotCi1zdGF0aWMgaW50IHVwZGF0ZV9zdGFnZXMoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRpZmZfZmlsZXNwZWMgKm8sCi0JCQkgc3RydWN0IGRpZmZfZmlsZXNwZWMgKmEsIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpiLAotCQkJIGludCBjbGVhcikKLXsKLQlpbnQgb3B0aW9ucyA9IEFERF9DQUNIRV9PS19UT19BREQgfCBBRERfQ0FDSEVfT0tfVE9fUkVQTEFDRTsKLQlpZiAoY2xlYXIpCi0JCWlmIChyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKHBhdGgpKQotCQkJcmV0dXJuIC0xOwotCWlmIChvKQotCQlpZiAoYWRkX2NhY2hlaW5mbyhvLT5tb2RlLCBvLT5zaGExLCBwYXRoLCAxLCAwLCBvcHRpb25zKSkKLQkJCXJldHVybiAtMTsKLQlpZiAoYSkKLQkJaWYgKGFkZF9jYWNoZWluZm8oYS0+bW9kZSwgYS0+c2hhMSwgcGF0aCwgMiwgMCwgb3B0aW9ucykpCi0JCQlyZXR1cm4gLTE7Ci0JaWYgKGIpCi0JCWlmIChhZGRfY2FjaGVpbmZvKGItPm1vZGUsIGItPnNoYTEsIHBhdGgsIDMsIDAsIG9wdGlvbnMpKQotCQkJcmV0dXJuIC0xOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IHJlbW92ZV9maWxlKGludCBjbGVhbiwgY29uc3QgY2hhciAqcGF0aCwgaW50IG5vX3dkKQotewotCWludCB1cGRhdGVfY2FjaGUgPSBpbmRleF9vbmx5IHx8IGNsZWFuOwotCWludCB1cGRhdGVfd29ya2luZ19kaXJlY3RvcnkgPSAhaW5kZXhfb25seSAmJiAhbm9fd2Q7Ci0KLQlpZiAodXBkYXRlX2NhY2hlKSB7Ci0JCWlmIChyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKHBhdGgpKQotCQkJcmV0dXJuIC0xOwotCX0KLQlpZiAodXBkYXRlX3dvcmtpbmdfZGlyZWN0b3J5KSB7Ci0JCWlmIChyZW1vdmVfcGF0aChwYXRoKSkKLQkJCXJldHVybiAtMTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjaGFyICp1bmlxdWVfcGF0aChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpicmFuY2gpCi17Ci0JY2hhciAqbmV3cGF0aCA9IHhtYWxsb2Moc3RybGVuKHBhdGgpICsgMSArIHN0cmxlbihicmFuY2gpICsgOCArIDEpOwotCWludCBzdWZmaXggPSAwOwotCXN0cnVjdCBzdGF0IHN0OwotCWNoYXIgKnAgPSBuZXdwYXRoICsgc3RybGVuKHBhdGgpOwotCXN0cmNweShuZXdwYXRoLCBwYXRoKTsKLQkqKHArKykgPSAnfic7Ci0Jc3RyY3B5KHAsIGJyYW5jaCk7Ci0JZm9yICg7ICpwOyArK3ApCi0JCWlmICgnLycgPT0gKnApCi0JCQkqcCA9ICdfJzsKLQl3aGlsZSAoc3RyaW5nX2xpc3RfaGFzX3N0cmluZygmY3VycmVudF9maWxlX3NldCwgbmV3cGF0aCkgfHwKLQkgICAgICAgc3RyaW5nX2xpc3RfaGFzX3N0cmluZygmY3VycmVudF9kaXJlY3Rvcnlfc2V0LCBuZXdwYXRoKSB8fAotCSAgICAgICBsc3RhdChuZXdwYXRoLCAmc3QpID09IDApCi0JCXNwcmludGYocCwgIl8lZCIsIHN1ZmZpeCsrKTsKLQotCXN0cmluZ19saXN0X2luc2VydChuZXdwYXRoLCAmY3VycmVudF9maWxlX3NldCk7Ci0JcmV0dXJuIG5ld3BhdGg7Ci19Ci0KLXN0YXRpYyB2b2lkIGZsdXNoX2J1ZmZlcihpbnQgZmQsIGNvbnN0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBzaXplKQotewotCXdoaWxlIChzaXplID4gMCkgewotCQlsb25nIHJldCA9IHdyaXRlX2luX2Z1bGwoZmQsIGJ1Ziwgc2l6ZSk7Ci0JCWlmIChyZXQgPCAwKSB7Ci0JCQkvKiBJZ25vcmUgZXBpcGUgKi8KLQkJCWlmIChlcnJubyA9PSBFUElQRSkKLQkJCQlicmVhazsKLQkJCWRpZSgibWVyZ2UtcmVjdXJzaXZlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7Ci0JCX0gZWxzZSBpZiAoIXJldCkgewotCQkJZGllKCJtZXJnZS1yZWN1cnNpdmU6IGRpc2sgZnVsbD8iKTsKLQkJfQotCQlzaXplIC09IHJldDsKLQkJYnVmICs9IHJldDsKLQl9Ci19Ci0KLXN0YXRpYyBpbnQgbWFrZV9yb29tX2Zvcl9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpCi17Ci0JaW50IHN0YXR1czsKLQljb25zdCBjaGFyICptc2cgPSAiZmFpbGVkIHRvIGNyZWF0ZSBwYXRoICclcyclcyI7Ci0KLQlzdGF0dXMgPSBzYWZlX2NyZWF0ZV9sZWFkaW5nX2RpcmVjdG9yaWVzX2NvbnN0KHBhdGgpOwotCWlmIChzdGF0dXMpIHsKLQkJaWYgKHN0YXR1cyA9PSAtMykgewotCQkJLyogc29tZXRoaW5nIGVsc2UgZXhpc3RzICovCi0JCQllcnJvcihtc2csIHBhdGgsICI6IHBlcmhhcHMgYSBEL0YgY29uZmxpY3Q/Iik7Ci0JCQlyZXR1cm4gLTE7Ci0JCX0KLQkJZGllKG1zZywgcGF0aCwgIiIpOwotCX0KLQotCS8qIFN1Y2Nlc3NmdWwgdW5saW5rIGlzIGdvb2QuLiAqLwotCWlmICghdW5saW5rKHBhdGgpKQotCQlyZXR1cm4gMDsKLQkvKiAuLiBhbmQgc28gaXMgbm8gZXhpc3RpbmcgZmlsZSAqLwotCWlmIChlcnJubyA9PSBFTk9FTlQpCi0JCXJldHVybiAwOwotCS8qIC4uIGJ1dCBub3Qgc29tZSBvdGhlciBlcnJvciAod2hvIHJlYWxseSBjYXJlcyB3aGF0PykgKi8KLQlyZXR1cm4gZXJyb3IobXNnLCBwYXRoLCAiOiBwZXJoYXBzIGEgRC9GIGNvbmZsaWN0PyIpOwotfQotCi1zdGF0aWMgdm9pZCB1cGRhdGVfZmlsZV9mbGFncyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGEsCi0JCQkgICAgICB1bnNpZ25lZCBtb2RlLAotCQkJICAgICAgY29uc3QgY2hhciAqcGF0aCwKLQkJCSAgICAgIGludCB1cGRhdGVfY2FjaGUsCi0JCQkgICAgICBpbnQgdXBkYXRlX3dkKQotewotCWlmIChpbmRleF9vbmx5KQotCQl1cGRhdGVfd2QgPSAwOwotCi0JaWYgKHVwZGF0ZV93ZCkgewotCQllbnVtIG9iamVjdF90eXBlIHR5cGU7Ci0JCXZvaWQgKmJ1ZjsKLQkJdW5zaWduZWQgbG9uZyBzaXplOwotCi0JCWlmIChTX0lTR0lUTElOSyhtb2RlKSkKLQkJCWRpZSgiY2Fubm90IHJlYWQgb2JqZWN0ICVzICclcyc6IEl0IGlzIGEgc3VibW9kdWxlISIsCi0JCQkgICAgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7Ci0KLQkJYnVmID0gcmVhZF9zaGExX2ZpbGUoc2hhLCAmdHlwZSwgJnNpemUpOwotCQlpZiAoIWJ1ZikKLQkJCWRpZSgiY2Fubm90IHJlYWQgb2JqZWN0ICVzICclcyciLCBzaGExX3RvX2hleChzaGEpLCBwYXRoKTsKLQkJaWYgKHR5cGUgIT0gT0JKX0JMT0IpCi0JCQlkaWUoImJsb2IgZXhwZWN0ZWQgZm9yICVzICclcyciLCBzaGExX3RvX2hleChzaGEpLCBwYXRoKTsKLQkJaWYgKFNfSVNSRUcobW9kZSkpIHsKLQkJCXN0cnVjdCBzdHJidWYgc3RyYnVmOwotCQkJc3RyYnVmX2luaXQoJnN0cmJ1ZiwgMCk7Ci0JCQlpZiAoY29udmVydF90b193b3JraW5nX3RyZWUocGF0aCwgYnVmLCBzaXplLCAmc3RyYnVmKSkgewotCQkJCWZyZWUoYnVmKTsKLQkJCQlzaXplID0gc3RyYnVmLmxlbjsKLQkJCQlidWYgPSBzdHJidWZfZGV0YWNoKCZzdHJidWYsIE5VTEwpOwotCQkJfQotCQl9Ci0KLQkJaWYgKG1ha2Vfcm9vbV9mb3JfcGF0aChwYXRoKSA8IDApIHsKLQkJCXVwZGF0ZV93ZCA9IDA7Ci0JCQlmcmVlKGJ1Zik7Ci0JCQlnb3RvIHVwZGF0ZV9pbmRleDsKLQkJfQotCQlpZiAoU19JU1JFRyhtb2RlKSB8fCAoIWhhc19zeW1saW5rcyAmJiBTX0lTTE5LKG1vZGUpKSkgewotCQkJaW50IGZkOwotCQkJaWYgKG1vZGUgJiAwMTAwKQotCQkJCW1vZGUgPSAwNzc3OwotCQkJZWxzZQotCQkJCW1vZGUgPSAwNjY2OwotCQkJZmQgPSBvcGVuKHBhdGgsIE9fV1JPTkxZIHwgT19UUlVOQyB8IE9fQ1JFQVQsIG1vZGUpOwotCQkJaWYgKGZkIDwgMCkKLQkJCQlkaWUoImZhaWxlZCB0byBvcGVuICVzOiAlcyIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQlmbHVzaF9idWZmZXIoZmQsIGJ1Ziwgc2l6ZSk7Ci0JCQljbG9zZShmZCk7Ci0JCX0gZWxzZSBpZiAoU19JU0xOSyhtb2RlKSkgewotCQkJY2hhciAqbG5rID0geG1lbWR1cHooYnVmLCBzaXplKTsKLQkJCXNhZmVfY3JlYXRlX2xlYWRpbmdfZGlyZWN0b3JpZXNfY29uc3QocGF0aCk7Ci0JCQl1bmxpbmsocGF0aCk7Ci0JCQlzeW1saW5rKGxuaywgcGF0aCk7Ci0JCQlmcmVlKGxuayk7Ci0JCX0gZWxzZQotCQkJZGllKCJkbyBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJTA2byAlcyAnJXMnIiwKLQkJCSAgICBtb2RlLCBzaGExX3RvX2hleChzaGEpLCBwYXRoKTsKLQkJZnJlZShidWYpOwotCX0KLSB1cGRhdGVfaW5kZXg6Ci0JaWYgKHVwZGF0ZV9jYWNoZSkKLQkJYWRkX2NhY2hlaW5mbyhtb2RlLCBzaGEsIHBhdGgsIDAsIHVwZGF0ZV93ZCwgQUREX0NBQ0hFX09LX1RPX0FERCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHVwZGF0ZV9maWxlKGludCBjbGVhbiwKLQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYSwKLQkJCXVuc2lnbmVkIG1vZGUsCi0JCQljb25zdCBjaGFyICpwYXRoKQotewotCXVwZGF0ZV9maWxlX2ZsYWdzKHNoYSwgbW9kZSwgcGF0aCwgaW5kZXhfb25seSB8fCBjbGVhbiwgIWluZGV4X29ubHkpOwotfQotCi0vKiBMb3cgbGV2ZWwgZmlsZSBtZXJnaW5nLCB1cGRhdGUgYW5kIHJlbW92YWwgKi8KLQotc3RydWN0IG1lcmdlX2ZpbGVfaW5mbwotewotCXVuc2lnbmVkIGNoYXIgc2hhWzIwXTsKLQl1bnNpZ25lZCBtb2RlOwotCXVuc2lnbmVkIGNsZWFuOjEsCi0JCSBtZXJnZToxOwotfTsKLQotc3RhdGljIHZvaWQgZmlsbF9tbShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBtbWZpbGVfdCAqbW0pCi17Ci0JdW5zaWduZWQgbG9uZyBzaXplOwotCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKLQotCWlmICghaGFzaGNtcChzaGExLCBudWxsX3NoYTEpKSB7Ci0JCW1tLT5wdHIgPSB4c3RyZHVwKCIiKTsKLQkJbW0tPnNpemUgPSAwOwotCQlyZXR1cm47Ci0JfQotCi0JbW0tPnB0ciA9IHJlYWRfc2hhMV9maWxlKHNoYTEsICZ0eXBlLCAmc2l6ZSk7Ci0JaWYgKCFtbS0+cHRyIHx8IHR5cGUgIT0gT0JKX0JMT0IpCi0JCWRpZSgidW5hYmxlIHRvIHJlYWQgYmxvYiBvYmplY3QgJXMiLCBzaGExX3RvX2hleChzaGExKSk7Ci0JbW0tPnNpemUgPSBzaXplOwotfQotCi1zdGF0aWMgaW50IG1lcmdlXzN3YXkobW1idWZmZXJfdCAqcmVzdWx0X2J1ZiwKLQkJICAgICAgc3RydWN0IGRpZmZfZmlsZXNwZWMgKm8sCi0JCSAgICAgIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICphLAotCQkgICAgICBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYiwKLQkJICAgICAgY29uc3QgY2hhciAqYnJhbmNoMSwKLQkJICAgICAgY29uc3QgY2hhciAqYnJhbmNoMikKLXsKLQltbWZpbGVfdCBvcmlnLCBzcmMxLCBzcmMyOwotCWNoYXIgKm5hbWUxLCAqbmFtZTI7Ci0JaW50IG1lcmdlX3N0YXR1czsKLQotCW5hbWUxID0geHN0cmR1cChta3BhdGgoIiVzOiVzIiwgYnJhbmNoMSwgYS0+cGF0aCkpOwotCW5hbWUyID0geHN0cmR1cChta3BhdGgoIiVzOiVzIiwgYnJhbmNoMiwgYi0+cGF0aCkpOwotCi0JZmlsbF9tbShvLT5zaGExLCAmb3JpZyk7Ci0JZmlsbF9tbShhLT5zaGExLCAmc3JjMSk7Ci0JZmlsbF9tbShiLT5zaGExLCAmc3JjMik7Ci0KLQltZXJnZV9zdGF0dXMgPSBsbF9tZXJnZShyZXN1bHRfYnVmLCBhLT5wYXRoLCAmb3JpZywKLQkJCQkmc3JjMSwgbmFtZTEsICZzcmMyLCBuYW1lMiwKLQkJCQlpbmRleF9vbmx5KTsKLQotCWZyZWUobmFtZTEpOwotCWZyZWUobmFtZTIpOwotCWZyZWUob3JpZy5wdHIpOwotCWZyZWUoc3JjMS5wdHIpOwotCWZyZWUoc3JjMi5wdHIpOwotCXJldHVybiBtZXJnZV9zdGF0dXM7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgbWVyZ2VfZmlsZV9pbmZvIG1lcmdlX2ZpbGUoc3RydWN0IGRpZmZfZmlsZXNwZWMgKm8sCi0JCXN0cnVjdCBkaWZmX2ZpbGVzcGVjICphLCBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYiwKLQkJY29uc3QgY2hhciAqYnJhbmNoMSwgY29uc3QgY2hhciAqYnJhbmNoMikKLXsKLQlzdHJ1Y3QgbWVyZ2VfZmlsZV9pbmZvIHJlc3VsdDsKLQlyZXN1bHQubWVyZ2UgPSAwOwotCXJlc3VsdC5jbGVhbiA9IDE7Ci0KLQlpZiAoKFNfSUZNVCAmIGEtPm1vZGUpICE9IChTX0lGTVQgJiBiLT5tb2RlKSkgewotCQlyZXN1bHQuY2xlYW4gPSAwOwotCQlpZiAoU19JU1JFRyhhLT5tb2RlKSkgewotCQkJcmVzdWx0Lm1vZGUgPSBhLT5tb2RlOwotCQkJaGFzaGNweShyZXN1bHQuc2hhLCBhLT5zaGExKTsKLQkJfSBlbHNlIHsKLQkJCXJlc3VsdC5tb2RlID0gYi0+bW9kZTsKLQkJCWhhc2hjcHkocmVzdWx0LnNoYSwgYi0+c2hhMSk7Ci0JCX0KLQl9IGVsc2UgewotCQlpZiAoIXNoYV9lcShhLT5zaGExLCBvLT5zaGExKSAmJiAhc2hhX2VxKGItPnNoYTEsIG8tPnNoYTEpKQotCQkJcmVzdWx0Lm1lcmdlID0gMTsKLQotCQkvKgotCQkgKiBNZXJnZSBtb2RlcwotCQkgKi8KLQkJaWYgKGEtPm1vZGUgPT0gYi0+bW9kZSB8fCBhLT5tb2RlID09IG8tPm1vZGUpCi0JCQlyZXN1bHQubW9kZSA9IGItPm1vZGU7Ci0JCWVsc2UgewotCQkJcmVzdWx0Lm1vZGUgPSBhLT5tb2RlOwotCQkJaWYgKGItPm1vZGUgIT0gby0+bW9kZSkgewotCQkJCXJlc3VsdC5jbGVhbiA9IDA7Ci0JCQkJcmVzdWx0Lm1lcmdlID0gMTsKLQkJCX0KLQkJfQotCi0JCWlmIChzaGFfZXEoYS0+c2hhMSwgYi0+c2hhMSkgfHwgc2hhX2VxKGEtPnNoYTEsIG8tPnNoYTEpKQotCQkJaGFzaGNweShyZXN1bHQuc2hhLCBiLT5zaGExKTsKLQkJZWxzZSBpZiAoc2hhX2VxKGItPnNoYTEsIG8tPnNoYTEpKQotCQkJaGFzaGNweShyZXN1bHQuc2hhLCBhLT5zaGExKTsKLQkJZWxzZSBpZiAoU19JU1JFRyhhLT5tb2RlKSkgewotCQkJbW1idWZmZXJfdCByZXN1bHRfYnVmOwotCQkJaW50IG1lcmdlX3N0YXR1czsKLQotCQkJbWVyZ2Vfc3RhdHVzID0gbWVyZ2VfM3dheSgmcmVzdWx0X2J1ZiwgbywgYSwgYiwKLQkJCQkJCSAgYnJhbmNoMSwgYnJhbmNoMik7Ci0KLQkJCWlmICgobWVyZ2Vfc3RhdHVzIDwgMCkgfHwgIXJlc3VsdF9idWYucHRyKQotCQkJCWRpZSgiRmFpbGVkIHRvIGV4ZWN1dGUgaW50ZXJuYWwgbWVyZ2UiKTsKLQotCQkJaWYgKHdyaXRlX3NoYTFfZmlsZShyZXN1bHRfYnVmLnB0ciwgcmVzdWx0X2J1Zi5zaXplLAotCQkJCQkgICAgYmxvYl90eXBlLCByZXN1bHQuc2hhKSkKLQkJCQlkaWUoIlVuYWJsZSB0byBhZGQgJXMgdG8gZGF0YWJhc2UiLAotCQkJCSAgICBhLT5wYXRoKTsKLQotCQkJZnJlZShyZXN1bHRfYnVmLnB0cik7Ci0JCQlyZXN1bHQuY2xlYW4gPSAobWVyZ2Vfc3RhdHVzID09IDApOwotCQl9IGVsc2UgaWYgKFNfSVNHSVRMSU5LKGEtPm1vZGUpKSB7Ci0JCQlyZXN1bHQuY2xlYW4gPSAwOwotCQkJaGFzaGNweShyZXN1bHQuc2hhLCBhLT5zaGExKTsKLQkJfSBlbHNlIGlmIChTX0lTTE5LKGEtPm1vZGUpKSB7Ci0JCQloYXNoY3B5KHJlc3VsdC5zaGEsIGEtPnNoYTEpOwotCi0JCQlpZiAoIXNoYV9lcShhLT5zaGExLCBiLT5zaGExKSkKLQkJCQlyZXN1bHQuY2xlYW4gPSAwOwotCQl9IGVsc2UgewotCQkJZGllKCJ1bnN1cHBvcnRlZCBvYmplY3QgdHlwZSBpbiB0aGUgdHJlZSIpOwotCQl9Ci0JfQotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIHZvaWQgY29uZmxpY3RfcmVuYW1lX3JlbmFtZShzdHJ1Y3QgcmVuYW1lICpyZW4xLAotCQkJCSAgIGNvbnN0IGNoYXIgKmJyYW5jaDEsCi0JCQkJICAgc3RydWN0IHJlbmFtZSAqcmVuMiwKLQkJCQkgICBjb25zdCBjaGFyICpicmFuY2gyKQotewotCWNoYXIgKmRlbFsyXTsKLQlpbnQgZGVscCA9IDA7Ci0JY29uc3QgY2hhciAqcmVuMV9kc3QgPSByZW4xLT5wYWlyLT50d28tPnBhdGg7Ci0JY29uc3QgY2hhciAqcmVuMl9kc3QgPSByZW4yLT5wYWlyLT50d28tPnBhdGg7Ci0JY29uc3QgY2hhciAqZHN0X25hbWUxID0gcmVuMV9kc3Q7Ci0JY29uc3QgY2hhciAqZHN0X25hbWUyID0gcmVuMl9kc3Q7Ci0JaWYgKHN0cmluZ19saXN0X2hhc19zdHJpbmcoJmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgcmVuMV9kc3QpKSB7Ci0JCWRzdF9uYW1lMSA9IGRlbFtkZWxwKytdID0gdW5pcXVlX3BhdGgocmVuMV9kc3QsIGJyYW5jaDEpOwotCQlvdXRwdXQoMSwgIiVzIGlzIGEgZGlyZWN0b3J5IGluICVzIGFkZGVkIGFzICVzIGluc3RlYWQiLAotCQkgICAgICAgcmVuMV9kc3QsIGJyYW5jaDIsIGRzdF9uYW1lMSk7Ci0JCXJlbW92ZV9maWxlKDAsIHJlbjFfZHN0LCAwKTsKLQl9Ci0JaWYgKHN0cmluZ19saXN0X2hhc19zdHJpbmcoJmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgcmVuMl9kc3QpKSB7Ci0JCWRzdF9uYW1lMiA9IGRlbFtkZWxwKytdID0gdW5pcXVlX3BhdGgocmVuMl9kc3QsIGJyYW5jaDIpOwotCQlvdXRwdXQoMSwgIiVzIGlzIGEgZGlyZWN0b3J5IGluICVzIGFkZGVkIGFzICVzIGluc3RlYWQiLAotCQkgICAgICAgcmVuMl9kc3QsIGJyYW5jaDEsIGRzdF9uYW1lMik7Ci0JCXJlbW92ZV9maWxlKDAsIHJlbjJfZHN0LCAwKTsKLQl9Ci0JaWYgKGluZGV4X29ubHkpIHsKLQkJcmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShkc3RfbmFtZTEpOwotCQlyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKGRzdF9uYW1lMik7Ci0JCS8qCi0JCSAqIFVuY29tbWVudCB0byBsZWF2ZSB0aGUgY29uZmxpY3RpbmcgbmFtZXMgaW4gdGhlIHJlc3VsdGluZyB0cmVlCi0JCSAqCi0JCSAqIHVwZGF0ZV9maWxlKDAsIHJlbjEtPnBhaXItPnR3by0+c2hhMSwgcmVuMS0+cGFpci0+dHdvLT5tb2RlLCBkc3RfbmFtZTEpOwotCQkgKiB1cGRhdGVfZmlsZSgwLCByZW4yLT5wYWlyLT50d28tPnNoYTEsIHJlbjItPnBhaXItPnR3by0+bW9kZSwgZHN0X25hbWUyKTsKLQkJICovCi0JfSBlbHNlIHsKLQkJdXBkYXRlX3N0YWdlcyhkc3RfbmFtZTEsIE5VTEwsIHJlbjEtPnBhaXItPnR3bywgTlVMTCwgMSk7Ci0JCXVwZGF0ZV9zdGFnZXMoZHN0X25hbWUyLCBOVUxMLCBOVUxMLCByZW4yLT5wYWlyLT50d28sIDEpOwotCX0KLQl3aGlsZSAoZGVscC0tKQotCQlmcmVlKGRlbFtkZWxwXSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbmZsaWN0X3JlbmFtZV9kaXIoc3RydWN0IHJlbmFtZSAqcmVuMSwKLQkJCQljb25zdCBjaGFyICpicmFuY2gxKQotewotCWNoYXIgKm5ld19wYXRoID0gdW5pcXVlX3BhdGgocmVuMS0+cGFpci0+dHdvLT5wYXRoLCBicmFuY2gxKTsKLQlvdXRwdXQoMSwgIlJlbmFtZWQgJXMgdG8gJXMgaW5zdGVhZCIsIHJlbjEtPnBhaXItPm9uZS0+cGF0aCwgbmV3X3BhdGgpOwotCXJlbW92ZV9maWxlKDAsIHJlbjEtPnBhaXItPnR3by0+cGF0aCwgMCk7Ci0JdXBkYXRlX2ZpbGUoMCwgcmVuMS0+cGFpci0+dHdvLT5zaGExLCByZW4xLT5wYWlyLT50d28tPm1vZGUsIG5ld19wYXRoKTsKLQlmcmVlKG5ld19wYXRoKTsKLX0KLQotc3RhdGljIHZvaWQgY29uZmxpY3RfcmVuYW1lX3JlbmFtZV8yKHN0cnVjdCByZW5hbWUgKnJlbjEsCi0JCQkJICAgICBjb25zdCBjaGFyICpicmFuY2gxLAotCQkJCSAgICAgc3RydWN0IHJlbmFtZSAqcmVuMiwKLQkJCQkgICAgIGNvbnN0IGNoYXIgKmJyYW5jaDIpCi17Ci0JY2hhciAqbmV3X3BhdGgxID0gdW5pcXVlX3BhdGgocmVuMS0+cGFpci0+dHdvLT5wYXRoLCBicmFuY2gxKTsKLQljaGFyICpuZXdfcGF0aDIgPSB1bmlxdWVfcGF0aChyZW4yLT5wYWlyLT50d28tPnBhdGgsIGJyYW5jaDIpOwotCW91dHB1dCgxLCAiUmVuYW1lZCAlcyB0byAlcyBhbmQgJXMgdG8gJXMgaW5zdGVhZCIsCi0JICAgICAgIHJlbjEtPnBhaXItPm9uZS0+cGF0aCwgbmV3X3BhdGgxLAotCSAgICAgICByZW4yLT5wYWlyLT5vbmUtPnBhdGgsIG5ld19wYXRoMik7Ci0JcmVtb3ZlX2ZpbGUoMCwgcmVuMS0+cGFpci0+dHdvLT5wYXRoLCAwKTsKLQl1cGRhdGVfZmlsZSgwLCByZW4xLT5wYWlyLT50d28tPnNoYTEsIHJlbjEtPnBhaXItPnR3by0+bW9kZSwgbmV3X3BhdGgxKTsKLQl1cGRhdGVfZmlsZSgwLCByZW4yLT5wYWlyLT50d28tPnNoYTEsIHJlbjItPnBhaXItPnR3by0+bW9kZSwgbmV3X3BhdGgyKTsKLQlmcmVlKG5ld19wYXRoMik7Ci0JZnJlZShuZXdfcGF0aDEpOwotfQotCi1zdGF0aWMgaW50IHByb2Nlc3NfcmVuYW1lcyhzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmFfcmVuYW1lcywKLQkJCSAgIHN0cnVjdCBzdHJpbmdfbGlzdCAqYl9yZW5hbWVzLAotCQkJICAgY29uc3QgY2hhciAqYV9icmFuY2gsCi0JCQkgICBjb25zdCBjaGFyICpiX2JyYW5jaCkKLXsKLQlpbnQgY2xlYW5fbWVyZ2UgPSAxLCBpLCBqOwotCXN0cnVjdCBzdHJpbmdfbGlzdCBhX2J5X2RzdCA9IHtOVUxMLCAwLCAwLCAwfSwgYl9ieV9kc3QgPSB7TlVMTCwgMCwgMCwgMH07Ci0JY29uc3Qgc3RydWN0IHJlbmFtZSAqc3JlOwotCi0JZm9yIChpID0gMDsgaSA8IGFfcmVuYW1lcy0+bnI7IGkrKykgewotCQlzcmUgPSBhX3JlbmFtZXMtPml0ZW1zW2ldLnV0aWw7Ci0JCXN0cmluZ19saXN0X2luc2VydChzcmUtPnBhaXItPnR3by0+cGF0aCwgJmFfYnlfZHN0KS0+dXRpbAotCQkJPSBzcmUtPmRzdF9lbnRyeTsKLQl9Ci0JZm9yIChpID0gMDsgaSA8IGJfcmVuYW1lcy0+bnI7IGkrKykgewotCQlzcmUgPSBiX3JlbmFtZXMtPml0ZW1zW2ldLnV0aWw7Ci0JCXN0cmluZ19saXN0X2luc2VydChzcmUtPnBhaXItPnR3by0+cGF0aCwgJmJfYnlfZHN0KS0+dXRpbAotCQkJPSBzcmUtPmRzdF9lbnRyeTsKLQl9Ci0KLQlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGFfcmVuYW1lcy0+bnIgfHwgaiA8IGJfcmVuYW1lcy0+bnI7KSB7Ci0JCWludCBjb21wYXJlOwotCQljaGFyICpzcmM7Ci0JCXN0cnVjdCBzdHJpbmdfbGlzdCAqcmVuYW1lczEsICpyZW5hbWVzMiwgKnJlbmFtZXMyRHN0OwotCQlzdHJ1Y3QgcmVuYW1lICpyZW4xID0gTlVMTCwgKnJlbjIgPSBOVUxMOwotCQljb25zdCBjaGFyICpicmFuY2gxLCAqYnJhbmNoMjsKLQkJY29uc3QgY2hhciAqcmVuMV9zcmMsICpyZW4xX2RzdDsKLQotCQlpZiAoaSA+PSBhX3JlbmFtZXMtPm5yKSB7Ci0JCQljb21wYXJlID0gMTsKLQkJCXJlbjIgPSBiX3JlbmFtZXMtPml0ZW1zW2orK10udXRpbDsKLQkJfSBlbHNlIGlmIChqID49IGJfcmVuYW1lcy0+bnIpIHsKLQkJCWNvbXBhcmUgPSAtMTsKLQkJCXJlbjEgPSBhX3JlbmFtZXMtPml0ZW1zW2krK10udXRpbDsKLQkJfSBlbHNlIHsKLQkJCWNvbXBhcmUgPSBzdHJjbXAoYV9yZW5hbWVzLT5pdGVtc1tpXS5zdHJpbmcsCi0JCQkJCWJfcmVuYW1lcy0+aXRlbXNbal0uc3RyaW5nKTsKLQkJCWlmIChjb21wYXJlIDw9IDApCi0JCQkJcmVuMSA9IGFfcmVuYW1lcy0+aXRlbXNbaSsrXS51dGlsOwotCQkJaWYgKGNvbXBhcmUgPj0gMCkKLQkJCQlyZW4yID0gYl9yZW5hbWVzLT5pdGVtc1tqKytdLnV0aWw7Ci0JCX0KLQotCQkvKiBUT0RPOiByZWZhY3Rvciwgc28gdGhhdCAxLzIgYXJlIG5vdCBuZWVkZWQgKi8KLQkJaWYgKHJlbjEpIHsKLQkJCXJlbmFtZXMxID0gYV9yZW5hbWVzOwotCQkJcmVuYW1lczIgPSBiX3JlbmFtZXM7Ci0JCQlyZW5hbWVzMkRzdCA9ICZiX2J5X2RzdDsKLQkJCWJyYW5jaDEgPSBhX2JyYW5jaDsKLQkJCWJyYW5jaDIgPSBiX2JyYW5jaDsKLQkJfSBlbHNlIHsKLQkJCXN0cnVjdCByZW5hbWUgKnRtcDsKLQkJCXJlbmFtZXMxID0gYl9yZW5hbWVzOwotCQkJcmVuYW1lczIgPSBhX3JlbmFtZXM7Ci0JCQlyZW5hbWVzMkRzdCA9ICZhX2J5X2RzdDsKLQkJCWJyYW5jaDEgPSBiX2JyYW5jaDsKLQkJCWJyYW5jaDIgPSBhX2JyYW5jaDsKLQkJCXRtcCA9IHJlbjI7Ci0JCQlyZW4yID0gcmVuMTsKLQkJCXJlbjEgPSB0bXA7Ci0JCX0KLQkJc3JjID0gcmVuMS0+cGFpci0+b25lLT5wYXRoOwotCi0JCXJlbjEtPmRzdF9lbnRyeS0+cHJvY2Vzc2VkID0gMTsKLQkJcmVuMS0+c3JjX2VudHJ5LT5wcm9jZXNzZWQgPSAxOwotCi0JCWlmIChyZW4xLT5wcm9jZXNzZWQpCi0JCQljb250aW51ZTsKLQkJcmVuMS0+cHJvY2Vzc2VkID0gMTsKLQotCQlyZW4xX3NyYyA9IHJlbjEtPnBhaXItPm9uZS0+cGF0aDsKLQkJcmVuMV9kc3QgPSByZW4xLT5wYWlyLT50d28tPnBhdGg7Ci0KLQkJaWYgKHJlbjIpIHsKLQkJCWNvbnN0IGNoYXIgKnJlbjJfc3JjID0gcmVuMi0+cGFpci0+b25lLT5wYXRoOwotCQkJY29uc3QgY2hhciAqcmVuMl9kc3QgPSByZW4yLT5wYWlyLT50d28tPnBhdGg7Ci0JCQkvKiBSZW5hbWVkIGluIDEgYW5kIHJlbmFtZWQgaW4gMiAqLwotCQkJaWYgKHN0cmNtcChyZW4xX3NyYywgcmVuMl9zcmMpICE9IDApCi0JCQkJZGllKCJyZW4xLnNyYyAhPSByZW4yLnNyYyIpOwotCQkJcmVuMi0+ZHN0X2VudHJ5LT5wcm9jZXNzZWQgPSAxOwotCQkJcmVuMi0+cHJvY2Vzc2VkID0gMTsKLQkJCWlmIChzdHJjbXAocmVuMV9kc3QsIHJlbjJfZHN0KSAhPSAwKSB7Ci0JCQkJY2xlYW5fbWVyZ2UgPSAwOwotCQkJCW91dHB1dCgxLCAiQ09ORkxJQ1QgKHJlbmFtZS9yZW5hbWUpOiAiCi0JCQkJICAgICAgICJSZW5hbWUgXCIlc1wiLT5cIiVzXCIgaW4gYnJhbmNoIFwiJXNcIiAiCi0JCQkJICAgICAgICJyZW5hbWUgXCIlc1wiLT5cIiVzXCIgaW4gXCIlc1wiJXMiLAotCQkJCSAgICAgICBzcmMsIHJlbjFfZHN0LCBicmFuY2gxLAotCQkJCSAgICAgICBzcmMsIHJlbjJfZHN0LCBicmFuY2gyLAotCQkJCSAgICAgICBpbmRleF9vbmx5ID8gIiAobGVmdCB1bnJlc29sdmVkKSI6ICIiKTsKLQkJCQlpZiAoaW5kZXhfb25seSkgewotCQkJCQlyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKHNyYyk7Ci0JCQkJCXVwZGF0ZV9maWxlKDAsIHJlbjEtPnBhaXItPm9uZS0+c2hhMSwKLQkJCQkJCSAgICByZW4xLT5wYWlyLT5vbmUtPm1vZGUsIHNyYyk7Ci0JCQkJfQotCQkJCWNvbmZsaWN0X3JlbmFtZV9yZW5hbWUocmVuMSwgYnJhbmNoMSwgcmVuMiwgYnJhbmNoMik7Ci0JCQl9IGVsc2UgewotCQkJCXN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWZpOwotCQkJCXJlbW92ZV9maWxlKDEsIHJlbjFfc3JjLCAxKTsKLQkJCQltZmkgPSBtZXJnZV9maWxlKHJlbjEtPnBhaXItPm9uZSwKLQkJCQkJCSByZW4xLT5wYWlyLT50d28sCi0JCQkJCQkgcmVuMi0+cGFpci0+dHdvLAotCQkJCQkJIGJyYW5jaDEsCi0JCQkJCQkgYnJhbmNoMik7Ci0JCQkJaWYgKG1maS5tZXJnZSB8fCAhbWZpLmNsZWFuKQotCQkJCQlvdXRwdXQoMSwgIlJlbmFtZWQgJXMtPiVzIiwgc3JjLCByZW4xX2RzdCk7Ci0KLQkJCQlpZiAobWZpLm1lcmdlKQotCQkJCQlvdXRwdXQoMiwgIkF1dG8tbWVyZ2VkICVzIiwgcmVuMV9kc3QpOwotCi0JCQkJaWYgKCFtZmkuY2xlYW4pIHsKLQkJCQkJb3V0cHV0KDEsICJDT05GTElDVCAoY29udGVudCk6IG1lcmdlIGNvbmZsaWN0IGluICVzIiwKLQkJCQkJICAgICAgIHJlbjFfZHN0KTsKLQkJCQkJY2xlYW5fbWVyZ2UgPSAwOwotCi0JCQkJCWlmICghaW5kZXhfb25seSkKLQkJCQkJCXVwZGF0ZV9zdGFnZXMocmVuMV9kc3QsCi0JCQkJCQkJICAgICAgcmVuMS0+cGFpci0+b25lLAotCQkJCQkJCSAgICAgIHJlbjEtPnBhaXItPnR3bywKLQkJCQkJCQkgICAgICByZW4yLT5wYWlyLT50d28sCi0JCQkJCQkJICAgICAgMSAvKiBjbGVhciAqLyk7Ci0JCQkJfQotCQkJCXVwZGF0ZV9maWxlKG1maS5jbGVhbiwgbWZpLnNoYSwgbWZpLm1vZGUsIHJlbjFfZHN0KTsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCS8qIFJlbmFtZWQgaW4gMSwgbWF5YmUgY2hhbmdlZCBpbiAyICovCi0JCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKLQkJCS8qIHdlIG9ubHkgdXNlIHNoYTEgYW5kIG1vZGUgb2YgdGhlc2UgKi8KLQkJCXN0cnVjdCBkaWZmX2ZpbGVzcGVjIHNyY19vdGhlciwgZHN0X290aGVyOwotCQkJaW50IHRyeV9tZXJnZSwgc3RhZ2UgPSBhX3JlbmFtZXMgPT0gcmVuYW1lczEgPyAzOiAyOwotCi0JCQlyZW1vdmVfZmlsZSgxLCByZW4xX3NyYywgaW5kZXhfb25seSB8fCBzdGFnZSA9PSAzKTsKLQotCQkJaGFzaGNweShzcmNfb3RoZXIuc2hhMSwgcmVuMS0+c3JjX2VudHJ5LT5zdGFnZXNbc3RhZ2VdLnNoYSk7Ci0JCQlzcmNfb3RoZXIubW9kZSA9IHJlbjEtPnNyY19lbnRyeS0+c3RhZ2VzW3N0YWdlXS5tb2RlOwotCQkJaGFzaGNweShkc3Rfb3RoZXIuc2hhMSwgcmVuMS0+ZHN0X2VudHJ5LT5zdGFnZXNbc3RhZ2VdLnNoYSk7Ci0JCQlkc3Rfb3RoZXIubW9kZSA9IHJlbjEtPmRzdF9lbnRyeS0+c3RhZ2VzW3N0YWdlXS5tb2RlOwotCi0JCQl0cnlfbWVyZ2UgPSAwOwotCi0JCQlpZiAoc3RyaW5nX2xpc3RfaGFzX3N0cmluZygmY3VycmVudF9kaXJlY3Rvcnlfc2V0LCByZW4xX2RzdCkpIHsKLQkJCQljbGVhbl9tZXJnZSA9IDA7Ci0JCQkJb3V0cHV0KDEsICJDT05GTElDVCAocmVuYW1lL2RpcmVjdG9yeSk6IFJlbmFtZWQgJXMtPiVzIGluICVzICIKLQkJCQkgICAgICAgIiBkaXJlY3RvcnkgJXMgYWRkZWQgaW4gJXMiLAotCQkJCSAgICAgICByZW4xX3NyYywgcmVuMV9kc3QsIGJyYW5jaDEsCi0JCQkJICAgICAgIHJlbjFfZHN0LCBicmFuY2gyKTsKLQkJCQljb25mbGljdF9yZW5hbWVfZGlyKHJlbjEsIGJyYW5jaDEpOwotCQkJfSBlbHNlIGlmIChzaGFfZXEoc3JjX290aGVyLnNoYTEsIG51bGxfc2hhMSkpIHsKLQkJCQljbGVhbl9tZXJnZSA9IDA7Ci0JCQkJb3V0cHV0KDEsICJDT05GTElDVCAocmVuYW1lL2RlbGV0ZSk6IFJlbmFtZWQgJXMtPiVzIGluICVzICIKLQkJCQkgICAgICAgImFuZCBkZWxldGVkIGluICVzIiwKLQkJCQkgICAgICAgcmVuMV9zcmMsIHJlbjFfZHN0LCBicmFuY2gxLAotCQkJCSAgICAgICBicmFuY2gyKTsKLQkJCQl1cGRhdGVfZmlsZSgwLCByZW4xLT5wYWlyLT50d28tPnNoYTEsIHJlbjEtPnBhaXItPnR3by0+bW9kZSwgcmVuMV9kc3QpOwotCQkJfSBlbHNlIGlmICghc2hhX2VxKGRzdF9vdGhlci5zaGExLCBudWxsX3NoYTEpKSB7Ci0JCQkJY29uc3QgY2hhciAqbmV3X3BhdGg7Ci0JCQkJY2xlYW5fbWVyZ2UgPSAwOwotCQkJCXRyeV9tZXJnZSA9IDE7Ci0JCQkJb3V0cHV0KDEsICJDT05GTElDVCAocmVuYW1lL2FkZCk6IFJlbmFtZWQgJXMtPiVzIGluICVzLiAiCi0JCQkJICAgICAgICIlcyBhZGRlZCBpbiAlcyIsCi0JCQkJICAgICAgIHJlbjFfc3JjLCByZW4xX2RzdCwgYnJhbmNoMSwKLQkJCQkgICAgICAgcmVuMV9kc3QsIGJyYW5jaDIpOwotCQkJCW5ld19wYXRoID0gdW5pcXVlX3BhdGgocmVuMV9kc3QsIGJyYW5jaDIpOwotCQkJCW91dHB1dCgxLCAiQWRkZWQgYXMgJXMgaW5zdGVhZCIsIG5ld19wYXRoKTsKLQkJCQl1cGRhdGVfZmlsZSgwLCBkc3Rfb3RoZXIuc2hhMSwgZHN0X290aGVyLm1vZGUsIG5ld19wYXRoKTsKLQkJCX0gZWxzZSBpZiAoKGl0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAocmVuMV9kc3QsIHJlbmFtZXMyRHN0KSkpIHsKLQkJCQlyZW4yID0gaXRlbS0+dXRpbDsKLQkJCQljbGVhbl9tZXJnZSA9IDA7Ci0JCQkJcmVuMi0+cHJvY2Vzc2VkID0gMTsKLQkJCQlvdXRwdXQoMSwgIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogUmVuYW1lZCAlcy0+JXMgaW4gJXMuICIKLQkJCQkgICAgICAgIlJlbmFtZWQgJXMtPiVzIGluICVzIiwKLQkJCQkgICAgICAgcmVuMV9zcmMsIHJlbjFfZHN0LCBicmFuY2gxLAotCQkJCSAgICAgICByZW4yLT5wYWlyLT5vbmUtPnBhdGgsIHJlbjItPnBhaXItPnR3by0+cGF0aCwgYnJhbmNoMik7Ci0JCQkJY29uZmxpY3RfcmVuYW1lX3JlbmFtZV8yKHJlbjEsIGJyYW5jaDEsIHJlbjIsIGJyYW5jaDIpOwotCQkJfSBlbHNlCi0JCQkJdHJ5X21lcmdlID0gMTsKLQotCQkJaWYgKHRyeV9tZXJnZSkgewotCQkJCXN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvLCAqYSwgKmI7Ci0JCQkJc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyBtZmk7Ci0JCQkJc3JjX290aGVyLnBhdGggPSAoY2hhciAqKXJlbjFfc3JjOwotCi0JCQkJbyA9IHJlbjEtPnBhaXItPm9uZTsKLQkJCQlpZiAoYV9yZW5hbWVzID09IHJlbmFtZXMxKSB7Ci0JCQkJCWEgPSByZW4xLT5wYWlyLT50d287Ci0JCQkJCWIgPSAmc3JjX290aGVyOwotCQkJCX0gZWxzZSB7Ci0JCQkJCWIgPSByZW4xLT5wYWlyLT50d287Ci0JCQkJCWEgPSAmc3JjX290aGVyOwotCQkJCX0KLQkJCQltZmkgPSBtZXJnZV9maWxlKG8sIGEsIGIsCi0JCQkJCQlhX2JyYW5jaCwgYl9icmFuY2gpOwotCi0JCQkJaWYgKG1maS5jbGVhbiAmJgotCQkJCSAgICBzaGFfZXEobWZpLnNoYSwgcmVuMS0+cGFpci0+dHdvLT5zaGExKSAmJgotCQkJCSAgICBtZmkubW9kZSA9PSByZW4xLT5wYWlyLT50d28tPm1vZGUpCi0JCQkJCS8qCi0JCQkJCSAqIFRoaXMgbWVzc2FnZWQgaXMgcGFydCBvZgotCQkJCQkgKiB0NjAyMiB0ZXN0LiBJZiB5b3UgY2hhbmdlCi0JCQkJCSAqIGl0IHVwZGF0ZSB0aGUgdGVzdCB0b28uCi0JCQkJCSAqLwotCQkJCQlvdXRwdXQoMywgIlNraXBwZWQgJXMgKG1lcmdlZCBzYW1lIGFzIGV4aXN0aW5nKSIsIHJlbjFfZHN0KTsKLQkJCQllbHNlIHsKLQkJCQkJaWYgKG1maS5tZXJnZSB8fCAhbWZpLmNsZWFuKQotCQkJCQkJb3V0cHV0KDEsICJSZW5hbWVkICVzID0+ICVzIiwgcmVuMV9zcmMsIHJlbjFfZHN0KTsKLQkJCQkJaWYgKG1maS5tZXJnZSkKLQkJCQkJCW91dHB1dCgyLCAiQXV0by1tZXJnZWQgJXMiLCByZW4xX2RzdCk7Ci0JCQkJCWlmICghbWZpLmNsZWFuKSB7Ci0JCQkJCQlvdXRwdXQoMSwgIkNPTkZMSUNUIChyZW5hbWUvbW9kaWZ5KTogTWVyZ2UgY29uZmxpY3QgaW4gJXMiLAotCQkJCQkJICAgICAgIHJlbjFfZHN0KTsKLQkJCQkJCWNsZWFuX21lcmdlID0gMDsKLQotCQkJCQkJaWYgKCFpbmRleF9vbmx5KQotCQkJCQkJCXVwZGF0ZV9zdGFnZXMocmVuMV9kc3QsCi0JCQkJCQkJCSAgICAgIG8sIGEsIGIsIDEpOwotCQkJCQl9Ci0JCQkJCXVwZGF0ZV9maWxlKG1maS5jbGVhbiwgbWZpLnNoYSwgbWZpLm1vZGUsIHJlbjFfZHN0KTsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0Jc3RyaW5nX2xpc3RfY2xlYXIoJmFfYnlfZHN0LCAwKTsKLQlzdHJpbmdfbGlzdF9jbGVhcigmYl9ieV9kc3QsIDApOwotCi0JcmV0dXJuIGNsZWFuX21lcmdlOwotfQotCi1zdGF0aWMgdW5zaWduZWQgY2hhciAqc3RhZ2Vfc2hhKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYSwgdW5zaWduZWQgbW9kZSkKLXsKLQlyZXR1cm4gKGlzX251bGxfc2hhMShzaGEpIHx8IG1vZGUgPT0gMCkgPyBOVUxMOiAodW5zaWduZWQgY2hhciAqKXNoYTsKLX0KLQotLyogUGVyIGVudHJ5IG1lcmdlIGZ1bmN0aW9uICovCi1zdGF0aWMgaW50IHByb2Nlc3NfZW50cnkoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YWdlX2RhdGEgKmVudHJ5LAotCQkJIGNvbnN0IGNoYXIgKmJyYW5jaDEsCi0JCQkgY29uc3QgY2hhciAqYnJhbmNoMikKLXsKLQkvKgotCXByaW50ZigicHJvY2Vzc2luZyBlbnRyeSwgY2xlYW4gY2FjaGU6ICVzXG4iLCBpbmRleF9vbmx5ID8gInllcyI6ICJubyIpOwotCXByaW50X2luZGV4X2VudHJ5KCJcdHBhdGg6ICIsIGVudHJ5KTsKLQkqLwotCWludCBjbGVhbl9tZXJnZSA9IDE7Ci0JdW5zaWduZWQgb19tb2RlID0gZW50cnktPnN0YWdlc1sxXS5tb2RlOwotCXVuc2lnbmVkIGFfbW9kZSA9IGVudHJ5LT5zdGFnZXNbMl0ubW9kZTsKLQl1bnNpZ25lZCBiX21vZGUgPSBlbnRyeS0+c3RhZ2VzWzNdLm1vZGU7Ci0JdW5zaWduZWQgY2hhciAqb19zaGEgPSBzdGFnZV9zaGEoZW50cnktPnN0YWdlc1sxXS5zaGEsIG9fbW9kZSk7Ci0JdW5zaWduZWQgY2hhciAqYV9zaGEgPSBzdGFnZV9zaGEoZW50cnktPnN0YWdlc1syXS5zaGEsIGFfbW9kZSk7Ci0JdW5zaWduZWQgY2hhciAqYl9zaGEgPSBzdGFnZV9zaGEoZW50cnktPnN0YWdlc1szXS5zaGEsIGJfbW9kZSk7Ci0KLQlpZiAob19zaGEgJiYgKCFhX3NoYSB8fCAhYl9zaGEpKSB7Ci0JCS8qIENhc2UgQTogRGVsZXRlZCBpbiBvbmUgKi8KLQkJaWYgKCghYV9zaGEgJiYgIWJfc2hhKSB8fAotCQkgICAgKHNoYV9lcShhX3NoYSwgb19zaGEpICYmICFiX3NoYSkgfHwKLQkJICAgICghYV9zaGEgJiYgc2hhX2VxKGJfc2hhLCBvX3NoYSkpKSB7Ci0JCQkvKiBEZWxldGVkIGluIGJvdGggb3IgZGVsZXRlZCBpbiBvbmUgYW5kCi0JCQkgKiB1bmNoYW5nZWQgaW4gdGhlIG90aGVyICovCi0JCQlpZiAoYV9zaGEpCi0JCQkJb3V0cHV0KDIsICJSZW1vdmVkICVzIiwgcGF0aCk7Ci0JCQkvKiBkbyBub3QgdG91Y2ggd29ya2luZyBmaWxlIGlmIGl0IGRpZCBub3QgZXhpc3QgKi8KLQkJCXJlbW92ZV9maWxlKDEsIHBhdGgsICFhX3NoYSk7Ci0JCX0gZWxzZSB7Ci0JCQkvKiBEZWxldGVkIGluIG9uZSBhbmQgY2hhbmdlZCBpbiB0aGUgb3RoZXIgKi8KLQkJCWNsZWFuX21lcmdlID0gMDsKLQkJCWlmICghYV9zaGEpIHsKLQkJCQlvdXRwdXQoMSwgIkNPTkZMSUNUIChkZWxldGUvbW9kaWZ5KTogJXMgZGVsZXRlZCBpbiAlcyAiCi0JCQkJICAgICAgICJhbmQgbW9kaWZpZWQgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCBpbiB0cmVlLiIsCi0JCQkJICAgICAgIHBhdGgsIGJyYW5jaDEsCi0JCQkJICAgICAgIGJyYW5jaDIsIGJyYW5jaDIsIHBhdGgpOwotCQkJCXVwZGF0ZV9maWxlKDAsIGJfc2hhLCBiX21vZGUsIHBhdGgpOwotCQkJfSBlbHNlIHsKLQkJCQlvdXRwdXQoMSwgIkNPTkZMSUNUIChkZWxldGUvbW9kaWZ5KTogJXMgZGVsZXRlZCBpbiAlcyAiCi0JCQkJICAgICAgICJhbmQgbW9kaWZpZWQgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCBpbiB0cmVlLiIsCi0JCQkJICAgICAgIHBhdGgsIGJyYW5jaDIsCi0JCQkJICAgICAgIGJyYW5jaDEsIGJyYW5jaDEsIHBhdGgpOwotCQkJCXVwZGF0ZV9maWxlKDAsIGFfc2hhLCBhX21vZGUsIHBhdGgpOwotCQkJfQotCQl9Ci0KLQl9IGVsc2UgaWYgKCghb19zaGEgJiYgYV9zaGEgJiYgIWJfc2hhKSB8fAotCQkgICAoIW9fc2hhICYmICFhX3NoYSAmJiBiX3NoYSkpIHsKLQkJLyogQ2FzZSBCOiBBZGRlZCBpbiBvbmUuICovCi0JCWNvbnN0IGNoYXIgKmFkZF9icmFuY2g7Ci0JCWNvbnN0IGNoYXIgKm90aGVyX2JyYW5jaDsKLQkJdW5zaWduZWQgbW9kZTsKLQkJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhOwotCQljb25zdCBjaGFyICpjb25mOwotCi0JCWlmIChhX3NoYSkgewotCQkJYWRkX2JyYW5jaCA9IGJyYW5jaDE7Ci0JCQlvdGhlcl9icmFuY2ggPSBicmFuY2gyOwotCQkJbW9kZSA9IGFfbW9kZTsKLQkJCXNoYSA9IGFfc2hhOwotCQkJY29uZiA9ICJmaWxlL2RpcmVjdG9yeSI7Ci0JCX0gZWxzZSB7Ci0JCQlhZGRfYnJhbmNoID0gYnJhbmNoMjsKLQkJCW90aGVyX2JyYW5jaCA9IGJyYW5jaDE7Ci0JCQltb2RlID0gYl9tb2RlOwotCQkJc2hhID0gYl9zaGE7Ci0JCQljb25mID0gImRpcmVjdG9yeS9maWxlIjsKLQkJfQotCQlpZiAoc3RyaW5nX2xpc3RfaGFzX3N0cmluZygmY3VycmVudF9kaXJlY3Rvcnlfc2V0LCBwYXRoKSkgewotCQkJY29uc3QgY2hhciAqbmV3X3BhdGggPSB1bmlxdWVfcGF0aChwYXRoLCBhZGRfYnJhbmNoKTsKLQkJCWNsZWFuX21lcmdlID0gMDsKLQkJCW91dHB1dCgxLCAiQ09ORkxJQ1QgKCVzKTogVGhlcmUgaXMgYSBkaXJlY3Rvcnkgd2l0aCBuYW1lICVzIGluICVzLiAiCi0JCQkgICAgICAgIkFkZGVkICVzIGFzICVzIiwKLQkJCSAgICAgICBjb25mLCBwYXRoLCBvdGhlcl9icmFuY2gsIHBhdGgsIG5ld19wYXRoKTsKLQkJCXJlbW92ZV9maWxlKDAsIHBhdGgsIDApOwotCQkJdXBkYXRlX2ZpbGUoMCwgc2hhLCBtb2RlLCBuZXdfcGF0aCk7Ci0JCX0gZWxzZSB7Ci0JCQlvdXRwdXQoMiwgIkFkZGVkICVzIiwgcGF0aCk7Ci0JCQl1cGRhdGVfZmlsZSgxLCBzaGEsIG1vZGUsIHBhdGgpOwotCQl9Ci0JfSBlbHNlIGlmIChhX3NoYSAmJiBiX3NoYSkgewotCQkvKiBDYXNlIEM6IEFkZGVkIGluIGJvdGggKGNoZWNrIGZvciBzYW1lIHBlcm1pc3Npb25zKSBhbmQgKi8KLQkJLyogY2FzZSBEOiBNb2RpZmllZCBpbiBib3RoLCBidXQgZGlmZmVyZW50bHkuICovCi0JCWNvbnN0IGNoYXIgKnJlYXNvbiA9ICJjb250ZW50IjsKLQkJc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyBtZmk7Ci0JCXN0cnVjdCBkaWZmX2ZpbGVzcGVjIG8sIGEsIGI7Ci0KLQkJaWYgKCFvX3NoYSkgewotCQkJcmVhc29uID0gImFkZC9hZGQiOwotCQkJb19zaGEgPSAodW5zaWduZWQgY2hhciAqKW51bGxfc2hhMTsKLQkJfQotCQlvdXRwdXQoMiwgIkF1dG8tbWVyZ2VkICVzIiwgcGF0aCk7Ci0JCW8ucGF0aCA9IGEucGF0aCA9IGIucGF0aCA9IChjaGFyICopcGF0aDsKLQkJaGFzaGNweShvLnNoYTEsIG9fc2hhKTsKLQkJby5tb2RlID0gb19tb2RlOwotCQloYXNoY3B5KGEuc2hhMSwgYV9zaGEpOwotCQlhLm1vZGUgPSBhX21vZGU7Ci0JCWhhc2hjcHkoYi5zaGExLCBiX3NoYSk7Ci0JCWIubW9kZSA9IGJfbW9kZTsKLQotCQltZmkgPSBtZXJnZV9maWxlKCZvLCAmYSwgJmIsCi0JCQkJIGJyYW5jaDEsIGJyYW5jaDIpOwotCi0JCWNsZWFuX21lcmdlID0gbWZpLmNsZWFuOwotCQlpZiAobWZpLmNsZWFuKQotCQkJdXBkYXRlX2ZpbGUoMSwgbWZpLnNoYSwgbWZpLm1vZGUsIHBhdGgpOwotCQllbHNlIGlmIChTX0lTR0lUTElOSyhtZmkubW9kZSkpCi0JCQlvdXRwdXQoMSwgIkNPTkZMSUNUIChzdWJtb2R1bGUpOiBNZXJnZSBjb25mbGljdCBpbiAlcyAiCi0JCQkgICAgICAgIi0gbmVlZHMgJXMiLCBwYXRoLCBzaGExX3RvX2hleChiLnNoYTEpKTsKLQkJZWxzZSB7Ci0JCQlvdXRwdXQoMSwgIkNPTkZMSUNUICglcyk6IE1lcmdlIGNvbmZsaWN0IGluICVzIiwKLQkJCQkJcmVhc29uLCBwYXRoKTsKLQotCQkJaWYgKGluZGV4X29ubHkpCi0JCQkJdXBkYXRlX2ZpbGUoMCwgbWZpLnNoYSwgbWZpLm1vZGUsIHBhdGgpOwotCQkJZWxzZQotCQkJCXVwZGF0ZV9maWxlX2ZsYWdzKG1maS5zaGEsIG1maS5tb2RlLCBwYXRoLAotCQkJCQkgICAgICAwIC8qIHVwZGF0ZV9jYWNoZSAqLywgMSAvKiB1cGRhdGVfd29ya2luZ19kaXJlY3RvcnkgKi8pOwotCQl9Ci0JfSBlbHNlIGlmICghb19zaGEgJiYgIWFfc2hhICYmICFiX3NoYSkgewotCQkvKgotCQkgKiB0aGlzIGVudHJ5IHdhcyBkZWxldGVkIGFsdG9nZXRoZXIuIGFfbW9kZSA9PSAwIG1lYW5zCi0JCSAqIHdlIGhhZCB0aGF0IHBhdGggYW5kIHdhbnQgdG8gYWN0aXZlbHkgcmVtb3ZlIGl0LgotCQkgKi8KLQkJcmVtb3ZlX2ZpbGUoMSwgcGF0aCwgIWFfbW9kZSk7Ci0JfSBlbHNlCi0JCWRpZSgiRmF0YWwgbWVyZ2UgZmFpbHVyZSwgc2hvdWxkbid0IGhhcHBlbi4iKTsKLQotCXJldHVybiBjbGVhbl9tZXJnZTsKLX0KLQotaW50IG1lcmdlX3RyZWVzKHN0cnVjdCB0cmVlICpoZWFkLAotCQlzdHJ1Y3QgdHJlZSAqbWVyZ2UsCi0JCXN0cnVjdCB0cmVlICpjb21tb24sCi0JCWNvbnN0IGNoYXIgKmJyYW5jaDEsCi0JCWNvbnN0IGNoYXIgKmJyYW5jaDIsCi0JCXN0cnVjdCB0cmVlICoqcmVzdWx0KQotewotCWludCBjb2RlLCBjbGVhbjsKLQotCWlmIChzdWJ0cmVlX21lcmdlKSB7Ci0JCW1lcmdlID0gc2hpZnRfdHJlZV9vYmplY3QoaGVhZCwgbWVyZ2UpOwotCQljb21tb24gPSBzaGlmdF90cmVlX29iamVjdChoZWFkLCBjb21tb24pOwotCX0KLQotCWlmIChzaGFfZXEoY29tbW9uLT5vYmplY3Quc2hhMSwgbWVyZ2UtPm9iamVjdC5zaGExKSkgewotCQlvdXRwdXQoMCwgIkFscmVhZHkgdXB0b2RhdGUhIik7Ci0JCSpyZXN1bHQgPSBoZWFkOwotCQlyZXR1cm4gMTsKLQl9Ci0KLQljb2RlID0gZ2l0X21lcmdlX3RyZWVzKGluZGV4X29ubHksIGNvbW1vbiwgaGVhZCwgbWVyZ2UpOwotCi0JaWYgKGNvZGUgIT0gMCkKLQkJZGllKCJtZXJnaW5nIG9mIHRyZWVzICVzIGFuZCAlcyBmYWlsZWQiLAotCQkgICAgc2hhMV90b19oZXgoaGVhZC0+b2JqZWN0LnNoYTEpLAotCQkgICAgc2hhMV90b19oZXgobWVyZ2UtPm9iamVjdC5zaGExKSk7Ci0KLQlpZiAodW5tZXJnZWRfY2FjaGUoKSkgewotCQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmVudHJpZXMsICpyZV9oZWFkLCAqcmVfbWVyZ2U7Ci0JCWludCBpOwotCQlzdHJpbmdfbGlzdF9jbGVhcigmY3VycmVudF9maWxlX3NldCwgMSk7Ci0JCXN0cmluZ19saXN0X2NsZWFyKCZjdXJyZW50X2RpcmVjdG9yeV9zZXQsIDEpOwotCQlnZXRfZmlsZXNfZGlycyhoZWFkKTsKLQkJZ2V0X2ZpbGVzX2RpcnMobWVyZ2UpOwotCi0JCWVudHJpZXMgPSBnZXRfdW5tZXJnZWQoKTsKLQkJcmVfaGVhZCAgPSBnZXRfcmVuYW1lcyhoZWFkLCBjb21tb24sIGhlYWQsIG1lcmdlLCBlbnRyaWVzKTsKLQkJcmVfbWVyZ2UgPSBnZXRfcmVuYW1lcyhtZXJnZSwgY29tbW9uLCBoZWFkLCBtZXJnZSwgZW50cmllcyk7Ci0JCWNsZWFuID0gcHJvY2Vzc19yZW5hbWVzKHJlX2hlYWQsIHJlX21lcmdlLAotCQkJCWJyYW5jaDEsIGJyYW5jaDIpOwotCQlmb3IgKGkgPSAwOyBpIDwgZW50cmllcy0+bnI7IGkrKykgewotCQkJY29uc3QgY2hhciAqcGF0aCA9IGVudHJpZXMtPml0ZW1zW2ldLnN0cmluZzsKLQkJCXN0cnVjdCBzdGFnZV9kYXRhICplID0gZW50cmllcy0+aXRlbXNbaV0udXRpbDsKLQkJCWlmICghZS0+cHJvY2Vzc2VkCi0JCQkJJiYgIXByb2Nlc3NfZW50cnkocGF0aCwgZSwgYnJhbmNoMSwgYnJhbmNoMikpCi0JCQkJY2xlYW4gPSAwOwotCQl9Ci0KLQkJc3RyaW5nX2xpc3RfY2xlYXIocmVfbWVyZ2UsIDApOwotCQlzdHJpbmdfbGlzdF9jbGVhcihyZV9oZWFkLCAwKTsKLQkJc3RyaW5nX2xpc3RfY2xlYXIoZW50cmllcywgMSk7Ci0KLQl9Ci0JZWxzZQotCQljbGVhbiA9IDE7Ci0KLQlpZiAoaW5kZXhfb25seSkKLQkJKnJlc3VsdCA9IHdyaXRlX3RyZWVfZnJvbV9tZW1vcnkoKTsKLQotCXJldHVybiBjbGVhbjsKLX0KLQotc3RhdGljIHN0cnVjdCBjb21taXRfbGlzdCAqcmV2ZXJzZV9jb21taXRfbGlzdChzdHJ1Y3QgY29tbWl0X2xpc3QgKmxpc3QpCi17Ci0Jc3RydWN0IGNvbW1pdF9saXN0ICpuZXh0ID0gTlVMTCwgKmN1cnJlbnQsICpiYWNrdXA7Ci0JZm9yIChjdXJyZW50ID0gbGlzdDsgY3VycmVudDsgY3VycmVudCA9IGJhY2t1cCkgewotCQliYWNrdXAgPSBjdXJyZW50LT5uZXh0OwotCQljdXJyZW50LT5uZXh0ID0gbmV4dDsKLQkJbmV4dCA9IGN1cnJlbnQ7Ci0JfQotCXJldHVybiBuZXh0OwotfQotCi0vKgotICogTWVyZ2UgdGhlIGNvbW1pdHMgaDEgYW5kIGgyLCByZXR1cm4gdGhlIHJlc3VsdGluZyB2aXJ0dWFsCi0gKiBjb21taXQgb2JqZWN0IGFuZCBhIGZsYWcgaW5kaWNhdGluZyB0aGUgY2xlYW5uZXNzIG9mIHRoZSBtZXJnZS4KLSAqLwotaW50IG1lcmdlX3JlY3Vyc2l2ZShzdHJ1Y3QgY29tbWl0ICpoMSwKLQkJICAgIHN0cnVjdCBjb21taXQgKmgyLAotCQkgICAgY29uc3QgY2hhciAqYnJhbmNoMSwKLQkJICAgIGNvbnN0IGNoYXIgKmJyYW5jaDIsCi0JCSAgICBzdHJ1Y3QgY29tbWl0X2xpc3QgKmNhLAotCQkgICAgc3RydWN0IGNvbW1pdCAqKnJlc3VsdCkKLXsKLQlzdHJ1Y3QgY29tbWl0X2xpc3QgKml0ZXI7Ci0Jc3RydWN0IGNvbW1pdCAqbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnM7Ci0Jc3RydWN0IHRyZWUgKm1ydHJlZSA9IG1ydHJlZTsKLQlpbnQgY2xlYW47Ci0KLQlpZiAoc2hvdyg0KSkgewotCQlvdXRwdXQoNCwgIk1lcmdpbmc6Iik7Ci0JCW91dHB1dF9jb21taXRfdGl0bGUoaDEpOwotCQlvdXRwdXRfY29tbWl0X3RpdGxlKGgyKTsKLQl9Ci0KLQlpZiAoIWNhKSB7Ci0JCWNhID0gZ2V0X21lcmdlX2Jhc2VzKGgxLCBoMiwgMSk7Ci0JCWNhID0gcmV2ZXJzZV9jb21taXRfbGlzdChjYSk7Ci0JfQotCi0JaWYgKHNob3coNSkpIHsKLQkJb3V0cHV0KDUsICJmb3VuZCAldSBjb21tb24gYW5jZXN0b3Iocyk6IiwgY29tbWl0X2xpc3RfY291bnQoY2EpKTsKLQkJZm9yIChpdGVyID0gY2E7IGl0ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KQotCQkJb3V0cHV0X2NvbW1pdF90aXRsZShpdGVyLT5pdGVtKTsKLQl9Ci0KLQltZXJnZWRfY29tbW9uX2FuY2VzdG9ycyA9IHBvcF9jb21taXQoJmNhKTsKLQlpZiAobWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMgPT0gTlVMTCkgewotCQkvKiBpZiB0aGVyZSBpcyBubyBjb21tb24gYW5jZXN0b3IsIG1ha2UgYW4gZW1wdHkgdHJlZSAqLwotCQlzdHJ1Y3QgdHJlZSAqdHJlZSA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCB0cmVlKSk7Ci0KLQkJdHJlZS0+b2JqZWN0LnBhcnNlZCA9IDE7Ci0JCXRyZWUtPm9iamVjdC50eXBlID0gT0JKX1RSRUU7Ci0JCXByZXRlbmRfc2hhMV9maWxlKE5VTEwsIDAsIE9CSl9UUkVFLCB0cmVlLT5vYmplY3Quc2hhMSk7Ci0JCW1lcmdlZF9jb21tb25fYW5jZXN0b3JzID0gbWFrZV92aXJ0dWFsX2NvbW1pdCh0cmVlLCAiYW5jZXN0b3IiKTsKLQl9Ci0KLQlmb3IgKGl0ZXIgPSBjYTsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQpIHsKLQkJY2FsbF9kZXB0aCsrOwotCQkvKgotCQkgKiBXaGVuIHRoZSBtZXJnZSBmYWlscywgdGhlIHJlc3VsdCBjb250YWlucyBmaWxlcwotCQkgKiB3aXRoIGNvbmZsaWN0IG1hcmtlcnMuIFRoZSBjbGVhbm5lc3MgZmxhZyBpcwotCQkgKiBpZ25vcmVkLCBpdCB3YXMgbmV2ZXIgYWN0dWFsbHkgdXNlZCwgYXMgcmVzdWx0IG9mCi0JCSAqIG1lcmdlX3RyZWVzIGhhcyBhbHdheXMgb3ZlcndyaXR0ZW4gaXQ6IHRoZSBjb21taXR0ZWQKLQkJICogImNvbmZsaWN0cyIgd2VyZSBhbHJlYWR5IHJlc29sdmVkLgotCQkgKi8KLQkJZGlzY2FyZF9jYWNoZSgpOwotCQltZXJnZV9yZWN1cnNpdmUobWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMsIGl0ZXItPml0ZW0sCi0JCQkJIlRlbXBvcmFyeSBtZXJnZSBicmFuY2ggMSIsCi0JCQkJIlRlbXBvcmFyeSBtZXJnZSBicmFuY2ggMiIsCi0JCQkJTlVMTCwKLQkJCQkmbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMpOwotCQljYWxsX2RlcHRoLS07Ci0KLQkJaWYgKCFtZXJnZWRfY29tbW9uX2FuY2VzdG9ycykKLQkJCWRpZSgibWVyZ2UgcmV0dXJuZWQgbm8gY29tbWl0Iik7Ci0JfQotCi0JZGlzY2FyZF9jYWNoZSgpOwotCWlmICghY2FsbF9kZXB0aCkgewotCQlyZWFkX2NhY2hlKCk7Ci0JCWluZGV4X29ubHkgPSAwOwotCX0gZWxzZQotCQlpbmRleF9vbmx5ID0gMTsKLQotCWNsZWFuID0gbWVyZ2VfdHJlZXMoaDEtPnRyZWUsIGgyLT50cmVlLCBtZXJnZWRfY29tbW9uX2FuY2VzdG9ycy0+dHJlZSwKLQkJCSAgICBicmFuY2gxLCBicmFuY2gyLCAmbXJ0cmVlKTsKLQotCWlmIChpbmRleF9vbmx5KSB7Ci0JCSpyZXN1bHQgPSBtYWtlX3ZpcnR1YWxfY29tbWl0KG1ydHJlZSwgIm1lcmdlZCB0cmVlIik7Ci0JCWNvbW1pdF9saXN0X2luc2VydChoMSwgJigqcmVzdWx0KS0+cGFyZW50cyk7Ci0JCWNvbW1pdF9saXN0X2luc2VydChoMiwgJigqcmVzdWx0KS0+cGFyZW50cy0+bmV4dCk7Ci0JfQotCWZsdXNoX291dHB1dCgpOwotCXJldHVybiBjbGVhbjsKLX0KLQogc3RhdGljIGNvbnN0IGNoYXIgKmJldHRlcl9icmFuY2hfbmFtZShjb25zdCBjaGFyICpicmFuY2gpCiB7CiAJc3RhdGljIGNoYXIgZ2l0aGVhZF9lbnZbOCArIDQwICsgMV07CkBAIC0xMjk1LDEwMyArMTUsNTggQEAKIAlyZXR1cm4gbmFtZSA/IG5hbWUgOiBicmFuY2g7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgY29tbWl0ICpnZXRfcmVmKGNvbnN0IGNoYXIgKnJlZikKLXsKLQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCXN0cnVjdCBvYmplY3QgKm9iamVjdDsKLQotCWlmIChnZXRfc2hhMShyZWYsIHNoYTEpKQotCQlkaWUoIkNvdWxkIG5vdCByZXNvbHZlIHJlZiAnJXMnIiwgcmVmKTsKLQlvYmplY3QgPSBkZXJlZl90YWcocGFyc2Vfb2JqZWN0KHNoYTEpLCByZWYsIHN0cmxlbihyZWYpKTsKLQlpZiAoIW9iamVjdCkKLQkJcmV0dXJuIE5VTEw7Ci0JaWYgKG9iamVjdC0+dHlwZSA9PSBPQkpfVFJFRSkKLQkJcmV0dXJuIG1ha2VfdmlydHVhbF9jb21taXQoKHN0cnVjdCB0cmVlKilvYmplY3QsCi0JCQliZXR0ZXJfYnJhbmNoX25hbWUocmVmKSk7Ci0JaWYgKG9iamVjdC0+dHlwZSAhPSBPQkpfQ09NTUlUKQotCQlyZXR1cm4gTlVMTDsKLQlpZiAocGFyc2VfY29tbWl0KChzdHJ1Y3QgY29tbWl0ICopb2JqZWN0KSkKLQkJZGllKCJDb3VsZCBub3QgcGFyc2UgY29tbWl0ICclcyciLCBzaGExX3RvX2hleChvYmplY3QtPnNoYTEpKTsKLQlyZXR1cm4gKHN0cnVjdCBjb21taXQgKilvYmplY3Q7Ci19Ci0KLXN0YXRpYyBpbnQgbWVyZ2VfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQotewotCWlmICghc3RyY2FzZWNtcCh2YXIsICJtZXJnZS52ZXJib3NpdHkiKSkgewotCQl2ZXJib3NpdHkgPSBnaXRfY29uZmlnX2ludCh2YXIsIHZhbHVlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWlmICghc3RyY2FzZWNtcCh2YXIsICJkaWZmLnJlbmFtZWxpbWl0IikpIHsKLQkJZGlmZl9yZW5hbWVfbGltaXQgPSBnaXRfY29uZmlnX2ludCh2YXIsIHZhbHVlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWlmICghc3RyY2FzZWNtcCh2YXIsICJtZXJnZS5yZW5hbWVsaW1pdCIpKSB7Ci0JCW1lcmdlX3JlbmFtZV9saW1pdCA9IGdpdF9jb25maWdfaW50KHZhciwgdmFsdWUpOwotCQlyZXR1cm4gMDsKLQl9Ci0JcmV0dXJuIGdpdF9kZWZhdWx0X2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7Ci19Ci0KIGludCBjbWRfbWVyZ2VfcmVjdXJzaXZlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewotCXN0YXRpYyBjb25zdCBjaGFyICpiYXNlc1syMF07Ci0Jc3RhdGljIHVuc2lnbmVkIGJhc2VzX2NvdW50ID0gMDsKLQlpbnQgaSwgY2xlYW47Ci0JY29uc3QgY2hhciAqYnJhbmNoMSwgKmJyYW5jaDI7Ci0Jc3RydWN0IGNvbW1pdCAqcmVzdWx0LCAqaDEsICpoMjsKLQlzdHJ1Y3QgY29tbWl0X2xpc3QgKmNhID0gTlVMTDsKLQlzdHJ1Y3QgbG9ja19maWxlICpsb2NrID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOwotCWludCBpbmRleF9mZDsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpiYXNlc1syMV07CisJdW5zaWduZWQgYmFzZXNfY291bnQgPSAwOworCWludCBpLCBmYWlsZWQ7CisJdW5zaWduZWQgY2hhciBoMVsyMF0sIGgyWzIwXTsKKwlzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyBvOworCXN0cnVjdCBjb21taXQgKnJlc3VsdDsKIAorCWluaXRfbWVyZ2Vfb3B0aW9ucygmbyk7CiAJaWYgKGFyZ3ZbMF0pIHsKIAkJaW50IG5hbWVsZW4gPSBzdHJsZW4oYXJndlswXSk7CiAJCWlmICg4IDwgbmFtZWxlbiAmJgogCQkgICAgIXN0cmNtcChhcmd2WzBdICsgbmFtZWxlbiAtIDgsICItc3VidHJlZSIpKQotCQkJc3VidHJlZV9tZXJnZSA9IDE7CisJCQlvLnN1YnRyZWVfbWVyZ2UgPSAxOwogCX0KIAotCWdpdF9jb25maWcobWVyZ2VfY29uZmlnLCBOVUxMKTsKLQlpZiAoZ2V0ZW52KCJHSVRfTUVSR0VfVkVSQk9TSVRZIikpCi0JCXZlcmJvc2l0eSA9IHN0cnRvbChnZXRlbnYoIkdJVF9NRVJHRV9WRVJCT1NJVFkiKSwgTlVMTCwgMTApOwotCiAJaWYgKGFyZ2MgPCA0KQogCQlkaWUoIlVzYWdlOiAlcyA8YmFzZT4uLi4gLS0gPGhlYWQ+IDxyZW1vdGU+IC4uLlxuIiwgYXJndlswXSk7CiAKIAlmb3IgKGkgPSAxOyBpIDwgYXJnYzsgKytpKSB7CiAJCWlmICghc3RyY21wKGFyZ3ZbaV0sICItLSIpKQogCQkJYnJlYWs7Ci0JCWlmIChiYXNlc19jb3VudCA8IHNpemVvZihiYXNlcykvc2l6ZW9mKCpiYXNlcykpCi0JCQliYXNlc1tiYXNlc19jb3VudCsrXSA9IGFyZ3ZbaV07CisJCWlmIChiYXNlc19jb3VudCA8IEFSUkFZX1NJWkUoYmFzZXMpLTEpIHsKKwkJCXVuc2lnbmVkIGNoYXIgKnNoYSA9IHhtYWxsb2MoMjApOworCQkJaWYgKGdldF9zaGExKGFyZ3ZbaV0sIHNoYSkpCisJCQkJZGllKCJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcyciLCBhcmd2W2ldKTsKKwkJCWJhc2VzW2Jhc2VzX2NvdW50KytdID0gc2hhOworCQl9CisJCWVsc2UKKwkJCXdhcm5pbmcoIkNhbm5vdCBoYW5kbGUgbW9yZSB0aGFuICV6dSBiYXNlcy4gIgorCQkJCSJJZ25vcmluZyAlcy4iLCBBUlJBWV9TSVpFKGJhc2VzKS0xLCBhcmd2W2ldKTsKIAl9CiAJaWYgKGFyZ2MgLSBpICE9IDMpIC8qICItLSIgIjxoZWFkPiIgIjxyZW1vdGU+IiAqLwogCQlkaWUoIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iKTsKLQlpZiAodmVyYm9zaXR5ID49IDUpCi0JCWJ1ZmZlcl9vdXRwdXQgPSAwOwogCi0JYnJhbmNoMSA9IGFyZ3ZbKytpXTsKLQlicmFuY2gyID0gYXJndlsrK2ldOworCW8uYnJhbmNoMSA9IGFyZ3ZbKytpXTsKKwlvLmJyYW5jaDIgPSBhcmd2WysraV07CiAKLQloMSA9IGdldF9yZWYoYnJhbmNoMSk7Ci0JaDIgPSBnZXRfcmVmKGJyYW5jaDIpOworCWlmIChnZXRfc2hhMShvLmJyYW5jaDEsIGgxKSkKKwkJZGllKCJDb3VsZCBub3QgcmVzb2x2ZSByZWYgJyVzJyIsIG8uYnJhbmNoMSk7CisJaWYgKGdldF9zaGExKG8uYnJhbmNoMiwgaDIpKQorCQlkaWUoIkNvdWxkIG5vdCByZXNvbHZlIHJlZiAnJXMnIiwgby5icmFuY2gyKTsKIAotCWJyYW5jaDEgPSBiZXR0ZXJfYnJhbmNoX25hbWUoYnJhbmNoMSk7Ci0JYnJhbmNoMiA9IGJldHRlcl9icmFuY2hfbmFtZShicmFuY2gyKTsKKwlvLmJyYW5jaDEgPSBiZXR0ZXJfYnJhbmNoX25hbWUoby5icmFuY2gxKTsKKwlvLmJyYW5jaDIgPSBiZXR0ZXJfYnJhbmNoX25hbWUoby5icmFuY2gyKTsKIAotCWlmIChzaG93KDMpKQotCQlwcmludGYoIk1lcmdpbmcgJXMgd2l0aCAlc1xuIiwgYnJhbmNoMSwgYnJhbmNoMik7CisJaWYgKG8udmVyYm9zaXR5ID49IDMpCisJCXByaW50ZigiTWVyZ2luZyAlcyB3aXRoICVzXG4iLCBvLmJyYW5jaDEsIG8uYnJhbmNoMik7CiAKLQlpbmRleF9mZCA9IGhvbGRfbG9ja2VkX2luZGV4KGxvY2ssIDEpOwotCi0JZm9yIChpID0gMDsgaSA8IGJhc2VzX2NvdW50OyBpKyspIHsKLQkJc3RydWN0IGNvbW1pdCAqYW5jZXN0b3IgPSBnZXRfcmVmKGJhc2VzW2ldKTsKLQkJY2EgPSBjb21taXRfbGlzdF9pbnNlcnQoYW5jZXN0b3IsICZjYSk7Ci0JfQotCWNsZWFuID0gbWVyZ2VfcmVjdXJzaXZlKGgxLCBoMiwgYnJhbmNoMSwgYnJhbmNoMiwgY2EsICZyZXN1bHQpOwotCi0JaWYgKGFjdGl2ZV9jYWNoZV9jaGFuZ2VkICYmCi0JICAgICh3cml0ZV9jYWNoZShpbmRleF9mZCwgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIpIHx8Ci0JICAgICBjb21taXRfbG9ja2VkX2luZGV4KGxvY2spKSkKLQkJCWRpZSAoInVuYWJsZSB0byB3cml0ZSAlcyIsIGdldF9pbmRleF9maWxlKCkpOwotCi0JcmV0dXJuIGNsZWFuID8gMDogMTsKKwlmYWlsZWQgPSBtZXJnZV9yZWN1cnNpdmVfZ2VuZXJpYygmbywgaDEsIGgyLCBiYXNlc19jb3VudCwgYmFzZXMsICZyZXN1bHQpOworCWlmIChmYWlsZWQgPCAwKQorCQlyZXR1cm4gMTI4OyAvKiBkaWUoKSBlcnJvciBjb2RlICovCisJcmV0dXJuIGZhaWxlZDsKIH0KZGlmZiAtLWdpdCBhL2J1aWx0aW4tbWVyZ2UuYyBiL2J1aWx0aW4tbWVyZ2UuYwppbmRleCBkMGJmMWZjLi5jZjg2OTc1IDEwMDY0NAotLS0gYS9idWlsdGluLW1lcmdlLmMKKysrIGIvYnVpbHRpbi1tZXJnZS5jCkBAIC0yMiw2ICsyMiw4IEBACiAjaW5jbHVkZSAibG9nLXRyZWUuaCIKICNpbmNsdWRlICJjb2xvci5oIgogI2luY2x1ZGUgInJlcmVyZS5oIgorI2luY2x1ZGUgImhlbHAuaCIKKyNpbmNsdWRlICJtZXJnZS1yZWN1cnNpdmUuaCIKIAogI2RlZmluZSBERUZBVUxUX1RXT0hFQUQgKDE8PDApCiAjZGVmaW5lIERFRkFVTFRfT0NUT1BVUyAoMTw8MSkKQEAgLTQ4LDYgKzUwLDcgQEAKIHN0YXRpYyBzdHJ1Y3Qgc3RyYXRlZ3kgKip1c2Vfc3RyYXRlZ2llczsKIHN0YXRpYyBzaXplX3QgdXNlX3N0cmF0ZWdpZXNfbnIsIHVzZV9zdHJhdGVnaWVzX2FsbG9jOwogc3RhdGljIGNvbnN0IGNoYXIgKmJyYW5jaDsKK3N0YXRpYyBpbnQgdmVyYm9zaXR5OwogCiBzdGF0aWMgc3RydWN0IHN0cmF0ZWd5IGFsbF9zdHJhdGVneVtdID0gewogCXsgInJlY3Vyc2l2ZSIsICBERUZBVUxUX1RXT0hFQUQgfCBOT19UUklWSUFMIH0sCkBAIC03Nyw3ICs4MCw5IEBACiBzdGF0aWMgc3RydWN0IHN0cmF0ZWd5ICpnZXRfc3RyYXRlZ3koY29uc3QgY2hhciAqbmFtZSkKIHsKIAlpbnQgaTsKLQlzdHJ1Y3Qgc3RyYnVmIGVycjsKKwlzdHJ1Y3Qgc3RyYXRlZ3kgKnJldDsKKwlzdGF0aWMgc3RydWN0IGNtZG5hbWVzIG1haW5fY21kcywgb3RoZXJfY21kczsKKwlzdGF0aWMgaW50IGxvYWRlZDsKIAogCWlmICghbmFtZSkKIAkJcmV0dXJuIE5VTEw7CkBAIC04NiwxMiArOTEsNDIgQEAKIAkJaWYgKCFzdHJjbXAobmFtZSwgYWxsX3N0cmF0ZWd5W2ldLm5hbWUpKQogCQkJcmV0dXJuICZhbGxfc3RyYXRlZ3lbaV07CiAKLQlzdHJidWZfaW5pdCgmZXJyLCAwKTsKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhbGxfc3RyYXRlZ3kpOyBpKyspCi0JCXN0cmJ1Zl9hZGRmKCZlcnIsICIgJXMiLCBhbGxfc3RyYXRlZ3lbaV0ubmFtZSk7Ci0JZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgZmluZCBtZXJnZSBzdHJhdGVneSAnJXMnLlxuIiwgbmFtZSk7Ci0JZnByaW50ZihzdGRlcnIsICJBdmFpbGFibGUgc3RyYXRlZ2llcyBhcmU6JXMuXG4iLCBlcnIuYnVmKTsKLQlleGl0KDEpOworCWlmICghbG9hZGVkKSB7CisJCXN0cnVjdCBjbWRuYW1lcyBub3Rfc3RyYXRlZ2llczsKKwkJbG9hZGVkID0gMTsKKworCQltZW1zZXQoJm5vdF9zdHJhdGVnaWVzLCAwLCBzaXplb2Yoc3RydWN0IGNtZG5hbWVzKSk7CisJCWxvYWRfY29tbWFuZF9saXN0KCJnaXQtbWVyZ2UtIiwgJm1haW5fY21kcywgJm90aGVyX2NtZHMpOworCQlmb3IgKGkgPSAwOyBpIDwgbWFpbl9jbWRzLmNudDsgaSsrKSB7CisJCQlpbnQgaiwgZm91bmQgPSAwOworCQkJc3RydWN0IGNtZG5hbWUgKmVudCA9IG1haW5fY21kcy5uYW1lc1tpXTsKKwkJCWZvciAoaiA9IDA7IGogPCBBUlJBWV9TSVpFKGFsbF9zdHJhdGVneSk7IGorKykKKwkJCQlpZiAoIXN0cm5jbXAoZW50LT5uYW1lLCBhbGxfc3RyYXRlZ3lbal0ubmFtZSwgZW50LT5sZW4pCisJCQkJCQkmJiAhYWxsX3N0cmF0ZWd5W2pdLm5hbWVbZW50LT5sZW5dKQorCQkJCQlmb3VuZCA9IDE7CisJCQlpZiAoIWZvdW5kKQorCQkJCWFkZF9jbWRuYW1lKCZub3Rfc3RyYXRlZ2llcywgZW50LT5uYW1lLCBlbnQtPmxlbik7CisJCQlleGNsdWRlX2NtZHMoJm1haW5fY21kcywgJm5vdF9zdHJhdGVnaWVzKTsKKwkJfQorCX0KKwlpZiAoIWlzX2luX2NtZGxpc3QoJm1haW5fY21kcywgbmFtZSkgJiYgIWlzX2luX2NtZGxpc3QoJm90aGVyX2NtZHMsIG5hbWUpKSB7CisJCWZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IGZpbmQgbWVyZ2Ugc3RyYXRlZ3kgJyVzJy5cbiIsIG5hbWUpOworCQlmcHJpbnRmKHN0ZGVyciwgIkF2YWlsYWJsZSBzdHJhdGVnaWVzIGFyZToiKTsKKwkJZm9yIChpID0gMDsgaSA8IG1haW5fY21kcy5jbnQ7IGkrKykKKwkJCWZwcmludGYoc3RkZXJyLCAiICVzIiwgbWFpbl9jbWRzLm5hbWVzW2ldLT5uYW1lKTsKKwkJZnByaW50ZihzdGRlcnIsICIuXG4iKTsKKwkJaWYgKG90aGVyX2NtZHMuY250KSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIkF2YWlsYWJsZSBjdXN0b20gc3RyYXRlZ2llcyBhcmU6Iik7CisJCQlmb3IgKGkgPSAwOyBpIDwgb3RoZXJfY21kcy5jbnQ7IGkrKykKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIiAlcyIsIG90aGVyX2NtZHMubmFtZXNbaV0tPm5hbWUpOworCQkJZnByaW50ZihzdGRlcnIsICIuXG4iKTsKKwkJfQorCQlleGl0KDEpOworCX0KKworCXJldCA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdHJhdGVneSkpOworCXJldC0+bmFtZSA9IHhzdHJkdXAobmFtZSk7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kX3N0cmF0ZWd5KHN0cnVjdCBzdHJhdGVneSAqcykKQEAgLTEzNyw2ICsxNzIsNyBAQAogCU9QVF9DQUxMQkFDSygnbScsICJtZXNzYWdlIiwgJm1lcmdlX21zZywgIm1lc3NhZ2UiLAogCQkibWVzc2FnZSB0byBiZSB1c2VkIGZvciB0aGUgbWVyZ2UgY29tbWl0IChpZiBhbnkpIiwKIAkJb3B0aW9uX3BhcnNlX21lc3NhZ2UpLAorCU9QVF9fVkVSQk9TSVRZKCZ2ZXJib3NpdHkpLAogCU9QVF9FTkQoKQogfTsKIApAQCAtMTQ1LDYgKzE4MSw3IEBACiB7CiAJdW5saW5rKGdpdF9wYXRoKCJNRVJHRV9IRUFEIikpOwogCXVubGluayhnaXRfcGF0aCgiTUVSR0VfTVNHIikpOworCXVubGluayhnaXRfcGF0aCgiTUVSR0VfTU9ERSIpKTsKIH0KIAogc3RhdGljIHZvaWQgc2F2ZV9zdGF0ZSh2b2lkKQpAQCAtMTkyLDcgKzIyOSw3IEBACiAKIHN0YXRpYyB2b2lkIHJlc3RvcmVfc3RhdGUodm9pZCkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIHNiOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICphcmdzW10gPSB7ICJzdGFzaCIsICJhcHBseSIsIE5VTEwsIE5VTEwgfTsKIAogCWlmIChpc19udWxsX3NoYTEoc3Rhc2gpKQpAQCAtMjAwLDcgKzIzNyw2IEBACiAKIAlyZXNldF9oYXJkKGhlYWQsIDEpOwogCi0Jc3RyYnVmX2luaXQoJnNiLCAwKTsKIAlhcmdzWzJdID0gc2hhMV90b19oZXgoc3Rhc2gpOwogCiAJLyoKQEAgLTIxNiw3ICsyNTIsOCBAQAogLyogVGhpcyBpcyBjYWxsZWQgd2hlbiBubyBtZXJnZSB3YXMgbmVjZXNzYXJ5LiAqLwogc3RhdGljIHZvaWQgZmluaXNoX3VwX3RvX2RhdGUoY29uc3QgY2hhciAqbXNnKQogewotCXByaW50ZigiJXMlc1xuIiwgc3F1YXNoID8gIiAobm90aGluZyB0byBzcXVhc2gpIiA6ICIiLCBtc2cpOworCWlmICh2ZXJib3NpdHkgPj0gMCkKKwkJcHJpbnRmKCIlcyVzXG4iLCBzcXVhc2ggPyAiIChub3RoaW5nIHRvIHNxdWFzaCkiIDogIiIsIG1zZyk7CiAJZHJvcF9zYXZlKCk7CiB9CiAKQEAgLTIyNCw3ICsyNjEsNyBAQAogewogCXN0cnVjdCByZXZfaW5mbyByZXY7CiAJc3RydWN0IGNvbW1pdCAqY29tbWl0OwotCXN0cnVjdCBzdHJidWYgb3V0OworCXN0cnVjdCBzdHJidWYgb3V0ID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpqOwogCWludCBmZDsKIApAQCAtMjQ4LDcgKzI4NSw2IEBACiAJaWYgKHByZXBhcmVfcmV2aXNpb25fd2FsaygmcmV2KSkKIAkJZGllKCJyZXZpc2lvbiB3YWxrIHNldHVwIGZhaWxlZCIpOwogCi0Jc3RyYnVmX2luaXQoJm91dCwgMCk7CiAJc3RyYnVmX2FkZHN0cigmb3V0LCAiU3F1YXNoZWQgY29tbWl0IG9mIHRoZSBmb2xsb3dpbmc6XG4iKTsKIAl3aGlsZSAoKGNvbW1pdCA9IGdldF9yZXZpc2lvbigmcmV2KSkgIT0gTlVMTCkgewogCQlzdHJidWZfYWRkY2goJm91dCwgJ1xuJyk7CkBAIC0yNTcsOCArMjkzLDEwIEBACiAJCXByZXR0eV9wcmludF9jb21taXQocmV2LmNvbW1pdF9mb3JtYXQsIGNvbW1pdCwgJm91dCwgcmV2LmFiYnJldiwKIAkJCU5VTEwsIE5VTEwsIHJldi5kYXRlX21vZGUsIDApOwogCX0KLQl3cml0ZShmZCwgb3V0LmJ1Ziwgb3V0Lmxlbik7Ci0JY2xvc2UoZmQpOworCWlmICh3cml0ZShmZCwgb3V0LmJ1Ziwgb3V0LmxlbikgPCAwKQorCQlkaWUoIldyaXRpbmcgU1FVQVNIX01TRzogJXMiLCBzdHJlcnJvcihlcnJubykpOworCWlmIChjbG9zZShmZCkpCisJCWRpZSgiRmluaXNoaW5nIFNRVUFTSF9NU0c6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAlzdHJidWZfcmVsZWFzZSgmb3V0KTsKIH0KIApAQCAtMjkzLDIwICszMzEsMjAgQEAKIAogc3RhdGljIHZvaWQgZmluaXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5ld19oZWFkLCBjb25zdCBjaGFyICptc2cpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiByZWZsb2dfbWVzc2FnZTsKKwlzdHJ1Y3Qgc3RyYnVmIHJlZmxvZ19tZXNzYWdlID0gU1RSQlVGX0lOSVQ7CiAKLQlzdHJidWZfaW5pdCgmcmVmbG9nX21lc3NhZ2UsIDApOwogCWlmICghbXNnKQogCQlzdHJidWZfYWRkc3RyKCZyZWZsb2dfbWVzc2FnZSwgZ2V0ZW52KCJHSVRfUkVGTE9HX0FDVElPTiIpKTsKIAllbHNlIHsKLQkJcHJpbnRmKCIlc1xuIiwgbXNnKTsKKwkJaWYgKHZlcmJvc2l0eSA+PSAwKQorCQkJcHJpbnRmKCIlc1xuIiwgbXNnKTsKIAkJc3RyYnVmX2FkZGYoJnJlZmxvZ19tZXNzYWdlLCAiJXM6ICVzIiwKIAkJCWdldGVudigiR0lUX1JFRkxPR19BQ1RJT04iKSwgbXNnKTsKIAl9CiAJaWYgKHNxdWFzaCkgewogCQlzcXVhc2hfbWVzc2FnZSgpOwogCX0gZWxzZSB7Ci0JCWlmICghbWVyZ2VfbXNnLmxlbikKKwkJaWYgKHZlcmJvc2l0eSA+PSAwICYmICFtZXJnZV9tc2cubGVuKQogCQkJcHJpbnRmKCJObyBtZXJnZSBtZXNzYWdlIC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iKTsKIAkJZWxzZSB7CiAJCQljb25zdCBjaGFyICphcmd2X2djX2F1dG9bXSA9IHsgImdjIiwgIi0tYXV0byIsIE5VTEwgfTsKQEAgLTM0Niw3ICszODQsNyBAQAogewogCXN0cnVjdCBvYmplY3QgKnJlbW90ZV9oZWFkOwogCXVuc2lnbmVkIGNoYXIgYnJhbmNoX2hlYWRbMjBdLCBidWZfc2hhWzIwXTsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKnB0cjsKIAlpbnQgbGVuLCBlYXJseTsKIApAQCAtMzU1LDcgKzM5Myw2IEBACiAJaWYgKCFyZW1vdGVfaGVhZCkKIAkJZGllKCInJXMnIGRvZXMgbm90IHBvaW50IHRvIGEgY29tbWl0IiwgcmVtb3RlKTsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgInJlZnMvaGVhZHMvIik7CiAJc3RyYnVmX2FkZHN0cigmYnVmLCByZW1vdGUpOwogCXJlc29sdmVfcmVmKGJ1Zi5idWYsIGJyYW5jaF9oZWFkLCAwLCAwKTsKQEAgLTQxMCwxMCArNDQ3LDkgQEAKIAlpZiAoIXN0cmNtcChyZW1vdGUsICJGRVRDSF9IRUFEIikgJiYKIAkJCSFhY2Nlc3MoZ2l0X3BhdGgoIkZFVENIX0hFQUQiKSwgUl9PSykpIHsKIAkJRklMRSAqZnA7Ci0JCXN0cnVjdCBzdHJidWYgbGluZTsKKwkJc3RydWN0IHN0cmJ1ZiBsaW5lID0gU1RSQlVGX0lOSVQ7CiAJCWNoYXIgKnB0cjsKIAotCQlzdHJidWZfaW5pdCgmbGluZSwgMCk7CiAJCWZwID0gZm9wZW4oZ2l0X3BhdGgoIkZFVENIX0hFQUQiKSwgInIiKTsKIAkJaWYgKCFmcCkKIAkJCWRpZSgiY291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRpbmc6ICVzIiwKQEAgLTUxMSwzMCArNTQ3LDc2IEBACiAJY29uc3QgY2hhciAqKmFyZ3M7CiAJaW50IGkgPSAwLCByZXQ7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpqOwotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJaW50IGluZGV4X2ZkOworCXN0cnVjdCBsb2NrX2ZpbGUgKmxvY2sgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbG9ja19maWxlKSk7CiAKLQlhcmdzID0geG1hbGxvYygoNCArIGNvbW1pdF9saXN0X2NvdW50KGNvbW1vbikgKwotCQkJY29tbWl0X2xpc3RfY291bnQocmVtb3RlaGVhZHMpKSAqIHNpemVvZihjaGFyICopKTsKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKLQlzdHJidWZfYWRkZigmYnVmLCAibWVyZ2UtJXMiLCBzdHJhdGVneSk7Ci0JYXJnc1tpKytdID0gYnVmLmJ1ZjsKLQlmb3IgKGogPSBjb21tb247IGo7IGogPSBqLT5uZXh0KQotCQlhcmdzW2krK10gPSB4c3RyZHVwKHNoYTFfdG9faGV4KGotPml0ZW0tPm9iamVjdC5zaGExKSk7Ci0JYXJnc1tpKytdID0gIi0tIjsKLQlhcmdzW2krK10gPSBoZWFkX2FyZzsKLQlmb3IgKGogPSByZW1vdGVoZWFkczsgajsgaiA9IGotPm5leHQpCi0JCWFyZ3NbaSsrXSA9IHhzdHJkdXAoc2hhMV90b19oZXgoai0+aXRlbS0+b2JqZWN0LnNoYTEpKTsKLQlhcmdzW2ldID0gTlVMTDsKLQlyZXQgPSBydW5fY29tbWFuZF92X29wdChhcmdzLCBSVU5fR0lUX0NNRCk7Ci0Jc3RyYnVmX3JlbGVhc2UoJmJ1Zik7Ci0JaSA9IDE7Ci0JZm9yIChqID0gY29tbW9uOyBqOyBqID0gai0+bmV4dCkKLQkJZnJlZSgodm9pZCAqKWFyZ3NbaSsrXSk7Ci0JaSArPSAyOwotCWZvciAoaiA9IHJlbW90ZWhlYWRzOyBqOyBqID0gai0+bmV4dCkKLQkJZnJlZSgodm9pZCAqKWFyZ3NbaSsrXSk7Ci0JZnJlZShhcmdzKTsKLQlyZXR1cm4gLXJldDsKKwlpbmRleF9mZCA9IGhvbGRfbG9ja2VkX2luZGV4KGxvY2ssIDEpOworCXJlZnJlc2hfY2FjaGUoUkVGUkVTSF9RVUlFVCk7CisJaWYgKGFjdGl2ZV9jYWNoZV9jaGFuZ2VkICYmCisJCQkod3JpdGVfY2FjaGUoaW5kZXhfZmQsIGFjdGl2ZV9jYWNoZSwgYWN0aXZlX25yKSB8fAorCQkJIGNvbW1pdF9sb2NrZWRfaW5kZXgobG9jaykpKQorCQlyZXR1cm4gZXJyb3IoIlVuYWJsZSB0byB3cml0ZSBpbmRleC4iKTsKKwlyb2xsYmFja19sb2NrX2ZpbGUobG9jayk7CisKKwlpZiAoIXN0cmNtcChzdHJhdGVneSwgInJlY3Vyc2l2ZSIpIHx8ICFzdHJjbXAoc3RyYXRlZ3ksICJzdWJ0cmVlIikpIHsKKwkJaW50IGNsZWFuOworCQlzdHJ1Y3QgY29tbWl0ICpyZXN1bHQ7CisJCXN0cnVjdCBsb2NrX2ZpbGUgKmxvY2sgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbG9ja19maWxlKSk7CisJCWludCBpbmRleF9mZDsKKwkJc3RydWN0IGNvbW1pdF9saXN0ICpyZXZlcnNlZCA9IE5VTEw7CisJCXN0cnVjdCBtZXJnZV9vcHRpb25zIG87CisKKwkJaWYgKHJlbW90ZWhlYWRzLT5uZXh0KSB7CisJCQllcnJvcigiTm90IGhhbmRsaW5nIGFueXRoaW5nIG90aGVyIHRoYW4gdHdvIGhlYWRzIG1lcmdlLiIpOworCQkJcmV0dXJuIDI7CisJCX0KKworCQlpbml0X21lcmdlX29wdGlvbnMoJm8pOworCQlpZiAoIXN0cmNtcChzdHJhdGVneSwgInN1YnRyZWUiKSkKKwkJCW8uc3VidHJlZV9tZXJnZSA9IDE7CisKKwkJby5icmFuY2gxID0gaGVhZF9hcmc7CisJCW8uYnJhbmNoMiA9IHJlbW90ZWhlYWRzLT5pdGVtLT51dGlsOworCisJCWZvciAoaiA9IGNvbW1vbjsgajsgaiA9IGotPm5leHQpCisJCQljb21taXRfbGlzdF9pbnNlcnQoai0+aXRlbSwgJnJldmVyc2VkKTsKKworCQlpbmRleF9mZCA9IGhvbGRfbG9ja2VkX2luZGV4KGxvY2ssIDEpOworCQljbGVhbiA9IG1lcmdlX3JlY3Vyc2l2ZSgmbywgbG9va3VwX2NvbW1pdChoZWFkKSwKKwkJCQlyZW1vdGVoZWFkcy0+aXRlbSwgcmV2ZXJzZWQsICZyZXN1bHQpOworCQlpZiAoYWN0aXZlX2NhY2hlX2NoYW5nZWQgJiYKKwkJCQkod3JpdGVfY2FjaGUoaW5kZXhfZmQsIGFjdGl2ZV9jYWNoZSwgYWN0aXZlX25yKSB8fAorCQkJCSBjb21taXRfbG9ja2VkX2luZGV4KGxvY2spKSkKKwkJCWRpZSAoInVuYWJsZSB0byB3cml0ZSAlcyIsIGdldF9pbmRleF9maWxlKCkpOworCQlyb2xsYmFja19sb2NrX2ZpbGUobG9jayk7CisJCXJldHVybiBjbGVhbiA/IDAgOiAxOworCX0gZWxzZSB7CisJCWFyZ3MgPSB4bWFsbG9jKCg0ICsgY29tbWl0X2xpc3RfY291bnQoY29tbW9uKSArCisJCQkJCWNvbW1pdF9saXN0X2NvdW50KHJlbW90ZWhlYWRzKSkgKiBzaXplb2YoY2hhciAqKSk7CisJCXN0cmJ1Zl9hZGRmKCZidWYsICJtZXJnZS0lcyIsIHN0cmF0ZWd5KTsKKwkJYXJnc1tpKytdID0gYnVmLmJ1ZjsKKwkJZm9yIChqID0gY29tbW9uOyBqOyBqID0gai0+bmV4dCkKKwkJCWFyZ3NbaSsrXSA9IHhzdHJkdXAoc2hhMV90b19oZXgoai0+aXRlbS0+b2JqZWN0LnNoYTEpKTsKKwkJYXJnc1tpKytdID0gIi0tIjsKKwkJYXJnc1tpKytdID0gaGVhZF9hcmc7CisJCWZvciAoaiA9IHJlbW90ZWhlYWRzOyBqOyBqID0gai0+bmV4dCkKKwkJCWFyZ3NbaSsrXSA9IHhzdHJkdXAoc2hhMV90b19oZXgoai0+aXRlbS0+b2JqZWN0LnNoYTEpKTsKKwkJYXJnc1tpXSA9IE5VTEw7CisJCXJldCA9IHJ1bl9jb21tYW5kX3Zfb3B0KGFyZ3MsIFJVTl9HSVRfQ01EKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJCWkgPSAxOworCQlmb3IgKGogPSBjb21tb247IGo7IGogPSBqLT5uZXh0KQorCQkJZnJlZSgodm9pZCAqKWFyZ3NbaSsrXSk7CisJCWkgKz0gMjsKKwkJZm9yIChqID0gcmVtb3RlaGVhZHM7IGo7IGogPSBqLT5uZXh0KQorCQkJZnJlZSgodm9pZCAqKWFyZ3NbaSsrXSk7CisJCWZyZWUoYXJncyk7CisJCWRpc2NhcmRfY2FjaGUoKTsKKwkJaWYgKHJlYWRfY2FjaGUoKSA8IDApCisJCQlkaWUoImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIpOworCQlyZXR1cm4gLXJldDsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIGNvdW50X2RpZmZfZmlsZXMoc3RydWN0IGRpZmZfcXVldWVfc3RydWN0ICpxLApAQCAtNjU5LDcgKzc0MSw3IEBACiAJcGFyZW50LT5uZXh0ID0geG1hbGxvYyhzaXplb2YoKnBhcmVudC0+bmV4dCkpOwogCXBhcmVudC0+bmV4dC0+aXRlbSA9IHJlbW90ZWhlYWRzLT5pdGVtOwogCXBhcmVudC0+bmV4dC0+bmV4dCA9IE5VTEw7Ci0JY29tbWl0X3RyZWUobWVyZ2VfbXNnLmJ1ZiwgcmVzdWx0X3RyZWUsIHBhcmVudCwgcmVzdWx0X2NvbW1pdCk7CisJY29tbWl0X3RyZWUobWVyZ2VfbXNnLmJ1ZiwgcmVzdWx0X3RyZWUsIHBhcmVudCwgcmVzdWx0X2NvbW1pdCwgTlVMTCk7CiAJZmluaXNoKHJlc3VsdF9jb21taXQsICJJbi1pbmRleCBtZXJnZSIpOwogCWRyb3Bfc2F2ZSgpOwogCXJldHVybiAwOwpAQCAtNjg4LDcgKzc3MCw3IEBACiAJfQogCWZyZWVfY29tbWl0X2xpc3QocmVtb3RlaGVhZHMpOwogCXN0cmJ1Zl9hZGRjaCgmbWVyZ2VfbXNnLCAnXG4nKTsKLQljb21taXRfdHJlZShtZXJnZV9tc2cuYnVmLCByZXN1bHRfdHJlZSwgcGFyZW50cywgcmVzdWx0X2NvbW1pdCk7CisJY29tbWl0X3RyZWUobWVyZ2VfbXNnLmJ1ZiwgcmVzdWx0X3RyZWUsIHBhcmVudHMsIHJlc3VsdF9jb21taXQsIE5VTEwpOwogCXN0cmJ1Zl9hZGRmKCZidWYsICJNZXJnZSBtYWRlIGJ5ICVzLiIsIHd0X3N0cmF0ZWd5KTsKIAlmaW5pc2gocmVzdWx0X2NvbW1pdCwgYnVmLmJ1Zik7CiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CkBAIC03NDUsMTAgKzgyNyw2IEBACiAJaW50IGNudCA9IDA7CiAJc3RydWN0IHJldl9pbmZvIHJldjsKIAotCWRpc2NhcmRfY2FjaGUoKTsKLQlpZiAocmVhZF9jYWNoZSgpIDwgMCkKLQkJZGllKCJmYWlsZWQgdG8gcmVhZCB0aGUgY2FjaGUiKTsKLQogCS8qIENoZWNrIGhvdyBtYW55IGZpbGVzIGRpZmZlci4gKi8KIAlpbml0X3JldmlzaW9ucygmcmV2LCAiIik7CiAJc2V0dXBfcmV2aXNpb25zKDAsIE5VTEwsICZyZXYsIE5VTEwpOwpAQCAtNzcwLDcgKzg0OCw3IEBACiBpbnQgY21kX21lcmdlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCXVuc2lnbmVkIGNoYXIgcmVzdWx0X3RyZWVbMjBdOwotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJY29uc3QgY2hhciAqaGVhZF9hcmc7CiAJaW50IGZsYWcsIGhlYWRfaW52YWxpZCA9IDAsIGk7CiAJaW50IGJlc3RfY250ID0gLTEsIG1lcmdlX3dhc19vayA9IDAsIGF1dG9tZXJnZV93YXNfb2sgPSAwOwpAQCAtODAwLDYgKzg3OCw4IEBACiAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBidWlsdGluX21lcmdlX29wdGlvbnMsCiAJCQlidWlsdGluX21lcmdlX3VzYWdlLCAwKTsKKwlpZiAodmVyYm9zaXR5IDwgMCkKKwkJc2hvd19kaWZmc3RhdCA9IDA7CiAKIAlpZiAoc3F1YXNoKSB7CiAJCWlmICghYWxsb3dfZmFzdF9mb3J3YXJkKQpAQCAtODE5LDcgKzg5OSw2IEBACiAJICogVHJhZGl0aW9uYWwgZm9ybWF0IG5ldmVyIHdvdWxkIGhhdmUgIi1tIiBzbyBpdCBpcyBhbgogCSAqIGFkZGl0aW9uYWwgc2FmZXR5IG1lYXN1cmUgdG8gY2hlY2sgZm9yIGl0LgogCSAqLwotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCiAJaWYgKCFoYXZlX21lc3NhZ2UgJiYgaXNfb2xkX3N0eWxlX2ludm9jYXRpb24oYXJnYywgYXJndikpIHsKIAkJc3RyYnVmX2FkZHN0cigmbWVyZ2VfbXNnLCBhcmd2WzBdKTsKQEAgLTgzNiw2ICs5MTUsMTEgQEAKIAkJaWYgKGFyZ2MgIT0gMSkKIAkJCWRpZSgiQ2FuIG1lcmdlIG9ubHkgZXhhY3RseSBvbmUgY29tbWl0IGludG8gIgogCQkJCSJlbXB0eSBoZWFkIik7CisJCWlmIChzcXVhc2gpCisJCQlkaWUoIlNxdWFzaCBjb21taXQgaW50byBlbXB0eSBoZWFkIG5vdCBzdXBwb3J0ZWQgeWV0Iik7CisJCWlmICghYWxsb3dfZmFzdF9mb3J3YXJkKQorCQkJZGllKCJOb24tZmFzdC1mb3J3YXJkIGNvbW1pdCBkb2VzIG5vdCBtYWtlIHNlbnNlIGludG8gIgorCQkJICAgICJhbiBlbXB0eSBoZWFkIik7CiAJCXJlbW90ZV9oZWFkID0gcGVlbF90b190eXBlKGFyZ3ZbMF0sIDAsIE5VTEwsIE9CSl9DT01NSVQpOwogCQlpZiAoIXJlbW90ZV9oZWFkKQogCQkJZGllKCIlcyAtIG5vdCBzb21ldGhpbmcgd2UgY2FuIG1lcmdlIiwgYXJndlswXSk7CkBAIC04NDQsNyArOTI4LDcgQEAKIAkJcmVzZXRfaGFyZChyZW1vdGVfaGVhZC0+c2hhMSwgMCk7CiAJCXJldHVybiAwOwogCX0gZWxzZSB7Ci0JCXN0cnVjdCBzdHJidWYgbXNnOworCQlzdHJ1Y3Qgc3RyYnVmIG1zZyA9IFNUUkJVRl9JTklUOwogCiAJCS8qIFdlIGFyZSBpbnZva2VkIGRpcmVjdGx5IGFzIHRoZSBmaXJzdC1jbGFzcyBVSS4gKi8KIAkJaGVhZF9hcmcgPSAiSEVBRCI7CkBAIC04NTcsNyArOTQxLDYgQEAKIAkJICogY29kZXBhdGggc28gd2UgZGlzY2FyZCB0aGUgZXJyb3IgaW4gdGhpcwogCQkgKiBsb29wLgogCQkgKi8KLQkJc3RyYnVmX2luaXQoJm1zZywgMCk7CiAJCWZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspCiAJCQltZXJnZV9uYW1lKGFyZ3ZbaV0sICZtc2cpOwogCQlmbXRfbWVyZ2VfbXNnKG9wdGlvbl9sb2csICZtc2csICZtZXJnZV9tc2cpOwpAQCAtODc3LDEyICs5NjAsMTQgQEAKIAogCWZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKIAkJc3RydWN0IG9iamVjdCAqbzsKKwkJc3RydWN0IGNvbW1pdCAqY29tbWl0OwogCiAJCW8gPSBwZWVsX3RvX3R5cGUoYXJndltpXSwgMCwgTlVMTCwgT0JKX0NPTU1JVCk7CiAJCWlmICghbykKIAkJCWRpZSgiJXMgLSBub3Qgc29tZXRoaW5nIHdlIGNhbiBtZXJnZSIsIGFyZ3ZbaV0pOwotCQlyZW1vdGVzID0gJmNvbW1pdF9saXN0X2luc2VydChsb29rdXBfY29tbWl0KG8tPnNoYTEpLAotCQkJcmVtb3RlcyktPm5leHQ7CisJCWNvbW1pdCA9IGxvb2t1cF9jb21taXQoby0+c2hhMSk7CisJCWNvbW1pdC0+dXRpbCA9ICh2b2lkICopYXJndltpXTsKKwkJcmVtb3RlcyA9ICZjb21taXRfbGlzdF9pbnNlcnQoY29tbWl0LCByZW1vdGVzKS0+bmV4dDsKIAogCQlzdHJidWZfYWRkZigmYnVmLCAiR0lUSEVBRF8lcyIsIHNoYTFfdG9faGV4KG8tPnNoYTEpKTsKIAkJc2V0ZW52KGJ1Zi5idWYsIGFyZ3ZbaV0sIDEpOwpAQCAtOTMwLDE3ICsxMDE1LDE3IEBACiAJCQkhY29tbW9uLT5uZXh0ICYmCiAJCQkhaGFzaGNtcChjb21tb24tPml0ZW0tPm9iamVjdC5zaGExLCBoZWFkKSkgewogCQkvKiBBZ2FpbiB0aGUgbW9zdCBjb21tb24gY2FzZSBvZiBtZXJnaW5nIG9uZSByZW1vdGUuICovCi0JCXN0cnVjdCBzdHJidWYgbXNnOworCQlzdHJ1Y3Qgc3RyYnVmIG1zZyA9IFNUUkJVRl9JTklUOwogCQlzdHJ1Y3Qgb2JqZWN0ICpvOwogCQljaGFyIGhleFs0MV07CiAKIAkJc3RyY3B5KGhleCwgZmluZF91bmlxdWVfYWJicmV2KGhlYWQsIERFRkFVTFRfQUJCUkVWKSk7CiAKLQkJcHJpbnRmKCJVcGRhdGluZyAlcy4uJXNcbiIsCi0JCQloZXgsCi0JCQlmaW5kX3VuaXF1ZV9hYmJyZXYocmVtb3RlaGVhZHMtPml0ZW0tPm9iamVjdC5zaGExLAotCQkJREVGQVVMVF9BQkJSRVYpKTsKLQkJc3RyYnVmX2luaXQoJm1zZywgMCk7CisJCWlmICh2ZXJib3NpdHkgPj0gMCkKKwkJCXByaW50ZigiVXBkYXRpbmcgJXMuLiVzXG4iLAorCQkJCWhleCwKKwkJCQlmaW5kX3VuaXF1ZV9hYmJyZXYocmVtb3RlaGVhZHMtPml0ZW0tPm9iamVjdC5zaGExLAorCQkJCURFRkFVTFRfQUJCUkVWKSk7CiAJCXN0cmJ1Zl9hZGRzdHIoJm1zZywgIkZhc3QgZm9yd2FyZCIpOwogCQlpZiAoaGF2ZV9tZXNzYWdlKQogCQkJc3RyYnVmX2FkZHN0cigmbXNnLApAQCAtMTA3Niw3ICsxMTYxLDYgQEAKIAkJfQogCiAJCS8qIEF1dG9tZXJnZSBzdWNjZWVkZWQuICovCi0JCWRpc2NhcmRfY2FjaGUoKTsKIAkJd3JpdGVfdHJlZV90cml2aWFsKHJlc3VsdF90cmVlKTsKIAkJYXV0b21lcmdlX3dhc19vayA9IDE7CiAJCWJyZWFrOwpAQCAtMTEzNiw2ICsxMjIwLDE1IEBACiAJCQltZXJnZV9tc2cubGVuKQogCQkJZGllKCJDb3VsZCBub3Qgd3JpdGUgdG8gJXMiLCBnaXRfcGF0aCgiTUVSR0VfTVNHIikpOwogCQljbG9zZShmZCk7CisJCWZkID0gb3BlbihnaXRfcGF0aCgiTUVSR0VfTU9ERSIpLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DLCAwNjY2KTsKKwkJaWYgKGZkIDwgMCkKKwkJCWRpZSgiQ291bGQgb3BlbiAlcyBmb3Igd3JpdGluZyIsIGdpdF9wYXRoKCJNRVJHRV9NT0RFIikpOworCQlzdHJidWZfcmVzZXQoJmJ1Zik7CisJCWlmICghYWxsb3dfZmFzdF9mb3J3YXJkKQorCQkJc3RyYnVmX2FkZGYoJmJ1ZiwgIm5vLWZmIik7CisJCWlmICh3cml0ZV9pbl9mdWxsKGZkLCBidWYuYnVmLCBidWYubGVuKSAhPSBidWYubGVuKQorCQkJZGllKCJDb3VsZCBub3Qgd3JpdGUgdG8gJXMiLCBnaXRfcGF0aCgiTUVSR0VfTU9ERSIpKTsKKwkJY2xvc2UoZmQpOwogCX0KIAogCWlmIChtZXJnZV93YXNfb2spIHsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tcGFjay1vYmplY3RzLmMgYi9idWlsdGluLXBhY2stb2JqZWN0cy5jCmluZGV4IGZiNWUxNGQuLmI2MTY5OTQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tcGFjay1vYmplY3RzLmMKKysrIGIvYnVpbHRpbi1wYWNrLW9iamVjdHMuYwpAQCAtMTk1LDE2ICsxOTUsMTYgQEAKIAlpbnQgc3Q7CiAKIAltZW1zZXQoJnN0cmVhbSwgMCwgc2l6ZW9mKHN0cmVhbSkpOwotCWluZmxhdGVJbml0KCZzdHJlYW0pOworCWdpdF9pbmZsYXRlX2luaXQoJnN0cmVhbSk7CiAJZG8gewogCQlpbiA9IHVzZV9wYWNrKHAsIHdfY3Vycywgb2Zmc2V0LCAmc3RyZWFtLmF2YWlsX2luKTsKIAkJc3RyZWFtLm5leHRfaW4gPSBpbjsKIAkJc3RyZWFtLm5leHRfb3V0ID0gZmFrZWJ1ZjsKIAkJc3RyZWFtLmF2YWlsX291dCA9IHNpemVvZihmYWtlYnVmKTsKLQkJc3QgPSBpbmZsYXRlKCZzdHJlYW0sIFpfRklOSVNIKTsKKwkJc3QgPSBnaXRfaW5mbGF0ZSgmc3RyZWFtLCBaX0ZJTklTSCk7CiAJCW9mZnNldCArPSBzdHJlYW0ubmV4dF9pbiAtIGluOwogCX0gd2hpbGUgKHN0ID09IFpfT0sgfHwgc3QgPT0gWl9CVUZfRVJST1IpOwotCWluZmxhdGVFbmQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfZW5kKCZzdHJlYW0pOwogCXJldHVybiAoc3QgPT0gWl9TVFJFQU1fRU5EICYmCiAJCXN0cmVhbS50b3RhbF9vdXQgPT0gZXhwZWN0ICYmCiAJCXN0cmVhbS50b3RhbF9pbiA9PSBsZW4pID8gMCA6IC0xOwpAQCAtMjg2LDYgKzI4Niw3IEBACiAJCQkJICovCiAKIAlpZiAoIXRvX3JldXNlKSB7CisJCW5vX3JldXNlOgogCQlpZiAoIXVzYWJsZV9kZWx0YSkgewogCQkJYnVmID0gcmVhZF9zaGExX2ZpbGUoZW50cnktPmlkeC5zaGExLCAmdHlwZSwgJnNpemUpOwogCQkJaWYgKCFidWYpCkBAIC0zNjcsNDYgKzM2OCw2MCBAQAogCQlzdHJ1Y3QgcmV2aW5kZXhfZW50cnkgKnJldmlkeDsKIAkJb2ZmX3Qgb2Zmc2V0OwogCi0JCWlmIChlbnRyeS0+ZGVsdGEpIHsKKwkJaWYgKGVudHJ5LT5kZWx0YSkKIAkJCXR5cGUgPSAoYWxsb3dfb2ZzX2RlbHRhICYmIGVudHJ5LT5kZWx0YS0+aWR4Lm9mZnNldCkgPwogCQkJCU9CSl9PRlNfREVMVEEgOiBPQkpfUkVGX0RFTFRBOwotCQkJcmV1c2VkX2RlbHRhKys7Ci0JCX0KIAkJaGRybGVuID0gZW5jb2RlX2hlYWRlcih0eXBlLCBlbnRyeS0+c2l6ZSwgaGVhZGVyKTsKKwogCQlvZmZzZXQgPSBlbnRyeS0+aW5fcGFja19vZmZzZXQ7CiAJCXJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBvZmZzZXQpOwogCQlkYXRhbGVuID0gcmV2aWR4WzFdLm9mZnNldCAtIG9mZnNldDsKIAkJaWYgKCFwYWNrX3RvX3N0ZG91dCAmJiBwLT5pbmRleF92ZXJzaW9uID4gMSAmJgotCQkgICAgY2hlY2tfcGFja19jcmMocCwgJndfY3Vycywgb2Zmc2V0LCBkYXRhbGVuLCByZXZpZHgtPm5yKSkKLQkJCWRpZSgiYmFkIHBhY2tlZCBvYmplY3QgQ1JDIGZvciAlcyIsIHNoYTFfdG9faGV4KGVudHJ5LT5pZHguc2hhMSkpOworCQkgICAgY2hlY2tfcGFja19jcmMocCwgJndfY3Vycywgb2Zmc2V0LCBkYXRhbGVuLCByZXZpZHgtPm5yKSkgeworCQkJZXJyb3IoImJhZCBwYWNrZWQgb2JqZWN0IENSQyBmb3IgJXMiLCBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKKwkJCXVudXNlX3BhY2soJndfY3Vycyk7CisJCQlnb3RvIG5vX3JldXNlOworCQl9CisKIAkJb2Zmc2V0ICs9IGVudHJ5LT5pbl9wYWNrX2hlYWRlcl9zaXplOwogCQlkYXRhbGVuIC09IGVudHJ5LT5pbl9wYWNrX2hlYWRlcl9zaXplOworCQlpZiAoIXBhY2tfdG9fc3Rkb3V0ICYmIHAtPmluZGV4X3ZlcnNpb24gPT0gMSAmJgorCQkgICAgY2hlY2tfcGFja19pbmZsYXRlKHAsICZ3X2N1cnMsIG9mZnNldCwgZGF0YWxlbiwgZW50cnktPnNpemUpKSB7CisJCQllcnJvcigiY29ycnVwdCBwYWNrZWQgb2JqZWN0IGZvciAlcyIsIHNoYTFfdG9faGV4KGVudHJ5LT5pZHguc2hhMSkpOworCQkJdW51c2VfcGFjaygmd19jdXJzKTsKKwkJCWdvdG8gbm9fcmV1c2U7CisJCX0KKwogCQlpZiAodHlwZSA9PSBPQkpfT0ZTX0RFTFRBKSB7CiAJCQlvZmZfdCBvZnMgPSBlbnRyeS0+aWR4Lm9mZnNldCAtIGVudHJ5LT5kZWx0YS0+aWR4Lm9mZnNldDsKIAkJCXVuc2lnbmVkIHBvcyA9IHNpemVvZihkaGVhZGVyKSAtIDE7CiAJCQlkaGVhZGVyW3Bvc10gPSBvZnMgJiAxMjc7CiAJCQl3aGlsZSAob2ZzID4+PSA3KQogCQkJCWRoZWFkZXJbLS1wb3NdID0gMTI4IHwgKC0tb2ZzICYgMTI3KTsKLQkJCWlmIChsaW1pdCAmJiBoZHJsZW4gKyBzaXplb2YoZGhlYWRlcikgLSBwb3MgKyBkYXRhbGVuICsgMjAgPj0gbGltaXQpCisJCQlpZiAobGltaXQgJiYgaGRybGVuICsgc2l6ZW9mKGRoZWFkZXIpIC0gcG9zICsgZGF0YWxlbiArIDIwID49IGxpbWl0KSB7CisJCQkJdW51c2VfcGFjaygmd19jdXJzKTsKIAkJCQlyZXR1cm4gMDsKKwkJCX0KIAkJCXNoYTF3cml0ZShmLCBoZWFkZXIsIGhkcmxlbik7CiAJCQlzaGExd3JpdGUoZiwgZGhlYWRlciArIHBvcywgc2l6ZW9mKGRoZWFkZXIpIC0gcG9zKTsKIAkJCWhkcmxlbiArPSBzaXplb2YoZGhlYWRlcikgLSBwb3M7CisJCQlyZXVzZWRfZGVsdGErKzsKIAkJfSBlbHNlIGlmICh0eXBlID09IE9CSl9SRUZfREVMVEEpIHsKLQkJCWlmIChsaW1pdCAmJiBoZHJsZW4gKyAyMCArIGRhdGFsZW4gKyAyMCA+PSBsaW1pdCkKKwkJCWlmIChsaW1pdCAmJiBoZHJsZW4gKyAyMCArIGRhdGFsZW4gKyAyMCA+PSBsaW1pdCkgeworCQkJCXVudXNlX3BhY2soJndfY3Vycyk7CiAJCQkJcmV0dXJuIDA7CisJCQl9CiAJCQlzaGExd3JpdGUoZiwgaGVhZGVyLCBoZHJsZW4pOwogCQkJc2hhMXdyaXRlKGYsIGVudHJ5LT5kZWx0YS0+aWR4LnNoYTEsIDIwKTsKIAkJCWhkcmxlbiArPSAyMDsKKwkJCXJldXNlZF9kZWx0YSsrOwogCQl9IGVsc2UgewotCQkJaWYgKGxpbWl0ICYmIGhkcmxlbiArIGRhdGFsZW4gKyAyMCA+PSBsaW1pdCkKKwkJCWlmIChsaW1pdCAmJiBoZHJsZW4gKyBkYXRhbGVuICsgMjAgPj0gbGltaXQpIHsKKwkJCQl1bnVzZV9wYWNrKCZ3X2N1cnMpOwogCQkJCXJldHVybiAwOworCQkJfQogCQkJc2hhMXdyaXRlKGYsIGhlYWRlciwgaGRybGVuKTsKIAkJfQotCi0JCWlmICghcGFja190b19zdGRvdXQgJiYgcC0+aW5kZXhfdmVyc2lvbiA9PSAxICYmCi0JCSAgICBjaGVja19wYWNrX2luZmxhdGUocCwgJndfY3Vycywgb2Zmc2V0LCBkYXRhbGVuLCBlbnRyeS0+c2l6ZSkpCi0JCQlkaWUoImNvcnJ1cHQgcGFja2VkIG9iamVjdCBmb3IgJXMiLCBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKIAkJY29weV9wYWNrX2RhdGEoZiwgcCwgJndfY3Vycywgb2Zmc2V0LCBkYXRhbGVuKTsKIAkJdW51c2VfcGFjaygmd19jdXJzKTsKIAkJcmV1c2VkKys7CkBAIC0xMDE3LDkgKzEwMzIsMTEgQEAKIAkJICogV2Ugd2FudCBpbl9wYWNrX3R5cGUgZXZlbiBpZiB3ZSBkbyBub3QgcmV1c2UgZGVsdGEKIAkJICogc2luY2Ugbm9uLWRlbHRhIHJlcHJlc2VudGF0aW9ucyBjb3VsZCBzdGlsbCBiZSByZXVzZWQuCiAJCSAqLwotCQl1c2VkID0gdW5wYWNrX29iamVjdF9oZWFkZXJfZ2VudGx5KGJ1ZiwgYXZhaWwsCisJCXVzZWQgPSB1bnBhY2tfb2JqZWN0X2hlYWRlcl9idWZmZXIoYnVmLCBhdmFpbCwKIAkJCQkJCSAgICZlbnRyeS0+aW5fcGFja190eXBlLAogCQkJCQkJICAgJmVudHJ5LT5zaXplKTsKKwkJaWYgKHVzZWQgPT0gMCkKKwkJCWdvdG8gZ2l2ZV91cDsKIAogCQkvKgogCQkgKiBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGRlbHRhIGFuZCBpZiBzbyB3aGV0aGVyIHdlIGNhbgpAQCAtMTAzMSw2ICsxMDQ4LDggQEAKIAkJCS8qIE5vdCBhIGRlbHRhIGhlbmNlIHdlJ3ZlIGFscmVhZHkgZ290IGFsbCB3ZSBuZWVkLiAqLwogCQkJZW50cnktPnR5cGUgPSBlbnRyeS0+aW5fcGFja190eXBlOwogCQkJZW50cnktPmluX3BhY2tfaGVhZGVyX3NpemUgPSB1c2VkOworCQkJaWYgKGVudHJ5LT50eXBlIDwgT0JKX0NPTU1JVCB8fCBlbnRyeS0+dHlwZSA+IE9CSl9CTE9CKQorCQkJCWdvdG8gZ2l2ZV91cDsKIAkJCXVudXNlX3BhY2soJndfY3Vycyk7CiAJCQlyZXR1cm47CiAJCWNhc2UgT0JKX1JFRl9ERUxUQToKQEAgLTEwNDcsMTkgKzEwNjYsMjUgQEAKIAkJCW9mcyA9IGMgJiAxMjc7CiAJCQl3aGlsZSAoYyAmIDEyOCkgewogCQkJCW9mcyArPSAxOwotCQkJCWlmICghb2ZzIHx8IE1TQihvZnMsIDcpKQotCQkJCQlkaWUoImRlbHRhIGJhc2Ugb2Zmc2V0IG92ZXJmbG93IGluIHBhY2sgZm9yICVzIiwKLQkJCQkJICAgIHNoYTFfdG9faGV4KGVudHJ5LT5pZHguc2hhMSkpOworCQkJCWlmICghb2ZzIHx8IE1TQihvZnMsIDcpKSB7CisJCQkJCWVycm9yKCJkZWx0YSBiYXNlIG9mZnNldCBvdmVyZmxvdyBpbiBwYWNrIGZvciAlcyIsCisJCQkJCSAgICAgIHNoYTFfdG9faGV4KGVudHJ5LT5pZHguc2hhMSkpOworCQkJCQlnb3RvIGdpdmVfdXA7CisJCQkJfQogCQkJCWMgPSBidWZbdXNlZF8wKytdOwogCQkJCW9mcyA9IChvZnMgPDwgNykgKyAoYyAmIDEyNyk7CiAJCQl9Ci0JCQlpZiAob2ZzID49IGVudHJ5LT5pbl9wYWNrX29mZnNldCkKLQkJCQlkaWUoImRlbHRhIGJhc2Ugb2Zmc2V0IG91dCBvZiBib3VuZCBmb3IgJXMiLAotCQkJCSAgICBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKIAkJCW9mcyA9IGVudHJ5LT5pbl9wYWNrX29mZnNldCAtIG9mczsKKwkJCWlmIChvZnMgPD0gMCB8fCBvZnMgPj0gZW50cnktPmluX3BhY2tfb2Zmc2V0KSB7CisJCQkJZXJyb3IoImRlbHRhIGJhc2Ugb2Zmc2V0IG91dCBvZiBib3VuZCBmb3IgJXMiLAorCQkJCSAgICAgIHNoYTFfdG9faGV4KGVudHJ5LT5pZHguc2hhMSkpOworCQkJCWdvdG8gZ2l2ZV91cDsKKwkJCX0KIAkJCWlmIChyZXVzZV9kZWx0YSAmJiAhZW50cnktPnByZWZlcnJlZF9iYXNlKSB7CiAJCQkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHg7CiAJCQkJcmV2aWR4ID0gZmluZF9wYWNrX3JldmluZGV4KHAsIG9mcyk7CisJCQkJaWYgKCFyZXZpZHgpCisJCQkJCWdvdG8gZ2l2ZV91cDsKIAkJCQliYXNlX3JlZiA9IG50aF9wYWNrZWRfb2JqZWN0X3NoYTEocCwgcmV2aWR4LT5ucik7CiAJCQl9CiAJCQllbnRyeS0+aW5fcGFja19oZWFkZXJfc2l6ZSA9IHVzZWQgKyB1c2VkXzA7CkBAIC0xMDc5LDYgKzExMDQsNyBAQAogCQkJICovCiAJCQllbnRyeS0+dHlwZSA9IGVudHJ5LT5pbl9wYWNrX3R5cGU7CiAJCQllbnRyeS0+ZGVsdGEgPSBiYXNlX2VudHJ5OworCQkJZW50cnktPmRlbHRhX3NpemUgPSBlbnRyeS0+c2l6ZTsKIAkJCWVudHJ5LT5kZWx0YV9zaWJsaW5nID0gYmFzZV9lbnRyeS0+ZGVsdGFfY2hpbGQ7CiAJCQliYXNlX2VudHJ5LT5kZWx0YV9jaGlsZCA9IGVudHJ5OwogCQkJdW51c2VfcGFjaygmd19jdXJzKTsKQEAgLTEwOTMsNiArMTExOSw4IEBACiAJCQkgKi8KIAkJCWVudHJ5LT5zaXplID0gZ2V0X3NpemVfZnJvbV9kZWx0YShwLCAmd19jdXJzLAogCQkJCQllbnRyeS0+aW5fcGFja19vZmZzZXQgKyBlbnRyeS0+aW5fcGFja19oZWFkZXJfc2l6ZSk7CisJCQlpZiAoZW50cnktPnNpemUgPT0gMCkKKwkJCQlnb3RvIGdpdmVfdXA7CiAJCQl1bnVzZV9wYWNrKCZ3X2N1cnMpOwogCQkJcmV0dXJuOwogCQl9CkBAIC0xMTAyLDYgKzExMzAsNyBAQAogCQkgKiB3aXRoIHNoYTFfb2JqZWN0X2luZm8oKSB0byBmaW5kIGFib3V0IHRoZSBvYmplY3QgdHlwZQogCQkgKiBhdCB0aGlzIHBvaW50Li4uCiAJCSAqLworCQlnaXZlX3VwOgogCQl1bnVzZV9wYWNrKCZ3X2N1cnMpOwogCX0KIApAQCAtMTM4NCwxMiArMTQxMywxMCBAQAogCQkJaW50IHdpbmRvdywgaW50IGRlcHRoLCB1bnNpZ25lZCAqcHJvY2Vzc2VkKQogewogCXVpbnQzMl90IGksIGlkeCA9IDAsIGNvdW50ID0gMDsKLQl1bnNpZ25lZCBpbnQgYXJyYXlfc2l6ZSA9IHdpbmRvdyAqIHNpemVvZihzdHJ1Y3QgdW5wYWNrZWQpOwogCXN0cnVjdCB1bnBhY2tlZCAqYXJyYXk7CiAJdW5zaWduZWQgbG9uZyBtZW1fdXNhZ2UgPSAwOwogCi0JYXJyYXkgPSB4bWFsbG9jKGFycmF5X3NpemUpOwotCW1lbXNldChhcnJheSwgMCwgYXJyYXlfc2l6ZSk7CisJYXJyYXkgPSB4Y2FsbG9jKHdpbmRvdywgc2l6ZW9mKHN0cnVjdCB1bnBhY2tlZCkpOwogCiAJZm9yICg7OykgewogCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICplbnRyeTsKQEAgLTE3MTUsNiArMTc0MiwxNiBAQAogCiAJZ2V0X29iamVjdF9kZXRhaWxzKCk7CiAKKwkvKgorCSAqIElmIHdlJ3JlIGxvY2FsbHkgcmVwYWNraW5nIHRoZW4gd2UgbmVlZCB0byBiZSBkb3VibHkgY2FyZWZ1bAorCSAqIGZyb20gbm93IG9uIGluIG9yZGVyIHRvIG1ha2Ugc3VyZSBubyBzdGVhbHRoIGNvcnJ1cHRpb24gZ2V0cworCSAqIHByb3BhZ2F0ZWQgdG8gdGhlIG5ldyBwYWNrLiAgQ2xpZW50cyByZWNlaXZpbmcgc3RyZWFtZWQgcGFja3MKKwkgKiBzaG91bGQgdmFsaWRhdGUgZXZlcnl0aGluZyB0aGV5IGdldCBhbnl3YXkgc28gbm8gbmVlZCB0byBpbmN1cgorCSAqIHRoZSBhZGRpdGlvbmFsIGNvc3QgaGVyZSBpbiB0aGF0IGNhc2UuCisJICovCisJaWYgKCFwYWNrX3RvX3N0ZG91dCkKKwkJZG9fY2hlY2tfcGFja2VkX29iamVjdF9jcmMgPSAxOworCiAJaWYgKCFucl9vYmplY3RzIHx8ICF3aW5kb3cgfHwgIWRlcHRoKQogCQlyZXR1cm47CiAKQEAgLTE3NDEsNiArMTc3OCwxNCBAQAogCQkJaWYgKGVudHJ5LT50eXBlIDwgMCkKIAkJCQlkaWUoInVuYWJsZSB0byBnZXQgdHlwZSBvZiBvYmplY3QgJXMiLAogCQkJCSAgICBzaGExX3RvX2hleChlbnRyeS0+aWR4LnNoYTEpKTsKKwkJfSBlbHNlIHsKKwkJCWlmIChlbnRyeS0+dHlwZSA8IDApIHsKKwkJCQkvKgorCQkJCSAqIFRoaXMgb2JqZWN0IGlzIG5vdCBmb3VuZCwgYnV0IHdlCisJCQkJICogZG9uJ3QgaGF2ZSB0byBpbmNsdWRlIGl0IGFueXdheS4KKwkJCQkgKi8KKwkJCQljb250aW51ZTsKKwkJCX0KIAkJfQogCiAJCWRlbHRhX2xpc3RbbisrXSA9IGVudHJ5OwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1wcnVuZS5jIGIvYnVpbHRpbi1wcnVuZS5jCmluZGV4IDE2NjNmOGIuLjdiNGVjODAgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tcHJ1bmUuYworKysgYi9idWlsdGluLXBydW5lLmMKQEAgLTcsMTAgKzcsMTEgQEAKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcHJ1bmVfdXNhZ2VbXSA9IHsKLQkiZ2l0IHBydW5lIFstbl0gWy0tZXhwaXJlIDx0aW1lPl0gWy0tXSBbPGhlYWQ+Li4uXSIsCisJImdpdCBwcnVuZSBbLW5dIFstdl0gWy0tZXhwaXJlIDx0aW1lPl0gWy0tXSBbPGhlYWQ+Li4uXSIsCiAJTlVMTAogfTsKIHN0YXRpYyBpbnQgc2hvd19vbmx5Oworc3RhdGljIGludCB2ZXJib3NlOwogc3RhdGljIHVuc2lnbmVkIGxvbmcgZXhwaXJlOwogCiBzdGF0aWMgaW50IHBydW5lX3RtcF9vYmplY3QoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCkBAIC0zOSwxMSArNDAsMTIgQEAKIAkJaWYgKHN0LnN0X210aW1lID4gZXhwaXJlKQogCQkJcmV0dXJuIDA7CiAJfQotCWlmIChzaG93X29ubHkpIHsKKwlpZiAoc2hvd19vbmx5IHx8IHZlcmJvc2UpIHsKIAkJZW51bSBvYmplY3RfdHlwZSB0eXBlID0gc2hhMV9vYmplY3RfaW5mbyhzaGExLCBOVUxMKTsKIAkJcHJpbnRmKCIlcyAlc1xuIiwgc2hhMV90b19oZXgoc2hhMSksCiAJCSAgICAgICAodHlwZSA+IDApID8gdHlwZW5hbWUodHlwZSkgOiAidW5rbm93biIpOwotCX0gZWxzZQorCX0KKwlpZiAoIXNob3dfb25seSkKIAkJdW5saW5rKGZ1bGxwYXRoKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTEzNSw2ICsxMzcsOCBAQAogCWNvbnN0IHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfQk9PTEVBTignbicsIE5VTEwsICZzaG93X29ubHksCiAJCQkgICAgImRvIG5vdCByZW1vdmUsIHNob3cgb25seSIpLAorCQlPUFRfQk9PTEVBTigndicsIE5VTEwsICZ2ZXJib3NlLAorCQkJInJlcG9ydCBwcnVuZWQgb2JqZWN0cyIpLAogCQlPUFRfREFURSgwLCAiZXhwaXJlIiwgJmV4cGlyZSwKIAkJCSAiZXhwaXJlIG9iamVjdHMgb2xkZXIgdGhhbiA8dGltZT4iKSwKIAkJT1BUX0VORCgpCmRpZmYgLS1naXQgYS9idWlsdGluLXB1c2guYyBiL2J1aWx0aW4tcHVzaC5jCmluZGV4IGY1Y2M3NjIuLjEyMmZkY2YgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tcHVzaC5jCisrKyBiL2J1aWx0aW4tcHVzaC5jCkBAIC01OSw4ICs1OSwxNyBAQAogCWlmIChyZW1vdGUtPm1pcnJvcikKIAkJZmxhZ3MgfD0gKFRSQU5TUE9SVF9QVVNIX01JUlJPUnxUUkFOU1BPUlRfUFVTSF9GT1JDRSk7CiAKLQlpZiAoKGZsYWdzICYgKFRSQU5TUE9SVF9QVVNIX0FMTHxUUkFOU1BPUlRfUFVTSF9NSVJST1IpKSAmJiByZWZzcGVjKQotCQlyZXR1cm4gLTE7CisJaWYgKChmbGFncyAmIFRSQU5TUE9SVF9QVVNIX0FMTCkgJiYgcmVmc3BlYykgeworCQlpZiAoIXN0cmNtcCgqcmVmc3BlYywgInJlZnMvdGFncy8qIikpCisJCQlyZXR1cm4gZXJyb3IoIi0tYWxsIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIpOworCQlyZXR1cm4gZXJyb3IoIi0tYWxsIGNhbid0IGJlIGNvbWJpbmVkIHdpdGggcmVmc3BlY3MiKTsKKwl9CisKKwlpZiAoKGZsYWdzICYgVFJBTlNQT1JUX1BVU0hfTUlSUk9SKSAmJiByZWZzcGVjKSB7CisJCWlmICghc3RyY21wKCpyZWZzcGVjLCAicmVmcy90YWdzLyoiKSkKKwkJCXJldHVybiBlcnJvcigiLS1taXJyb3IgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIik7CisJCXJldHVybiBlcnJvcigiLS1taXJyb3IgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIpOworCX0KIAogCWlmICgoZmxhZ3MgJiAoVFJBTlNQT1JUX1BVU0hfQUxMfFRSQU5TUE9SVF9QVVNIX01JUlJPUikpID09CiAJCQkJKFRSQU5TUE9SVF9QVVNIX0FMTHxUUkFOU1BPUlRfUFVTSF9NSVJST1IpKSB7CmRpZmYgLS1naXQgYS9yZWNlaXZlLXBhY2suYyBiL2J1aWx0aW4tcmVjZWl2ZS1wYWNrLmMKc2ltaWxhcml0eSBpbmRleCA4MSUKcmVuYW1lIGZyb20gcmVjZWl2ZS1wYWNrLmMKcmVuYW1lIHRvIGJ1aWx0aW4tcmVjZWl2ZS1wYWNrLmMKaW5kZXggZjAxNDViZC4uZGI2N2MzMSAxMDA2NDQKLS0tIGEvcmVjZWl2ZS1wYWNrLmMKKysrIGIvYnVpbHRpbi1yZWNlaXZlLXBhY2suYwpAQCAtNiwxMCArNiwyMCBAQAogI2luY2x1ZGUgImV4ZWNfY21kLmgiCiAjaW5jbHVkZSAiY29tbWl0LmgiCiAjaW5jbHVkZSAib2JqZWN0LmgiCisjaW5jbHVkZSAicmVtb3RlLmgiCisjaW5jbHVkZSAidHJhbnNwb3J0LmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyIHJlY2VpdmVfcGFja191c2FnZVtdID0gImdpdC1yZWNlaXZlLXBhY2sgPGdpdC1kaXI+IjsKIAorZW51bSBkZW55X2FjdGlvbiB7CisJREVOWV9JR05PUkUsCisJREVOWV9XQVJOLAorCURFTllfUkVGVVNFLAorfTsKKworc3RhdGljIGludCBkZW55X2RlbGV0ZXMgPSAwOwogc3RhdGljIGludCBkZW55X25vbl9mYXN0X2ZvcndhcmRzID0gMDsKK3N0YXRpYyBlbnVtIGRlbnlfYWN0aW9uIGRlbnlfY3VycmVudF9icmFuY2ggPSBERU5ZX1dBUk47CiBzdGF0aWMgaW50IHJlY2VpdmVfZnNja19vYmplY3RzOwogc3RhdGljIGludCByZWNlaXZlX3VucGFja19saW1pdCA9IC0xOwogc3RhdGljIGludCB0cmFuc2Zlcl91bnBhY2tfbGltaXQgPSAtMTsKQEAgLTE5LDggKzI5LDI4IEBACiBzdGF0aWMgY2hhciBjYXBhYmlsaXRpZXNbXSA9ICIgcmVwb3J0LXN0YXR1cyBkZWxldGUtcmVmcyAiOwogc3RhdGljIGludCBjYXBhYmlsaXRpZXNfc2VudDsKIAorc3RhdGljIGVudW0gZGVueV9hY3Rpb24gcGFyc2VfZGVueV9hY3Rpb24oY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKwlpZiAodmFsdWUpIHsKKwkJaWYgKCFzdHJjYXNlY21wKHZhbHVlLCAiaWdub3JlIikpCisJCQlyZXR1cm4gREVOWV9JR05PUkU7CisJCWlmICghc3RyY2FzZWNtcCh2YWx1ZSwgIndhcm4iKSkKKwkJCXJldHVybiBERU5ZX1dBUk47CisJCWlmICghc3RyY2FzZWNtcCh2YWx1ZSwgInJlZnVzZSIpKQorCQkJcmV0dXJuIERFTllfUkVGVVNFOworCX0KKwlpZiAoZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpKQorCQlyZXR1cm4gREVOWV9SRUZVU0U7CisJcmV0dXJuIERFTllfSUdOT1JFOworfQorCiBzdGF0aWMgaW50IHJlY2VpdmVfcGFja19jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCiB7CisJaWYgKHN0cmNtcCh2YXIsICJyZWNlaXZlLmRlbnlkZWxldGVzIikgPT0gMCkgeworCQlkZW55X2RlbGV0ZXMgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKwogCWlmIChzdHJjbXAodmFyLCAicmVjZWl2ZS5kZW55bm9uZmFzdGZvcndhcmRzIikgPT0gMCkgewogCQlkZW55X25vbl9mYXN0X2ZvcndhcmRzID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOwogCQlyZXR1cm4gMDsKQEAgLTQxLDYgKzcxLDExIEBACiAJCXJldHVybiAwOwogCX0KIAorCWlmICghc3RyY21wKHZhciwgInJlY2VpdmUuZGVueWN1cnJlbnRicmFuY2giKSkgeworCQlkZW55X2N1cnJlbnRfYnJhbmNoID0gcGFyc2VfZGVueV9hY3Rpb24odmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKwogCXJldHVybiBnaXRfZGVmYXVsdF9jb25maWcodmFyLCB2YWx1ZSwgY2IpOwogfQogCkBAIC0xNjUsNiArMjAwLDIwIEBACiAJcmV0dXJuIGhvb2tfc3RhdHVzKHJ1bl9jb21tYW5kKCZwcm9jKSwgdXBkYXRlX2hvb2spOwogfQogCitzdGF0aWMgaW50IGlzX3JlZl9jaGVja2VkX291dChjb25zdCBjaGFyICpyZWYpCit7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwljb25zdCBjaGFyICpoZWFkOworCisJaWYgKGlzX2JhcmVfcmVwb3NpdG9yeSgpKQorCQlyZXR1cm4gMDsKKworCWhlYWQgPSByZXNvbHZlX3JlZigiSEVBRCIsIHNoYTEsIDAsIE5VTEwpOworCWlmICghaGVhZCkKKwkJcmV0dXJuIDA7CisJcmV0dXJuICFzdHJjbXAoaGVhZCwgcmVmKTsKK30KKwogc3RhdGljIGNvbnN0IGNoYXIgKnVwZGF0ZShzdHJ1Y3QgY29tbWFuZCAqY21kKQogewogCWNvbnN0IGNoYXIgKm5hbWUgPSBjbWQtPnJlZl9uYW1lOwpAQCAtMTc4LDExICsyMjcsMzUgQEAKIAkJcmV0dXJuICJmdW5ueSByZWZuYW1lIjsKIAl9CiAKKwlzd2l0Y2ggKGRlbnlfY3VycmVudF9icmFuY2gpIHsKKwljYXNlIERFTllfSUdOT1JFOgorCQlicmVhazsKKwljYXNlIERFTllfV0FSTjoKKwkJaWYgKCFpc19yZWZfY2hlY2tlZF9vdXQobmFtZSkpCisJCQlicmVhazsKKwkJd2FybmluZygidXBkYXRpbmcgdGhlIGN1cnJlbnRseSBjaGVja2VkIG91dCBicmFuY2g7IHRoaXMgbWF5IgorCQkJIiBjYXVzZSBjb25mdXNpb24sXG4iCisJCQkiYXMgdGhlIGluZGV4IGFuZCB3b3JraW5nIHRyZWUgZG8gbm90IHJlZmxlY3QgY2hhbmdlcyIKKwkJCSIgdGhhdCBhcmUgbm93IGluIEhFQUQuIik7CisJCWJyZWFrOworCWNhc2UgREVOWV9SRUZVU0U6CisJCWlmICghaXNfcmVmX2NoZWNrZWRfb3V0KG5hbWUpKQorCQkJYnJlYWs7CisJCWVycm9yKCJyZWZ1c2luZyB0byB1cGRhdGUgY2hlY2tlZCBvdXQgYnJhbmNoOiAlcyIsIG5hbWUpOworCQlyZXR1cm4gImJyYW5jaCBpcyBjdXJyZW50bHkgY2hlY2tlZCBvdXQiOworCX0KKwogCWlmICghaXNfbnVsbF9zaGExKG5ld19zaGExKSAmJiAhaGFzX3NoYTFfZmlsZShuZXdfc2hhMSkpIHsKIAkJZXJyb3IoInVucGFjayBzaG91bGQgaGF2ZSBnZW5lcmF0ZWQgJXMsICIKIAkJICAgICAgImJ1dCBJIGNhbid0IGZpbmQgaXQhIiwgc2hhMV90b19oZXgobmV3X3NoYTEpKTsKIAkJcmV0dXJuICJiYWQgcGFjayI7CiAJfQorCWlmIChkZW55X2RlbGV0ZXMgJiYgaXNfbnVsbF9zaGExKG5ld19zaGExKSAmJgorCSAgICAhaXNfbnVsbF9zaGExKG9sZF9zaGExKSAmJgorCSAgICAhcHJlZml4Y21wKG5hbWUsICJyZWZzL2hlYWRzLyIpKSB7CisJCWVycm9yKCJkZW55aW5nIHJlZiBkZWxldGlvbiBmb3IgJXMiLCBuYW1lKTsKKwkJcmV0dXJuICJkZWxldGlvbiBwcm9oaWJpdGVkIjsKKwl9CiAJaWYgKGRlbnlfbm9uX2Zhc3RfZm9yd2FyZHMgJiYgIWlzX251bGxfc2hhMShuZXdfc2hhMSkgJiYKIAkgICAgIWlzX251bGxfc2hhMShvbGRfc2hhMSkgJiYKIAkgICAgIXByZWZpeGNtcChuYW1lLCAicmVmcy9oZWFkcy8iKSkgewpAQCAtNDA3LDcgKzQ4MCw3IEBACiAJCWNoYXIga2VlcF9hcmdbMjU2XTsKIAkJc3RydWN0IGNoaWxkX3Byb2Nlc3MgaXA7CiAKLQkJcyA9IHNwcmludGYoa2VlcF9hcmcsICItLWtlZXA9cmVjZWl2ZS1wYWNrICVpIG9uICIsIGdldHBpZCgpKTsKKwkJcyA9IHNwcmludGYoa2VlcF9hcmcsICItLWtlZXA9cmVjZWl2ZS1wYWNrICUiUFJJdU1BWCIgb24gIiwgKHVpbnRtYXhfdCkgZ2V0cGlkKCkpOwogCQlpZiAoZ2V0aG9zdG5hbWUoa2VlcF9hcmcgKyBzLCBzaXplb2Yoa2VlcF9hcmcpIC0gcykpCiAJCQlzdHJjcHkoa2VlcF9hcmcgKyBzLCAibG9jYWxob3N0Iik7CiAKQEAgLTQ2MiwxNCArNTM1LDUzIEBACiAJcmV0dXJuIDE7CiB9CiAKLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3N0YXRpYyBpbnQgYWRkX3JlZnNfZnJvbV9hbHRlcm5hdGUoc3RydWN0IGFsdGVybmF0ZV9vYmplY3RfZGF0YWJhc2UgKmUsIHZvaWQgKnVudXNlZCkKK3sKKwljaGFyICpvdGhlcjsKKwlzaXplX3QgbGVuOworCXN0cnVjdCByZW1vdGUgKnJlbW90ZTsKKwlzdHJ1Y3QgdHJhbnNwb3J0ICp0cmFuc3BvcnQ7CisJY29uc3Qgc3RydWN0IHJlZiAqZXh0cmE7CisKKwllLT5uYW1lWy0xXSA9ICdcMCc7CisJb3RoZXIgPSB4c3RyZHVwKG1ha2VfYWJzb2x1dGVfcGF0aChlLT5iYXNlKSk7CisJZS0+bmFtZVstMV0gPSAnLyc7CisJbGVuID0gc3RybGVuKG90aGVyKTsKKworCXdoaWxlIChvdGhlcltsZW4tMV0gPT0gJy8nKQorCQlvdGhlclstLWxlbl0gPSAnXDAnOworCWlmIChsZW4gPCA4IHx8IG1lbWNtcChvdGhlciArIGxlbiAtIDgsICIvb2JqZWN0cyIsIDgpKQorCQlyZXR1cm4gMDsKKwkvKiBJcyB0aGlzIGEgZ2l0IHJlcG9zaXRvcnkgd2l0aCByZWZzPyAqLworCW1lbWNweShvdGhlciArIGxlbiAtIDgsICIvcmVmcyIsIDYpOworCWlmICghaXNfZGlyZWN0b3J5KG90aGVyKSkKKwkJcmV0dXJuIDA7CisJb3RoZXJbbGVuIC0gOF0gPSAnXDAnOworCXJlbW90ZSA9IHJlbW90ZV9nZXQob3RoZXIpOworCXRyYW5zcG9ydCA9IHRyYW5zcG9ydF9nZXQocmVtb3RlLCBvdGhlcik7CisJZm9yIChleHRyYSA9IHRyYW5zcG9ydF9nZXRfcmVtb3RlX3JlZnModHJhbnNwb3J0KTsKKwkgICAgIGV4dHJhOworCSAgICAgZXh0cmEgPSBleHRyYS0+bmV4dCkgeworCQlhZGRfZXh0cmFfcmVmKCIuaGF2ZSIsIGV4dHJhLT5vbGRfc2hhMSwgMCk7CisJfQorCXRyYW5zcG9ydF9kaXNjb25uZWN0KHRyYW5zcG9ydCk7CisJZnJlZShvdGhlcik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGFkZF9hbHRlcm5hdGVfcmVmcyh2b2lkKQoreworCWZvcmVhY2hfYWx0X29kYihhZGRfcmVmc19mcm9tX2FsdGVybmF0ZSwgTlVMTCk7Cit9CisKK2ludCBjbWRfcmVjZWl2ZV9wYWNrKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCWludCBpOwogCWNoYXIgKmRpciA9IE5VTEw7CiAKIAlhcmd2Kys7CiAJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgewotCQljaGFyICphcmcgPSAqYXJndisrOworCQljb25zdCBjaGFyICphcmcgPSAqYXJndisrOwogCiAJCWlmICgqYXJnID09ICctJykgewogCQkJLyogRG8gZmxhZyBoYW5kbGluZyBoZXJlICovCkBAIC00NzcsNyArNTg5LDcgQEAKIAkJfQogCQlpZiAoZGlyKQogCQkJdXNhZ2UocmVjZWl2ZV9wYWNrX3VzYWdlKTsKLQkJZGlyID0gYXJnOworCQlkaXIgPSB4c3RyZHVwKGFyZyk7CiAJfQogCWlmICghZGlyKQogCQl1c2FnZShyZWNlaXZlX3BhY2tfdXNhZ2UpOwpAQCAtNDk3LDcgKzYwOSw5IEBACiAJZWxzZSBpZiAoMCA8PSByZWNlaXZlX3VucGFja19saW1pdCkKIAkJdW5wYWNrX2xpbWl0ID0gcmVjZWl2ZV91bnBhY2tfbGltaXQ7CiAKKwlhZGRfYWx0ZXJuYXRlX3JlZnMoKTsKIAl3cml0ZV9oZWFkX2luZm8oKTsKKwljbGVhcl9leHRyYV9yZWZzKCk7CiAKIAkvKiBFT0YgKi8KIAlwYWNrZXRfZmx1c2goMSk7CmRpZmYgLS1naXQgYS9idWlsdGluLXJlZmxvZy5jIGIvYnVpbHRpbi1yZWZsb2cuYwppbmRleCBkYTk2ZGEzLi5kOTVmNTE1IDEwMDY0NAotLS0gYS9idWlsdGluLXJlZmxvZy5jCisrKyBiL2J1aWx0aW4tcmVmbG9nLmMKQEAgLTU0MCwxMSArNTQwLDExIEBACiAJCWZyZWUoY29sbGVjdGVkLmUpOwogCX0KIAotCXdoaWxlIChpIDwgYXJnYykgewotCQljb25zdCBjaGFyICpyZWYgPSBhcmd2W2krK107CisJZm9yICg7IGkgPCBhcmdjOyBpKyspIHsKKwkJY2hhciAqcmVmOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCQlpZiAoIXJlc29sdmVfcmVmKHJlZiwgc2hhMSwgMSwgTlVMTCkpIHsKLQkJCXN0YXR1cyB8PSBlcnJvcigiJXMgcG9pbnRzIG5vd2hlcmUhIiwgcmVmKTsKKwkJaWYgKCFkd2ltX2xvZyhhcmd2W2ldLCBzdHJsZW4oYXJndltpXSksIHNoYTEsICZyZWYpKSB7CisJCQlzdGF0dXMgfD0gZXJyb3IoIiVzIHBvaW50cyBub3doZXJlISIsIGFyZ3ZbaV0pOwogCQkJY29udGludWU7CiAJCX0KIAkJc2V0X3JlZmxvZ19leHBpcnlfcGFyYW0oJmNiLCBleHBsaWNpdF9leHBpcnksIHJlZik7CmRpZmYgLS1naXQgYS9idWlsdGluLXJlbW90ZS5jIGIvYnVpbHRpbi1yZW1vdGUuYwppbmRleCA1YWY0ZTY0Li5hYmM4ZGQ4IDEwMDY0NAotLS0gYS9idWlsdGluLXJlbW90ZS5jCisrKyBiL2J1aWx0aW4tcmVtb3RlLmMKQEAgLTgsMTIgKzgsMTMgQEAKICNpbmNsdWRlICJyZWZzLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9yZW1vdGVfdXNhZ2VbXSA9IHsKLQkiZ2l0IHJlbW90ZSIsCi0JImdpdCByZW1vdGUgYWRkIDxuYW1lPiA8dXJsPiIsCisJImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSIsCisJImdpdCByZW1vdGUgYWRkIFstdCA8YnJhbmNoPl0gWy1tIDxtYXN0ZXI+XSBbLWZdIFstLW1pcnJvcl0gPG5hbWU+IDx1cmw+IiwKKwkiZ2l0IHJlbW90ZSByZW5hbWUgPG9sZD4gPG5ldz4iLAogCSJnaXQgcmVtb3RlIHJtIDxuYW1lPiIsCi0JImdpdCByZW1vdGUgc2hvdyA8bmFtZT4iLAotCSJnaXQgcmVtb3RlIHBydW5lIDxuYW1lPiIsCi0JImdpdCByZW1vdGUgdXBkYXRlIFtncm91cF0iLAorCSJnaXQgcmVtb3RlIHNob3cgWy1uXSA8bmFtZT4iLAorCSJnaXQgcmVtb3RlIHBydW5lIFstbiB8IC0tZHJ5LXJ1bl0gPG5hbWU+IiwKKwkiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIHVwZGF0ZSBbZ3JvdXBdIiwKIAlOVUxMCiB9OwogCkBAIC00MSw3ICs0MiwxMSBAQAogCiBzdGF0aWMgaW50IGZldGNoX3JlbW90ZShjb25zdCBjaGFyICpuYW1lKQogewotCWNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsgImZldGNoIiwgbmFtZSwgTlVMTCB9OworCWNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsgImZldGNoIiwgbmFtZSwgTlVMTCwgTlVMTCB9OworCWlmICh2ZXJib3NlKSB7CisJCWFyZ3ZbMV0gPSAiLXYiOworCQlhcmd2WzJdID0gbmFtZTsKKwl9CiAJcHJpbnRmKCJVcGRhdGluZyAlc1xuIiwgbmFtZSk7CiAJaWYgKHJ1bl9jb21tYW5kX3Zfb3B0KGFyZ3YsIFJVTl9HSVRfQ01EKSkKIAkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3QgZmV0Y2ggJXMiLCBuYW1lKTsKQEAgLTU0LDcgKzU5LDcgQEAKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgdHJhY2sgPSB7IE5VTEwsIDAsIDAgfTsKIAljb25zdCBjaGFyICptYXN0ZXIgPSBOVUxMOwogCXN0cnVjdCByZW1vdGUgKnJlbW90ZTsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiwgYnVmMjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklULCBidWYyID0gU1RSQlVGX0lOSVQ7CiAJY29uc3QgY2hhciAqbmFtZSwgKnVybDsKIAlpbnQgaTsKIApAQCAtODEsOSArODYsNiBAQAogCQkJcmVtb3RlLT5mZXRjaF9yZWZzcGVjX25yKSkKIAkJZGllKCJyZW1vdGUgJXMgYWxyZWFkeSBleGlzdHMuIiwgbmFtZSk7CiAKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKLQlzdHJidWZfaW5pdCgmYnVmMiwgMCk7Ci0KIAlzdHJidWZfYWRkZigmYnVmMiwgInJlZnMvaGVhZHMvdGVzdDpyZWZzL3JlbW90ZXMvJXMvdGVzdCIsIG5hbWUpOwogCWlmICghdmFsaWRfZmV0Y2hfcmVmc3BlYyhidWYyLmJ1ZikpCiAJCWRpZSgiJyVzJyBpcyBub3QgYSB2YWxpZCByZW1vdGUgbmFtZSIsIG5hbWUpOwpAQCAtMzMyLDYgKzMzNCwxOTEgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RydWN0IHJlbmFtZV9pbmZvIHsKKwljb25zdCBjaGFyICpvbGQ7CisJY29uc3QgY2hhciAqbmV3OworCXN0cnVjdCBzdHJpbmdfbGlzdCAqcmVtb3RlX2JyYW5jaGVzOworfTsKKworc3RhdGljIGludCByZWFkX3JlbW90ZV9icmFuY2hlcyhjb25zdCBjaGFyICpyZWZuYW1lLAorCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFncywgdm9pZCAqY2JfZGF0YSkKK3sKKwlzdHJ1Y3QgcmVuYW1lX2luZm8gKnJlbmFtZSA9IGNiX2RhdGE7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKKwlpbnQgZmxhZzsKKwl1bnNpZ25lZCBjaGFyIG9yaWdfc2hhMVsyMF07CisJY29uc3QgY2hhciAqc3ltcmVmOworCisJc3RyYnVmX2FkZGYoJmJ1ZiwgInJlZnMvcmVtb3Rlcy8lcyIsIHJlbmFtZS0+b2xkKTsKKwlpZighcHJlZml4Y21wKHJlZm5hbWUsIGJ1Zi5idWYpKSB7CisJCWl0ZW0gPSBzdHJpbmdfbGlzdF9hcHBlbmQoeHN0cmR1cChyZWZuYW1lKSwgcmVuYW1lLT5yZW1vdGVfYnJhbmNoZXMpOworCQlzeW1yZWYgPSByZXNvbHZlX3JlZihyZWZuYW1lLCBvcmlnX3NoYTEsIDEsICZmbGFnKTsKKwkJaWYgKGZsYWcgJiBSRUZfSVNTWU1SRUYpCisJCQlpdGVtLT51dGlsID0geHN0cmR1cChzeW1yZWYpOworCQllbHNlCisJCQlpdGVtLT51dGlsID0gTlVMTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtaWdyYXRlX2ZpbGUoc3RydWN0IHJlbW90ZSAqcmVtb3RlKQoreworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJaW50IGk7CisJY2hhciAqcGF0aCA9IE5VTEw7CisKKwlzdHJidWZfYWRkZigmYnVmLCAicmVtb3RlLiVzLnVybCIsIHJlbW90ZS0+bmFtZSk7CisJZm9yIChpID0gMDsgaSA8IHJlbW90ZS0+dXJsX25yOyBpKyspCisJCWlmIChnaXRfY29uZmlnX3NldF9tdWx0aXZhcihidWYuYnVmLCByZW1vdGUtPnVybFtpXSwgIl4kIiwgMCkpCisJCQlyZXR1cm4gZXJyb3IoIkNvdWxkIG5vdCBhcHBlbmQgJyVzJyB0byAnJXMnIiwKKwkJCQkJcmVtb3RlLT51cmxbaV0sIGJ1Zi5idWYpOworCXN0cmJ1Zl9yZXNldCgmYnVmKTsKKwlzdHJidWZfYWRkZigmYnVmLCAicmVtb3RlLiVzLnB1c2giLCByZW1vdGUtPm5hbWUpOworCWZvciAoaSA9IDA7IGkgPCByZW1vdGUtPnB1c2hfcmVmc3BlY19ucjsgaSsrKQorCQlpZiAoZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXIoYnVmLmJ1ZiwgcmVtb3RlLT5wdXNoX3JlZnNwZWNbaV0sICJeJCIsIDApKQorCQkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3QgYXBwZW5kICclcycgdG8gJyVzJyIsCisJCQkJCXJlbW90ZS0+cHVzaF9yZWZzcGVjW2ldLCBidWYuYnVmKTsKKwlzdHJidWZfcmVzZXQoJmJ1Zik7CisJc3RyYnVmX2FkZGYoJmJ1ZiwgInJlbW90ZS4lcy5mZXRjaCIsIHJlbW90ZS0+bmFtZSk7CisJZm9yIChpID0gMDsgaSA8IHJlbW90ZS0+ZmV0Y2hfcmVmc3BlY19ucjsgaSsrKQorCQlpZiAoZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXIoYnVmLmJ1ZiwgcmVtb3RlLT5mZXRjaF9yZWZzcGVjW2ldLCAiXiQiLCAwKSkKKwkJCXJldHVybiBlcnJvcigiQ291bGQgbm90IGFwcGVuZCAnJXMnIHRvICclcyciLAorCQkJCQlyZW1vdGUtPmZldGNoX3JlZnNwZWNbaV0sIGJ1Zi5idWYpOworCWlmIChyZW1vdGUtPm9yaWdpbiA9PSBSRU1PVEVfUkVNT1RFUykKKwkJcGF0aCA9IGdpdF9wYXRoKCJyZW1vdGVzLyVzIiwgcmVtb3RlLT5uYW1lKTsKKwllbHNlIGlmIChyZW1vdGUtPm9yaWdpbiA9PSBSRU1PVEVfQlJBTkNIRVMpCisJCXBhdGggPSBnaXRfcGF0aCgiYnJhbmNoZXMvJXMiLCByZW1vdGUtPm5hbWUpOworCWlmIChwYXRoICYmIHVubGluayhwYXRoKSkKKwkJd2FybmluZygiZmFpbGVkIHRvIHJlbW92ZSAnJXMnIiwgcGF0aCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbXYoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQoreworCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geworCQlPUFRfRU5EKCkKKwl9OworCXN0cnVjdCByZW1vdGUgKm9sZHJlbW90ZSwgKm5ld3JlbW90ZTsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklULCBidWYyID0gU1RSQlVGX0lOSVQsIGJ1ZjMgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgcmVtb3RlX2JyYW5jaGVzID0geyBOVUxMLCAwLCAwLCAwIH07CisJc3RydWN0IHJlbmFtZV9pbmZvIHJlbmFtZTsKKwlpbnQgaTsKKworCWlmIChhcmdjICE9IDMpCisJCXVzYWdlX3dpdGhfb3B0aW9ucyhidWlsdGluX3JlbW90ZV91c2FnZSwgb3B0aW9ucyk7CisKKwlyZW5hbWUub2xkID0gYXJndlsxXTsKKwlyZW5hbWUubmV3ID0gYXJndlsyXTsKKwlyZW5hbWUucmVtb3RlX2JyYW5jaGVzID0gJnJlbW90ZV9icmFuY2hlczsKKworCW9sZHJlbW90ZSA9IHJlbW90ZV9nZXQocmVuYW1lLm9sZCk7CisJaWYgKCFvbGRyZW1vdGUpCisJCWRpZSgiTm8gc3VjaCByZW1vdGU6ICVzIiwgcmVuYW1lLm9sZCk7CisKKwlpZiAoIXN0cmNtcChyZW5hbWUub2xkLCByZW5hbWUubmV3KSAmJiBvbGRyZW1vdGUtPm9yaWdpbiAhPSBSRU1PVEVfQ09ORklHKQorCQlyZXR1cm4gbWlncmF0ZV9maWxlKG9sZHJlbW90ZSk7CisKKwluZXdyZW1vdGUgPSByZW1vdGVfZ2V0KHJlbmFtZS5uZXcpOworCWlmIChuZXdyZW1vdGUgJiYgKG5ld3JlbW90ZS0+dXJsX25yID4gMSB8fCBuZXdyZW1vdGUtPmZldGNoX3JlZnNwZWNfbnIpKQorCQlkaWUoInJlbW90ZSAlcyBhbHJlYWR5IGV4aXN0cy4iLCByZW5hbWUubmV3KTsKKworCXN0cmJ1Zl9hZGRmKCZidWYsICJyZWZzL2hlYWRzL3Rlc3Q6cmVmcy9yZW1vdGVzLyVzL3Rlc3QiLCByZW5hbWUubmV3KTsKKwlpZiAoIXZhbGlkX2ZldGNoX3JlZnNwZWMoYnVmLmJ1ZikpCisJCWRpZSgiJyVzJyBpcyBub3QgYSB2YWxpZCByZW1vdGUgbmFtZSIsIHJlbmFtZS5uZXcpOworCisJc3RyYnVmX3Jlc2V0KCZidWYpOworCXN0cmJ1Zl9hZGRmKCZidWYsICJyZW1vdGUuJXMiLCByZW5hbWUub2xkKTsKKwlzdHJidWZfYWRkZigmYnVmMiwgInJlbW90ZS4lcyIsIHJlbmFtZS5uZXcpOworCWlmIChnaXRfY29uZmlnX3JlbmFtZV9zZWN0aW9uKGJ1Zi5idWYsIGJ1ZjIuYnVmKSA8IDEpCisJCXJldHVybiBlcnJvcigiQ291bGQgbm90IHJlbmFtZSBjb25maWcgc2VjdGlvbiAnJXMnIHRvICclcyciLAorCQkJCWJ1Zi5idWYsIGJ1ZjIuYnVmKTsKKworCXN0cmJ1Zl9yZXNldCgmYnVmKTsKKwlzdHJidWZfYWRkZigmYnVmLCAicmVtb3RlLiVzLmZldGNoIiwgcmVuYW1lLm5ldyk7CisJaWYgKGdpdF9jb25maWdfc2V0X211bHRpdmFyKGJ1Zi5idWYsIE5VTEwsIE5VTEwsIDEpKQorCQlyZXR1cm4gZXJyb3IoIkNvdWxkIG5vdCByZW1vdmUgY29uZmlnIHNlY3Rpb24gJyVzJyIsIGJ1Zi5idWYpOworCWZvciAoaSA9IDA7IGkgPCBvbGRyZW1vdGUtPmZldGNoX3JlZnNwZWNfbnI7IGkrKykgeworCQljaGFyICpwdHI7CisKKwkJc3RyYnVmX3Jlc2V0KCZidWYyKTsKKwkJc3RyYnVmX2FkZHN0cigmYnVmMiwgb2xkcmVtb3RlLT5mZXRjaF9yZWZzcGVjW2ldKTsKKwkJcHRyID0gc3Ryc3RyKGJ1ZjIuYnVmLCByZW5hbWUub2xkKTsKKwkJaWYgKHB0cikKKwkJCXN0cmJ1Zl9zcGxpY2UoJmJ1ZjIsIHB0ci1idWYyLmJ1Ziwgc3RybGVuKHJlbmFtZS5vbGQpLAorCQkJCQlyZW5hbWUubmV3LCBzdHJsZW4ocmVuYW1lLm5ldykpOworCQlpZiAoZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXIoYnVmLmJ1ZiwgYnVmMi5idWYsICJeJCIsIDApKQorCQkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3QgYXBwZW5kICclcyciLCBidWYuYnVmKTsKKwl9CisKKwlyZWFkX2JyYW5jaGVzKCk7CisJZm9yIChpID0gMDsgaSA8IGJyYW5jaF9saXN0Lm5yOyBpKyspIHsKKwkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW0gPSBicmFuY2hfbGlzdC5pdGVtcyArIGk7CisJCXN0cnVjdCBicmFuY2hfaW5mbyAqaW5mbyA9IGl0ZW0tPnV0aWw7CisJCWlmIChpbmZvLT5yZW1vdGUgJiYgIXN0cmNtcChpbmZvLT5yZW1vdGUsIHJlbmFtZS5vbGQpKSB7CisJCQlzdHJidWZfcmVzZXQoJmJ1Zik7CisJCQlzdHJidWZfYWRkZigmYnVmLCAiYnJhbmNoLiVzLnJlbW90ZSIsIGl0ZW0tPnN0cmluZyk7CisJCQlpZiAoZ2l0X2NvbmZpZ19zZXQoYnVmLmJ1ZiwgcmVuYW1lLm5ldykpIHsKKwkJCQlyZXR1cm4gZXJyb3IoIkNvdWxkIG5vdCBzZXQgJyVzJyIsIGJ1Zi5idWYpOworCQkJfQorCQl9CisJfQorCisJLyoKKwkgKiBGaXJzdCByZW1vdmUgc3ltcmVmcywgdGhlbiByZW5hbWUgdGhlIHJlc3QsIGZpbmFsbHkgY3JlYXRlCisJICogdGhlIG5ldyBzeW1yZWZzLgorCSAqLworCWZvcl9lYWNoX3JlZihyZWFkX3JlbW90ZV9icmFuY2hlcywgJnJlbmFtZSk7CisJZm9yIChpID0gMDsgaSA8IHJlbW90ZV9icmFuY2hlcy5ucjsgaSsrKSB7CisJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtID0gcmVtb3RlX2JyYW5jaGVzLml0ZW1zICsgaTsKKwkJaW50IGZsYWcgPSAwOworCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCQljb25zdCBjaGFyICpzeW1yZWY7CisKKwkJc3ltcmVmID0gcmVzb2x2ZV9yZWYoaXRlbS0+c3RyaW5nLCBzaGExLCAxLCAmZmxhZyk7CisJCWlmICghKGZsYWcgJiBSRUZfSVNTWU1SRUYpKQorCQkJY29udGludWU7CisJCWlmIChkZWxldGVfcmVmKGl0ZW0tPnN0cmluZywgTlVMTCwgUkVGX05PREVSRUYpKQorCQkJZGllKCJkZWxldGluZyAnJXMnIGZhaWxlZCIsIGl0ZW0tPnN0cmluZyk7CisJfQorCWZvciAoaSA9IDA7IGkgPCByZW1vdGVfYnJhbmNoZXMubnI7IGkrKykgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbSA9IHJlbW90ZV9icmFuY2hlcy5pdGVtcyArIGk7CisKKwkJaWYgKGl0ZW0tPnV0aWwpCisJCQljb250aW51ZTsKKwkJc3RyYnVmX3Jlc2V0KCZidWYpOworCQlzdHJidWZfYWRkc3RyKCZidWYsIGl0ZW0tPnN0cmluZyk7CisJCXN0cmJ1Zl9zcGxpY2UoJmJ1Ziwgc3RybGVuKCJyZWZzL3JlbW90ZXMvIiksIHN0cmxlbihyZW5hbWUub2xkKSwKKwkJCQlyZW5hbWUubmV3LCBzdHJsZW4ocmVuYW1lLm5ldykpOworCQlzdHJidWZfcmVzZXQoJmJ1ZjIpOworCQlzdHJidWZfYWRkZigmYnVmMiwgInJlbW90ZTogcmVuYW1lZCAlcyB0byAlcyIsCisJCQkJaXRlbS0+c3RyaW5nLCBidWYuYnVmKTsKKwkJaWYgKHJlbmFtZV9yZWYoaXRlbS0+c3RyaW5nLCBidWYuYnVmLCBidWYyLmJ1ZikpCisJCQlkaWUoInJlbmFtaW5nICclcycgZmFpbGVkIiwgaXRlbS0+c3RyaW5nKTsKKwl9CisJZm9yIChpID0gMDsgaSA8IHJlbW90ZV9icmFuY2hlcy5ucjsgaSsrKSB7CisJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtID0gcmVtb3RlX2JyYW5jaGVzLml0ZW1zICsgaTsKKworCQlpZiAoIWl0ZW0tPnV0aWwpCisJCQljb250aW51ZTsKKwkJc3RyYnVmX3Jlc2V0KCZidWYpOworCQlzdHJidWZfYWRkc3RyKCZidWYsIGl0ZW0tPnN0cmluZyk7CisJCXN0cmJ1Zl9zcGxpY2UoJmJ1Ziwgc3RybGVuKCJyZWZzL3JlbW90ZXMvIiksIHN0cmxlbihyZW5hbWUub2xkKSwKKwkJCQlyZW5hbWUubmV3LCBzdHJsZW4ocmVuYW1lLm5ldykpOworCQlzdHJidWZfcmVzZXQoJmJ1ZjIpOworCQlzdHJidWZfYWRkc3RyKCZidWYyLCBpdGVtLT51dGlsKTsKKwkJc3RyYnVmX3NwbGljZSgmYnVmMiwgc3RybGVuKCJyZWZzL3JlbW90ZXMvIiksIHN0cmxlbihyZW5hbWUub2xkKSwKKwkJCQlyZW5hbWUubmV3LCBzdHJsZW4ocmVuYW1lLm5ldykpOworCQlzdHJidWZfcmVzZXQoJmJ1ZjMpOworCQlzdHJidWZfYWRkZigmYnVmMywgInJlbW90ZTogcmVuYW1lZCAlcyB0byAlcyIsCisJCQkJaXRlbS0+c3RyaW5nLCBidWYuYnVmKTsKKwkJaWYgKGNyZWF0ZV9zeW1yZWYoYnVmLmJ1ZiwgYnVmMi5idWYsIGJ1ZjMuYnVmKSkKKwkJCWRpZSgiY3JlYXRpbmcgJyVzJyBmYWlsZWQiLCBidWYuYnVmKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgcmVtb3ZlX2JyYW5jaGVzKHN0cnVjdCBzdHJpbmdfbGlzdCAqYnJhbmNoZXMpCiB7CiAJaW50IGksIHJlc3VsdCA9IDA7CkBAIC0zNTIsNyArNTM5LDcgQEAKIAkJT1BUX0VORCgpCiAJfTsKIAlzdHJ1Y3QgcmVtb3RlICpyZW1vdGU7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3Qga25vd25fcmVtb3RlcyBrbm93bl9yZW1vdGVzID0geyBOVUxMLCBOVUxMIH07CiAJc3RydWN0IHN0cmluZ19saXN0IGJyYW5jaGVzID0geyBOVUxMLCAwLCAwLCAxIH07CiAJc3RydWN0IGJyYW5jaGVzX2Zvcl9yZW1vdGUgY2JfZGF0YSA9IHsgTlVMTCwgJmJyYW5jaGVzLCAma25vd25fcmVtb3RlcyB9OwpAQCAtMzY4LDcgKzU1NSw2IEBACiAJa25vd25fcmVtb3Rlcy50b19kZWxldGUgPSByZW1vdGU7CiAJZm9yX2VhY2hfcmVtb3RlKGFkZF9rbm93bl9yZW1vdGUsICZrbm93bl9yZW1vdGVzKTsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCXN0cmJ1Zl9hZGRmKCZidWYsICJyZW1vdGUuJXMiLCByZW1vdGUtPm5hbWUpOwogCWlmIChnaXRfY29uZmlnX3JlbmFtZV9zZWN0aW9uKGJ1Zi5idWYsIE5VTEwpIDwgMSkKIAkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3QgcmVtb3ZlIGNvbmZpZyBzZWN0aW9uICclcyciLCBidWYuYnVmKTsKQEAgLTQxNiwxMCArNjAyLDkgQEAKIAkJcmV0dXJuOwogCiAJcHJpbnRmKHRpdGxlLCBsaXN0LT5uciA+IDEgPyAiZXMiIDogIiIsIGV4dHJhX2FyZyk7Ci0JcHJpbnRmKCJcbiAgICAiKTsKLQlmb3IgKGkgPSAwOyBpIDwgbGlzdC0+bnI7IGkrKykKLQkJcHJpbnRmKCIlcyVzIiwgaSA/ICIgIiA6ICIiLCBsaXN0LT5pdGVtc1tpXS5zdHJpbmcpOwogCXByaW50ZigiXG4iKTsKKwlmb3IgKGkgPSAwOyBpIDwgbGlzdC0+bnI7IGkrKykKKwkJcHJpbnRmKCIgICAgJXNcbiIsIGxpc3QtPml0ZW1zW2ldLnN0cmluZyk7CiB9CiAKIHN0YXRpYyBpbnQgZ2V0X3JlbW90ZV9yZWZfc3RhdGVzKGNvbnN0IGNoYXIgKm5hbWUsCkBAIC01MTUsMTcgKzcwMCwxNyBAQAogCQlzaG93X2xpc3QoIiAgVHJhY2tlZCByZW1vdGUgYnJhbmNoJXMiLCAmc3RhdGVzLnRyYWNrZWQsICIiKTsKIAogCQlpZiAoc3RhdGVzLnJlbW90ZS0+cHVzaF9yZWZzcGVjX25yKSB7Ci0JCQlwcmludGYoIiAgTG9jYWwgYnJhbmNoJXMgcHVzaGVkIHdpdGggJ2dpdCBwdXNoJ1xuICAgIiwKKwkJCXByaW50ZigiICBMb2NhbCBicmFuY2glcyBwdXNoZWQgd2l0aCAnZ2l0IHB1c2gnXG4iLAogCQkJCXN0YXRlcy5yZW1vdGUtPnB1c2hfcmVmc3BlY19uciA+IDEgPwogCQkJCQkiZXMiIDogIiIpOwogCQkJZm9yIChpID0gMDsgaSA8IHN0YXRlcy5yZW1vdGUtPnB1c2hfcmVmc3BlY19ucjsgaSsrKSB7CiAJCQkJc3RydWN0IHJlZnNwZWMgKnNwZWMgPSBzdGF0ZXMucmVtb3RlLT5wdXNoICsgaTsKLQkJCQlwcmludGYoIiAlcyVzJXMlcyIsIHNwZWMtPmZvcmNlID8gIisiIDogIiIsCisJCQkJcHJpbnRmKCIgICAgJXMlcyVzJXNcbiIsCisJCQkJICAgICAgIHNwZWMtPmZvcmNlID8gIisiIDogIiIsCiAJCQkJICAgICAgIGFiYnJldl9icmFuY2goc3BlYy0+c3JjKSwKIAkJCQkgICAgICAgc3BlYy0+ZHN0ID8gIjoiIDogIiIsCiAJCQkJICAgICAgIHNwZWMtPmRzdCA/IGFiYnJldl9icmFuY2goc3BlYy0+ZHN0KSA6ICIiKTsKIAkJCX0KLQkJCXByaW50ZigiXG4iKTsKIAkJfQogCiAJCS8qIE5FRURTV09SSzogZnJlZSByZW1vdGUgKi8KQEAgLTU4OSw3ICs3NzQsNyBAQAogewogCXN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCA9IHByaXY7CiAJaWYgKCFyZW1vdGUtPnNraXBfZGVmYXVsdF91cGRhdGUpCi0JCXN0cmluZ19saXN0X2FwcGVuZCh4c3RyZHVwKHJlbW90ZS0+bmFtZSksIGxpc3QpOworCQlzdHJpbmdfbGlzdF9hcHBlbmQocmVtb3RlLT5uYW1lLCBsaXN0KTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzAwLDYgKzg4NSw4IEBACiAJCXJlc3VsdCA9IHNob3dfYWxsKCk7CiAJZWxzZSBpZiAoIXN0cmNtcChhcmd2WzBdLCAiYWRkIikpCiAJCXJlc3VsdCA9IGFkZChhcmdjLCBhcmd2KTsKKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMF0sICJyZW5hbWUiKSkKKwkJcmVzdWx0ID0gbXYoYXJnYywgYXJndik7CiAJZWxzZSBpZiAoIXN0cmNtcChhcmd2WzBdLCAicm0iKSkKIAkJcmVzdWx0ID0gcm0oYXJnYywgYXJndik7CiAJZWxzZSBpZiAoIXN0cmNtcChhcmd2WzBdLCAic2hvdyIpKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1yZXJlcmUuYyBiL2J1aWx0aW4tcmVyZXJlLmMKaW5kZXggZGQ0NTczZi4uZDRkZWM2YiAxMDA2NDQKLS0tIGEvYnVpbHRpbi1yZXJlcmUuYworKysgYi9idWlsdGluLXJlcmVyZS5jCkBAIC05OCw2ICs5OCw3IEBACiAKIAlwcmludGYoIi0tLSBhLyVzXG4rKysgYi8lc1xuIiwgbGFiZWwxLCBsYWJlbDIpOwogCWZmbHVzaChzdGRvdXQpOworCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CiAJeHBwLmZsYWdzID0gWERGX05FRURfTUlOSU1BTDsKIAltZW1zZXQoJnhlY2ZnLCAwLCBzaXplb2YoeGVjZmcpKTsKIAl4ZWNmZy5jdHhsZW4gPSAzOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1yZXYtbGlzdC5jIGIvYnVpbHRpbi1yZXYtbGlzdC5jCmluZGV4IGZhY2FmZjIuLjg1Nzc0MmEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tcmV2LWxpc3QuYworKysgYi9idWlsdGluLXJldi1saXN0LmMKQEAgLTEwMCwxNSArMTAwLDE0IEBACiAJCQljaGlsZHJlbiA9IGNoaWxkcmVuLT5uZXh0OwogCQl9CiAJfQotCXNob3dfZGVjb3JhdGlvbnMoY29tbWl0KTsKKwlzaG93X2RlY29yYXRpb25zKCZyZXZzLCBjb21taXQpOwogCWlmIChyZXZzLmNvbW1pdF9mb3JtYXQgPT0gQ01JVF9GTVRfT05FTElORSkKIAkJcHV0Y2hhcignICcpOwogCWVsc2UKIAkJcHV0Y2hhcignXG4nKTsKIAogCWlmIChyZXZzLnZlcmJvc2VfaGVhZGVyICYmIGNvbW1pdC0+YnVmZmVyKSB7Ci0JCXN0cnVjdCBzdHJidWYgYnVmOwotCQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKKwkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAkJcHJldHR5X3ByaW50X2NvbW1pdChyZXZzLmNvbW1pdF9mb3JtYXQsIGNvbW1pdCwKIAkJCQkgICAgJmJ1ZiwgcmV2cy5hYmJyZXYsIE5VTEwsIE5VTEwsCiAJCQkJICAgIHJldnMuZGF0ZV9tb2RlLCAwKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tcmV2LXBhcnNlLmMgYi9idWlsdGluLXJldi1wYXJzZS5jCmluZGV4IDlhYTA0OWUuLjgxZDVhNmYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tcmV2LXBhcnNlLmMKKysrIGIvYnVpbHRpbi1yZXYtcGFyc2UuYwpAQCAtMzA3LDE5ICszMDcsMTcgQEAKIAkJT1BUX0VORCgpLAogCX07CiAKLQlzdHJ1Y3Qgc3RyYnVmIHNiLCBwYXJzZWQ7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklULCBwYXJzZWQgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICoqdXNhZ2UgPSBOVUxMOwogCXN0cnVjdCBvcHRpb24gKm9wdHMgPSBOVUxMOwogCWludCBvbmIgPSAwLCBvc3ogPSAwLCB1bmIgPSAwLCB1c3ogPSAwOwogCi0Jc3RyYnVmX2luaXQoJnBhcnNlZCwgMCk7CiAJc3RyYnVmX2FkZHN0cigmcGFyc2VkLCAic2V0IC0tIik7CiAJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgcGFyc2VvcHRfb3B0cywgcGFyc2VvcHRfdXNhZ2UsCiAJICAgICAgICAgICAgICAgICAgICAgUEFSU0VfT1BUX0tFRVBfREFTSERBU0gpOwogCWlmIChhcmdjIDwgMSB8fCBzdHJjbXAoYXJndlswXSwgIi0tIikpCiAJCXVzYWdlX3dpdGhfb3B0aW9ucyhwYXJzZW9wdF91c2FnZSwgcGFyc2VvcHRfb3B0cyk7CiAKLQlzdHJidWZfaW5pdCgmc2IsIDApOwogCS8qIGdldCB0aGUgdXNhZ2UgdXAgdG8gdGhlIGZpcnN0IGxpbmUgd2l0aCBhIC0tIG9uIGl0ICovCiAJZm9yICg7OykgewogCQlpZiAoc3RyYnVmX2dldGxpbmUoJnNiLCBzdGRpbiwgJ1xuJykgPT0gRU9GKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1yZXZlcnQuYyBiL2J1aWx0aW4tcmV2ZXJ0LmMKaW5kZXggNzQ4NDVlZi4uZDQ4MzEzYyAxMDA2NDQKLS0tIGEvYnVpbHRpbi1yZXZlcnQuYworKysgYi9idWlsdGluLXJldmVydC5jCkBAIC0xMSw2ICsxMSw4IEBACiAjaW5jbHVkZSAiY2FjaGUtdHJlZS5oIgogI2luY2x1ZGUgImRpZmYuaCIKICNpbmNsdWRlICJyZXZpc2lvbi5oIgorI2luY2x1ZGUgInJlcmVyZS5oIgorI2luY2x1ZGUgIm1lcmdlLXJlY3Vyc2l2ZS5oIgogCiAvKgogICogVGhpcyBpbXBsZW1lbnRzIHRoZSBidWlsdGlucyByZXZlcnQgYW5kIGNoZXJyeS1waWNrLgpAQCAtMjAwLDM2ICsyMDIsNiBAQAogCQkJc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOwogfQogCi1zdGF0aWMgaW50IG1lcmdlX3JlY3Vyc2l2ZShjb25zdCBjaGFyICpiYXNlX3NoYTEsCi0JCWNvbnN0IGNoYXIgKmhlYWRfc2hhMSwgY29uc3QgY2hhciAqaGVhZF9uYW1lLAotCQljb25zdCBjaGFyICpuZXh0X3NoYTEsIGNvbnN0IGNoYXIgKm5leHRfbmFtZSkKLXsKLQljaGFyIGJ1ZmZlclsyNTZdOwotCWNvbnN0IGNoYXIgKmFyZ3ZbNl07Ci0JaW50IGkgPSAwOwotCi0Jc3ByaW50ZihidWZmZXIsICJHSVRIRUFEXyVzIiwgaGVhZF9zaGExKTsKLQlzZXRlbnYoYnVmZmVyLCBoZWFkX25hbWUsIDEpOwotCXNwcmludGYoYnVmZmVyLCAiR0lUSEVBRF8lcyIsIG5leHRfc2hhMSk7Ci0Jc2V0ZW52KGJ1ZmZlciwgbmV4dF9uYW1lLCAxKTsKLQotCS8qCi0JICogVGhpcyB0aHJlZSB3YXkgbWVyZ2UgaXMgYW4gaW50ZXJlc3Rpbmcgb25lLiAgV2UgYXJlIGF0Ci0JICogJGhlYWQsIGFuZCB3b3VsZCB3YW50IHRvIGFwcGx5IHRoZSBjaGFuZ2UgYmV0d2VlbiAkY29tbWl0Ci0JICogYW5kICRwcmV2IG9uIHRvcCBvZiB1cyAod2hlbiByZXZlcnRpbmcpLCBvciB0aGUgY2hhbmdlIGJldHdlZW4KLQkgKiAkcHJldiBhbmQgJGNvbW1pdCBvbiB0b3Agb2YgdXMgKHdoZW4gY2hlcnJ5LXBpY2tpbmcgb3IgcmVwbGF5aW5nKS4KLQkgKi8KLQlhcmd2W2krK10gPSAibWVyZ2UtcmVjdXJzaXZlIjsKLQlpZiAoYmFzZV9zaGExKQotCQlhcmd2W2krK10gPSBiYXNlX3NoYTE7Ci0JYXJndltpKytdID0gIi0tIjsKLQlhcmd2W2krK10gPSBoZWFkX3NoYTE7Ci0JYXJndltpKytdID0gbmV4dF9zaGExOwotCWFyZ3ZbaSsrXSA9IE5VTEw7Ci0KLQlyZXR1cm4gcnVuX2NvbW1hbmRfdl9vcHQoYXJndiwgUlVOX0NPTU1BTkRfTk9fU1RESU4gfCBSVU5fR0lUX0NNRCk7Ci19Ci0KIHN0YXRpYyBjaGFyICpoZWxwX21zZyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQogewogCXN0YXRpYyBjaGFyIGhlbHBidWZbMTAyNF07CkBAIC0yNjIsMTQgKzIzNCwyNyBAQAogCXJldHVybiAhIURJRkZfT1BUX1RTVCgmcmV2LmRpZmZvcHQsIEhBU19DSEFOR0VTKTsKIH0KIAorc3RhdGljIHN0cnVjdCB0cmVlICplbXB0eV90cmVlKHZvaWQpCit7CisJc3RydWN0IHRyZWUgKnRyZWUgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgdHJlZSkpOworCisJdHJlZS0+b2JqZWN0LnBhcnNlZCA9IDE7CisJdHJlZS0+b2JqZWN0LnR5cGUgPSBPQkpfVFJFRTsKKwlwcmV0ZW5kX3NoYTFfZmlsZShOVUxMLCAwLCBPQkpfVFJFRSwgdHJlZS0+b2JqZWN0LnNoYTEpOworCXJldHVybiB0cmVlOworfQorCiBzdGF0aWMgaW50IHJldmVydF9vcl9jaGVycnlfcGljayhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCiB7CiAJdW5zaWduZWQgY2hhciBoZWFkWzIwXTsKIAlzdHJ1Y3QgY29tbWl0ICpiYXNlLCAqbmV4dCwgKnBhcmVudDsKLQlpbnQgaTsKKwlpbnQgaSwgaW5kZXhfZmQsIGNsZWFuOwogCWNoYXIgKm9uZWxpbmUsICpyZWVuY29kZWRfbWVzc2FnZSA9IE5VTEw7CiAJY29uc3QgY2hhciAqbWVzc2FnZSwgKmVuY29kaW5nOwogCWNoYXIgKmRlZm1zZyA9IGdpdF9wYXRoZHVwKCJNRVJHRV9NU0ciKTsKKwlzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyBvOworCXN0cnVjdCB0cmVlICpyZXN1bHQsICpuZXh0X3RyZWUsICpiYXNlX3RyZWUsICpoZWFkX3RyZWU7CisJc3RhdGljIHN0cnVjdCBsb2NrX2ZpbGUgaW5kZXhfbG9jazsKIAogCWdpdF9jb25maWcoZ2l0X2RlZmF1bHRfY29uZmlnLCBOVUxMKTsKIAltZSA9IGFjdGlvbiA9PSBSRVZFUlQgPyAicmV2ZXJ0IiA6ICJjaGVycnktcGljayI7CkBAIC0yODAsNiArMjY1LDggQEAKIAlpZiAoYWN0aW9uID09IFJFVkVSVCAmJiAhbm9fcmVwbGF5KQogCQlkaWUoInJldmVydCBpcyBpbmNvbXBhdGlibGUgd2l0aCByZXBsYXkiKTsKIAorCWlmIChyZWFkX2NhY2hlKCkgPCAwKQorCQlkaWUoImdpdCAlczogZmFpbGVkIHRvIHJlYWQgdGhlIGluZGV4IiwgbWUpOwogCWlmIChub19jb21taXQpIHsKIAkJLyoKIAkJICogV2UgZG8gbm90IGludGVuZCB0byBjb21taXQgaW1tZWRpYXRlbHkuICBXZSBqdXN0IHdhbnQgdG8KQEAgLTI5MiwxMiArMjc5LDEyIEBACiAJfSBlbHNlIHsKIAkJaWYgKGdldF9zaGExKCJIRUFEIiwgaGVhZCkpCiAJCQlkaWUgKCJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFEIik7Ci0JCWlmIChyZWFkX2NhY2hlKCkgPCAwKQotCQkJZGllKCJjb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiKTsKIAkJaWYgKGluZGV4X2lzX2RpcnR5KCkpCiAJCQlkaWUgKCJEaXJ0eSBpbmRleDogY2Fubm90ICVzIiwgbWUpOwotCQlkaXNjYXJkX2NhY2hlKCk7CiAJfQorCWRpc2NhcmRfY2FjaGUoKTsKKworCWluZGV4X2ZkID0gaG9sZF9sb2NrZWRfaW5kZXgoJmluZGV4X2xvY2ssIDEpOwogCiAJaWYgKCFjb21taXQtPnBhcmVudHMpIHsKIAkJaWYgKGFjdGlvbiA9PSBSRVZFUlQpCkBAIC0zMzEsNiArMzE4LDEwIEBACiAJCWRpZSAoIkNhbm5vdCBnZXQgY29tbWl0IG1lc3NhZ2UgZm9yICVzIiwKIAkJCQlzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CiAKKwlpZiAocGFyZW50ICYmIHBhcnNlX2NvbW1pdChwYXJlbnQpIDwgMCkKKwkJZGllKCIlczogY2Fubm90IHBhcnNlIHBhcmVudCBjb21taXQgJXMiLAorCQkgICAgbWUsIHNoYTFfdG9faGV4KHBhcmVudC0+b2JqZWN0LnNoYTEpKTsKKwogCS8qCiAJICogImNvbW1pdCIgaXMgYW4gZXhpc3RpbmcgY29tbWl0LiAgV2Ugd291bGQgd2FudCB0byBhcHBseQogCSAqIHRoZSBkaWZmZXJlbmNlIGl0IGludHJvZHVjZXMgc2luY2UgaXRzIGZpcnN0IHBhcmVudCAicHJldiIKQEAgLTM2MSw2ICszNTIsMTEgQEAKIAkJYWRkX3RvX21zZyhvbmVsaW5lX2JvZHkgKyAxKTsKIAkJYWRkX3RvX21zZygiXCJcblxuVGhpcyByZXZlcnRzIGNvbW1pdCAiKTsKIAkJYWRkX3RvX21zZyhzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CisKKwkJaWYgKGNvbW1pdC0+cGFyZW50cy0+bmV4dCkgeworCQkJYWRkX3RvX21zZygiLCByZXZlcnNpbmdcbmNoYW5nZXMgbWFkZSB0byAiKTsKKwkJCWFkZF90b19tc2coc2hhMV90b19oZXgocGFyZW50LT5vYmplY3Quc2hhMSkpOworCQl9CiAJCWFkZF90b19tc2coIi5cbiIpOwogCX0gZWxzZSB7CiAJCWJhc2UgPSBwYXJlbnQ7CkBAIC0zNzQsMTMgKzM3MCwyNiBAQAogCQl9CiAJfQogCi0JaWYgKG1lcmdlX3JlY3Vyc2l2ZShiYXNlID09IE5VTEwgPwotCQkJCU5VTEwgOiBzaGExX3RvX2hleChiYXNlLT5vYmplY3Quc2hhMSksCi0JCQkJc2hhMV90b19oZXgoaGVhZCksICJIRUFEIiwKLQkJCQlzaGExX3RvX2hleChuZXh0LT5vYmplY3Quc2hhMSksIG9uZWxpbmUpIHx8Ci0JCQl3cml0ZV9jYWNoZV9hc190cmVlKGhlYWQsIDAsIE5VTEwpKSB7CisJcmVhZF9jYWNoZSgpOworCWluaXRfbWVyZ2Vfb3B0aW9ucygmbyk7CisJby5icmFuY2gxID0gIkhFQUQiOworCW8uYnJhbmNoMiA9IG9uZWxpbmU7CisKKwloZWFkX3RyZWUgPSBwYXJzZV90cmVlX2luZGlyZWN0KGhlYWQpOworCW5leHRfdHJlZSA9IG5leHQgPyBuZXh0LT50cmVlIDogZW1wdHlfdHJlZSgpOworCWJhc2VfdHJlZSA9IGJhc2UgPyBiYXNlLT50cmVlIDogZW1wdHlfdHJlZSgpOworCisJY2xlYW4gPSBtZXJnZV90cmVlcygmbywKKwkJCSAgICBoZWFkX3RyZWUsCisJCQkgICAgbmV4dF90cmVlLCBiYXNlX3RyZWUsICZyZXN1bHQpOworCisJaWYgKGFjdGl2ZV9jYWNoZV9jaGFuZ2VkICYmCisJICAgICh3cml0ZV9jYWNoZShpbmRleF9mZCwgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIpIHx8CisJICAgICBjb21taXRfbG9ja2VkX2luZGV4KCZpbmRleF9sb2NrKSkpCisJCWRpZSgiJXM6IFVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIsIG1lKTsKKworCWlmICghY2xlYW4pIHsKIAkJYWRkX3RvX21zZygiXG5Db25mbGljdHM6XG5cbiIpOwotCQlyZWFkX2NhY2hlKCk7CiAJCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7KSB7CiAJCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2krK107CiAJCQlpZiAoY2Vfc3RhZ2UoY2UpKSB7CkBAIC0zOTYsNiArNDA1LDcgQEAKIAkJCWRpZSAoIkVycm9yIHdyYXBwaW5nIHVwICVzIiwgZGVmbXNnKTsKIAkJZnByaW50ZihzdGRlcnIsICJBdXRvbWF0aWMgJXMgZmFpbGVkLiVzXG4iLAogCQkJbWUsIGhlbHBfbXNnKGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKKwkJcmVyZXJlKCk7CiAJCWV4aXQoMSk7CiAJfQogCWlmIChjb21taXRfbG9ja19maWxlKCZtc2dfZmlsZSkgPCAwKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1ybS5jIGIvYnVpbHRpbi1ybS5jCmluZGV4IGUwNjY0MGMuLmMxMWY0NTUgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tcm0uYworKysgYi9idWlsdGluLXJtLmMKQEAgLTMxLDcgKzMxLDggQEAKIAogc3RhdGljIGludCBjaGVja19sb2NhbF9tb2QodW5zaWduZWQgY2hhciAqaGVhZCwgaW50IGluZGV4X29ubHkpCiB7Ci0JLyogaXRlbXMgaW4gbGlzdCBhcmUgYWxyZWFkeSBzb3J0ZWQgaW4gdGhlIGNhY2hlIG9yZGVyLAorCS8qCisJICogSXRlbXMgaW4gbGlzdCBhcmUgYWxyZWFkeSBzb3J0ZWQgaW4gdGhlIGNhY2hlIG9yZGVyLAogCSAqIHNvIHdlIGNvdWxkIGRvIHRoaXMgYSBsb3QgbW9yZSBlZmZpY2llbnRseSBieSB1c2luZwogCSAqIHRyZWVfZGVzYyBiYXNlZCB0cmF2ZXJzYWwgaWYgd2Ugd2FudGVkIHRvLCBidXQgSSBhbQogCSAqIGxhenksIGFuZCB3aG8gY2FyZXMgaWYgcmVtb3ZhbCBvZiBmaWxlcyBpcyBhIHRhZApAQCAtNzEsMjQgKzcyLDU1IEBACiAJCQkgKi8KIAkJCWNvbnRpbnVlOwogCQl9CisKKwkJLyoKKwkJICogInJtIiBvZiBhIHBhdGggdGhhdCBoYXMgY2hhbmdlcyBuZWVkIHRvIGJlIHRyZWF0ZWQKKwkJICogY2FyZWZ1bGx5IG5vdCB0byBhbGxvdyBsb3NpbmcgbG9jYWwgY2hhbmdlcworCQkgKiBhY2NpZGVudGFsbHkuICBBIGxvY2FsIGNoYW5nZSBjb3VsZCBiZSAoMSkgZmlsZSBpbgorCQkgKiB3b3JrIHRyZWUgaXMgZGlmZmVyZW50IHNpbmNlIHRoZSBpbmRleDsgYW5kL29yICgyKQorCQkgKiB0aGUgdXNlciBzdGFnZWQgYSBjb250ZW50IHRoYXQgaXMgZGlmZmVyZW50IGZyb20KKwkJICogdGhlIGN1cnJlbnQgY29tbWl0IGluIHRoZSBpbmRleC4KKwkJICoKKwkJICogSW4gc3VjaCBhIGNhc2UsIHlvdSB3b3VsZCBuZWVkIHRvIC0tZm9yY2UgdGhlCisJCSAqIHJlbW92YWwuICBIb3dldmVyLCAicm0gLS1jYWNoZWQiIChyZW1vdmUgb25seSBmcm9tCisJCSAqIHRoZSBpbmRleCkgaXMgc2FmZSBpZiB0aGUgaW5kZXggbWF0Y2hlcyB0aGUgZmlsZSBpbgorCQkgKiB0aGUgd29yayB0cmVlIG9yIHRoZSBIRUFEIGNvbW1pdCwgYXMgaXQgbWVhbnMgdGhhdAorCQkgKiB0aGUgY29udGVudCBiZWluZyByZW1vdmVkIGlzIGF2YWlsYWJsZSBlbHNld2hlcmUuCisJCSAqLworCisJCS8qCisJCSAqIElzIHRoZSBpbmRleCBkaWZmZXJlbnQgZnJvbSB0aGUgZmlsZSBpbiB0aGUgd29yayB0cmVlPworCQkgKi8KIAkJaWYgKGNlX21hdGNoX3N0YXQoY2UsICZzdCwgMCkpCiAJCQlsb2NhbF9jaGFuZ2VzID0gMTsKKworCQkvKgorCQkgKiBJcyB0aGUgaW5kZXggZGlmZmVyZW50IGZyb20gdGhlIEhFQUQgY29tbWl0PyAgQnkKKwkJICogZGVmaW5pdGlvbiwgYmVmb3JlIHRoZSB2ZXJ5IGluaXRpYWwgY29tbWl0LAorCQkgKiBhbnl0aGluZyBzdGFnZWQgaW4gdGhlIGluZGV4IGlzIHRyZWF0ZWQgYnkgdGhlIHNhbWUKKwkJICogd2F5IGFzIGNoYW5nZWQgZnJvbSB0aGUgSEVBRC4KKwkJICovCiAJCWlmIChub19oZWFkCiAJCSAgICAgfHwgZ2V0X3RyZWVfZW50cnkoaGVhZCwgbmFtZSwgc2hhMSwgJm1vZGUpCiAJCSAgICAgfHwgY2UtPmNlX21vZGUgIT0gY3JlYXRlX2NlX21vZGUobW9kZSkKIAkJICAgICB8fCBoYXNoY21wKGNlLT5zaGExLCBzaGExKSkKIAkJCXN0YWdlZF9jaGFuZ2VzID0gMTsKIAotCQlpZiAobG9jYWxfY2hhbmdlcyAmJiBzdGFnZWRfY2hhbmdlcykKLQkJCWVycnMgPSBlcnJvcigiJyVzJyBoYXMgc3RhZ2VkIGNvbnRlbnQgZGlmZmVyZW50ICIKLQkJCQkgICAgICJmcm9tIGJvdGggdGhlIGZpbGUgYW5kIHRoZSBIRUFEXG4iCi0JCQkJICAgICAiKHVzZSAtZiB0byBmb3JjZSByZW1vdmFsKSIsIG5hbWUpOworCQkvKgorCQkgKiBJZiB0aGUgaW5kZXggZG9lcyBub3QgbWF0Y2ggdGhlIGZpbGUgaW4gdGhlIHdvcmsKKwkJICogdHJlZSBhbmQgaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIEhFQUQgY29tbWl0CisJCSAqIGVpdGhlciwgKDEpICJnaXQgcm0iIHdpdGhvdXQgLS1jYWNoZWQgZGVmaW5pdGVseQorCQkgKiB3aWxsIGxvc2UgaW5mb3JtYXRpb247ICgyKSAiZ2l0IHJtIC0tY2FjaGVkIiB3aWxsCisJCSAqIGxvc2UgaW5mb3JtYXRpb24gdW5sZXNzIGl0IGlzIGFib3V0IHJlbW92aW5nIGFuCisJCSAqICJpbnRlbnQgdG8gYWRkIiBlbnRyeS4KKwkJICovCisJCWlmIChsb2NhbF9jaGFuZ2VzICYmIHN0YWdlZF9jaGFuZ2VzKSB7CisJCQlpZiAoIWluZGV4X29ubHkgfHwgIShjZS0+Y2VfZmxhZ3MgJiBDRV9JTlRFTlRfVE9fQUREKSkKKwkJCQllcnJzID0gZXJyb3IoIiclcycgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCAiCisJCQkJCSAgICAgImZyb20gYm90aCB0aGUgZmlsZSBhbmQgdGhlIEhFQURcbiIKKwkJCQkJICAgICAiKHVzZSAtZiB0byBmb3JjZSByZW1vdmFsKSIsIG5hbWUpOworCQl9CiAJCWVsc2UgaWYgKCFpbmRleF9vbmx5KSB7Ci0JCQkvKiBJdCdzIG5vdCBkYW5nZXJvdXMgdG8gImdpdCBybSAtLWNhY2hlZCIgYQotCQkJICogZmlsZSBpZiB0aGUgaW5kZXggbWF0Y2hlcyB0aGUgZmlsZSBvciB0aGUKLQkJCSAqIEhFQUQsIHNpbmNlIGl0IG1lYW5zIHRoZSBkZWxldGVkIGNvbnRlbnQgaXMKLQkJCSAqIHN0aWxsIGF2YWlsYWJsZSBzb21ld2hlcmUuCi0JCQkgKi8KIAkJCWlmIChzdGFnZWRfY2hhbmdlcykKIAkJCQllcnJzID0gZXJyb3IoIiclcycgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleFxuIgogCQkJCQkgICAgICIodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsICIKZGlmZiAtLWdpdCBhL2J1aWx0aW4tc2VuZC1wYWNrLmMgYi9idWlsdGluLXNlbmQtcGFjay5jCmluZGV4IGU0MjhlYWMuLmQ2NWQwMTkgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tc2VuZC1wYWNrLmMKKysrIGIvYnVpbHRpbi1zZW5kLXBhY2suYwpAQCAtMTUsMTAgKzE1LDI0IEBACiAJLyogLnJlY2VpdmVwYWNrID0gKi8gImdpdC1yZWNlaXZlLXBhY2siLAogfTsKIAorc3RhdGljIGludCBmZWVkX29iamVjdChjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmQsIGludCBuZWdhdGl2ZSkKK3sKKwljaGFyIGJ1Zls0Ml07CisKKwlpZiAobmVnYXRpdmUgJiYgIWhhc19zaGExX2ZpbGUoc2hhMSkpCisJCXJldHVybiAxOworCisJbWVtY3B5KGJ1ZiArIG5lZ2F0aXZlLCBzaGExX3RvX2hleChzaGExKSwgNDApOworCWlmIChuZWdhdGl2ZSkKKwkJYnVmWzBdID0gJ14nOworCWJ1Zls0MCArIG5lZ2F0aXZlXSA9ICdcbic7CisJcmV0dXJuIHdyaXRlX29yX3doaW5lKGZkLCBidWYsIDQxICsgbmVnYXRpdmUsICJzZW5kLXBhY2s6IHNlbmQgcmVmcyIpOworfQorCiAvKgogICogTWFrZSBhIHBhY2sgc3RyZWFtIGFuZCBzcGl0IGl0IG91dCBpbnRvIGZpbGUgZGVzY3JpcHRvciBmZAogICovCi1zdGF0aWMgaW50IHBhY2tfb2JqZWN0cyhpbnQgZmQsIHN0cnVjdCByZWYgKnJlZnMpCitzdGF0aWMgaW50IHBhY2tfb2JqZWN0cyhpbnQgZmQsIHN0cnVjdCByZWYgKnJlZnMsIHN0cnVjdCBleHRyYV9oYXZlX29iamVjdHMgKmV4dHJhKQogewogCS8qCiAJICogVGhlIGNoaWxkIGJlY29tZXMgcGFjay1vYmplY3RzIC0tcmV2czsgd2UgZmVlZApAQCAtMzQsNiArNDgsNyBAQAogCQlOVUxMLAogCX07CiAJc3RydWN0IGNoaWxkX3Byb2Nlc3MgcG87CisJaW50IGk7CiAKIAlpZiAoYXJncy51c2VfdGhpbl9wYWNrKQogCQlhcmd2WzRdID0gIi0tdGhpbiI7CkBAIC00OSwyNSArNjQsMTcgQEAKIAkgKiBXZSBmZWVkIHRoZSBwYWNrLW9iamVjdHMgd2UganVzdCBzcGF3bmVkIHdpdGggcmV2aXNpb24KIAkgKiBwYXJhbWV0ZXJzIGJ5IHdyaXRpbmcgdG8gdGhlIHBpcGUuCiAJICovCi0Jd2hpbGUgKHJlZnMpIHsKLQkJY2hhciBidWZbNDJdOworCWZvciAoaSA9IDA7IGkgPCBleHRyYS0+bnI7IGkrKykKKwkJaWYgKCFmZWVkX29iamVjdChleHRyYS0+YXJyYXlbaV0sIHBvLmluLCAxKSkKKwkJCWJyZWFrOwogCisJd2hpbGUgKHJlZnMpIHsKIAkJaWYgKCFpc19udWxsX3NoYTEocmVmcy0+b2xkX3NoYTEpICYmCi0JCSAgICBoYXNfc2hhMV9maWxlKHJlZnMtPm9sZF9zaGExKSkgewotCQkJbWVtY3B5KGJ1ZiArIDEsIHNoYTFfdG9faGV4KHJlZnMtPm9sZF9zaGExKSwgNDApOwotCQkJYnVmWzBdID0gJ14nOwotCQkJYnVmWzQxXSA9ICdcbic7Ci0JCQlpZiAoIXdyaXRlX29yX3doaW5lKHBvLmluLCBidWYsIDQyLAotCQkJCQkJInNlbmQtcGFjazogc2VuZCByZWZzIikpCi0JCQkJYnJlYWs7Ci0JCX0KLQkJaWYgKCFpc19udWxsX3NoYTEocmVmcy0+bmV3X3NoYTEpKSB7Ci0JCQltZW1jcHkoYnVmLCBzaGExX3RvX2hleChyZWZzLT5uZXdfc2hhMSksIDQwKTsKLQkJCWJ1Zls0MF0gPSAnXG4nOwotCQkJaWYgKCF3cml0ZV9vcl93aGluZShwby5pbiwgYnVmLCA0MSwKLQkJCQkJCSJzZW5kLXBhY2s6IHNlbmQgcmVmcyIpKQotCQkJCWJyZWFrOwotCQl9CisJCSAgICAhZmVlZF9vYmplY3QocmVmcy0+b2xkX3NoYTEsIHBvLmluLCAxKSkKKwkJCWJyZWFrOworCQlpZiAoIWlzX251bGxfc2hhMShyZWZzLT5uZXdfc2hhMSkgJiYKKwkJICAgICFmZWVkX29iamVjdChyZWZzLT5uZXdfc2hhMSwgcG8uaW4sIDApKQorCQkJYnJlYWs7CiAJCXJlZnMgPSByZWZzLT5uZXh0OwogCX0KIApAQCAtMzg3LDE0ICszOTQsMTcgQEAKIAlpbnQgZXhwZWN0X3N0YXR1c19yZXBvcnQgPSAwOwogCWludCBmbGFncyA9IE1BVENIX1JFRlNfTk9ORTsKIAlpbnQgcmV0OworCXN0cnVjdCBleHRyYV9oYXZlX29iamVjdHMgZXh0cmFfaGF2ZTsKIAorCW1lbXNldCgmZXh0cmFfaGF2ZSwgMCwgc2l6ZW9mKGV4dHJhX2hhdmUpKTsKIAlpZiAoYXJncy5zZW5kX2FsbCkKIAkJZmxhZ3MgfD0gTUFUQ0hfUkVGU19BTEw7CiAJaWYgKGFyZ3Muc2VuZF9taXJyb3IpCiAJCWZsYWdzIHw9IE1BVENIX1JFRlNfTUlSUk9SOwogCiAJLyogTm8gZnVubnkgYnVzaW5lc3Mgd2l0aCB0aGUgbWF0Y2hlciAqLwotCXJlbW90ZV90YWlsID0gZ2V0X3JlbW90ZV9oZWFkcyhpbiwgJnJlbW90ZV9yZWZzLCAwLCBOVUxMLCBSRUZfTk9STUFMKTsKKwlyZW1vdGVfdGFpbCA9IGdldF9yZW1vdGVfaGVhZHMoaW4sICZyZW1vdGVfcmVmcywgMCwgTlVMTCwgUkVGX05PUk1BTCwKKwkJCQkgICAgICAgJmV4dHJhX2hhdmUpOwogCWdldF9sb2NhbF9oZWFkcygpOwogCiAJLyogRG9lcyB0aGUgb3RoZXIgZW5kIHN1cHBvcnQgdGhlIHJlcG9ydGluZz8gKi8KQEAgLTQ5Niw3ICs1MDYsNyBAQAogCiAJcGFja2V0X2ZsdXNoKG91dCk7CiAJaWYgKG5ld19yZWZzICYmICFhcmdzLmRyeV9ydW4pIHsKLQkJaWYgKHBhY2tfb2JqZWN0cyhvdXQsIHJlbW90ZV9yZWZzKSA8IDApCisJCWlmIChwYWNrX29iamVjdHMob3V0LCByZW1vdGVfcmVmcywgJmV4dHJhX2hhdmUpIDwgMCkKIAkJCXJldHVybiAtMTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi1zaG9ydGxvZy5jIGIvYnVpbHRpbi1zaG9ydGxvZy5jCmluZGV4IGQwM2YxNGYuLmU0OTI5MDYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tc2hvcnRsb2cuYworKysgYi9idWlsdGluLXNob3J0bG9nLmMKQEAgLTI5LDYgKzI5LDkgQEAKIAkJcmV0dXJuIC0xOwogfQogCitjb25zdCBjaGFyICpmb3JtYXRfc3ViamVjdChzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqbXNnLAorCQkJICAgY29uc3QgY2hhciAqbGluZV9zZXBhcmF0b3IpOworCiBzdGF0aWMgdm9pZCBpbnNlcnRfb25lX3JlY29yZChzdHJ1Y3Qgc2hvcnRsb2cgKmxvZywKIAkJCSAgICAgIGNvbnN0IGNoYXIgKmF1dGhvciwKIAkJCSAgICAgIGNvbnN0IGNoYXIgKm9uZWxpbmUpCkBAIC00MSw2ICs0NCw3IEBACiAJc2l6ZV90IGxlbjsKIAljb25zdCBjaGFyICplb2w7CiAJY29uc3QgY2hhciAqYm9lbWFpbCwgKmVvZW1haWw7CisJc3RydWN0IHN0cmJ1ZiBzdWJqZWN0ID0gU1RSQlVGX0lOSVQ7CiAKIAlib2VtYWlsID0gc3RyY2hyKGF1dGhvciwgJzwnKTsKIAlpZiAoIWJvZW1haWwpCkBAIC04OSw5ICs5Myw4IEBACiAJd2hpbGUgKCpvbmVsaW5lICYmIGlzc3BhY2UoKm9uZWxpbmUpICYmICpvbmVsaW5lICE9ICdcbicpCiAJCW9uZWxpbmUrKzsKIAlsZW4gPSBlb2wgLSBvbmVsaW5lOwotCXdoaWxlIChsZW4gJiYgaXNzcGFjZShvbmVsaW5lW2xlbi0xXSkpCi0JCWxlbi0tOwotCWJ1ZmZlciA9IHhtZW1kdXB6KG9uZWxpbmUsIGxlbik7CisJZm9ybWF0X3N1YmplY3QoJnN1YmplY3QsIG9uZWxpbmUsICIgIik7CisJYnVmZmVyID0gc3RyYnVmX2RldGFjaCgmc3ViamVjdCwgTlVMTCk7CiAKIAlpZiAoZG90MykgewogCQlpbnQgZG90M2xlbiA9IHN0cmxlbihkb3QzKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4tc2hvdy1icmFuY2guYyBiL2J1aWx0aW4tc2hvdy1icmFuY2guYwppbmRleCAyMzNlZWQ0Li4zMDZiODUwIDEwMDY0NAotLS0gYS9idWlsdGluLXNob3ctYnJhbmNoLmMKKysrIGIvYnVpbHRpbi1zaG93LWJyYW5jaC5jCkBAIC0yNTksMTEgKzI1OSwxMCBAQAogCiBzdGF0aWMgdm9pZCBzaG93X29uZV9jb21taXQoc3RydWN0IGNvbW1pdCAqY29tbWl0LCBpbnQgbm9fbmFtZSkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIHByZXR0eTsKKwlzdHJ1Y3Qgc3RyYnVmIHByZXR0eSA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKnByZXR0eV9zdHIgPSAiKHVuYXZhaWxhYmxlKSI7CiAJc3RydWN0IGNvbW1pdF9uYW1lICpuYW1lID0gY29tbWl0LT51dGlsOwogCi0Jc3RyYnVmX2luaXQoJnByZXR0eSwgMCk7CiAJaWYgKGNvbW1pdC0+b2JqZWN0LnBhcnNlZCkgewogCQlwcmV0dHlfcHJpbnRfY29tbWl0KENNSVRfRk1UX09ORUxJTkUsIGNvbW1pdCwKIAkJCQkgICAgJnByZXR0eSwgMCwgTlVMTCwgTlVMTCwgMCwgMCk7CmRpZmYgLS1naXQgYS9idWlsdGluLXN0cmlwc3BhY2UuYyBiL2J1aWx0aW4tc3RyaXBzcGFjZS5jCmluZGV4IGMwYjIxMzAuLmQ2ZTM4OTYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tc3RyaXBzcGFjZS5jCisrKyBiL2J1aWx0aW4tc3RyaXBzcGFjZS5jCkBAIC03MCwxNCArNzAsMTMgQEAKIAogaW50IGNtZF9zdHJpcHNwYWNlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJaW50IHN0cmlwX2NvbW1lbnRzID0gMDsKIAogCWlmIChhcmdjID4gMSAmJiAoIXN0cmNtcChhcmd2WzFdLCAiLXMiKSB8fAogCQkJCSFzdHJjbXAoYXJndlsxXSwgIi0tc3RyaXAtY29tbWVudHMiKSkpCiAJCXN0cmlwX2NvbW1lbnRzID0gMTsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCWlmIChzdHJidWZfcmVhZCgmYnVmLCAwLCAxMDI0KSA8IDApCiAJCWRpZSgiY291bGQgbm90IHJlYWQgdGhlIGlucHV0Iik7CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4tdGFnLmMgYi9idWlsdGluLXRhZy5jCmluZGV4IDJjZGVmYjEuLmEzOTg0OTkgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tdGFnLmMKKysrIGIvYnVpbHRpbi10YWcuYwpAQCAtMzUwLDcgKzM1MCw3IEBACiAKIGludCBjbWRfdGFnKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewotCXN0cnVjdCBzdHJidWYgYnVmOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJdW5zaWduZWQgY2hhciBvYmplY3RbMjBdLCBwcmV2WzIwXTsKIAljaGFyIHJlZltQQVRIX01BWF07CiAJY29uc3QgY2hhciAqb2JqZWN0X3JlZiwgKnRhZzsKQEAgLTQxMCw3ICs0MTAsNiBAQAogCWlmICh2ZXJpZnkpCiAJCXJldHVybiBmb3JfZWFjaF90YWdfbmFtZShhcmd2LCB2ZXJpZnlfdGFnKTsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCWlmIChtc2cuZ2l2ZW4gfHwgbXNnZmlsZSkgewogCQlpZiAobXNnLmdpdmVuICYmIG1zZ2ZpbGUpCiAJCQlkaWUoIm9ubHkgb25lIC1GIG9yIC1tIG9wdGlvbiBpcyBhbGxvd2VkLiIpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi11bnBhY2stb2JqZWN0cy5jIGIvYnVpbHRpbi11bnBhY2stb2JqZWN0cy5jCmluZGV4IDQwYjIwZjIuLjlhNzczMjMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4tdW5wYWNrLW9iamVjdHMuYworKysgYi9idWlsdGluLXVucGFjay1vYmplY3RzLmMKQEAgLTE5LDcgKzE5LDcgQEAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0MDk2XTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBsZW47CiBzdGF0aWMgb2ZmX3QgY29uc3VtZWRfYnl0ZXM7Ci1zdGF0aWMgU0hBX0NUWCBjdHg7CitzdGF0aWMgZ2l0X1NIQV9DVFggY3R4OwogCiAvKgogICogV2hlbiBydW5uaW5nIHVuZGVyIC0tc3RyaWN0IG1vZGUsIG9iamVjdHMgd2hvc2UgcmVhY2hhYmlsaXR5IGFyZQpAQCAtNTksNyArNTksNyBAQAogCWlmIChtaW4gPiBzaXplb2YoYnVmZmVyKSkKIAkJZGllKCJjYW5ub3QgZmlsbCAlZCBieXRlcyIsIG1pbik7CiAJaWYgKG9mZnNldCkgewotCQlTSEExX1VwZGF0ZSgmY3R4LCBidWZmZXIsIG9mZnNldCk7CisJCWdpdF9TSEExX1VwZGF0ZSgmY3R4LCBidWZmZXIsIG9mZnNldCk7CiAJCW1lbW1vdmUoYnVmZmVyLCBidWZmZXIgKyBvZmZzZXQsIGxlbik7CiAJCW9mZnNldCA9IDA7CiAJfQpAQCAtOTksMTAgKzk5LDEwIEBACiAJc3RyZWFtLmF2YWlsX291dCA9IHNpemU7CiAJc3RyZWFtLm5leHRfaW4gPSBmaWxsKDEpOwogCXN0cmVhbS5hdmFpbF9pbiA9IGxlbjsKLQlpbmZsYXRlSW5pdCgmc3RyZWFtKTsKKwlnaXRfaW5mbGF0ZV9pbml0KCZzdHJlYW0pOwogCiAJZm9yICg7OykgewotCQlpbnQgcmV0ID0gaW5mbGF0ZSgmc3RyZWFtLCAwKTsKKwkJaW50IHJldCA9IGdpdF9pbmZsYXRlKCZzdHJlYW0sIDApOwogCQl1c2UobGVuIC0gc3RyZWFtLmF2YWlsX2luKTsKIAkJaWYgKHN0cmVhbS50b3RhbF9vdXQgPT0gc2l6ZSAmJiByZXQgPT0gWl9TVFJFQU1fRU5EKQogCQkJYnJlYWs7CkBAIC0xMTgsNyArMTE4LDcgQEAKIAkJc3RyZWFtLm5leHRfaW4gPSBmaWxsKDEpOwogCQlzdHJlYW0uYXZhaWxfaW4gPSBsZW47CiAJfQotCWluZmxhdGVFbmQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfZW5kKCZzdHJlYW0pOwogCXJldHVybiBidWY7CiB9CiAKQEAgLTM3MCw2ICszNzAsOCBAQAogCQkJYmFzZV9vZmZzZXQgPSAoYmFzZV9vZmZzZXQgPDwgNykgKyAoYyAmIDEyNyk7CiAJCX0KIAkJYmFzZV9vZmZzZXQgPSBvYmpfbGlzdFtucl0ub2Zmc2V0IC0gYmFzZV9vZmZzZXQ7CisJCWlmIChiYXNlX29mZnNldCA8PSAwIHx8IGJhc2Vfb2Zmc2V0ID49IG9ial9saXN0W25yXS5vZmZzZXQpCisJCQlkaWUoIm9mZnNldCB2YWx1ZSBvdXQgb2YgYm91bmQgZm9yIGRlbHRhIGJhc2Ugb2JqZWN0Iik7CiAKIAkJZGVsdGFfZGF0YSA9IGdldF9kYXRhKGRlbHRhX3NpemUpOwogCQlpZiAoZHJ5X3J1biB8fCAhZGVsdGFfZGF0YSkgewpAQCAtNDc3LDggKzQ3OSw3IEBACiAKIAlpZiAoIXF1aWV0KQogCQlwcm9ncmVzcyA9IHN0YXJ0X3Byb2dyZXNzKCJVbnBhY2tpbmcgb2JqZWN0cyIsIG5yX29iamVjdHMpOwotCW9ial9saXN0ID0geG1hbGxvYyhucl9vYmplY3RzICogc2l6ZW9mKCpvYmpfbGlzdCkpOwotCW1lbXNldChvYmpfbGlzdCwgMCwgbnJfb2JqZWN0cyAqIHNpemVvZigqb2JqX2xpc3QpKTsKKwlvYmpfbGlzdCA9IHhjYWxsb2MobnJfb2JqZWN0cywgc2l6ZW9mKCpvYmpfbGlzdCkpOwogCWZvciAoaSA9IDA7IGkgPCBucl9vYmplY3RzOyBpKyspIHsKIAkJdW5wYWNrX29uZShpKTsKIAkJZGlzcGxheV9wcm9ncmVzcyhwcm9ncmVzcywgaSArIDEpOwpAQCAtNTM5LDEwICs1NDAsMTAgQEAKIAkJLyogV2UgZG9uJ3QgdGFrZSBhbnkgbm9uLWZsYWcgYXJndW1lbnRzIG5vdy4uIE1heWJlIHNvbWUgZGF5ICovCiAJCXVzYWdlKHVucGFja191c2FnZSk7CiAJfQotCVNIQTFfSW5pdCgmY3R4KTsKKwlnaXRfU0hBMV9Jbml0KCZjdHgpOwogCXVucGFja19hbGwoKTsKLQlTSEExX1VwZGF0ZSgmY3R4LCBidWZmZXIsIG9mZnNldCk7Ci0JU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKKwlnaXRfU0hBMV9VcGRhdGUoJmN0eCwgYnVmZmVyLCBvZmZzZXQpOworCWdpdF9TSEExX0ZpbmFsKHNoYTEsICZjdHgpOwogCWlmIChzdHJpY3QpCiAJCXdyaXRlX3Jlc3QoKTsKIAlpZiAoaGFzaGNtcChmaWxsKDIwKSwgc2hhMSkpCmRpZmYgLS1naXQgYS9idWlsdGluLXVwZGF0ZS1pbmRleC5jIGIvYnVpbHRpbi11cGRhdGUtaW5kZXguYwppbmRleCA5ZDE5YzUxLi42NWQ1Nzc1IDEwMDY0NAotLS0gYS9idWlsdGluLXVwZGF0ZS1pbmRleC5jCisrKyBiL2J1aWx0aW4tdXBkYXRlLWluZGV4LmMKQEAgLTE5NCw2ICsxOTQsMTAgQEAKIAlpbnQgbGVuOwogCXN0cnVjdCBzdGF0IHN0OwogCisJbGVuID0gc3RybGVuKHBhdGgpOworCWlmIChoYXNfc3ltbGlua19sZWFkaW5nX3BhdGgobGVuLCBwYXRoKSkKKwkJcmV0dXJuIGVycm9yKCInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiLCBwYXRoKTsKKwogCS8qCiAJICogRmlyc3QgdGhpbmdzIGZpcnN0OiBnZXQgdGhlIHN0YXQgaW5mb3JtYXRpb24sIHRvIGRlY2lkZQogCSAqIHdoYXQgdG8gZG8gYWJvdXQgdGhlIHBhdGhuYW1lIQpAQCAtMjAxLDcgKzIwNSw2IEBACiAJaWYgKGxzdGF0KHBhdGgsICZzdCkgPCAwKQogCQlyZXR1cm4gcHJvY2Vzc19sc3RhdF9lcnJvcihwYXRoLCBlcnJubyk7CiAKLQlsZW4gPSBzdHJsZW4ocGF0aCk7CiAJaWYgKFNfSVNESVIoc3Quc3RfbW9kZSkpCiAJCXJldHVybiBwcm9jZXNzX2RpcmVjdG9yeShwYXRoLCBsZW4sICZzdCk7CiAKQEAgLTIxNSw3ICsyMTgsNyBAQAogCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7CiAKIAlpZiAoIXZlcmlmeV9wYXRoKHBhdGgpKQotCQlyZXR1cm4gLTE7CisJCXJldHVybiBlcnJvcigiSW52YWxpZCBwYXRoICclcyciLCBwYXRoKTsKIAogCWxlbiA9IHN0cmxlbihwYXRoKTsKIAlzaXplID0gY2FjaGVfZW50cnlfc2l6ZShsZW4pOwpAQCAtMjk0LDExICsyOTcsOSBAQAogCiBzdGF0aWMgdm9pZCByZWFkX2luZGV4X2luZm8oaW50IGxpbmVfdGVybWluYXRpb24pCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7Ci0Jc3RydWN0IHN0cmJ1ZiB1cTsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgdXEgPSBTVFJCVUZfSU5JVDsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwotCXN0cmJ1Zl9pbml0KCZ1cSwgMCk7CiAJd2hpbGUgKHN0cmJ1Zl9nZXRsaW5lKCZidWYsIHN0ZGluLCBsaW5lX3Rlcm1pbmF0aW9uKSAhPSBFT0YpIHsKIAkJY2hhciAqcHRyLCAqdGFiOwogCQljaGFyICpwYXRoX25hbWU7CkBAIC03MTQsMTAgKzcxNSw4IEBACiAJCQlmcmVlKChjaGFyKilwKTsKIAl9CiAJaWYgKHJlYWRfZnJvbV9zdGRpbikgewotCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiwgbmJ1ZjsKKwkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVCwgbmJ1ZiA9IFNUUkJVRl9JTklUOwogCi0JCXN0cmJ1Zl9pbml0KCZidWYsIDApOwotCQlzdHJidWZfaW5pdCgmbmJ1ZiwgMCk7CiAJCXNldHVwX3dvcmtfdHJlZSgpOwogCQl3aGlsZSAoc3RyYnVmX2dldGxpbmUoJmJ1Ziwgc3RkaW4sIGxpbmVfdGVybWluYXRpb24pICE9IEVPRikgewogCQkJY29uc3QgY2hhciAqcDsKZGlmZiAtLWdpdCBhL2J1aWx0aW4td3JpdGUtdHJlZS5jIGIvYnVpbHRpbi13cml0ZS10cmVlLmMKaW5kZXggNTJhM2MwMS4uOWQ2NDA1MCAxMDA2NDQKLS0tIGEvYnVpbHRpbi13cml0ZS10cmVlLmMKKysrIGIvYnVpbHRpbi13cml0ZS10cmVlLmMKQEAgLTQyLDcgKzQyLDcgQEAKIAkJZGllKCIlczogZXJyb3IgcmVhZGluZyB0aGUgaW5kZXgiLCBtZSk7CiAJCWJyZWFrOwogCWNhc2UgV1JJVEVfVFJFRV9VTk1FUkdFRF9JTkRFWDoKLQkJZGllKCIlczogZXJyb3IgYnVpbGRpbmcgdHJlZXM7IHRoZSBpbmRleCBpcyB1bm1lcmdlZD8iLCBtZSk7CisJCWRpZSgiJXM6IGVycm9yIGJ1aWxkaW5nIHRyZWVzIiwgbWUpOwogCQlicmVhazsKIAljYXNlIFdSSVRFX1RSRUVfUFJFRklYX0VSUk9SOgogCQlkaWUoIiVzOiBwcmVmaXggJXMgbm90IGZvdW5kIiwgbWUsIHByZWZpeCk7CmRpZmYgLS1naXQgYS9idWlsdGluLmggYi9idWlsdGluLmgKaW5kZXggZjM1MDJkMy4uMTQ5NWNmNiAxMDA2NDQKLS0tIGEvYnVpbHRpbi5oCisrKyBiL2J1aWx0aW4uaApAQCAtMTEsMTMgKzExLDE0IEBACiBleHRlcm4gY29uc3QgY2hhciBnaXRfbW9yZV9pbmZvX3N0cmluZ1tdOwogCiBleHRlcm4gdm9pZCBsaXN0X2NvbW1vbl9jbWRzX2hlbHAodm9pZCk7Ci1leHRlcm4gdm9pZCBoZWxwX3Vua25vd25fY21kKGNvbnN0IGNoYXIgKmNtZCk7CitleHRlcm4gY29uc3QgY2hhciAqaGVscF91bmtub3duX2NtZChjb25zdCBjaGFyICpjbWQpOwogZXh0ZXJuIHZvaWQgcHJ1bmVfcGFja2VkX29iamVjdHMoaW50KTsKIGV4dGVybiBpbnQgcmVhZF9saW5lX3dpdGhfbnVsKGNoYXIgKmJ1ZiwgaW50IHNpemUsIEZJTEUgKmZpbGUpOwogZXh0ZXJuIGludCBmbXRfbWVyZ2VfbXNnKGludCBtZXJnZV9zdW1tYXJ5LCBzdHJ1Y3Qgc3RyYnVmICppbiwKIAlzdHJ1Y3Qgc3RyYnVmICpvdXQpOwogZXh0ZXJuIGludCBjb21taXRfdHJlZShjb25zdCBjaGFyICptc2csIHVuc2lnbmVkIGNoYXIgKnRyZWUsCi0JCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cywgdW5zaWduZWQgY2hhciAqcmV0KTsKKwkJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzLCB1bnNpZ25lZCBjaGFyICpyZXQsCisJCWNvbnN0IGNoYXIgKmF1dGhvcik7CiBleHRlcm4gaW50IGNoZWNrX3BhZ2VyX2NvbmZpZyhjb25zdCBjaGFyICpjbWQpOwogCiBleHRlcm4gaW50IGNtZF9hZGQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwpAQCAtNzgsNiArNzksNyBAQAogZXh0ZXJuIGludCBjbWRfcHJ1bmVfcGFja2VkKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX3B1c2goaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfcmVhZF90cmVlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKK2V4dGVybiBpbnQgY21kX3JlY2VpdmVfcGFjayhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9yZWZsb2coaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfcmVtb3RlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX2NvbmZpZyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CmRpZmYgLS1naXQgYS9idW5kbGUuYyBiL2J1bmRsZS5jCmluZGV4IGRhZWNkOGUuLmIyMGYyMTAgMTAwNjQ0Ci0tLSBhL2J1bmRsZS5jCisrKyBiL2J1bmRsZS5jCkBAIC0yNDAsNiArMjQwLDggQEAKIAkJcmV0dXJuIGVycm9yKCJ1bnJlY29nbml6ZWQgYXJndW1lbnQ6ICVzJyIsIGFyZ3ZbaV0pOwogCX0KIAorCW9iamVjdF9hcnJheV9yZW1vdmVfZHVwbGljYXRlcygmcmV2cy5wZW5kaW5nKTsKKwogCWZvciAoaSA9IDA7IGkgPCByZXZzLnBlbmRpbmcubnI7IGkrKykgewogCQlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICplID0gcmV2cy5wZW5kaW5nLm9iamVjdHMgKyBpOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwpkaWZmIC0tZ2l0IGEvY2FjaGUtdHJlZS5jIGIvY2FjaGUtdHJlZS5jCmluZGV4IDVmOGVlODcuLjNkOGYyMTggMTAwNjQ0Ci0tLSBhL2NhY2hlLXRyZWUuYworKysgYi9jYWNoZS10cmVlLmMKQEAgLTE1NSwxMyArMTU1LDE3IEBACiAJZnVubnkgPSAwOwogCWZvciAoaSA9IDA7IGkgPCBlbnRyaWVzOyBpKyspIHsKIAkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGNhY2hlW2ldOwotCQlpZiAoY2Vfc3RhZ2UoY2UpKSB7CisJCWlmIChjZV9zdGFnZShjZSkgfHwgKGNlLT5jZV9mbGFncyAmIENFX0lOVEVOVF9UT19BREQpKSB7CiAJCQlpZiAoMTAgPCArK2Z1bm55KSB7CiAJCQkJZnByaW50ZihzdGRlcnIsICIuLi5cbiIpOwogCQkJCWJyZWFrOwogCQkJfQotCQkJZnByaW50ZihzdGRlcnIsICIlczogdW5tZXJnZWQgKCVzKVxuIiwKLQkJCQljZS0+bmFtZSwgc2hhMV90b19oZXgoY2UtPnNoYTEpKTsKKwkJCWlmIChjZV9zdGFnZShjZSkpCisJCQkJZnByaW50ZihzdGRlcnIsICIlczogdW5tZXJnZWQgKCVzKVxuIiwKKwkJCQkJY2UtPm5hbWUsIHNoYTFfdG9faGV4KGNlLT5zaGExKSk7CisJCQllbHNlCisJCQkJZnByaW50ZihzdGRlcnIsICIlczogbm90IGFkZGVkIHlldFxuIiwKKwkJCQkJY2UtPm5hbWUpOwogCQl9CiAJfQogCWlmIChmdW5ueSkKZGlmZiAtLWdpdCBhL2NhY2hlLmggYi9jYWNoZS5oCmluZGV4IDQyZjJmMjcuLjQ5ZTU0ZmIgMTAwNjQ0Ci0tLSBhL2NhY2hlLmgKKysrIGIvY2FjaGUuaApAQCAtNiwxMiArNiwyMiBAQAogI2luY2x1ZGUgImhhc2guaCIKIAogI2luY2x1ZGUgU0hBMV9IRUFERVIKLSNpbmNsdWRlIDx6bGliLmg+CisjaWZuZGVmIGdpdF9TSEFfQ1RYCisjZGVmaW5lIGdpdF9TSEFfQ1RYCVNIQV9DVFgKKyNkZWZpbmUgZ2l0X1NIQTFfSW5pdAlTSEExX0luaXQKKyNkZWZpbmUgZ2l0X1NIQTFfVXBkYXRlCVNIQTFfVXBkYXRlCisjZGVmaW5lIGdpdF9TSEExX0ZpbmFsCVNIQTFfRmluYWwKKyNlbmRpZgogCisjaW5jbHVkZSA8emxpYi5oPgogI2lmIGRlZmluZWQoTk9fREVGTEFURV9CT1VORCkgfHwgWkxJQl9WRVJOVU0gPCAweDEyMDAKICNkZWZpbmUgZGVmbGF0ZUJvdW5kKGMscykgICgocykgKyAoKChzKSArIDcpID4+IDMpICsgKCgocykgKyA2MykgPj4gNikgKyAxMSkKICNlbmRpZgogCit2b2lkIGdpdF9pbmZsYXRlX2luaXQoel9zdHJlYW1wIHN0cm0pOwordm9pZCBnaXRfaW5mbGF0ZV9lbmQoel9zdHJlYW1wIHN0cm0pOworaW50IGdpdF9pbmZsYXRlKHpfc3RyZWFtcCBzdHJtLCBpbnQgZmx1c2gpOworCiAjaWYgZGVmaW5lZChEVF9VTktOT1dOKSAmJiAhZGVmaW5lZChOT19EX1RZUEVfSU5fRElSRU5UKQogI2RlZmluZSBEVFlQRShkZSkJKChkZSktPmRfdHlwZSkKICNlbHNlCkBAIC0xMDksNiArMTE5LDI2IEBACiAJY2hhciBuYW1lW0ZMRVhfQVJSQVldOyAvKiBtb3JlICovCiB9OwogCisvKgorICogVGhpcyBzdHJ1Y3QgaXMgdXNlZCB3aGVuIENFX0VYVEVOREVEIGJpdCBpcyAxCisgKiBUaGUgc3RydWN0IG11c3QgbWF0Y2ggb25kaXNrX2NhY2hlX2VudHJ5IGV4YWN0bHkgZnJvbQorICogY3RpbWUgdGlsbCBmbGFncworICovCitzdHJ1Y3Qgb25kaXNrX2NhY2hlX2VudHJ5X2V4dGVuZGVkIHsKKwlzdHJ1Y3QgY2FjaGVfdGltZSBjdGltZTsKKwlzdHJ1Y3QgY2FjaGVfdGltZSBtdGltZTsKKwl1bnNpZ25lZCBpbnQgZGV2OworCXVuc2lnbmVkIGludCBpbm87CisJdW5zaWduZWQgaW50IG1vZGU7CisJdW5zaWduZWQgaW50IHVpZDsKKwl1bnNpZ25lZCBpbnQgZ2lkOworCXVuc2lnbmVkIGludCBzaXplOworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJdW5zaWduZWQgc2hvcnQgZmxhZ3M7CisJdW5zaWduZWQgc2hvcnQgZmxhZ3MyOworCWNoYXIgbmFtZVtGTEVYX0FSUkFZXTsgLyogbW9yZSAqLworfTsKKwogc3RydWN0IGNhY2hlX2VudHJ5IHsKIAl1bnNpZ25lZCBpbnQgY2VfY3RpbWU7CiAJdW5zaWduZWQgaW50IGNlX210aW1lOwpAQCAtMTI2LDEwICsxNTYsMTkgQEAKIAogI2RlZmluZSBDRV9OQU1FTUFTSyAgKDB4MGZmZikKICNkZWZpbmUgQ0VfU1RBR0VNQVNLICgweDMwMDApCisjZGVmaW5lIENFX0VYVEVOREVEICAoMHg0MDAwKQogI2RlZmluZSBDRV9WQUxJRCAgICAgKDB4ODAwMCkKICNkZWZpbmUgQ0VfU1RBR0VTSElGVCAxMgogCi0vKiBJbi1tZW1vcnkgb25seSAqLworLyoKKyAqIFJhbmdlIDB4RkZGRjAwMDAgaW4gY2VfZmxhZ3MgaXMgZGl2aWRlZCBpbnRvCisgKiB0d28gcGFydHM6IGluLW1lbW9yeSBmbGFncyBhbmQgb24tZGlzayBvbmVzLgorICogRmxhZ3MgaW4gQ0VfRVhURU5ERURfRkxBR1Mgd2lsbCBnZXQgc2F2ZWQgb24tZGlzaworICogaWYgeW91IHdhbnQgdG8gc2F2ZSBhIG5ldyBmbGFnLCBhZGQgaXQgaW4KKyAqIENFX0VYVEVOREVEX0ZMQUdTCisgKgorICogSW4tbWVtb3J5IG9ubHkgZmxhZ3MKKyAqLwogI2RlZmluZSBDRV9VUERBVEUgICAgKDB4MTAwMDApCiAjZGVmaW5lIENFX1JFTU9WRSAgICAoMHgyMDAwMCkKICNkZWZpbmUgQ0VfVVBUT0RBVEUgICgweDQwMDAwKQpAQCAtMTM5LDYgKzE3OCwyNSBAQAogI2RlZmluZSBDRV9VTkhBU0hFRCAgKDB4MjAwMDAwKQogCiAvKgorICogRXh0ZW5kZWQgb24tZGlzayBmbGFncworICovCisjZGVmaW5lIENFX0lOVEVOVF9UT19BREQgMHgyMDAwMDAwMAorLyogQ0VfRVhURU5ERUQyIGlzIGZvciBmdXR1cmUgZXh0ZW5zaW9uICovCisjZGVmaW5lIENFX0VYVEVOREVEMiAweDgwMDAwMDAwCisKKyNkZWZpbmUgQ0VfRVhURU5ERURfRkxBR1MgKENFX0lOVEVOVF9UT19BREQpCisKKy8qCisgKiBTYWZlZ3VhcmQgdG8gYXZvaWQgc2F2aW5nIHdyb25nIGZsYWdzOgorICogIC0gQ0VfRVhURU5ERUQyIHdvbid0IGdldCBzYXZlZCB1bnRpbCBpdHMgc2VtYW50aWMgaXMga25vd24KKyAqICAtIEJpdHMgaW4gMHgwMDAwRkZGRiBoYXZlIGJlZW4gc2F2ZWQgaW4gY2VfZmxhZ3MgYWxyZWFkeQorICogIC0gQml0cyBpbiAweDAwM0YwMDAwIGFyZSBjdXJyZW50bHkgaW4tbWVtb3J5IGZsYWdzCisgKi8KKyNpZiBDRV9FWFRFTkRFRF9GTEFHUyAmIDB4ODAzRkZGRkYKKyNlcnJvciAiQ0VfRVhURU5ERURfRkxBR1Mgb3V0IG9mIHJhbmdlIgorI2VuZGlmCisKKy8qCiAgKiBDb3B5IHRoZSBzaGExIGFuZCBzdGF0IHN0YXRlIG9mIGEgY2FjaGUgZW50cnkgZnJvbSBvbmUgdG8KICAqIGFub3RoZXIuIEJ1dCB3ZSBuZXZlciBjaGFuZ2UgdGhlIG5hbWUsIG9yIHRoZSBoYXNoIHN0YXRlIQogICovCkBAIC0xNzAsNyArMjI4LDkgQEAKIH0KIAogI2RlZmluZSBjZV9zaXplKGNlKSBjYWNoZV9lbnRyeV9zaXplKGNlX25hbWVsZW4oY2UpKQotI2RlZmluZSBvbmRpc2tfY2Vfc2l6ZShjZSkgb25kaXNrX2NhY2hlX2VudHJ5X3NpemUoY2VfbmFtZWxlbihjZSkpCisjZGVmaW5lIG9uZGlza19jZV9zaXplKGNlKSAoKChjZSktPmNlX2ZsYWdzICYgQ0VfRVhURU5ERUQpID8gXAorCQkJICAgIG9uZGlza19jYWNoZV9lbnRyeV9leHRlbmRlZF9zaXplKGNlX25hbWVsZW4oY2UpKSA6IFwKKwkJCSAgICBvbmRpc2tfY2FjaGVfZW50cnlfc2l6ZShjZV9uYW1lbGVuKGNlKSkpCiAjZGVmaW5lIGNlX3N0YWdlKGNlKSAoKENFX1NUQUdFTUFTSyAmIChjZSktPmNlX2ZsYWdzKSA+PiBDRV9TVEFHRVNISUZUKQogI2RlZmluZSBjZV91cHRvZGF0ZShjZSkgKChjZSktPmNlX2ZsYWdzICYgQ0VfVVBUT0RBVEUpCiAjZGVmaW5lIGNlX21hcmtfdXB0b2RhdGUoY2UpICgoY2UpLT5jZV9mbGFncyB8PSBDRV9VUFRPREFURSkKQEAgLTIxMyw4ICsyNzMsMTAgQEAKIAkoU19JU1JFRyhtb2RlKSA/IChTX0lGUkVHIHwgY2VfcGVybWlzc2lvbnMobW9kZSkpIDogXAogCVNfSVNMTksobW9kZSkgPyBTX0lGTE5LIDogU19JU0RJUihtb2RlKSA/IFNfSUZESVIgOiBTX0lGR0lUTElOSykKIAotI2RlZmluZSBjYWNoZV9lbnRyeV9zaXplKGxlbikgKChvZmZzZXRvZihzdHJ1Y3QgY2FjaGVfZW50cnksbmFtZSkgKyAobGVuKSArIDgpICYgfjcpCi0jZGVmaW5lIG9uZGlza19jYWNoZV9lbnRyeV9zaXplKGxlbikgKChvZmZzZXRvZihzdHJ1Y3Qgb25kaXNrX2NhY2hlX2VudHJ5LG5hbWUpICsgKGxlbikgKyA4KSAmIH43KQorI2RlZmluZSBmbGV4aWJsZV9zaXplKFNUUlVDVCxsZW4pICgob2Zmc2V0b2Yoc3RydWN0IFNUUlVDVCxuYW1lKSArIChsZW4pICsgOCkgJiB+NykKKyNkZWZpbmUgY2FjaGVfZW50cnlfc2l6ZShsZW4pIGZsZXhpYmxlX3NpemUoY2FjaGVfZW50cnksbGVuKQorI2RlZmluZSBvbmRpc2tfY2FjaGVfZW50cnlfc2l6ZShsZW4pIGZsZXhpYmxlX3NpemUob25kaXNrX2NhY2hlX2VudHJ5LGxlbikKKyNkZWZpbmUgb25kaXNrX2NhY2hlX2VudHJ5X2V4dGVuZGVkX3NpemUobGVuKSBmbGV4aWJsZV9zaXplKG9uZGlza19jYWNoZV9lbnRyeV9leHRlbmRlZCxsZW4pCiAKIHN0cnVjdCBpbmRleF9zdGF0ZSB7CiAJc3RydWN0IGNhY2hlX2VudHJ5ICoqY2FjaGU7CkBAIC0yNTUsNiArMzE3LDcgQEAKIAogI2RlZmluZSByZWFkX2NhY2hlKCkgcmVhZF9pbmRleCgmdGhlX2luZGV4KQogI2RlZmluZSByZWFkX2NhY2hlX2Zyb20ocGF0aCkgcmVhZF9pbmRleF9mcm9tKCZ0aGVfaW5kZXgsIChwYXRoKSkKKyNkZWZpbmUgcmVhZF9jYWNoZV9wcmVsb2FkKHBhdGhzcGVjKSByZWFkX2luZGV4X3ByZWxvYWQoJnRoZV9pbmRleCwgKHBhdGhzcGVjKSkKICNkZWZpbmUgaXNfY2FjaGVfdW5ib3JuKCkgaXNfaW5kZXhfdW5ib3JuKCZ0aGVfaW5kZXgpCiAjZGVmaW5lIHJlYWRfY2FjaGVfdW5tZXJnZWQoKSByZWFkX2luZGV4X3VubWVyZ2VkKCZ0aGVfaW5kZXgpCiAjZGVmaW5lIHdyaXRlX2NhY2hlKG5ld2ZkLCBjYWNoZSwgZW50cmllcykgd3JpdGVfaW5kZXgoJnRoZV9pbmRleCwgKG5ld2ZkKSkKQEAgLTMxNCw2ICszNzcsNyBAQAogZXh0ZXJuIGludCBpc19pbnNpZGVfZ2l0X2Rpcih2b2lkKTsKIGV4dGVybiBjaGFyICpnaXRfd29ya190cmVlX2NmZzsKIGV4dGVybiBpbnQgaXNfaW5zaWRlX3dvcmtfdHJlZSh2b2lkKTsKK2V4dGVybiBpbnQgaGF2ZV9naXRfZGlyKHZvaWQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdldF9naXRfZGlyKHZvaWQpOwogZXh0ZXJuIGNoYXIgKmdldF9vYmplY3RfZGlyZWN0b3J5KHZvaWQpOwogZXh0ZXJuIGNoYXIgKmdldF9pbmRleF9maWxlKHZvaWQpOwpAQCAtMzYwLDYgKzQyNCw3IEBACiAKIC8qIEluaXRpYWxpemUgYW5kIHVzZSB0aGUgY2FjaGUgaW5mb3JtYXRpb24gKi8KIGV4dGVybiBpbnQgcmVhZF9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKik7CitleHRlcm4gaW50IHJlYWRfaW5kZXhfcHJlbG9hZChzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgY29uc3QgY2hhciAqKnBhdGhzcGVjKTsKIGV4dGVybiBpbnQgcmVhZF9pbmRleF9mcm9tKHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICpwYXRoKTsKIGV4dGVybiBpbnQgaXNfaW5kZXhfdW5ib3JuKHN0cnVjdCBpbmRleF9zdGF0ZSAqKTsKIGV4dGVybiBpbnQgcmVhZF9pbmRleF91bm1lcmdlZChzdHJ1Y3QgaW5kZXhfc3RhdGUgKik7CkBAIC0zNzMsNiArNDM4LDcgQEAKICNkZWZpbmUgQUREX0NBQ0hFX09LX1RPX1JFUExBQ0UgMgkvKiBPayB0byByZXBsYWNlIGZpbGUvZGlyZWN0b3J5ICovCiAjZGVmaW5lIEFERF9DQUNIRV9TS0lQX0RGQ0hFQ0sgNAkvKiBPayB0byBza2lwIERGIGNvbmZsaWN0IGNoZWNrcyAqLwogI2RlZmluZSBBRERfQ0FDSEVfSlVTVF9BUFBFTkQgOAkJLyogQXBwZW5kIG9ubHk7IHRyZWUuYzo6cmVhZF90cmVlKCkgKi8KKyNkZWZpbmUgQUREX0NBQ0hFX05FV19PTkxZIDE2CQkvKiBEbyBub3QgcmVwbGFjZSBleGlzdGluZyBvbmVzICovCiBleHRlcm4gaW50IGFkZF9pbmRleF9lbnRyeShzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgaW50IG9wdGlvbik7CiBleHRlcm4gc3RydWN0IGNhY2hlX2VudHJ5ICpyZWZyZXNoX2NhY2hlX2VudHJ5KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGludCByZWFsbHkpOwogZXh0ZXJuIHZvaWQgcmVuYW1lX2luZGV4X2VudHJ5X2F0KHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBpbnQgcG9zLCBjb25zdCBjaGFyICpuZXdfbmFtZSk7CkBAIC0zODEsNiArNDQ3LDggQEAKICNkZWZpbmUgQUREX0NBQ0hFX1ZFUkJPU0UgMQogI2RlZmluZSBBRERfQ0FDSEVfUFJFVEVORCAyCiAjZGVmaW5lIEFERF9DQUNIRV9JR05PUkVfRVJST1JTCTQKKyNkZWZpbmUgQUREX0NBQ0hFX0lHTk9SRV9SRU1PVkFMIDgKKyNkZWZpbmUgQUREX0NBQ0hFX0lOVEVOVCAxNgogZXh0ZXJuIGludCBhZGRfdG9faW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICosIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICosIGludCBmbGFncyk7CiBleHRlcm4gaW50IGFkZF9maWxlX3RvX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIHN0cnVjdCBjYWNoZV9lbnRyeSAqbWFrZV9jYWNoZV9lbnRyeSh1bnNpZ25lZCBpbnQgbW9kZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCwgaW50IHN0YWdlLCBpbnQgcmVmcmVzaCk7CkBAIC0zOTYsNyArNDY0LDYgQEAKIAogZXh0ZXJuIGludCBjZV9wYXRoX21hdGNoKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGNvbnN0IGNoYXIgKipwYXRoc3BlYyk7CiBleHRlcm4gaW50IGluZGV4X2ZkKHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgd3JpdGVfb2JqZWN0LCBlbnVtIG9iamVjdF90eXBlIHR5cGUsIGNvbnN0IGNoYXIgKnBhdGgpOwotZXh0ZXJuIGludCBpbmRleF9waXBlKHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmZCwgY29uc3QgY2hhciAqdHlwZSwgaW50IHdyaXRlX29iamVjdCk7CiBleHRlcm4gaW50IGluZGV4X3BhdGgodW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgd3JpdGVfb2JqZWN0KTsKIGV4dGVybiB2b2lkIGZpbGxfc3RhdF9jYWNoZV9pbmZvKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCk7CiAKQEAgLTQ0OCw2ICs1MTUsNyBAQAogZXh0ZXJuIHNpemVfdCBkZWx0YV9iYXNlX2NhY2hlX2xpbWl0OwogZXh0ZXJuIGludCBhdXRvX2NybGY7CiBleHRlcm4gaW50IGZzeW5jX29iamVjdF9maWxlczsKK2V4dGVybiBpbnQgY29yZV9wcmVsb2FkX2luZGV4OwogCiBlbnVtIHNhZmVfY3JsZiB7CiAJU0FGRV9DUkxGX0ZBTFNFID0gMCwKQEAgLTQ1OCw2ICs1MjYsNyBAQAogZXh0ZXJuIGVudW0gc2FmZV9jcmxmIHNhZmVfY3JsZjsKIAogZW51bSBicmFuY2hfdHJhY2sgeworCUJSQU5DSF9UUkFDS19VTlNQRUNJRklFRCA9IC0xLAogCUJSQU5DSF9UUkFDS19ORVZFUiA9IDAsCiAJQlJBTkNIX1RSQUNLX1JFTU9URSwKIAlCUkFOQ0hfVFJBQ0tfQUxXQVlTLApAQCAtNTE3LDYgKzU4NiwxMyBAQAogewogCW1lbXNldChoYXNoLCAwLCAyMCk7CiB9CitleHRlcm4gaW50IGlzX2VtcHR5X2Jsb2Jfc2hhMShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKTsKKworI2RlZmluZSBFTVBUWV9UUkVFX1NIQTFfSEVYIFwKKwkiNGI4MjVkYzY0MmNiNmViOWEwNjBlNTRiZjhkNjkyODhmYmVlNDkwNCIKKyNkZWZpbmUgRU1QVFlfVFJFRV9TSEExX0JJTiBcCisJICJceDRiXHg4Mlx4NWRceGM2XHg0Mlx4Y2JceDZlXHhiOVx4YTBceDYwIiBcCisJICJceGU1XHg0Ylx4ZjhceGQ2XHg5Mlx4ODhceGZiXHhlZVx4NDlceDA0IgogCiBpbnQgZ2l0X21rc3RlbXAoY2hhciAqcGF0aCwgc2l6ZV90IG4sIGNvbnN0IGNoYXIgKnRlbXBsYXRlKTsKIApAQCAtNTQ0LDYgKzYyMCw3IEBACiB7CiAJcmV0dXJuIHBhdGhbMF0gPT0gJy8nIHx8IGhhc19kb3NfZHJpdmVfcHJlZml4KHBhdGgpOwogfQoraW50IGlzX2RpcmVjdG9yeShjb25zdCBjaGFyICopOwogY29uc3QgY2hhciAqbWFrZV9hYnNvbHV0ZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOwogY29uc3QgY2hhciAqbWFrZV9ub25yZWxhdGl2ZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOwogY29uc3QgY2hhciAqbWFrZV9yZWxhdGl2ZV9wYXRoKGNvbnN0IGNoYXIgKmFicywgY29uc3QgY2hhciAqYmFzZSk7CkBAIC01NjEsNiArNjM4LDkgQEAKIC8qIGp1c3QgbGlrZSByZWFkX3NoYTFfZmlsZSgpLCBidXQgbm9uIGZhdGFsIGluIHByZXNlbmNlIG9mIGJhZCBvYmplY3RzICovCiBleHRlcm4gdm9pZCAqcmVhZF9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgZW51bSBvYmplY3RfdHlwZSAqdHlwZSwgdW5zaWduZWQgbG9uZyAqc2l6ZSk7CiAKKy8qIGdsb2JhbCBmbGFnIHRvIGVuYWJsZSBleHRyYSBjaGVja3Mgd2hlbiBhY2Nlc3NpbmcgcGFja2VkIG9iamVjdHMgKi8KK2V4dGVybiBpbnQgZG9fY2hlY2tfcGFja2VkX29iamVjdF9jcmM7CisKIGV4dGVybiBpbnQgY2hlY2tfc2hhMV9zaWduYXR1cmUoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdm9pZCAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IGNoYXIgKnR5cGUpOwogCiBleHRlcm4gaW50IG1vdmVfdGVtcF90b19maWxlKGNvbnN0IGNoYXIgKnRtcGZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKQEAgLTY1Miw2ICs3MzIsOCBAQAogfSAqYWx0X29kYl9saXN0OwogZXh0ZXJuIHZvaWQgcHJlcGFyZV9hbHRfb2RiKHZvaWQpOwogZXh0ZXJuIHZvaWQgYWRkX3RvX2FsdGVybmF0ZXNfZmlsZShjb25zdCBjaGFyICpyZWZlcmVuY2UpOwordHlwZWRlZiBpbnQgYWx0X29kYl9mbihzdHJ1Y3QgYWx0ZXJuYXRlX29iamVjdF9kYXRhYmFzZSAqLCB2b2lkICopOworZXh0ZXJuIHZvaWQgZm9yZWFjaF9hbHRfb2RiKGFsdF9vZGJfZm4sIHZvaWQqKTsKIAogc3RydWN0IHBhY2tfd2luZG93IHsKIAlzdHJ1Y3QgcGFja193aW5kb3cgKm5leHQ7CkBAIC03MjEsNyArODAzLDExIEBACiBleHRlcm4gaW50IGZpbmlzaF9jb25uZWN0KHN0cnVjdCBjaGlsZF9wcm9jZXNzICpjb25uKTsKIGV4dGVybiBpbnQgcGF0aF9tYXRjaChjb25zdCBjaGFyICpwYXRoLCBpbnQgbnIsIGNoYXIgKiptYXRjaCk7CiBleHRlcm4gaW50IGdldF9hY2soaW50IGZkLCB1bnNpZ25lZCBjaGFyICpyZXN1bHRfc2hhMSk7Ci1leHRlcm4gc3RydWN0IHJlZiAqKmdldF9yZW1vdGVfaGVhZHMoaW50IGluLCBzdHJ1Y3QgcmVmICoqbGlzdCwgaW50IG5yX21hdGNoLCBjaGFyICoqbWF0Y2gsIHVuc2lnbmVkIGludCBmbGFncyk7CitzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzIHsKKwlpbnQgbnIsIGFsbG9jOworCXVuc2lnbmVkIGNoYXIgKCphcnJheSlbMjBdOworfTsKK2V4dGVybiBzdHJ1Y3QgcmVmICoqZ2V0X3JlbW90ZV9oZWFkcyhpbnQgaW4sIHN0cnVjdCByZWYgKipsaXN0LCBpbnQgbnJfbWF0Y2gsIGNoYXIgKiptYXRjaCwgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzICopOwogZXh0ZXJuIGludCBzZXJ2ZXJfc3VwcG9ydHMoY29uc3QgY2hhciAqZmVhdHVyZSk7CiAKIGV4dGVybiBzdHJ1Y3QgcGFja2VkX2dpdCAqcGFyc2VfcGFja19pbmRleCh1bnNpZ25lZCBjaGFyICpzaGExKTsKQEAgLTc0NCw3ICs4MzAsNyBAQAogZXh0ZXJuIG9mZl90IG50aF9wYWNrZWRfb2JqZWN0X29mZnNldChjb25zdCBzdHJ1Y3QgcGFja2VkX2dpdCAqLCB1aW50MzJfdCk7CiBleHRlcm4gb2ZmX3QgZmluZF9wYWNrX2VudHJ5X29uZShjb25zdCB1bnNpZ25lZCBjaGFyICosIHN0cnVjdCBwYWNrZWRfZ2l0ICopOwogZXh0ZXJuIHZvaWQgKnVucGFja19lbnRyeShzdHJ1Y3QgcGFja2VkX2dpdCAqLCBvZmZfdCwgZW51bSBvYmplY3RfdHlwZSAqLCB1bnNpZ25lZCBsb25nICopOwotZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdW5wYWNrX29iamVjdF9oZWFkZXJfZ2VudGx5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4sIGVudW0gb2JqZWN0X3R5cGUgKnR5cGUsIHVuc2lnbmVkIGxvbmcgKnNpemVwKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIHVucGFja19vYmplY3RfaGVhZGVyX2J1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbGVuLCBlbnVtIG9iamVjdF90eXBlICp0eXBlLCB1bnNpZ25lZCBsb25nICpzaXplcCk7CiBleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfc2l6ZV9mcm9tX2RlbHRhKHN0cnVjdCBwYWNrZWRfZ2l0ICosIHN0cnVjdCBwYWNrX3dpbmRvdyAqKiwgb2ZmX3QpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnBhY2tlZF9vYmplY3RfaW5mb19kZXRhaWwoc3RydWN0IHBhY2tlZF9naXQgKiwgb2ZmX3QsIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAqLCB1bnNpZ25lZCBpbnQgKiwgdW5zaWduZWQgY2hhciAqKTsKIGV4dGVybiBpbnQgbWF0Y2hlc19wYWNrX25hbWUoc3RydWN0IHBhY2tlZF9naXQgKnAsIGNvbnN0IGNoYXIgKm5hbWUpOwpAQCAtNzU2LDcgKzg0Miw2IEBACiBleHRlcm4gaW50IGdpdF9kZWZhdWx0X2NvbmZpZyhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKIGV4dGVybiBpbnQgZ2l0X2NvbmZpZ19mcm9tX2ZpbGUoY29uZmlnX2ZuX3QgZm4sIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKIGV4dGVybiBpbnQgZ2l0X2NvbmZpZyhjb25maWdfZm5fdCBmbiwgdm9pZCAqKTsKLWV4dGVybiBpbnQgZ2l0X3BhcnNlX2xvbmcoY29uc3QgY2hhciAqLCBsb25nICopOwogZXh0ZXJuIGludCBnaXRfcGFyc2VfdWxvbmcoY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25nICopOwogZXh0ZXJuIGludCBnaXRfY29uZmlnX2ludChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiBleHRlcm4gdW5zaWduZWQgbG9uZyBnaXRfY29uZmlnX3Vsb25nKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZGlmZiAtLWdpdCBhL2NvbWJpbmUtZGlmZi5jIGIvY29tYmluZS1kaWZmLmMKaW5kZXggYWE5ZDc5ZS4uYmNjYzAxOCAxMDA2NDQKLS0tIGEvY29tYmluZS1kaWZmLmMKKysrIGIvY29tYmluZS1kaWZmLmMKQEAgLTE0Myw4ICsxNDMsNiBAQAogfQogCiBzdHJ1Y3QgY29tYmluZV9kaWZmX3N0YXRlIHsKLQlzdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSB4bTsKLQogCXVuc2lnbmVkIGludCBsbm87CiAJaW50IG9iLCBvbiwgbmIsIG5uOwogCXVuc2lnbmVkIGxvbmcgbm1hc2s7CkBAIC0yMTUsMTkgKzIxMywxOCBAQAogCiAJcGFyZW50X2ZpbGUucHRyID0gZ3JhYl9ibG9iKHBhcmVudCwgJnN6KTsKIAlwYXJlbnRfZmlsZS5zaXplID0gc3o7CisJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKIAl4cHAuZmxhZ3MgPSBYREZfTkVFRF9NSU5JTUFMOwogCW1lbXNldCgmeGVjZmcsIDAsIHNpemVvZih4ZWNmZykpOwotCWVjYi5vdXRmID0geGRpZmZfb3V0ZjsKLQllY2IucHJpdiA9ICZzdGF0ZTsKIAltZW1zZXQoJnN0YXRlLCAwLCBzaXplb2Yoc3RhdGUpKTsKLQlzdGF0ZS54bS5jb25zdW1lID0gY29uc3VtZV9saW5lOwogCXN0YXRlLm5tYXNrID0gbm1hc2s7CiAJc3RhdGUuc2xpbmUgPSBzbGluZTsKIAlzdGF0ZS5sbm8gPSAxOwogCXN0YXRlLm51bV9wYXJlbnQgPSBudW1fcGFyZW50OwogCXN0YXRlLm4gPSBuOwogCi0JeGRpX2RpZmYoJnBhcmVudF9maWxlLCByZXN1bHRfZmlsZSwgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKKwl4ZGlfZGlmZl9vdXRmKCZwYXJlbnRfZmlsZSwgcmVzdWx0X2ZpbGUsIGNvbnN1bWVfbGluZSwgJnN0YXRlLAorCQkgICAgICAmeHBwLCAmeGVjZmcsICZlY2IpOwogCWZyZWUocGFyZW50X2ZpbGUucHRyKTsKIAogCS8qIEFzc2lnbiBsaW5lIG51bWJlcnMgZm9yIHRoaXMgcGFyZW50LgpAQCAtNjg3LDkgKzY4NCwxMyBAQAogCWludCBpLCBzaG93X2h1bmtzOwogCWludCB3b3JraW5nX3RyZWVfZmlsZSA9IGlzX251bGxfc2hhMShlbGVtLT5zaGExKTsKIAlpbnQgYWJicmV2ID0gRElGRl9PUFRfVFNUKG9wdCwgRlVMTF9JTkRFWCkgPyA0MCA6IERFRkFVTFRfQUJCUkVWOworCWNvbnN0IGNoYXIgKmFfcHJlZml4LCAqYl9wcmVmaXg7CiAJbW1maWxlX3QgcmVzdWx0X2ZpbGU7CiAKIAljb250ZXh0ID0gb3B0LT5jb250ZXh0OworCWFfcHJlZml4ID0gb3B0LT5hX3ByZWZpeCA/IG9wdC0+YV9wcmVmaXggOiAiYS8iOworCWJfcHJlZml4ID0gb3B0LT5iX3ByZWZpeCA/IG9wdC0+Yl9wcmVmaXggOiAiYi8iOworCiAJLyogUmVhZCB0aGUgcmVzdWx0IG9mIG1lcmdlIGZpcnN0ICovCiAJaWYgKCF3b3JraW5nX3RyZWVfZmlsZSkKIAkJcmVzdWx0ID0gZ3JhYl9ibG9iKGVsZW0tPnNoYTEsICZyZXN1bHRfc2l6ZSk7CkBAIC03MDIsMTUgKzcwMywxNSBAQAogCQkJZ290byBkZWxldGVkX2ZpbGU7CiAKIAkJaWYgKFNfSVNMTksoc3Quc3RfbW9kZSkpIHsKLQkJCXNpemVfdCBsZW4gPSB4c2l6ZV90KHN0LnN0X3NpemUpOwotCQkJcmVzdWx0X3NpemUgPSBsZW47Ci0JCQlyZXN1bHQgPSB4bWFsbG9jKGxlbiArIDEpOwotCQkJaWYgKHJlc3VsdF9zaXplICE9IHJlYWRsaW5rKGVsZW0tPnBhdGgsIHJlc3VsdCwgbGVuKSkgeworCQkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKworCQkJaWYgKHN0cmJ1Zl9yZWFkbGluaygmYnVmLCBlbGVtLT5wYXRoLCBzdC5zdF9zaXplKSA8IDApIHsKIAkJCQllcnJvcigicmVhZGxpbmsoJXMpOiAlcyIsIGVsZW0tPnBhdGgsCiAJCQkJICAgICAgc3RyZXJyb3IoZXJybm8pKTsKIAkJCQlyZXR1cm47CiAJCQl9Ci0JCQlyZXN1bHRbbGVuXSA9IDA7CisJCQlyZXN1bHRfc2l6ZSA9IGJ1Zi5sZW47CisJCQlyZXN1bHQgPSBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOwogCQkJZWxlbS0+bW9kZSA9IGNhbm9uX21vZGUoc3Quc3RfbW9kZSk7CiAJCX0KIAkJZWxzZSBpZiAoMCA8PSAoZmQgPSBvcGVuKGVsZW0tPnBhdGgsIE9fUkRPTkxZKSkgJiYKQEAgLTc0Miw5ICs3NDMsOCBAQAogCiAJCQkvKiBJZiBub3QgYSBmYWtlIHN5bWxpbmssIGFwcGx5IGZpbHRlcnMsIGUuZy4gYXV0b2NybGYgKi8KIAkJCWlmIChpc19maWxlKSB7Ci0JCQkJc3RydWN0IHN0cmJ1ZiBidWY7CisJCQkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAotCQkJCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCQkJCWlmIChjb252ZXJ0X3RvX2dpdChlbGVtLT5wYXRoLCByZXN1bHQsIGxlbiwgJmJ1Ziwgc2FmZV9jcmxmKSkgewogCQkJCQlmcmVlKHJlc3VsdCk7CiAJCQkJCXJlc3VsdCA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZiwgJmxlbik7CkBAIC04NjUsMTMgKzg2NSwxMyBAQAogCQkJZHVtcF9xdW90ZWRfcGF0aCgiLS0tICIsICIiLCAiL2Rldi9udWxsIiwKIAkJCQkJIGNfbWV0YSwgY19yZXNldCk7CiAJCWVsc2UKLQkJCWR1bXBfcXVvdGVkX3BhdGgoIi0tLSAiLCBvcHQtPmFfcHJlZml4LCBlbGVtLT5wYXRoLAorCQkJZHVtcF9xdW90ZWRfcGF0aCgiLS0tICIsIGFfcHJlZml4LCBlbGVtLT5wYXRoLAogCQkJCQkgY19tZXRhLCBjX3Jlc2V0KTsKIAkJaWYgKGRlbGV0ZWQpCiAJCQlkdW1wX3F1b3RlZF9wYXRoKCIrKysgIiwgIiIsICIvZGV2L251bGwiLAogCQkJCQkgY19tZXRhLCBjX3Jlc2V0KTsKIAkJZWxzZQotCQkJZHVtcF9xdW90ZWRfcGF0aCgiKysrICIsIG9wdC0+Yl9wcmVmaXgsIGVsZW0tPnBhdGgsCisJCQlkdW1wX3F1b3RlZF9wYXRoKCIrKysgIiwgYl9wcmVmaXgsIGVsZW0tPnBhdGgsCiAJCQkJCSBjX21ldGEsIGNfcmVzZXQpOwogCQlkdW1wX3NsaW5lKHNsaW5lLCBjbnQsIG51bV9wYXJlbnQsCiAJCQkgICBESUZGX09QVF9UU1Qob3B0LCBDT0xPUl9ESUZGKSk7CmRpZmYgLS1naXQgYS9jb21taXQuYyBiL2NvbW1pdC5jCmluZGV4IGRjMGM1YmYuLmM5OWRiMTYgMTAwNjQ0Ci0tLSBhL2NvbW1pdC5jCisrKyBiL2NvbW1pdC5jCkBAIC0xNjAsNyArMTYwLDcgQEAKIAlyZXR1cm4gZ3JhZnQ7CiB9CiAKLWludCByZWFkX2dyYWZ0X2ZpbGUoY29uc3QgY2hhciAqZ3JhZnRfZmlsZSkKK3N0YXRpYyBpbnQgcmVhZF9ncmFmdF9maWxlKGNvbnN0IGNoYXIgKmdyYWZ0X2ZpbGUpCiB7CiAJRklMRSAqZnAgPSBmb3BlbihncmFmdF9maWxlLCAiciIpOwogCWNoYXIgYnVmWzEwMjRdOwpkaWZmIC0tZ2l0IGEvY29tbWl0LmggYi9jb21taXQuaAppbmRleCBlY2RkNTczLi4zYTdiMDZhIDEwMDY0NAotLS0gYS9jb21taXQuaAorKysgYi9jb21taXQuaApAQCAtNjUsNiArNjUsOCBAQAogCiBleHRlcm4gaW50IG5vbl9hc2NpaShpbnQpOwogc3RydWN0IHJldl9pbmZvOyAvKiBpbiByZXZpc2lvbi5oLCBpdCBjaXJjdWxhcmx5IHVzZXMgZW51bSBjbWl0X2ZtdCAqLworZXh0ZXJuIGNoYXIgKnJlZW5jb2RlX2NvbW1pdF9tZXNzYWdlKGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKKwkJCQkgICAgIGNvbnN0IGNoYXIgKiplbmNvZGluZ19wKTsKIGV4dGVybiB2b2lkIGdldF9jb21taXRfZm9ybWF0KGNvbnN0IGNoYXIgKmFyZywgc3RydWN0IHJldl9pbmZvICopOwogZXh0ZXJuIHZvaWQgZm9ybWF0X2NvbW1pdF9tZXNzYWdlKGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKIAkJCQkgIGNvbnN0IHZvaWQgKmZvcm1hdCwgc3RydWN0IHN0cmJ1ZiAqc2IsCkBAIC0xMTgsMTAgKzEyMCwxMCBAQAogCiBzdHJ1Y3QgY29tbWl0X2dyYWZ0ICpyZWFkX2dyYWZ0X2xpbmUoY2hhciAqYnVmLCBpbnQgbGVuKTsKIGludCByZWdpc3Rlcl9jb21taXRfZ3JhZnQoc3RydWN0IGNvbW1pdF9ncmFmdCAqLCBpbnQpOwotaW50IHJlYWRfZ3JhZnRfZmlsZShjb25zdCBjaGFyICpncmFmdF9maWxlKTsKIHN0cnVjdCBjb21taXRfZ3JhZnQgKmxvb2t1cF9jb21taXRfZ3JhZnQoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSk7CiAKIGV4dGVybiBzdHJ1Y3QgY29tbWl0X2xpc3QgKmdldF9tZXJnZV9iYXNlcyhzdHJ1Y3QgY29tbWl0ICpyZXYxLCBzdHJ1Y3QgY29tbWl0ICpyZXYyLCBpbnQgY2xlYW51cCk7CitleHRlcm4gc3RydWN0IGNvbW1pdF9saXN0ICpnZXRfbWVyZ2VfYmFzZXNfbWFueShzdHJ1Y3QgY29tbWl0ICpvbmUsIGludCBuLCBzdHJ1Y3QgY29tbWl0ICoqdHdvcywgaW50IGNsZWFudXApOwogZXh0ZXJuIHN0cnVjdCBjb21taXRfbGlzdCAqZ2V0X29jdG9wdXNfbWVyZ2VfYmFzZXMoc3RydWN0IGNvbW1pdF9saXN0ICppbik7CiAKIGV4dGVybiBpbnQgcmVnaXN0ZXJfc2hhbGxvdyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKTsKZGlmZiAtLWdpdCBhL2NvbXBhdC9jeWd3aW4uYyBiL2NvbXBhdC9jeWd3aW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmFjMTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvY29tcGF0L2N5Z3dpbi5jCkBAIC0wLDAgKzEsMTQzIEBACisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlICIuLi9naXQtY29tcGF0LXV0aWwuaCIKKyNpbmNsdWRlICJ3aW4zMi5oIgorI2luY2x1ZGUgIi4uL2NhY2hlLmgiIC8qIHRvIHJlYWQgY29uZmlndXJhdGlvbiAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsZXRpbWVfdG9fdGltZXNwZWMoY29uc3QgRklMRVRJTUUgKmZ0LCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQoreworCWxvbmcgbG9uZyB3aW5UaW1lID0gKChsb25nIGxvbmcpZnQtPmR3SGlnaERhdGVUaW1lIDw8IDMyKSArCisJCQlmdC0+ZHdMb3dEYXRlVGltZTsKKwl3aW5UaW1lIC09IDExNjQ0NDczNjAwMDAwMDAwMExMOyAvKiBXaW5kb3dzIHRvIFVuaXggRXBvY2ggY29udmVyc2lvbiAqLworCS8qIGNvbnZlcnQgMTAwLW5zZWNvbmQgaW50ZXJ2YWwgdG8gc2Vjb25kcyBhbmQgbmFub3NlY29uZHMgKi8KKwl0cy0+dHZfc2VjID0gKHRpbWVfdCkod2luVGltZS8xMDAwMDAwMCk7CisJdHMtPnR2X25zZWMgPSAobG9uZykod2luVGltZSAtIHRzLT50dl9zZWMqMTAwMDAwMDBMTCkgKiAxMDA7Cit9CisKKyNkZWZpbmUgc2l6ZV90b19ibG9ja3MocykgKCgocykrNTExKS81MTIpCisKKy8qIGRvX3N0YXQgaXMgYSBjb21tb24gaW1wbGVtZW50YXRpb24gZm9yIGN5Z3dpbl9sc3RhdCBhbmQgY3lnd2luX3N0YXQuCisgKgorICogVG8gc2ltcGxpZnkgaXRzIGxvZ2ljLCBpbiB0aGUgY2FzZSBvZiBjeWd3aW4gc3ltbGlua3MsIHRoaXMgaW1wbGVtZW50YXRpb24KKyAqIGZhbGxzIGJhY2sgdG8gdGhlIGN5Z3dpbiB2ZXJzaW9uIG9mIHN0YXQvbHN0YXQsIHdoaWNoIGlzIHByb3ZpZGVkIGFzIHRoZQorICogbGFzdCBhcmd1bWVudC4KKyAqLworc3RhdGljIGludCBkb19zdGF0KGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgc3RydWN0IHN0YXQgKmJ1Ziwgc3RhdF9mbl90IGN5Z3N0YXQpCit7CisJV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBmZGF0YTsKKworCWlmIChmaWxlX25hbWVbMF0gPT0gJy8nKQorCQlyZXR1cm4gY3lnc3RhdCAoZmlsZV9uYW1lLCBidWYpOworCisJaWYgKCEoZXJybm8gPSBnZXRfZmlsZV9hdHRyKGZpbGVfbmFtZSwgJmZkYXRhKSkpIHsKKwkJLyoKKwkJICogSWYgdGhlIHN5c3RlbSBhdHRyaWJ1dGUgaXMgc2V0IGFuZCBpdCBpcyBub3QgYSBkaXJlY3RvcnkgdGhlbgorCQkgKiBpdCBjb3VsZCBiZSBhIHN5bWJvbCBsaW5rIGNyZWF0ZWQgaW4gdGhlIG5vd2luc3ltbGlua3MgbW9kZS4KKwkJICogTm9ybWFsbHksIEN5Z3dpbiB3b3JrcyBpbiB0aGUgd2luc3ltbGlua3MgbW9kZSwgc28gdGhpcyBzaXR1YXRpb24KKwkJICogaXMgdmVyeSB1bmxpa2VseS4gRm9yIHRoZSBzYWtlIG9mIHNpbXBsaWNpdHkgb2Ygb3VyIGNvZGUsIGxldCdzCisJCSAqIEN5Z3dpbiB0byBoYW5kbGUgaXQuCisJCSAqLworCQlpZiAoKGZkYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9TWVNURU0pICYmCisJCSAgICAhKGZkYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKQorCQkJcmV0dXJuIGN5Z3N0YXQoZmlsZV9uYW1lLCBidWYpOworCisJCS8qIGZpbGwgb3V0IHRoZSBzdGF0IHN0cnVjdHVyZSAqLworCQlidWYtPnN0X2RldiA9IGJ1Zi0+c3RfcmRldiA9IDA7IC8qIG5vdCB1c2VkIGJ5IEdpdCAqLworCQlidWYtPnN0X2lubyA9IDA7CisJCWJ1Zi0+c3RfbW9kZSA9IGZpbGVfYXR0cl90b19zdF9tb2RlKGZkYXRhLmR3RmlsZUF0dHJpYnV0ZXMpOworCQlidWYtPnN0X25saW5rID0gMTsKKwkJYnVmLT5zdF91aWQgPSBidWYtPnN0X2dpZCA9IDA7CisjaWZkZWYgX19DWUdXSU5fVVNFX0JJR19UWVBFU19fCisJCWJ1Zi0+c3Rfc2l6ZSA9ICgoX29mZjY0X3QpZmRhdGEubkZpbGVTaXplSGlnaCA8PCAzMikgKworCQkJZmRhdGEubkZpbGVTaXplTG93OworI2Vsc2UKKwkJYnVmLT5zdF9zaXplID0gKG9mZl90KWZkYXRhLm5GaWxlU2l6ZUxvdzsKKyNlbmRpZgorCQlidWYtPnN0X2Jsb2NrcyA9IHNpemVfdG9fYmxvY2tzKGJ1Zi0+c3Rfc2l6ZSk7CisJCWZpbGV0aW1lX3RvX3RpbWVzcGVjKCZmZGF0YS5mdExhc3RBY2Nlc3NUaW1lLCAmYnVmLT5zdF9hdGltKTsKKwkJZmlsZXRpbWVfdG9fdGltZXNwZWMoJmZkYXRhLmZ0TGFzdFdyaXRlVGltZSwgJmJ1Zi0+c3RfbXRpbSk7CisJCWZpbGV0aW1lX3RvX3RpbWVzcGVjKCZmZGF0YS5mdENyZWF0aW9uVGltZSwgJmJ1Zi0+c3RfY3RpbSk7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAoZXJybm8gPT0gRU5PRU5UKSB7CisJCS8qCisJCSAqIEluIHRoZSB3aW5zeW1saW5rcyBtb2RlICh3aGljaCBpcyB0aGUgZGVmYXVsdCksIEN5Z3dpbgorCQkgKiBlbXVsYXRlcyBzeW1ib2wgbGlua3MgdXNpbmcgV2luZG93cyBzaG9ydGN1dCBmaWxlcy4gVGhlc2UKKwkJICogZmlsZXMgYXJlIGZvcm1lZCBieSBhZGRpbmcgLmxuayBleHRlbnNpb24uIFNvLCBpZiB3ZSBoYXZlCisJCSAqIG5vdCBmb3VuZCB0aGUgc3BlY2lmaWVkIGZpbGUgbmFtZSwgaXQgY291bGQgYmUgdGhhdCBpdCBpcworCQkgKiBhIHN5bWJvbCBsaW5rLiBMZXQncyBDeWd3aW4gdG8gZGVhbCB3aXRoIHRoYXQuCisJCSAqLworCQlyZXR1cm4gY3lnc3RhdChmaWxlX25hbWUsIGJ1Zik7CisJfQorCXJldHVybiAtMTsKK30KKworLyogV2UgcHJvdmlkZSBvdXIgb3duIGxzdGF0L3N0YXQgZnVuY3Rpb25zLCBzaW5jZSB0aGUgcHJvdmlkZWQgQ3lnd2luIHZlcnNpb25zCisgKiBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHRvbyBzbG93LiBUaGVzZSBzdGF0IGZ1bmN0aW9ucyBhcmUgdGFpbG9yZWQgZm9yIEdpdCdzCisgKiB1c2FnZSwgYW5kIHRoZXJlZm9yZSB0aGV5IGFyZSBub3QgbWVhbnQgdG8gYmUgY29tcGxldGUgYW5kIGNvcnJlY3QgZW11bGF0aW9uCisgKiBvZiBsc3RhdC9zdGF0IGZ1bmN0aW9uYWxpdHkuCisgKi8KK3N0YXRpYyBpbnQgY3lnd2luX2xzdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCit7CisJcmV0dXJuIGRvX3N0YXQocGF0aCwgYnVmLCBsc3RhdCk7Cit9CisKK3N0YXRpYyBpbnQgY3lnd2luX3N0YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKK3sKKwlyZXR1cm4gZG9fc3RhdChwYXRoLCBidWYsIHN0YXQpOworfQorCisKKy8qCisgKiBBdCBzdGFydCB1cCwgd2UgYXJlIHRyeWluZyB0byBkZXRlcm1pbmUgd2hldGhlciBXaW4zMiBBUEkgb3IgY3lnd2luIHN0YXQKKyAqIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZC4gVGhlIGNob2ljZSBpcyBkZXRlcm1pbmVkIGJ5IGNvcmUuaWdub3JlY3lnd2luZnN0cmlja3MuCisgKiBSZWFkaW5nIHRoaXMgb3B0aW9uIGlzIG5vdCBhbHdheXMgcG9zc2libGUgaW1tZWRpYXRlbHkgYXMgZ2l0X2RpciBtYXkgYmUKKyAqIG5vdCBiZSBzZXQgeWV0LiBTbyB1bnRpbCBpdCBpcyBzZXQsIHVzZSBjeWd3aW4gbHN0YXQvc3RhdCBmdW5jdGlvbnMuCisgKiBIb3dldmVyLCBpZiBjb3JlLmZpbGVtb2RlIGlzIHNldCwgd2UgbXVzdCB1c2UgdGhlIEN5Z3dpbiBwb3NpeAorICogc3RhdC9sc3RhdCBhcyB0aGUgV2luZG93cyBzdGF0IGZ1Y3Rpb25zIGRvIG5vdCBkZXRlcm1pbmUgcG9zaXggZmlsZW1vZGUuCisgKgorICogTm90ZSB0aGF0IGdpdF9jeWd3aW5fY29uZmlnKCkgZG9lcyBOT1QgY2FsbCBnaXRfZGVmYXVsdF9jb25maWcoKSBhbmQgdGhpcworICogaXMgZGVsaWJlcmF0ZS4gIE1hbnkgY29tbWFuZHMgcmVhZCBmcm9tIGNvbmZpZyB0byBlc3RhYmxpc2ggaW5pdGlhbAorICogdmFsdWVzIGluIHZhcmlhYmxlcyBhbmQgbGF0ZXIgdHdlYWsgdGhlbSBmcm9tIGVsc2V3aGVyZSAoZS5nLiBjb21tYW5kIGxpbmUpLgorICogaW5pdF9zdGF0KCkgaXMgY2FsbGVkIGxhemlseSBvbiBkZW1hbmQsIHR5cGljYWxseSBtdWNoIGxhdGUgaW4gdGhlIHByb2dyYW0sCisgKiBhbmQgY2FsbGluZyBnaXRfZGVmYXVsdF9jb25maWcoKSBmcm9tIGhlcmUgd291bGQgYnJlYWsgc3VjaCB2YXJpYWJsZXMuCisgKi8KK3N0YXRpYyBpbnQgbmF0aXZlX3N0YXQgPSAxOworc3RhdGljIGludCBjb3JlX2ZpbGVtb2RlOworCitzdGF0aWMgaW50IGdpdF9jeWd3aW5fY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQoreworCWlmICghc3RyY21wKHZhciwgImNvcmUuaWdub3JlY3lnd2luZnN0cmlja3MiKSkKKwkJbmF0aXZlX3N0YXQgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJjb3JlLmZpbGVtb2RlIikpCisJCWNvcmVfZmlsZW1vZGUgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaW5pdF9zdGF0KHZvaWQpCit7CisJaWYgKGhhdmVfZ2l0X2RpcigpKSB7CisJCWdpdF9jb25maWcoZ2l0X2N5Z3dpbl9jb25maWcsIE5VTEwpOworCQlpZiAoIWNvcmVfZmlsZW1vZGUgJiYgbmF0aXZlX3N0YXQpIHsKKwkJCWN5Z3dpbl9zdGF0X2ZuID0gY3lnd2luX3N0YXQ7CisJCQljeWd3aW5fbHN0YXRfZm4gPSBjeWd3aW5fbHN0YXQ7CisJCX0gZWxzZSB7CisJCQljeWd3aW5fc3RhdF9mbiA9IHN0YXQ7CisJCQljeWd3aW5fbHN0YXRfZm4gPSBsc3RhdDsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgY3lnd2luX3N0YXRfc3R1Yihjb25zdCBjaGFyICpmaWxlX25hbWUsIHN0cnVjdCBzdGF0ICpidWYpCit7CisJcmV0dXJuIChpbml0X3N0YXQoKSA/IHN0YXQgOiAqY3lnd2luX3N0YXRfZm4pKGZpbGVfbmFtZSwgYnVmKTsKK30KKworc3RhdGljIGludCBjeWd3aW5fbHN0YXRfc3R1Yihjb25zdCBjaGFyICpmaWxlX25hbWUsIHN0cnVjdCBzdGF0ICpidWYpCit7CisJcmV0dXJuIChpbml0X3N0YXQoKSA/IGxzdGF0IDogKmN5Z3dpbl9sc3RhdF9mbikoZmlsZV9uYW1lLCBidWYpOworfQorCitzdGF0X2ZuX3QgY3lnd2luX3N0YXRfZm4gPSBjeWd3aW5fc3RhdF9zdHViOworc3RhdF9mbl90IGN5Z3dpbl9sc3RhdF9mbiA9IGN5Z3dpbl9sc3RhdF9zdHViOworCmRpZmYgLS1naXQgYS9jb21wYXQvY3lnd2luLmggYi9jb21wYXQvY3lnd2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMyMjlmNQotLS0gL2Rldi9udWxsCisrKyBiL2NvbXBhdC9jeWd3aW4uaApAQCAtMCwwICsxLDkgQEAKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCit0eXBlZGVmIGludCAoKnN0YXRfZm5fdCkoY29uc3QgY2hhciosIHN0cnVjdCBzdGF0Kik7CitleHRlcm4gc3RhdF9mbl90IGN5Z3dpbl9zdGF0X2ZuOworZXh0ZXJuIHN0YXRfZm5fdCBjeWd3aW5fbHN0YXRfZm47CisKKyNkZWZpbmUgc3RhdChwYXRoLCBidWYpICgqY3lnd2luX3N0YXRfZm4pKHBhdGgsIGJ1ZikKKyNkZWZpbmUgbHN0YXQocGF0aCwgYnVmKSAoKmN5Z3dpbl9sc3RhdF9mbikocGF0aCwgYnVmKQpkaWZmIC0tZ2l0IGEvY29tcGF0L21pbmd3LmMgYi9jb21wYXQvbWluZ3cuYwppbmRleCA0NTczM2Y5Li4zZGJlNmE3IDEwMDY0NAotLS0gYS9jb21wYXQvbWluZ3cuYworKysgYi9jb21wYXQvbWluZ3cuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlICIuLi9naXQtY29tcGF0LXV0aWwuaCIKKyNpbmNsdWRlICJ3aW4zMi5oIgogI2luY2x1ZGUgIi4uL3N0cmJ1Zi5oIgogCiB1bnNpZ25lZCBpbnQgX0NSVF9mbW9kZSA9IF9PX0JJTkFSWTsKQEAgLTMxLDEyICszMiw2IEBACiAJcmV0dXJuICh0aW1lX3Qpd2luVGltZTsKIH0KIAotc3RhdGljIGlubGluZSBzaXplX3Qgc2l6ZV90b19ibG9ja3Moc2l6ZV90IHMpCi17Ci0JcmV0dXJuIChzKzUxMSkvNTEyOwotfQotCi1leHRlcm4gaW50IF9nZXRkcml2ZSggdm9pZCApOwogLyogV2Uga2VlcCB0aGUgZG9fbHN0YXQgY29kZSBpbiBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGF2b2lkIHJlY3Vyc2lvbi4KICAqIFdoZW4gYSBwYXRoIGVuZHMgd2l0aCBhIHNsYXNoLCB0aGUgc3RhdCB3aWxsIGZhaWwgd2l0aCBFTk9FTlQuIEluCiAgKiB0aGlzIGNhc2UsIHdlIHN0cmlwIHRoZSB0cmFpbGluZyBzbGFzaGVzIGFuZCBzdGF0IGFnYWluLgpAQCAtNDUsNDYgKzQwLDE5IEBACiB7CiAJV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBmZGF0YTsKIAotCWlmIChHZXRGaWxlQXR0cmlidXRlc0V4QShmaWxlX25hbWUsIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmZkYXRhKSkgewotCQlpbnQgZk1vZGUgPSBTX0lSRUFEOwotCQlpZiAoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKLQkJCWZNb2RlIHw9IFNfSUZESVI7Ci0JCWVsc2UKLQkJCWZNb2RlIHw9IFNfSUZSRUc7Ci0JCWlmICghKGZkYXRhLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkpCi0JCQlmTW9kZSB8PSBTX0lXUklURTsKLQorCWlmICghKGVycm5vID0gZ2V0X2ZpbGVfYXR0cihmaWxlX25hbWUsICZmZGF0YSkpKSB7CiAJCWJ1Zi0+c3RfaW5vID0gMDsKIAkJYnVmLT5zdF9naWQgPSAwOwogCQlidWYtPnN0X3VpZCA9IDA7Ci0JCWJ1Zi0+c3RfbW9kZSA9IGZNb2RlOworCQlidWYtPnN0X25saW5rID0gMTsKKwkJYnVmLT5zdF9tb2RlID0gZmlsZV9hdHRyX3RvX3N0X21vZGUoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyk7CiAJCWJ1Zi0+c3Rfc2l6ZSA9IGZkYXRhLm5GaWxlU2l6ZUxvdzsgLyogQ2FuJ3QgdXNlIG5GaWxlU2l6ZUhpZ2gsIHNpbmNlIGl0J3Mgbm90IGEgc3RhdDY0ICovCi0JCWJ1Zi0+c3RfYmxvY2tzID0gc2l6ZV90b19ibG9ja3MoYnVmLT5zdF9zaXplKTsKLQkJYnVmLT5zdF9kZXYgPSBfZ2V0ZHJpdmUoKSAtIDE7CisJCWJ1Zi0+c3RfZGV2ID0gYnVmLT5zdF9yZGV2ID0gMDsgLyogbm90IHVzZWQgYnkgR2l0ICovCiAJCWJ1Zi0+c3RfYXRpbWUgPSBmaWxldGltZV90b190aW1lX3QoJihmZGF0YS5mdExhc3RBY2Nlc3NUaW1lKSk7CiAJCWJ1Zi0+c3RfbXRpbWUgPSBmaWxldGltZV90b190aW1lX3QoJihmZGF0YS5mdExhc3RXcml0ZVRpbWUpKTsKIAkJYnVmLT5zdF9jdGltZSA9IGZpbGV0aW1lX3RvX3RpbWVfdCgmKGZkYXRhLmZ0Q3JlYXRpb25UaW1lKSk7Ci0JCWVycm5vID0gMDsKIAkJcmV0dXJuIDA7CiAJfQotCi0Jc3dpdGNoIChHZXRMYXN0RXJyb3IoKSkgewotCWNhc2UgRVJST1JfQUNDRVNTX0RFTklFRDoKLQljYXNlIEVSUk9SX1NIQVJJTkdfVklPTEFUSU9OOgotCWNhc2UgRVJST1JfTE9DS19WSU9MQVRJT046Ci0JY2FzZSBFUlJPUl9TSEFSSU5HX0JVRkZFUl9FWENFRURFRDoKLQkJZXJybm8gPSBFQUNDRVM7Ci0JCWJyZWFrOwotCWNhc2UgRVJST1JfQlVGRkVSX09WRVJGTE9XOgotCQllcnJubyA9IEVOQU1FVE9PTE9ORzsKLQkJYnJlYWs7Ci0JY2FzZSBFUlJPUl9OT1RfRU5PVUdIX01FTU9SWToKLQkJZXJybm8gPSBFTk9NRU07Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWVycm5vID0gRU5PRU5UOwotCQlicmVhazsKLQl9CiAJcmV0dXJuIC0xOwogfQogCkBAIC05NCw3ICs2Miw3IEBACiAgKiBjb21wbGV0ZS4gTm90ZSB0aGF0IEdpdCBzdGF0KClzIGFyZSByZWRpcmVjdGVkIHRvIG1pbmd3X2xzdGF0KCkKICAqIHRvbywgc2luY2UgV2luZG93cyBkb2Vzbid0IHJlYWxseSBoYW5kbGUgc3ltbGlua3MgdGhhdCB3ZWxsLgogICovCi1pbnQgbWluZ3dfbHN0YXQoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBzdHJ1Y3QgbWluZ3dfc3RhdCAqYnVmKQoraW50IG1pbmd3X2xzdGF0KGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgc3RydWN0IHN0YXQgKmJ1ZikKIHsKIAlpbnQgbmFtZWxlbjsKIAlzdGF0aWMgY2hhciBhbHRfbmFtZVtQQVRIX01BWF07CkBAIC0xMjIsOCArOTAsNyBAQAogfQogCiAjdW5kZWYgZnN0YXQKLSN1bmRlZiBzdGF0Ci1pbnQgbWluZ3dfZnN0YXQoaW50IGZkLCBzdHJ1Y3QgbWluZ3dfc3RhdCAqYnVmKQoraW50IG1pbmd3X2ZzdGF0KGludCBmZCwgc3RydWN0IHN0YXQgKmJ1ZikKIHsKIAlIQU5ETEUgZmggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKIAlCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmZGF0YTsKQEAgLTEzMywzOSArMTAwLDE3IEBACiAJCXJldHVybiAtMTsKIAl9CiAJLyogZGlyZWN0IG5vbi1maWxlIGhhbmRsZXMgdG8gTVMncyBmc3RhdCgpICovCi0JaWYgKEdldEZpbGVUeXBlKGZoKSAhPSBGSUxFX1RZUEVfRElTSykgewotCQlzdHJ1Y3Qgc3RhdCBzdDsKLQkJaWYgKGZzdGF0KGZkLCAmc3QpKQotCQkJcmV0dXJuIC0xOwotCQlidWYtPnN0X2lubyA9IHN0LnN0X2lubzsKLQkJYnVmLT5zdF9naWQgPSBzdC5zdF9naWQ7Ci0JCWJ1Zi0+c3RfdWlkID0gc3Quc3RfdWlkOwotCQlidWYtPnN0X21vZGUgPSBzdC5zdF9tb2RlOwotCQlidWYtPnN0X3NpemUgPSBzdC5zdF9zaXplOwotCQlidWYtPnN0X2Jsb2NrcyA9IHNpemVfdG9fYmxvY2tzKGJ1Zi0+c3Rfc2l6ZSk7Ci0JCWJ1Zi0+c3RfZGV2ID0gc3Quc3RfZGV2OwotCQlidWYtPnN0X2F0aW1lID0gc3Quc3RfYXRpbWU7Ci0JCWJ1Zi0+c3RfbXRpbWUgPSBzdC5zdF9tdGltZTsKLQkJYnVmLT5zdF9jdGltZSA9IHN0LnN0X2N0aW1lOwotCQlyZXR1cm4gMDsKLQl9CisJaWYgKEdldEZpbGVUeXBlKGZoKSAhPSBGSUxFX1RZUEVfRElTSykKKwkJcmV0dXJuIGZzdGF0KGZkLCBidWYpOwogCiAJaWYgKEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGZoLCAmZmRhdGEpKSB7Ci0JCWludCBmTW9kZSA9IFNfSVJFQUQ7Ci0JCWlmIChmZGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQotCQkJZk1vZGUgfD0gU19JRkRJUjsKLQkJZWxzZQotCQkJZk1vZGUgfD0gU19JRlJFRzsKLQkJaWYgKCEoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSkKLQkJCWZNb2RlIHw9IFNfSVdSSVRFOwotCiAJCWJ1Zi0+c3RfaW5vID0gMDsKIAkJYnVmLT5zdF9naWQgPSAwOwogCQlidWYtPnN0X3VpZCA9IDA7Ci0JCWJ1Zi0+c3RfbW9kZSA9IGZNb2RlOworCQlidWYtPnN0X25saW5rID0gMTsKKwkJYnVmLT5zdF9tb2RlID0gZmlsZV9hdHRyX3RvX3N0X21vZGUoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyk7CiAJCWJ1Zi0+c3Rfc2l6ZSA9IGZkYXRhLm5GaWxlU2l6ZUxvdzsgLyogQ2FuJ3QgdXNlIG5GaWxlU2l6ZUhpZ2gsIHNpbmNlIGl0J3Mgbm90IGEgc3RhdDY0ICovCi0JCWJ1Zi0+c3RfYmxvY2tzID0gc2l6ZV90b19ibG9ja3MoYnVmLT5zdF9zaXplKTsKLQkJYnVmLT5zdF9kZXYgPSBfZ2V0ZHJpdmUoKSAtIDE7CisJCWJ1Zi0+c3RfZGV2ID0gYnVmLT5zdF9yZGV2ID0gMDsgLyogbm90IHVzZWQgYnkgR2l0ICovCiAJCWJ1Zi0+c3RfYXRpbWUgPSBmaWxldGltZV90b190aW1lX3QoJihmZGF0YS5mdExhc3RBY2Nlc3NUaW1lKSk7CiAJCWJ1Zi0+c3RfbXRpbWUgPSBmaWxldGltZV90b190aW1lX3QoJihmZGF0YS5mdExhc3RXcml0ZVRpbWUpKTsKIAkJYnVmLT5zdF9jdGltZSA9IGZpbGV0aW1lX3RvX3RpbWVfdCgmKGZkYXRhLmZ0Q3JlYXRpb25UaW1lKSk7CkBAIC0yODMsOCArMjI4LDEzIEBACiB7CiAJaW50IGksIHBlbmRpbmc7CiAKLQlpZiAodGltZW91dCAhPSAtMSkKKwlpZiAodGltZW91dCA+PSAwKSB7CisJCWlmIChuZmRzID09IDApIHsKKwkJCVNsZWVwKHRpbWVvdXQpOworCQkJcmV0dXJuIDA7CisJCX0KIAkJcmV0dXJuIGVycm5vID0gRUlOVkFMLCBlcnJvcigicG9sbCB0aW1lb3V0IG5vdCBzdXBwb3J0ZWQiKTsKKwl9CiAKIAkvKiBXaGVuIHRoZXJlIGlzIG9ubHkgb25lIGZkIHRvIHdhaXQgZm9yLCB0aGVuIHdlIHByZXRlbmQgdGhhdAogCSAqIGlucHV0IGlzIGF2YWlsYWJsZSBhbmQgbGV0IHRoZSBhY3R1YWwgd2FpdCBoYXBwZW4gd2hlbiB0aGUKQEAgLTU4NiwxMiArNTM2LDE2IEBACiAJCSAqIHdvdWxkIG5vcm1hbGx5IGNyZWF0ZSBhIGNvbnNvbGUgd2luZG93LiBCdXQKIAkJICogc2luY2Ugd2UnbGwgYmUgcmVkaXJlY3Rpbmcgc3RkIHN0cmVhbXMsIHdlIGRvCiAJCSAqIG5vdCBuZWVkIHRoZSBjb25zb2xlLgorCQkgKiBJdCBpcyBuZWNlc3NhcnkgdG8gdXNlIERFVEFDSEVEX1BST0NFU1MKKwkJICogaW5zdGVhZCBvZiBDUkVBVEVfTk9fV0lORE9XIHRvIG1ha2Ugc3NoCisJCSAqIHJlY29nbml6ZSB0aGF0IGl0IGhhcyBubyBjb25zb2xlLgogCQkgKi8KLQkJZmxhZ3MgPSBDUkVBVEVfTk9fV0lORE9XOworCQlmbGFncyA9IERFVEFDSEVEX1BST0NFU1M7CiAJfSBlbHNlIHsKIAkJLyogVGhlcmUgaXMgYWxyZWFkeSBhIGNvbnNvbGUuIElmIHdlIHNwZWNpZmllZAotCQkgKiBDUkVBVEVfTk9fV0lORE9XIGhlcmUsIHRvbywgV2luZG93cyB3b3VsZAorCQkgKiBERVRBQ0hFRF9QUk9DRVNTIGhlcmUsIHRvbywgV2luZG93cyB3b3VsZAogCQkgKiBkaXNhc3NvY2lhdGUgdGhlIGNoaWxkIGZyb20gdGhlIGNvbnNvbGUuCisJCSAqIFRoZSBzYW1lIGlzIHRydWUgZm9yIENSRUFURV9OT19XSU5ET1cuCiAJCSAqIEdvIGZpZ3VyZSEKIAkJICovCiAJCWZsYWdzID0gMDsKZGlmZiAtLWdpdCBhL2NvbXBhdC9taW5ndy5oIGIvY29tcGF0L21pbmd3LmgKaW5kZXggYTUyZTY1Ny4uNGYyNzVjYiAxMDA2NDQKLS0tIGEvY29tcGF0L21pbmd3LmgKKysrIGIvY29tcGF0L21pbmd3LmgKQEAgLTE2MiwyMiArMTYyLDEyIEBACiAKIC8qIFVzZSBtaW5nd19sc3RhdCgpIGluc3RlYWQgb2YgbHN0YXQoKS9zdGF0KCkgYW5kCiAgKiBtaW5nd19mc3RhdCgpIGluc3RlYWQgb2YgZnN0YXQoKSBvbiBXaW5kb3dzLgotICogc3RydWN0IHN0YXQgaXMgcmVkZWZpbmVkIGJlY2F1c2UgaXQgbGFja3MgdGhlIHN0X2Jsb2NrcyBtZW1iZXIuCiAgKi8KLXN0cnVjdCBtaW5nd19zdGF0IHsKLQl1bnNpZ25lZCBzdF9tb2RlOwotCXRpbWVfdCBzdF9tdGltZSwgc3RfYXRpbWUsIHN0X2N0aW1lOwotCXVuc2lnbmVkIHN0X2Rldiwgc3RfaW5vLCBzdF91aWQsIHN0X2dpZDsKLQlzaXplX3Qgc3Rfc2l6ZTsKLQlzaXplX3Qgc3RfYmxvY2tzOwotfTsKLWludCBtaW5nd19sc3RhdChjb25zdCBjaGFyICpmaWxlX25hbWUsIHN0cnVjdCBtaW5nd19zdGF0ICpidWYpOwotaW50IG1pbmd3X2ZzdGF0KGludCBmZCwgc3RydWN0IG1pbmd3X3N0YXQgKmJ1Zik7CitpbnQgbWluZ3dfbHN0YXQoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBzdHJ1Y3Qgc3RhdCAqYnVmKTsKK2ludCBtaW5nd19mc3RhdChpbnQgZmQsIHN0cnVjdCBzdGF0ICpidWYpOwogI2RlZmluZSBmc3RhdCBtaW5nd19mc3RhdAogI2RlZmluZSBsc3RhdCBtaW5nd19sc3RhdAotI2RlZmluZSBzdGF0IG1pbmd3X3N0YXQKLXN0YXRpYyBpbmxpbmUgaW50IG1pbmd3X3N0YXQoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBzdHJ1Y3QgbWluZ3dfc3RhdCAqYnVmKQoteyByZXR1cm4gbWluZ3dfbHN0YXQoZmlsZV9uYW1lLCBidWYpOyB9CisjZGVmaW5lIHN0YXQoeCx5KSBtaW5nd19sc3RhdCh4LHkpCiAKIGludCBtaW5nd191dGltZShjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IHN0cnVjdCB1dGltYnVmICp0aW1lcyk7CiAjZGVmaW5lIHV0aW1lIG1pbmd3X3V0aW1lCmRpZmYgLS1naXQgYS9jb21wYXQvd2luMzIuaCBiL2NvbXBhdC93aW4zMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNjM4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb21wYXQvd2luMzIuaApAQCAtMCwwICsxLDM0IEBACisvKiBjb21tb24gV2luMzIgZnVuY3Rpb25zIGZvciBNaW5HVyBhbmQgQ3lnd2luICovCisjaW5jbHVkZSA8d2luZG93cy5oPgorCitzdGF0aWMgaW5saW5lIGludCBmaWxlX2F0dHJfdG9fc3RfbW9kZSAoRFdPUkQgYXR0cikKK3sKKwlpbnQgZk1vZGUgPSBTX0lSRUFEOworCWlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorCQlmTW9kZSB8PSBTX0lGRElSOworCWVsc2UKKwkJZk1vZGUgfD0gU19JRlJFRzsKKwlpZiAoIShhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpKQorCQlmTW9kZSB8PSBTX0lXUklURTsKKwlyZXR1cm4gZk1vZGU7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGdldF9maWxlX2F0dHIoY29uc3QgY2hhciAqZm5hbWUsIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgKmZkYXRhKQoreworCWlmIChHZXRGaWxlQXR0cmlidXRlc0V4QShmbmFtZSwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCBmZGF0YSkpCisJCXJldHVybiAwOworCisJc3dpdGNoIChHZXRMYXN0RXJyb3IoKSkgeworCWNhc2UgRVJST1JfQUNDRVNTX0RFTklFRDoKKwljYXNlIEVSUk9SX1NIQVJJTkdfVklPTEFUSU9OOgorCWNhc2UgRVJST1JfTE9DS19WSU9MQVRJT046CisJY2FzZSBFUlJPUl9TSEFSSU5HX0JVRkZFUl9FWENFRURFRDoKKwkJcmV0dXJuIEVBQ0NFUzsKKwljYXNlIEVSUk9SX0JVRkZFUl9PVkVSRkxPVzoKKwkJcmV0dXJuIEVOQU1FVE9PTE9ORzsKKwljYXNlIEVSUk9SX05PVF9FTk9VR0hfTUVNT1JZOgorCQlyZXR1cm4gRU5PTUVNOworCWRlZmF1bHQ6CisJCXJldHVybiBFTk9FTlQ7CisJfQorfQpkaWZmIC0tZ2l0IGEvY29uZmlnLmMgYi9jb25maWcuYwppbmRleCA4MjgwN2M4Li43OTA0MDVhIDEwMDY0NAotLS0gYS9jb25maWcuYworKysgYi9jb25maWcuYwpAQCAtMjA1LDggKzIwNSwyNyBAQAogCWludCBiYXNlbGVuID0gMDsKIAlzdGF0aWMgY2hhciB2YXJbTUFYTkFNRV07CiAKKwkvKiBVK0ZFRkYgQnl0ZSBPcmRlciBNYXJrIGluIFVURjggKi8KKwlzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqdXRmOF9ib20gPSAodW5zaWduZWQgY2hhciAqKSAiXHhlZlx4YmJceGJmIjsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpib21wdHIgPSB1dGY4X2JvbTsKKwogCWZvciAoOzspIHsKIAkJaW50IGMgPSBnZXRfbmV4dF9jaGFyKCk7CisJCWlmIChib21wdHIgJiYgKmJvbXB0cikgeworCQkJLyogV2UgYXJlIGF0IHRoZSBmaWxlIGJlZ2lubmluZzsgc2tpcCBVVEY4LWVuY29kZWQgQk9NCisJCQkgKiBpZiBwcmVzZW50LiBTYW5lIGVkaXRvcnMgd29uJ3QgcHV0IHRoaXMgaW4gb24gdGhlaXIKKwkJCSAqIG93biwgYnV0IGUuZy4gV2luZG93cyBOb3RlcGFkIHdpbGwgZG8gaXQgaGFwcGlseS4gKi8KKwkJCWlmICgodW5zaWduZWQgY2hhcikgYyA9PSAqYm9tcHRyKSB7CisJCQkJYm9tcHRyKys7CisJCQkJY29udGludWU7CisJCQl9IGVsc2UgeworCQkJCS8qIERvIG5vdCB0b2xlcmF0ZSBwYXJ0aWFsIEJPTS4gKi8KKwkJCQlpZiAoYm9tcHRyICE9IHV0ZjhfYm9tKQorCQkJCQlicmVhazsKKwkJCQkvKiBObyBCT00gYXQgZmlsZSBiZWdpbm5pbmcuIENvb2wuICovCisJCQkJYm9tcHRyID0gTlVMTDsKKwkJCX0KKwkJfQogCQlpZiAoYyA9PSAnXG4nKSB7CiAJCQlpZiAoY29uZmlnX2ZpbGVfZW9mKQogCQkJCXJldHVybiAwOwpAQCAtMjU1LDcgKzI3NCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBnaXRfcGFyc2VfbG9uZyhjb25zdCBjaGFyICp2YWx1ZSwgbG9uZyAqcmV0KQorc3RhdGljIGludCBnaXRfcGFyc2VfbG9uZyhjb25zdCBjaGFyICp2YWx1ZSwgbG9uZyAqcmV0KQogewogCWlmICh2YWx1ZSAmJiAqdmFsdWUpIHsKIAkJY2hhciAqZW5kOwpAQCAtMjkxLDcgKzMxMCw3IEBACiAKIGludCBnaXRfY29uZmlnX2ludChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLQlsb25nIHJldDsKKwlsb25nIHJldCA9IDA7CiAJaWYgKCFnaXRfcGFyc2VfbG9uZyh2YWx1ZSwgJnJldCkpCiAJCWRpZV9iYWRfY29uZmlnKG5hbWUpOwogCXJldHVybiByZXQ7CkBAIC00NzEsNiArNDkwLDExIEBACiAJCXJldHVybiAwOwogCX0KIAorCWlmICghc3RyY21wKHZhciwgImNvcmUucHJlbG9hZGluZGV4IikpIHsKKwkJY29yZV9wcmVsb2FkX2luZGV4ID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CisKIAkvKiBBZGQgb3RoZXIgY29uZmlnIHZhcmlhYmxlcyBoZXJlIGFuZCB0byBEb2N1bWVudGF0aW9uL2NvbmZpZy50eHQuICovCiAJcmV0dXJuIDA7CiB9CkBAIC02MTIsMTAgKzYzNiw3IEBACiAJY2hhciAqcmVwb19jb25maWcgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmhvbWUgPSBOVUxMOwogCi0JLyogJEdJVF9DT05GSUcgbWFrZXMgZ2l0IHJlYWQgX29ubHlfIHRoZSBnaXZlbiBjb25maWcgZmlsZSwKLQkgKiAkR0lUX0NPTkZJR19MT0NBTCB3aWxsIG1ha2UgaXQgcHJvY2VzcyBpdCBpbiBhZGRpdGlvbiB0byB0aGUKLQkgKiBnbG9iYWwgY29uZmlnIGZpbGUsIHRoZSBzYW1lIHdheSBpdCB3b3VsZCB0aGUgcGVyLXJlcG9zaXRvcnkKLQkgKiBjb25maWcgZmlsZSBvdGhlcndpc2UuICovCisJLyogU2V0dGluZyAkR0lUX0NPTkZJRyBtYWtlcyBnaXQgcmVhZCBfb25seV8gdGhlIGdpdmVuIGNvbmZpZyBmaWxlLiAqLwogCWlmIChjb25maWdfZXhjbHVzaXZlX2ZpbGVuYW1lKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19mcm9tX2ZpbGUoZm4sIGNvbmZpZ19leGNsdXNpdmVfZmlsZW5hbWUsIGRhdGEpOwogCWlmIChnaXRfY29uZmlnX3N5c3RlbSgpICYmICFhY2Nlc3MoZ2l0X2V0Y19naXRjb25maWcoKSwgUl9PSykpCkBAIC03MzQsOSArNzU1LDggQEAKIHsKIAljb25zdCBjaGFyICpkb3Q7CiAJaW50IGksIHN1Y2Nlc3M7Ci0Jc3RydWN0IHN0cmJ1ZiBzYjsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CiAKLQlzdHJidWZfaW5pdCgmc2IsIDApOwogCWRvdCA9IG1lbWNocihrZXksICcuJywgc3RvcmUuYmFzZWxlbik7CiAJaWYgKGRvdCkgewogCQlzdHJidWZfYWRkZigmc2IsICJbJS4qcyBcIiIsIChpbnQpKGRvdCAtIGtleSksIGtleSk7CkBAIC03NjEsNyArNzgxLDcgQEAKIAlpbnQgaSwgc3VjY2VzczsKIAlpbnQgbGVuZ3RoID0gc3RybGVuKGtleSArIHN0b3JlLmJhc2VsZW4gKyAxKTsKIAljb25zdCBjaGFyICpxdW90ZSA9ICIiOwotCXN0cnVjdCBzdHJidWYgc2I7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCiAJLyoKIAkgKiBDaGVjayB0byBzZWUgaWYgdGhlIHZhbHVlIG5lZWRzIHRvIGJlIHN1cnJvdW5kZWQgd2l0aCBhIGRxIHBhaXIuCkBAIC03NzgsNyArNzk4LDYgQEAKIAlpZiAoaSAmJiB2YWx1ZVtpIC0gMV0gPT0gJyAnKQogCQlxdW90ZSA9ICJcIiI7CiAKLQlzdHJidWZfaW5pdCgmc2IsIDApOwogCXN0cmJ1Zl9hZGRmKCZzYiwgIlx0JS4qcyA9ICVzIiwKIAkJICAgIGxlbmd0aCwga2V5ICsgc3RvcmUuYmFzZWxlbiArIDEsIHF1b3RlKTsKIApkaWZmIC0tZ2l0IGEvY29uZmlnLm1hay5pbiBiL2NvbmZpZy5tYWsuaW4KaW5kZXggYjc3NjE0OS4uMTRkZmIyMSAxMDA2NDQKLS0tIGEvY29uZmlnLm1hay5pbgorKysgYi9jb25maWcubWFrLmluCkBAIC0zLDYgKzMsOCBAQAogCiBDQyA9IEBDQ0AKIENGTEFHUyA9IEBDRkxBR1NACitMREZMQUdTID0gQExERkxBR1NACitDQ19MRF9EWU5QQVRIID0gQENDX0xEX0RZTlBBVEhACiBBUiA9IEBBUkAKIFRBUiA9IEBUQVJACiAjSU5TVEFMTCA9IEBJTlNUQUxMQAkJIyBuZWVkcyBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gc291cmNlcwpAQCAtMzksNiArNDEsNyBAQAogTk9fU1RSQ0FTRVNUUj1ATk9fU1RSQ0FTRVNUUkAKIE5PX01FTU1FTT1ATk9fTUVNTUVNQAogTk9fU1RSTENQWT1ATk9fU1RSTENQWUAKK05PX1VJTlRNQVhfVD1ATk9fVUlOVE1BWF9UQAogTk9fU1RSVE9VTUFYPUBOT19TVFJUT1VNQVhACiBOT19TRVRFTlY9QE5PX1NFVEVOVkAKIE5PX1VOU0VURU5WPUBOT19VTlNFVEVOVkAKQEAgLTQ4LDMgKzUxLDUgQEAKIE5PX0RFRkxBVEVfQk9VTkQ9QE5PX0RFRkxBVEVfQk9VTkRACiBGUkVBRF9SRUFEU19ESVJFQ1RPUklFUz1ARlJFQURfUkVBRFNfRElSRUNUT1JJRVNACiBTTlBSSU5URl9SRVRVUk5TX0JPR1VTPUBTTlBSSU5URl9SRVRVUk5TX0JPR1VTQAorTk9fUFRIUkVBRFM9QE5PX1BUSFJFQURTQAorUFRIUkVBRF9MSUJTPUBQVEhSRUFEX0xJQlNACmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggN2MyODU2ZS4uMGE1ZmM4YyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNjUsNyArNjUsMTcgQEAKIGZpIFwKIF0pIyBHSVRfUEFSU0VfV0lUSAogCi0KK2RubAorZG5sIEdJVF9DSEVDS19GVU5DKEZVTkNUSU9OLCBJRlRSVUUsIElGRkFMU0UpCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTaW1pbGFyIHRvIEFDX0NIRUNLX0ZVTkMsIGJ1dCBvbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGdlbmVyYXRlCitkbmwgd2FybmluZ3MgZm9yIG1pc3NpbmcgcHJvdG90eXBlcyAoZS5nLiBGcmVlQlNEIHdoZW4gY29tcGlsaW5nIHdpdGhvdXQKK2RubCAtV2FsbCksIGl0IGRvZXMgbm90IHdvcmsuICBCeSBsb29raW5nIGZvciBmdW5jdGlvbiBkZWZpbml0aW9uIGluCitkbmwgbGlicmFyaWVzLCB0aGlzIHByb2JsZW0gY2FuIGJlIHdvcmtlZCBhcm91bmQuCitBQ19ERUZVTihbR0lUX0NIRUNLX0ZVTkNdLFtBQ19DSEVDS19GVU5DKFskMV0sWworICBBQ19TRUFSQ0hfTElCUyhbJDFdLCwKKyAgWyQyXSxbJDNdKQorXSxbJDNdKV0pCiAjIyBTaXRlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBwcm9ncmFtcyAoYmVmb3JlIHRlc3RzKQogIyMgLS13aXRoLVBBQ0tBR0VbPUFSR10gYW5kIC0td2l0aG91dC1QQUNLQUdFCiAjCkBAIC0xMDMsNiArMTEzLDM4IEBACiBBQ19NU0dfTk9USUNFKFtDSEVDS1MgZm9yIHByb2dyYW1zXSkKICMKIEFDX1BST0dfQ0MoW2NjIGdjY10pCisjIHdoaWNoIHN3aXRjaCB0byBwYXNzIHJ1bnRpbWUgcGF0aCB0byBkeW5hbWljIGxpYnJhcmllcyB0byB0aGUgbGlua2VyCitBQ19DQUNIRV9DSEVDSyhbaWYgbGlua2VyIHN1cHBvcnRzIC1SXSwgbGRfZGFzaHIsIFsKKyAgIFNBVkVfTERGTEFHUz0iJHtMREZMQUdTfSIKKyAgIExERkxBR1M9IiR7U0FWRV9MREZMQUdTfSAtUiAvIgorICAgQUNfTElOS19JRkVMU0UoQUNfTEFOR19QUk9HUkFNKFtdLCBbXSksIFtsZF9kYXNocj15ZXNdLCBbbGRfZGFzaHI9bm9dKQorICAgTERGTEFHUz0iJHtTQVZFX0xERkxBR1N9IgorXSkKK2lmIHRlc3QgIiRsZF9kYXNociIgPSAieWVzIjsgdGhlbgorICAgQUNfU1VCU1QoQ0NfTERfRFlOUEFUSCwgWy1SXSkKK2Vsc2UKKyAgIEFDX0NBQ0hFX0NIRUNLKFtpZiBsaW5rZXIgc3VwcG9ydHMgLVdsLC1ycGF0aCxdLCBsZF93bF9ycGF0aCwgWworICAgICAgU0FWRV9MREZMQUdTPSIke0xERkxBR1N9IgorICAgICAgTERGTEFHUz0iJHtTQVZFX0xERkxBR1N9IC1XbCwtcnBhdGgsLyIKKyAgICAgIEFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTShbXSwgW10pLCBbbGRfd2xfcnBhdGg9eWVzXSwgW2xkX3dsX3JwYXRoPW5vXSkKKyAgICAgIExERkxBR1M9IiR7U0FWRV9MREZMQUdTfSIKKyAgIF0pCisgICBpZiB0ZXN0ICIkbGRfd2xfcnBhdGgiID0gInllcyI7IHRoZW4KKyAgICAgIEFDX1NVQlNUKENDX0xEX0RZTlBBVEgsIFstV2wsLXJwYXRoLF0pCisgICBlbHNlCisgICAgICBBQ19DQUNIRV9DSEVDSyhbaWYgbGlua2VyIHN1cHBvcnRzIC1ycGF0aF0sIGxkX3JwYXRoLCBbCisgICAgICAgICBTQVZFX0xERkxBR1M9IiR7TERGTEFHU30iCisgICAgICAgICBMREZMQUdTPSIke1NBVkVfTERGTEFHU30gLXJwYXRoIC8iCisgICAgICAgICBBQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0oW10sIFtdKSwgW2xkX3JwYXRoPXllc10sIFtsZF9ycGF0aD1ub10pCisgICAgICAgICBMREZMQUdTPSIke1NBVkVfTERGTEFHU30iCisgICAgICBdKQorICAgICAgaWYgdGVzdCAiJGxkX3JwYXRoIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICBBQ19TVUJTVChDQ19MRF9EWU5QQVRILCBbLXJwYXRoXSkKKyAgICAgIGVsc2UKKyAgICAgICAgIEFDX01TR19XQVJOKFtsaW5rZXIgZG9lcyBub3Qgc3VwcG9ydCBydW50aW1lIHBhdGggdG8gZHluYW1pYyBsaWJyYXJpZXNdKQorICAgICAgZmkKKyAgIGZpCitmaQogI0FDX1BST0dfSU5TVEFMTAkJIyBuZWVkcyBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gc291cmNlcwogQUNfQ0hFQ0tfVE9PTFMoQVIsIFtnYXIgYXJdLCA6KQogQUNfQ0hFQ0tfUFJPR1MoVEFSLCBbZ3RhciB0YXJdKQpAQCAtMjkzLDcgKzMzNSw3IEBACiAjCiAjIERlZmluZSBOT19JUFY2IGlmIHlvdSBsYWNrIElQdjYgc3VwcG9ydCBhbmQgZ2V0YWRkcmluZm8oKS4KIEFDX0NIRUNLX1RZUEUoW3N0cnVjdCBhZGRyaW5mb10sWwotIEFDX0NIRUNLX0ZVTkMoW2dldGFkZHJpbmZvXSwKKyBHSVRfQ0hFQ0tfRlVOQyhbZ2V0YWRkcmluZm9dLAogICBbTk9fSVBWNj1dLAogICBbTk9fSVBWNj1ZZXNQbGVhc2VdKQogXSxbTk9fSVBWNj1ZZXNQbGVhc2VdLFsKQEAgLTM4Nyw0MyArNDI5LDUxIEBACiBBQ19NU0dfTk9USUNFKFtDSEVDS1MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zXSkKICMKICMgRGVmaW5lIE5PX1NUUkNBU0VTVFIgaWYgeW91IGRvbid0IGhhdmUgc3RyY2FzZXN0ci4KLUFDX0NIRUNLX0ZVTkMoc3RyY2FzZXN0ciwKK0dJVF9DSEVDS19GVU5DKHN0cmNhc2VzdHIsCiBbTk9fU1RSQ0FTRVNUUj1dLAogW05PX1NUUkNBU0VTVFI9WWVzUGxlYXNlXSkKIEFDX1NVQlNUKE5PX1NUUkNBU0VTVFIpCiAjCiAjIERlZmluZSBOT19NRU1NRU0gaWYgeW91IGRvbid0IGhhdmUgbWVtbWVtLgotQUNfQ0hFQ0tfRlVOQyhtZW1tZW0sCitHSVRfQ0hFQ0tfRlVOQyhtZW1tZW0sCiBbTk9fTUVNTUVNPV0sCiBbTk9fTUVNTUVNPVllc1BsZWFzZV0pCiBBQ19TVUJTVChOT19NRU1NRU0pCiAjCiAjIERlZmluZSBOT19TVFJMQ1BZIGlmIHlvdSBkb24ndCBoYXZlIHN0cmxjcHkuCi1BQ19DSEVDS19GVU5DKHN0cmxjcHksCitHSVRfQ0hFQ0tfRlVOQyhzdHJsY3B5LAogW05PX1NUUkxDUFk9XSwKIFtOT19TVFJMQ1BZPVllc1BsZWFzZV0pCiBBQ19TVUJTVChOT19TVFJMQ1BZKQogIworIyBEZWZpbmUgTk9fVUlOVE1BWF9UIGlmIHlvdXIgcGxhdGZvcm0gZG9lcyBub3QgaGF2ZSB1aW50bWF4X3QKK0FDX0NIRUNLX1RZUEUodWludG1heF90LAorW05PX1VJTlRNQVhfVD1dLAorW05PX1VJTlRNQVhfVD1ZZXNQbGVhc2VdLFsKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorXSkKK0FDX1NVQlNUKE5PX1VJTlRNQVhfVCkKKyMKICMgRGVmaW5lIE5PX1NUUlRPVU1BWCBpZiB5b3UgZG9uJ3QgaGF2ZSBzdHJ0b3VtYXggaW4gdGhlIEMgbGlicmFyeS4KLUFDX0NIRUNLX0ZVTkMoc3RydG91bWF4LAorR0lUX0NIRUNLX0ZVTkMoc3RydG91bWF4LAogW05PX1NUUlRPVU1BWD1dLAogW05PX1NUUlRPVU1BWD1ZZXNQbGVhc2VdKQogQUNfU1VCU1QoTk9fU1RSVE9VTUFYKQogIwogIyBEZWZpbmUgTk9fU0VURU5WIGlmIHlvdSBkb24ndCBoYXZlIHNldGVudiBpbiB0aGUgQyBsaWJyYXJ5LgotQUNfQ0hFQ0tfRlVOQyhzZXRlbnYsCitHSVRfQ0hFQ0tfRlVOQyhzZXRlbnYsCiBbTk9fU0VURU5WPV0sCiBbTk9fU0VURU5WPVllc1BsZWFzZV0pCiBBQ19TVUJTVChOT19TRVRFTlYpCiAjCiAjIERlZmluZSBOT19VTlNFVEVOViBpZiB5b3UgZG9uJ3QgaGF2ZSB1bnNldGVudiBpbiB0aGUgQyBsaWJyYXJ5LgotQUNfQ0hFQ0tfRlVOQyh1bnNldGVudiwKK0dJVF9DSEVDS19GVU5DKHVuc2V0ZW52LAogW05PX1VOU0VURU5WPV0sCiBbTk9fVU5TRVRFTlY9WWVzUGxlYXNlXSkKIEFDX1NVQlNUKE5PX1VOU0VURU5WKQogIwogIyBEZWZpbmUgTk9fTUtEVEVNUCBpZiB5b3UgZG9uJ3QgaGF2ZSBta2R0ZW1wIGluIHRoZSBDIGxpYnJhcnkuCi1BQ19DSEVDS19GVU5DKG1rZHRlbXAsCitHSVRfQ0hFQ0tfRlVOQyhta2R0ZW1wLAogW05PX01LRFRFTVA9XSwKIFtOT19NS0RURU1QPVllc1BsZWFzZV0pCiBBQ19TVUJTVChOT19NS0RURU1QKQpAQCAtNDM5LDYgKzQ4OSwyNyBAQAogIwogIyBEZWZpbmUgTk9fU1lNTElOS19IRUFEIGlmIHlvdSBuZXZlciB3YW50IC5naXQvSEVBRCB0byBiZSBhIHN5bWJvbGljIGxpbmsuCiAjIEVuYWJsZSBpdCBvbiBXaW5kb3dzLiAgQnkgZGVmYXVsdCwgc3ltcmVmcyBhcmUgc3RpbGwgdXNlZC4KKyMKKyMgRGVmaW5lIE5PX1BUSFJFQURTIGlmIHdlIGRvIG5vdCBoYXZlIHB0aHJlYWRzCisjCisjIERlZmluZSBQVEhSRUFEX0xJQlMgdG8gdGhlIGxpbmtlciBmbGFnIHVzZWQgZm9yIFB0aHJlYWQgc3VwcG9ydC4KK0FDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfUFJPR1JBTSgKKyAgW1sjaW5jbHVkZSA8cHRocmVhZC5oPl1dLAorICBbW3B0aHJlYWRfbXV0ZXhfdCB0ZXN0X211dGV4O11dCispXSkKKyR7Q0N9IC1wdGhyZWFkIGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QubyA+IC9kZXYvbnVsbCAyPiYxCitpZiB0ZXN0ICQ/IC1lcSAwO3RoZW4KKyBQVEhSRUFEX0xJQlM9Ii1wdGhyZWFkIgorZWxzZQorICR7Q0N9IC1scHRocmVhZCBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Lm8gPiAvZGV2L251bGwgMj4mMQorIGlmIHRlc3QgJD8gLWVxIDA7dGhlbgorICBQVEhSRUFEX0xJQlM9Ii1scHRocmVhZCIKKyBlbHNlCisgIE5PX1BUSFJFQURTPVVuZm9ydHVuYXRlbHlZZXMKKyBmaQorZmkKK0FDX1NVQlNUKFBUSFJFQURfTElCUykKK0FDX1NVQlNUKE5PX1BUSFJFQURTKQogCiAjIyBTaXRlIGNvbmZpZ3VyYXRpb24gKG92ZXJyaWRlIGF1dG9kZXRlY3Rpb24pCiAjIyAtLXdpdGgtUEFDS0FHRVs9QVJHXSBhbmQgLS13aXRob3V0LVBBQ0tBR0UKZGlmZiAtLWdpdCBhL2Nvbm5lY3QuYyBiL2Nvbm5lY3QuYwppbmRleCBkZDk2ZjhlLi4yZjU1YWQyIDEwMDY0NAotLS0gYS9jb25uZWN0LmMKKysrIGIvY29ubmVjdC5jCkBAIC00MSwxMiArNDEsMjAgQEAKIAlyZXR1cm4gY2hlY2tfcmVmKHJlZi0+bmFtZSwgc3RybGVuKHJlZi0+bmFtZSksIGZsYWdzKTsKIH0KIAorc3RhdGljIHZvaWQgYWRkX2V4dHJhX2hhdmUoc3RydWN0IGV4dHJhX2hhdmVfb2JqZWN0cyAqZXh0cmEsIHVuc2lnbmVkIGNoYXIgKnNoYTEpCit7CisJQUxMT0NfR1JPVyhleHRyYS0+YXJyYXksIGV4dHJhLT5uciArIDEsIGV4dHJhLT5hbGxvYyk7CisJaGFzaGNweSgmKGV4dHJhLT5hcnJheVtleHRyYS0+bnJdWzBdKSwgc2hhMSk7CisJZXh0cmEtPm5yKys7Cit9CisKIC8qCiAgKiBSZWFkIGFsbCB0aGUgcmVmcyBmcm9tIHRoZSBvdGhlciBlbmQKICAqLwogc3RydWN0IHJlZiAqKmdldF9yZW1vdGVfaGVhZHMoaW50IGluLCBzdHJ1Y3QgcmVmICoqbGlzdCwKIAkJCSAgICAgIGludCBucl9tYXRjaCwgY2hhciAqKm1hdGNoLAotCQkJICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQorCQkJICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAorCQkJICAgICAgc3RydWN0IGV4dHJhX2hhdmVfb2JqZWN0cyAqZXh0cmFfaGF2ZSkKIHsKIAkqbGlzdCA9IE5VTEw7CiAJZm9yICg7OykgewpAQCAtNjIsNiArNzAsOSBAQAogCQlpZiAoYnVmZmVyW2xlbi0xXSA9PSAnXG4nKQogCQkJYnVmZmVyWy0tbGVuXSA9IDA7CiAKKwkJaWYgKGxlbiA+IDQgJiYgIXByZWZpeGNtcChidWZmZXIsICJFUlIgIikpCisJCQlkaWUoInJlbW90ZSBlcnJvcjogJXMiLCBidWZmZXIgKyA0KTsKKwogCQlpZiAobGVuIDwgNDIgfHwgZ2V0X3NoYTFfaGV4KGJ1ZmZlciwgb2xkX3NoYTEpIHx8IGJ1ZmZlcls0MF0gIT0gJyAnKQogCQkJZGllKCJwcm90b2NvbCBlcnJvcjogZXhwZWN0ZWQgc2hhL3JlZiwgZ290ICclcyciLCBidWZmZXIpOwogCQluYW1lID0gYnVmZmVyICsgNDE7CkBAIC03MiwxMyArODMsMTggQEAKIAkJCXNlcnZlcl9jYXBhYmlsaXRpZXMgPSB4c3RyZHVwKG5hbWUgKyBuYW1lX2xlbiArIDEpOwogCQl9CiAKKwkJaWYgKGV4dHJhX2hhdmUgJiYKKwkJICAgIG5hbWVfbGVuID09IDUgJiYgIW1lbWNtcCgiLmhhdmUiLCBuYW1lLCA1KSkgeworCQkJYWRkX2V4dHJhX2hhdmUoZXh0cmFfaGF2ZSwgb2xkX3NoYTEpOworCQkJY29udGludWU7CisJCX0KKwogCQlpZiAoIWNoZWNrX3JlZihuYW1lLCBuYW1lX2xlbiwgZmxhZ3MpKQogCQkJY29udGludWU7CiAJCWlmIChucl9tYXRjaCAmJiAhcGF0aF9tYXRjaChuYW1lLCBucl9tYXRjaCwgbWF0Y2gpKQogCQkJY29udGludWU7Ci0JCXJlZiA9IGFsbG9jX3JlZihuYW1lX2xlbiArIDEpOworCQlyZWYgPSBhbGxvY19yZWYoYnVmZmVyICsgNDEpOwogCQloYXNoY3B5KHJlZi0+b2xkX3NoYTEsIG9sZF9zaGExKTsKLQkJbWVtY3B5KHJlZi0+bmFtZSwgYnVmZmVyICsgNDEsIG5hbWVfbGVuICsgMSk7CiAJCSpsaXN0ID0gcmVmOwogCQlsaXN0ID0gJnJlZi0+bmV4dDsKIAl9CkBAIC00NjQsOCArNDgwLDggQEAKIAljaGFyICpwID0gc3RyY2hyKGhvc3QsICc6Jyk7CiAKIAlpZiAocCkgewotCQlzdHJ0b2wocCsxLCAmZW5kLCAxMCk7Ci0JCWlmICgqZW5kID09ICdcMCcpIHsKKwkJbG9uZyBwb3J0ID0gc3RydG9sKHAgKyAxLCAmZW5kLCAxMCk7CisJCWlmIChlbmQgIT0gcCArIDEgJiYgKmVuZCA9PSAnXDAnICYmIDAgPD0gcG9ydCAmJiBwb3J0IDwgNjU1MzYpIHsKIAkJCSpwID0gJ1wwJzsKIAkJCXJldHVybiBwKzE7CiAJCX0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLmJhc2gKaW5kZXggNTU0YTAzZi4uZTAwNDU0OSAxMDA3NTUKLS0tIGEvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLmJhc2gKKysrIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLmJhc2gKQEAgLTE1NCwxMSArMTU0LDggQEAKIHsKIAlsb2NhbCBjbWQgaSBpc19oYXNoPXkgZGlyPSIkKF9fZ2l0ZGlyICIkMSIpIgogCWlmIFsgLWQgIiRkaXIiIF07IHRoZW4KLQkJZm9yIGkgaW4gJChnaXQgLS1naXQtZGlyPSIkZGlyIiBcCi0JCQlmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9JyUocmVmbmFtZSknIFwKLQkJCXJlZnMvaGVhZHMgKTsgZG8KLQkJCWVjaG8gIiR7aSNyZWZzL2hlYWRzL30iCi0JCWRvbmUKKwkJZ2l0IC0tZ2l0LWRpcj0iJGRpciIgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKHJlZm5hbWU6c2hvcnQpJyBcCisJCQlyZWZzL2hlYWRzCiAJCXJldHVybgogCWZpCiAJZm9yIGkgaW4gJChnaXQgbHMtcmVtb3RlICIkMSIgMj4vZGV2L251bGwpOyBkbwpAQCAtMTc1LDExICsxNzIsOCBAQAogewogCWxvY2FsIGNtZCBpIGlzX2hhc2g9eSBkaXI9IiQoX19naXRkaXIgIiQxIikiCiAJaWYgWyAtZCAiJGRpciIgXTsgdGhlbgotCQlmb3IgaSBpbiAkKGdpdCAtLWdpdC1kaXI9IiRkaXIiIFwKLQkJCWZvci1lYWNoLXJlZiAtLWZvcm1hdD0nJShyZWZuYW1lKScgXAotCQkJcmVmcy90YWdzICk7IGRvCi0JCQllY2hvICIke2kjcmVmcy90YWdzL30iCi0JCWRvbmUKKwkJZ2l0IC0tZ2l0LWRpcj0iJGRpciIgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKHJlZm5hbWU6c2hvcnQpJyBcCisJCQlyZWZzL3RhZ3MKIAkJcmV0dXJuCiAJZmkKIAlmb3IgaSBpbiAkKGdpdCBscy1yZW1vdGUgIiQxIiAyPi9kZXYvbnVsbCk7IGRvCkBAIC0xOTQsMTkgKzE4OCwyMiBAQAogCiBfX2dpdF9yZWZzICgpCiB7Ci0JbG9jYWwgY21kIGkgaXNfaGFzaD15IGRpcj0iJChfX2dpdGRpciAiJDEiKSIKKwlsb2NhbCBpIGlzX2hhc2g9eSBkaXI9IiQoX19naXRkaXIgIiQxIikiCisJbG9jYWwgY3VyPSIke0NPTVBfV09SRFNbQ09NUF9DV09SRF19IiBmb3JtYXQgcmVmcwogCWlmIFsgLWQgIiRkaXIiIF07IHRoZW4KLQkJaWYgWyAtZSAiJGRpci9IRUFEIiBdOyB0aGVuIGVjaG8gSEVBRDsgZmkKLQkJZm9yIGkgaW4gJChnaXQgLS1naXQtZGlyPSIkZGlyIiBcCi0JCQlmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9JyUocmVmbmFtZSknIFwKLQkJCXJlZnMvdGFncyByZWZzL2hlYWRzIHJlZnMvcmVtb3Rlcyk7IGRvCi0JCQljYXNlICIkaSIgaW4KLQkJCQlyZWZzL3RhZ3MvKikgICAgZWNobyAiJHtpI3JlZnMvdGFncy99IiA7OwotCQkJCXJlZnMvaGVhZHMvKikgICBlY2hvICIke2kjcmVmcy9oZWFkcy99IiA7OwotCQkJCXJlZnMvcmVtb3Rlcy8qKSBlY2hvICIke2kjcmVmcy9yZW1vdGVzL30iIDs7Ci0JCQkJKikgICAgICAgICAgICAgIGVjaG8gIiRpIiA7OwotCQkJZXNhYwotCQlkb25lCisJCWNhc2UgIiRjdXIiIGluCisJCXJlZnN8cmVmcy8qKQorCQkJZm9ybWF0PSJyZWZuYW1lIgorCQkJcmVmcz0iJHtjdXIlLyp9IgorCQkJOzsKKwkJKikKKwkJCWlmIFsgLWUgIiRkaXIvSEVBRCIgXTsgdGhlbiBlY2hvIEhFQUQ7IGZpCisJCQlmb3JtYXQ9InJlZm5hbWU6c2hvcnQiCisJCQlyZWZzPSJyZWZzL3RhZ3MgcmVmcy9oZWFkcyByZWZzL3JlbW90ZXMiCisJCQk7OworCQllc2FjCisJCWdpdCAtLWdpdC1kaXI9IiRkaXIiIGZvci1lYWNoLXJlZiAtLWZvcm1hdD0iJSgkZm9ybWF0KSIgXAorCQkJJHJlZnMKIAkJcmV0dXJuCiAJZmkKIAlmb3IgaSBpbiAkKGdpdCBscy1yZW1vdGUgIiRkaXIiIDI+L2Rldi9udWxsKTsgZG8KQEAgLTg4MSw2ICs4NzgsNyBAQAogCQlhdHRyaWJ1dGVzIGNsaSBjb3JlLXR1dG9yaWFsIGN2cy1taWdyYXRpb24KIAkJZGlmZmNvcmUgZ2l0ayBnbG9zc2FyeSBob29rcyBpZ25vcmUgbW9kdWxlcwogCQlyZXBvc2l0b3J5LWxheW91dCB0dXRvcmlhbCB0dXRvcmlhbC0yCisJCXdvcmtmbG93cwogCQkiCiB9CiAKQEAgLTExMTIsNyArMTExMCw4IEBACiAJCQktLW5vLXN1cHByZXNzLWZyb20gLS1uby10aHJlYWQgLS1xdWlldAogCQkJLS1zaWduZWQtb2ZmLWJ5LWNjIC0tc210cC1wYXNzIC0tc210cC1zZXJ2ZXIKIAkJCS0tc210cC1zZXJ2ZXItcG9ydCAtLXNtdHAtc3NsIC0tc210cC11c2VyIC0tc3ViamVjdAotCQkJLS1zdXBwcmVzcy1jYyAtLXN1cHByZXNzLWZyb20gLS10aHJlYWQgLS10byIKKwkJCS0tc3VwcHJlc3MtY2MgLS1zdXBwcmVzcy1mcm9tIC0tdGhyZWFkIC0tdG8KKwkJCS0tdmFsaWRhdGUgLS1uby12YWxpZGF0ZSIKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwpAQCAtMTE1Niw3ICsxMTU1LDcgQEAKIAkJOzsKIAljb2xvci4qLiopCiAJCV9fZ2l0Y29tcCAiCi0JCQlibGFjayByZWQgZ3JlZW4geWVsbG93IGJsdWUgbWFnZW50YSBjeWFuIHdoaXRlCisJCQlub3JtYWwgYmxhY2sgcmVkIGdyZWVuIHllbGxvdyBibHVlIG1hZ2VudGEgY3lhbiB3aGl0ZQogCQkJYm9sZCBkaW0gdWwgYmxpbmsgcmV2ZXJzZQogCQkJIgogCQlyZXR1cm4KQEAgLTExODAsNyArMTE3OSw3IEBACiAJYnJhbmNoLiouKikKIAkJbG9jYWwgcGZ4PSIke2N1ciUuKn0uIgogCQljdXI9IiR7Y3VyIyMqLn0iCi0JCV9fZ2l0Y29tcCAicmVtb3RlIG1lcmdlIiAiJHBmeCIgIiRjdXIiCisJCV9fZ2l0Y29tcCAicmVtb3RlIG1lcmdlIG1lcmdlb3B0aW9ucyIgIiRwZngiICIkY3VyIgogCQlyZXR1cm4KIAkJOzsKIAlicmFuY2guKikKQEAgLTExOTMsNyArMTE5Miw3IEBACiAJCWxvY2FsIHBmeD0iJHtjdXIlLip9LiIKIAkJY3VyPSIke2N1ciMjKi59IgogCQlfX2dpdGNvbXAgIgotCQkJdXJsIGZldGNoIHB1c2ggc2tpcERlZmF1bHRVcGRhdGUKKwkJCXVybCBwcm94eSBmZXRjaCBwdXNoIG1pcnJvciBza2lwRGVmYXVsdFVwZGF0ZQogCQkJcmVjZWl2ZXBhY2sgdXBsb2FkcGFjayB0YWdvcHQKIAkJCSIgIiRwZngiICIkY3VyIgogCQlyZXR1cm4KQEAgLTEyMDcsODUgKzEyMDYsMTYxIEBACiAJZXNhYwogCV9fZ2l0Y29tcCAiCiAJCWFwcGx5LndoaXRlc3BhY2UKLQkJY29yZS5maWxlTW9kZQotCQljb3JlLmdpdFByb3h5Ci0JCWNvcmUuaWdub3JlU3RhdAotCQljb3JlLnByZWZlclN5bWxpbmtSZWZzCi0JCWNvcmUubG9nQWxsUmVmVXBkYXRlcwotCQljb3JlLmxvb3NlY29tcHJlc3Npb24KLQkJY29yZS5yZXBvc2l0b3J5Rm9ybWF0VmVyc2lvbgotCQljb3JlLnNoYXJlZFJlcG9zaXRvcnkKLQkJY29yZS53YXJuQW1iaWd1b3VzUmVmcwotCQljb3JlLmNvbXByZXNzaW9uCi0JCWNvcmUucGFja2VkR2l0V2luZG93U2l6ZQotCQljb3JlLnBhY2tlZEdpdExpbWl0CisJCWJyYW5jaC5hdXRvc2V0dXBtZXJnZQorCQlicmFuY2guYXV0b3NldHVwcmViYXNlCiAJCWNsZWFuLnJlcXVpcmVGb3JjZQogCQljb2xvci5icmFuY2gKIAkJY29sb3IuYnJhbmNoLmN1cnJlbnQKIAkJY29sb3IuYnJhbmNoLmxvY2FsCi0JCWNvbG9yLmJyYW5jaC5yZW1vdGUKIAkJY29sb3IuYnJhbmNoLnBsYWluCisJCWNvbG9yLmJyYW5jaC5yZW1vdGUKIAkJY29sb3IuZGlmZgotCQljb2xvci5kaWZmLnBsYWluCi0JCWNvbG9yLmRpZmYubWV0YQotCQljb2xvci5kaWZmLmZyYWcKLQkJY29sb3IuZGlmZi5vbGQKLQkJY29sb3IuZGlmZi5uZXcKIAkJY29sb3IuZGlmZi5jb21taXQKKwkJY29sb3IuZGlmZi5mcmFnCisJCWNvbG9yLmRpZmYubWV0YQorCQljb2xvci5kaWZmLm5ldworCQljb2xvci5kaWZmLm9sZAorCQljb2xvci5kaWZmLnBsYWluCiAJCWNvbG9yLmRpZmYud2hpdGVzcGFjZQorCQljb2xvci5pbnRlcmFjdGl2ZQorCQljb2xvci5pbnRlcmFjdGl2ZS5oZWFkZXIKKwkJY29sb3IuaW50ZXJhY3RpdmUuaGVscAorCQljb2xvci5pbnRlcmFjdGl2ZS5wcm9tcHQKIAkJY29sb3IucGFnZXIKIAkJY29sb3Iuc3RhdHVzCi0JCWNvbG9yLnN0YXR1cy5oZWFkZXIKIAkJY29sb3Iuc3RhdHVzLmFkZGVkCiAJCWNvbG9yLnN0YXR1cy5jaGFuZ2VkCisJCWNvbG9yLnN0YXR1cy5oZWFkZXIKKwkJY29sb3Iuc3RhdHVzLm5vYnJhbmNoCiAJCWNvbG9yLnN0YXR1cy51bnRyYWNrZWQKKwkJY29sb3Iuc3RhdHVzLnVwZGF0ZWQKKwkJY29sb3IudWkKKwkJY29tbWl0LnRlbXBsYXRlCisJCWNvcmUuYXV0b2NybGYKKwkJY29yZS5iYXJlCisJCWNvcmUuY29tcHJlc3Npb24KKwkJY29yZS5kZWx0YUJhc2VDYWNoZUxpbWl0CisJCWNvcmUuZWRpdG9yCisJCWNvcmUuZXhjbHVkZXNmaWxlCisJCWNvcmUuZmlsZU1vZGUKKwkJY29yZS5mc3luY29iamVjdGZpbGVzCisJCWNvcmUuZ2l0UHJveHkKKwkJY29yZS5pZ25vcmVDeWd3aW5GU1RyaWNrcworCQljb3JlLmlnbm9yZVN0YXQKKwkJY29yZS5sb2dBbGxSZWZVcGRhdGVzCisJCWNvcmUubG9vc2Vjb21wcmVzc2lvbgorCQljb3JlLnBhY2tlZEdpdExpbWl0CisJCWNvcmUucGFja2VkR2l0V2luZG93U2l6ZQorCQljb3JlLnBhZ2VyCisJCWNvcmUucHJlZmVyU3ltbGlua1JlZnMKKwkJY29yZS5wcmVsb2FkaW5kZXgKKwkJY29yZS5xdW90ZXBhdGgKKwkJY29yZS5yZXBvc2l0b3J5Rm9ybWF0VmVyc2lvbgorCQljb3JlLnNhZmVjcmxmCisJCWNvcmUuc2hhcmVkUmVwb3NpdG9yeQorCQljb3JlLnN5bWxpbmtzCisJCWNvcmUudHJ1c3RjdGltZQorCQljb3JlLndhcm5BbWJpZ3VvdXNSZWZzCisJCWNvcmUud2hpdGVzcGFjZQorCQljb3JlLndvcmt0cmVlCisJCWRpZmYuYXV0b3JlZnJlc2hpbmRleAorCQlkaWZmLmV4dGVybmFsCisJCWRpZmYubW5lbW9uaWNwcmVmaXgKIAkJZGlmZi5yZW5hbWVMaW1pdAorCQlkaWZmLnJlbmFtZUxpbWl0LgogCQlkaWZmLnJlbmFtZXMKIAkJZmV0Y2gudW5wYWNrTGltaXQKIAkJZm9ybWF0LmhlYWRlcnMKLQkJZm9ybWF0LnN1YmplY3RwcmVmaXgKLQkJZ2l0Y3ZzLmVuYWJsZWQKLQkJZ2l0Y3ZzLmxvZ2ZpbGUKLQkJZ2l0Y3ZzLmFsbGJpbmFyeQotCQlnaXRjdnMuZGJuYW1lIGdpdGN2cy5kYmRyaXZlciBnaXRjdnMuZGJ1c2VyIGdpdGN2cy5kYnBhc3MKLQkJZ2l0Y3ZzLmRidGFibGVuYW1lcHJlZml4CisJCWZvcm1hdC5udW1iZXJlZAorCQlmb3JtYXQucHJldHR5CisJCWZvcm1hdC5zdWZmaXgKKwkJZ2MuYWdncmVzc2l2ZVdpbmRvdworCQlnYy5hdXRvCisJCWdjLmF1dG9wYWNrbGltaXQKIAkJZ2MucGFja3JlZnMKKwkJZ2MucHJ1bmVleHBpcmUKIAkJZ2MucmVmbG9nZXhwaXJlCiAJCWdjLnJlZmxvZ2V4cGlyZXVucmVhY2hhYmxlCiAJCWdjLnJlcmVyZXJlc29sdmVkCiAJCWdjLnJlcmVyZXVucmVzb2x2ZWQKLQkJaHR0cC5zc2xWZXJpZnkKLQkJaHR0cC5zc2xDZXJ0Ci0JCWh0dHAuc3NsS2V5Ci0JCWh0dHAuc3NsQ0FJbmZvCi0JCWh0dHAuc3NsQ0FQYXRoCi0JCWh0dHAubWF4UmVxdWVzdHMKKwkJZ2l0Y3ZzLmFsbGJpbmFyeQorCQlnaXRjdnMuZGJUYWJsZU5hbWVQcmVmaXgKKwkJZ2l0Y3ZzLmRiZHJpdmVyCisJCWdpdGN2cy5kYm5hbWUKKwkJZ2l0Y3ZzLmRicGFzcworCQlnaXRjdnMuZGJ1c2VyCisJCWdpdGN2cy5lbmFibGVkCisJCWdpdGN2cy5sb2dmaWxlCisJCWdpdGN2cy51c2VjcmxmYXR0cgorCQlndWkuYmxhbWVoaXN0b3J5Y3R4CisJCWd1aS5jb21taXRtc2d3aWR0aAorCQlndWkuY29weWJsYW1ldGhyZXNob2xkCisJCWd1aS5kaWZmY29udGV4dAorCQlndWkuZW5jb2RpbmcKKwkJZ3VpLmZhc3Rjb3B5YmxhbWUKKwkJZ3VpLm1hdGNodHJhY2tpbmdicmFuY2gKKwkJZ3VpLm5ld2JyYW5jaHRlbXBsYXRlCisJCWd1aS5wcnVuZWR1cmluZ2ZldGNoCisJCWd1aS5zcGVsbGluZ2RpY3Rpb25hcnkKKwkJZ3VpLnRydXN0bXRpbWUKKwkJaGVscC5hdXRvY29ycmVjdAorCQloZWxwLmJyb3dzZXIKKwkJaGVscC5mb3JtYXQKIAkJaHR0cC5sb3dTcGVlZExpbWl0CiAJCWh0dHAubG93U3BlZWRUaW1lCisJCWh0dHAubWF4UmVxdWVzdHMKIAkJaHR0cC5ub0VQU1YKKwkJaHR0cC5wcm94eQorCQlodHRwLnNzbENBSW5mbworCQlodHRwLnNzbENBUGF0aAorCQlodHRwLnNzbENlcnQKKwkJaHR0cC5zc2xLZXkKKwkJaHR0cC5zc2xWZXJpZnkKIAkJaTE4bi5jb21taXRFbmNvZGluZwogCQlpMThuLmxvZ091dHB1dEVuY29kaW5nCisJCWluc3Rhd2ViLmJyb3dzZXIKKwkJaW5zdGF3ZWIuaHR0cGQKKwkJaW5zdGF3ZWIubG9jYWwKKwkJaW5zdGF3ZWIubW9kdWxlcGF0aAorCQlpbnN0YXdlYi5wb3J0CisJCWxvZy5kYXRlCiAJCWxvZy5zaG93cm9vdAorCQltYW4udmlld2VyCisJCW1lcmdlLmNvbmZsaWN0c3R5bGUKKwkJbWVyZ2UubG9nCisJCW1lcmdlLnJlbmFtZUxpbWl0CisJCW1lcmdlLnN0YXQKIAkJbWVyZ2UudG9vbAotCQltZXJnZS5zdW1tYXJ5CiAJCW1lcmdlLnZlcmJvc2l0eQotCQlwYWNrLndpbmRvdwotCQlwYWNrLmRlcHRoCi0JCXBhY2sud2luZG93TWVtb3J5CisJCW1lcmdldG9vbC5rZWVwQmFja3VwCiAJCXBhY2suY29tcHJlc3Npb24KLQkJcGFjay5kZWx0YUNhY2hlU2l6ZQogCQlwYWNrLmRlbHRhQ2FjaGVMaW1pdAorCQlwYWNrLmRlbHRhQ2FjaGVTaXplCisJCXBhY2suZGVwdGgKKwkJcGFjay5pbmRleFZlcnNpb24KKwkJcGFjay5wYWNrU2l6ZUxpbWl0CisJCXBhY2sudGhyZWFkcworCQlwYWNrLndpbmRvdworCQlwYWNrLndpbmRvd01lbW9yeQogCQlwdWxsLm9jdG9wdXMKIAkJcHVsbC50d29oZWFkCi0JCXJlcGFjay51c2VEZWx0YUJhc2VPZmZzZXQKKwkJcmVjZWl2ZS5kZW55Q3VycmVudEJyYW5jaAorCQlyZWNlaXZlLmRlbnlEZWxldGVzCisJCXJlY2VpdmUuZGVueU5vbkZhc3RGb3J3YXJkcworCQlyZWNlaXZlLmZzY2tPYmplY3RzCisJCXJlY2VpdmUudW5wYWNrTGltaXQKKwkJcmVwYWNrLnVzZWRlbHRhYmFzZW9mZnNldAorCQlyZXJlcmUuYXV0b3VwZGF0ZQorCQlyZXJlcmUuZW5hYmxlZAogCQlzaG93YnJhbmNoLmRlZmF1bHQKKwkJc3RhdHVzLnJlbGF0aXZlUGF0aHMKKwkJc3RhdHVzLnNob3dVbnRyYWNrZWRGaWxlcwogCQl0YXIudW1hc2sKIAkJdHJhbnNmZXIudW5wYWNrTGltaXQKLQkJcmVjZWl2ZS51bnBhY2tMaW1pdAotCQlyZWNlaXZlLmRlbnlOb25GYXN0Rm9yd2FyZHMKLQkJdXNlci5uYW1lCiAJCXVzZXIuZW1haWwKKwkJdXNlci5uYW1lCiAJCXVzZXIuc2lnbmluZ2tleQorCQl3ZWIuYnJvd3NlcgogCQlicmFuY2guIHJlbW90ZS4KIAkiCiB9CkBAIC0xNDUyLDcgKzE1MjcsNyBAQAogewogCV9fZ2l0X2hhc19kb3VibGVkYXNoICYmIHJldHVybgogCi0JbG9jYWwgc3ViY29tbWFuZHM9ImFkZCBzdGF0dXMgaW5pdCB1cGRhdGUiCisJbG9jYWwgc3ViY29tbWFuZHM9ImFkZCBzdGF0dXMgaW5pdCB1cGRhdGUgc3VtbWFyeSBmb3JlYWNoIHN5bmMiCiAJaWYgWyAteiAiJChfX2dpdF9maW5kX3N1YmNvbW1hbmQgIiRzdWJjb21tYW5kcyIpIiBdOyB0aGVuCiAJCWxvY2FsIGN1cj0iJHtDT01QX1dPUkRTW0NPTVBfQ1dPUkRdfSIKIAkJY2FzZSAiJGN1ciIgaW4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvZW1hY3MvZ2l0LmVsIGIvY29udHJpYi9lbWFjcy9naXQuZWwKaW5kZXggYzFjZjFjYi4uMDllOGJhZSAxMDA2NDQKLS0tIGEvY29udHJpYi9lbWFjcy9naXQuZWwKKysrIGIvY29udHJpYi9lbWFjcy9naXQuZWwKQEAgLTE3Myw3ICsxNzMsNyBAQAogKGRlZmNvbnN0IGdpdC1sb2ctbXNnLXNlcGFyYXRvciAiLS0tIGxvZyBtZXNzYWdlIGZvbGxvd3MgdGhpcyBsaW5lIC0tLSIpCiAKIChkZWZ2YXIgZ2l0LWxvZy1lZGl0LWZvbnQtbG9jay1rZXl3b3JkcwotICBgKCgiXlxcKEF1dGhvcjpcXHxEYXRlOlxcfFBhcmVudDpcXHxTaWduZWQtb2ZmLWJ5OlxcKVxcKC4qXFwpJCIKKyAgYCgoIl5cXChBdXRob3I6XFx8RGF0ZTpcXHxNZXJnZTpcXHxTaWduZWQtb2ZmLWJ5OlxcKVxcKC4qXFwpJCIKICAgICAgKDEgZm9udC1sb2NrLWtleXdvcmQtZmFjZSkKICAgICAgKDIgZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkpCiAgICAgKCwoY29uY2F0ICJeXFwoIiAocmVnZXhwLXF1b3RlIGdpdC1sb2ctbXNnLXNlcGFyYXRvcikgIlxcKSQiKQpAQCAtMTgzLDExICsxODMsOSBAQAogICAiQnVpbGQgYSBsaXN0IG9mIE5BTUU9VkFMVUUgc3RyaW5ncyBmcm9tIGEgbGlzdCBvZiBlbnZpcm9ubWVudCBzdHJpbmdzLiIKICAgKG1hcGNhciAobGFtYmRhIChlbnRyeSkgKGNvbmNhdCAoY2FyIGVudHJ5KSAiPSIgKGNkciBlbnRyeSkpKSBlbnYpKQogCi0oZGVmdW4gZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgKGJ1ZmZlciBlbnYgJnJlc3QgYXJncykKKyhkZWZ1biBnaXQtY2FsbC1wcm9jZXNzIChidWZmZXIgJnJlc3QgYXJncykKICAgIldyYXBwZXIgZm9yIGNhbGwtcHJvY2VzcyB0aGF0IHNldHMgZW52aXJvbm1lbnQgc3RyaW5ncy4iCi0gIChsZXQgKChwcm9jZXNzLWVudmlyb25tZW50IChhcHBlbmQgKGdpdC1nZXQtZW52LXN0cmluZ3MgZW52KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MtZW52aXJvbm1lbnQpKSkKLSAgICAoYXBwbHkgIydjYWxsLXByb2Nlc3MgImdpdCIgbmlsIGJ1ZmZlciBuaWwgYXJncykpKQorICAoYXBwbHkgIydjYWxsLXByb2Nlc3MgImdpdCIgbmlsIGJ1ZmZlciBuaWwgYXJncykpCiAKIChkZWZ1biBnaXQtY2FsbC1wcm9jZXNzLWRpc3BsYXktZXJyb3IgKCZyZXN0IGFyZ3MpCiAgICJXcmFwcGVyIGZvciBjYWxsLXByb2Nlc3MgdGhhdCBkaXNwbGF5cyBlcnJvciBtZXNzYWdlcy4iCkBAIC0xOTcsMTcgKzE5NSwyNiBAQAogICAgICAgICAgICAgICAgKGxldCAoKGRlZmF1bHQtZGlyZWN0b3J5IGRpcikKICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItcmVhZC1vbmx5IG5pbCkpCiAgICAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIpCi0gICAgICAgICAgICAgICAgIChlcSAwIChhcHBseSAnY2FsbC1wcm9jZXNzICJnaXQiIG5pbCAobGlzdCBidWZmZXIgdCkgbmlsIGFyZ3MpKSkpKSkKKyAgICAgICAgICAgICAgICAgKGVxIDAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2VzcyAobGlzdCBidWZmZXIgdCkgYXJncykpKSkpKQogICAgICh1bmxlc3Mgb2sgKGRpc3BsYXktbWVzc2FnZS1vci1idWZmZXIgYnVmZmVyKSkKICAgICBvaykpCiAKLShkZWZ1biBnaXQtY2FsbC1wcm9jZXNzLWVudi1zdHJpbmcgKGVudiAmcmVzdCBhcmdzKQotICAiV3JhcHBlciBmb3IgY2FsbC1wcm9jZXNzIHRoYXQgc2V0cyBlbnZpcm9ubWVudCBzdHJpbmdzLAotYW5kIHJldHVybnMgdGhlIHByb2Nlc3Mgb3V0cHV0IGFzIGEgc3RyaW5nLCBvciBuaWwgaWYgdGhlIGdpdCBmYWlsZWQuIgorKGRlZnVuIGdpdC1jYWxsLXByb2Nlc3Mtc3RyaW5nICgmcmVzdCBhcmdzKQorICAiV3JhcHBlciBmb3IgY2FsbC1wcm9jZXNzIHRoYXQgcmV0dXJucyB0aGUgcHJvY2VzcyBvdXRwdXQgYXMgYSBzdHJpbmcsCitvciBuaWwgaWYgdGhlIGdpdCBjb21tYW5kIGZhaWxlZC4iCiAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgKGFuZCAoZXEgMCAoYXBwbHkgIycgZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgdCBlbnYgYXJncykpCisgICAgKGFuZCAoZXEgMCAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzIHQgYXJncykpCiAgICAgICAgICAoYnVmZmVyLXN0cmluZykpKSkKIAorKGRlZnVuIGdpdC1jYWxsLXByb2Nlc3Mtc3RyaW5nLWRpc3BsYXktZXJyb3IgKCZyZXN0IGFyZ3MpCisgICJXcmFwcGVyIGZvciBjYWxsLXByb2Nlc3MgdGhhdCBkaXNwbGF5cyBlcnJvciBtZXNzYWdlIGFuZCByZXR1cm5zCit0aGUgcHJvY2VzcyBvdXRwdXQgYXMgYSBzdHJpbmcsIG9yIG5pbCBpZiB0aGUgZ2l0IGNvbW1hbmQgZmFpbGVkLiIKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAoaWYgKGVxIDAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2VzcyAobGlzdCB0IHQpIGFyZ3MpKQorICAgICAgICAoYnVmZmVyLXN0cmluZykKKyAgICAgIChkaXNwbGF5LW1lc3NhZ2Utb3ItYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCisgICAgICBuaWwpKSkKKwogKGRlZnVuIGdpdC1ydW4tcHJvY2Vzcy1yZWdpb24gKGJ1ZmZlciBzdGFydCBlbmQgcHJvZ3JhbSBhcmdzKQogICAiUnVuIGEgZ2l0IHByb2Nlc3Mgd2l0aCBhIGJ1ZmZlciByZWdpb24gYXMgaW5wdXQuIgogICAobGV0ICgob3V0cHV0LWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQpAQCAtMjI2LDcgKzIzMyw3IEBACiAgICAgICAobGV0ICgoZGVmYXVsdC1kaXJlY3RvcnkgZGlyKQogICAgICAgICAgICAgKGJ1ZmZlci1yZWFkLW9ubHkgbmlsKSkKICAgICAgICAgKGVyYXNlLWJ1ZmZlcikKLSAgICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgYnVmZmVyIG5pbCBhcmdzKSkpCisgICAgICAgIChhcHBseSAjJ2dpdC1jYWxsLXByb2Nlc3MgYnVmZmVyIGFyZ3MpKSkKICAgICAobWVzc2FnZSAiUnVubmluZyBnaXQgJXMuLi5kb25lIiAoY2FyIGFyZ3MpKQogICAgIGJ1ZmZlcikpCiAKQEAgLTMyNyw3ICszMzQsNyBAQAogICAobGV0ICgoY2R1cCAod2l0aC1vdXRwdXQtdG8tc3RyaW5nCiAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0CiAgICAgICAgICAgICAgICAgICAoY2QgZGlyKQotICAgICAgICAgICAgICAgICAgKHVubGVzcyAoZXEgMCAoY2FsbC1wcm9jZXNzICJnaXQiIG5pbCB0IG5pbCAicmV2LXBhcnNlIiAiLS1zaG93LWNkdXAiKSkKKyAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGVxIDAgKGdpdC1jYWxsLXByb2Nlc3MgdCAicmV2LXBhcnNlIiAiLS1zaG93LWNkdXAiKSkKICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJjYW5ub3QgZmluZCB0b3AtbGV2ZWwgZ2l0IHRyZWUgZm9yICVzLiIgZGlyKSkpKSkpCiAgICAgKGV4cGFuZC1maWxlLW5hbWUgKGNvbmNhdCAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBkaXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIChzcGxpdC1zdHJpbmcgY2R1cCAiXG4iKSkpKSkpCkBAIC0zNDgsOCArMzU1LDggQEAKICAgICAoc29ydC1saW5lcyBuaWwgKHBvaW50LW1pbikgKHBvaW50LW1heCkpCiAgICAgKHNhdmUtYnVmZmVyKSkKICAgKHdoZW4gY3JlYXRlZAotICAgIChnaXQtY2FsbC1wcm9jZXNzLWVudiBuaWwgbmlsICJ1cGRhdGUtaW5kZXgiICItLWFkZCIgIi0tIiAoZmlsZS1yZWxhdGl2ZS1uYW1lIGlnbm9yZS1uYW1lKSkpCi0gIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyAobGlzdCAoZmlsZS1yZWxhdGl2ZS1uYW1lIGlnbm9yZS1uYW1lKSkgJ3Vua25vd24pKSkKKyAgICAoZ2l0LWNhbGwtcHJvY2VzcyBuaWwgInVwZGF0ZS1pbmRleCIgIi0tYWRkIiAiLS0iIChmaWxlLXJlbGF0aXZlLW5hbWUgaWdub3JlLW5hbWUpKSkKKyAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChsaXN0IChmaWxlLXJlbGF0aXZlLW5hbWUgaWdub3JlLW5hbWUpKSkpKQogCiA7IHByb3BlcnRpemUgZGVmaW5pdGlvbiBmb3IgWEVtYWNzLCBzdG9sZW4gZnJvbSBlcmMtY29tcGF0CiAoZXZhbC13aGVuLWNvbXBpbGUKQEAgLTM2NywzOCArMzc0LDQxIEBACiAoZGVmdW4gZ2l0LXJldi1wYXJzZSAocmV2KQogICAiUGFyc2UgYSByZXZpc2lvbiBuYW1lIGFuZCByZXR1cm4gaXRzIFNIQTEuIgogICAoZ2l0LWdldC1zdHJpbmctc2hhMQotICAgKGdpdC1jYWxsLXByb2Nlc3MtZW52LXN0cmluZyBuaWwgInJldi1wYXJzZSIgcmV2KSkpCisgICAoZ2l0LWNhbGwtcHJvY2Vzcy1zdHJpbmcgInJldi1wYXJzZSIgcmV2KSkpCiAKIChkZWZ1biBnaXQtY29uZmlnIChrZXkpCiAgICJSZXRyaWV2ZSB0aGUgdmFsdWUgYXNzb2NpYXRlZCB0byBLRVkgaW4gdGhlIGdpdCByZXBvc2l0b3J5IGNvbmZpZyBmaWxlLiIKLSAgKGxldCAoKHN0ciAoZ2l0LWNhbGwtcHJvY2Vzcy1lbnYtc3RyaW5nIG5pbCAiY29uZmlnIiBrZXkpKSkKKyAgKGxldCAoKHN0ciAoZ2l0LWNhbGwtcHJvY2Vzcy1zdHJpbmcgImNvbmZpZyIga2V5KSkpCiAgICAgKGFuZCBzdHIgKGNhciAoc3BsaXQtc3RyaW5nIHN0ciAiXG4iKSkpKSkKIAogKGRlZnVuIGdpdC1zeW1ib2xpYy1yZWYgKHJlZikKICAgIldyYXBwZXIgZm9yIHRoZSBnaXQtc3ltYm9saWMtcmVmIGNvbW1hbmQuIgotICAobGV0ICgoc3RyIChnaXQtY2FsbC1wcm9jZXNzLWVudi1zdHJpbmcgbmlsICJzeW1ib2xpYy1yZWYiIHJlZikpKQorICAobGV0ICgoc3RyIChnaXQtY2FsbC1wcm9jZXNzLXN0cmluZyAic3ltYm9saWMtcmVmIiByZWYpKSkKICAgICAoYW5kIHN0ciAoY2FyIChzcGxpdC1zdHJpbmcgc3RyICJcbiIpKSkpKQogCiAoZGVmdW4gZ2l0LXVwZGF0ZS1yZWYgKHJlZiBuZXd2YWwgJm9wdGlvbmFsIG9sZHZhbCByZWFzb24pCiAgICJVcGRhdGUgYSByZWZlcmVuY2UgYnkgY2FsbGluZyBnaXQtdXBkYXRlLXJlZi4iCiAgIChsZXQgKChhcmdzIChhbmQgb2xkdmFsIChsaXN0IG9sZHZhbCkpKSkKLSAgICAocHVzaCBuZXd2YWwgYXJncykKKyAgICAod2hlbiBuZXd2YWwgKHB1c2ggbmV3dmFsIGFyZ3MpKQogICAgIChwdXNoIHJlZiBhcmdzKQogICAgICh3aGVuIHJlYXNvbgogICAgICAocHVzaCByZWFzb24gYXJncykKICAgICAgKHB1c2ggIi1tIiBhcmdzKSkKKyAgICAodW5sZXNzIG5ld3ZhbCAocHVzaCAiLWQiIGFyZ3MpKQogICAgIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtcmVmIiBhcmdzKSkpCiAKIChkZWZ1biBnaXQtcmVhZC10cmVlICh0cmVlICZvcHRpb25hbCBpbmRleC1maWxlKQogICAiUmVhZCBhIHRyZWUgaW50byB0aGUgaW5kZXggZmlsZS4iCi0gIChhcHBseSAjJ2dpdC1jYWxsLXByb2Nlc3MtZW52IG5pbAotICAgICAgICAgKGlmIGluZGV4LWZpbGUgYCgoIkdJVF9JTkRFWF9GSUxFIiAuICxpbmRleC1maWxlKSkgbmlsKQotICAgICAgICAgInJlYWQtdHJlZSIgKGlmIHRyZWUgKGxpc3QgdHJlZSkpKSkKKyAgKGxldCAoKHByb2Nlc3MtZW52aXJvbm1lbnQKKyAgICAgICAgIChhcHBlbmQgKGFuZCBpbmRleC1maWxlIChsaXN0IChjb25jYXQgIkdJVF9JTkRFWF9GSUxFPSIgaW5kZXgtZmlsZSkpKSBwcm9jZXNzLWVudmlyb25tZW50KSkpCisgICAgKGFwcGx5ICdnaXQtY2FsbC1wcm9jZXNzLWRpc3BsYXktZXJyb3IgInJlYWQtdHJlZSIgKGlmIHRyZWUgKGxpc3QgdHJlZSkpKSkpCiAKIChkZWZ1biBnaXQtd3JpdGUtdHJlZSAoJm9wdGlvbmFsIGluZGV4LWZpbGUpCiAgICJDYWxsIGdpdC13cml0ZS10cmVlIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyB0cmVlIFNIQTEgYXMgYSBzdHJpbmcuIgotICAoZ2l0LWdldC1zdHJpbmctc2hhMQotICAgKGdpdC1jYWxsLXByb2Nlc3MtZW52LXN0cmluZyAoYW5kIGluZGV4LWZpbGUgYCgoIkdJVF9JTkRFWF9GSUxFIiAuICxpbmRleC1maWxlKSkpICJ3cml0ZS10cmVlIikpKQorICAobGV0ICgocHJvY2Vzcy1lbnZpcm9ubWVudAorICAgICAgICAgKGFwcGVuZCAoYW5kIGluZGV4LWZpbGUgKGxpc3QgKGNvbmNhdCAiR0lUX0lOREVYX0ZJTEU9IiBpbmRleC1maWxlKSkpIHByb2Nlc3MtZW52aXJvbm1lbnQpKSkKKyAgICAoZ2l0LWdldC1zdHJpbmctc2hhMQorICAgICAoZ2l0LWNhbGwtcHJvY2Vzcy1zdHJpbmctZGlzcGxheS1lcnJvciAid3JpdGUtdHJlZSIpKSkpCiAKIChkZWZ1biBnaXQtY29tbWl0LXRyZWUgKGJ1ZmZlciB0cmVlIGhlYWQpCiAgICJDYWxsIGdpdC1jb21taXQtdHJlZSB3aXRoIGJ1ZmZlciBhcyBpbnB1dCBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgY29tbWl0IFNIQTEuIgpAQCAtNDI0LDExICs0MzQsMTEgQEAKICAgICAgICAgICAgICh3aGVuIChyZS1zZWFyY2gtZm9yd2FyZCAiXkRhdGU6ICtcXCguKlxcKSQiIG5pbCB0KQogICAgICAgICAgICAgICAoc2V0cSBhdXRob3ItZGF0ZSAobWF0Y2gtc3RyaW5nIDEpKSkKICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCi0gICAgICAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJeUGFyZW50OiArXFwoWzAtOWEtZl0rXFwpIiBuaWwgdCkKLSAgICAgICAgICAgICAgKHVubGVzcyAoc3RyaW5nLWVxdWFsIGhlYWQgKG1hdGNoLXN0cmluZyAxKSkKLSAgICAgICAgICAgICAgICAoc2V0cSBzdWJqZWN0ICJjb21taXQgKG1lcmdlKTogIikKKyAgICAgICAgICAgICh3aGVuIChyZS1zZWFyY2gtZm9yd2FyZCAiXk1lcmdlOiArXFwoLipcXCkiIG5pbCB0KQorICAgICAgICAgICAgICAoc2V0cSBzdWJqZWN0ICJjb21taXQgKG1lcmdlKTogIikKKyAgICAgICAgICAgICAgKGRvbGlzdCAocGFyZW50IChzcGxpdC1zdHJpbmcgKG1hdGNoLXN0cmluZyAxKSAiICsiIHQpKQogICAgICAgICAgICAgICAgIChwdXNoICItcCIgYXJncykKLSAgICAgICAgICAgICAgICAocHVzaCAobWF0Y2gtc3RyaW5nIDEpIGFyZ3MpKSkpCisgICAgICAgICAgICAgICAgKHB1c2ggcGFyZW50IGFyZ3MpKSkpCiAgICAgICAgIChzZXRxIGxvZy1zdGFydCAocG9pbnQtbWluKSkpCiAgICAgICAoc2V0cSBsb2ctZW5kIChwb2ludC1tYXgpKQogICAgICAgKGdvdG8tY2hhciBsb2ctc3RhcnQpCkBAIC00NTIsNyArNDYyLDcgQEAKIAogKGRlZnVuIGdpdC1lbXB0eS1kYi1wICgpCiAgICJDaGVjayBpZiB0aGUgZ2l0IGRiIGlzIGVtcHR5IChubyBjb21taXQgZG9uZSB5ZXQpLiIKLSAgKG5vdCAoZXEgMCAoY2FsbC1wcm9jZXNzICJnaXQiIG5pbCBuaWwgbmlsICJyZXYtcGFyc2UiICItLXZlcmlmeSIgIkhFQUQiKSkpKQorICAobm90IChlcSAwIChnaXQtY2FsbC1wcm9jZXNzIG5pbCAicmV2LXBhcnNlIiAiLS12ZXJpZnkiICJIRUFEIikpKSkKIAogKGRlZnVuIGdpdC1nZXQtbWVyZ2UtaGVhZHMgKCkKICAgIlJldHJpZXZlIHRoZSBtZXJnZSBoZWFkcyBmcm9tIHRoZSBNRVJHRV9IRUFEIGZpbGUgaWYgcHJlc2VudC4iCkBAIC00NjgsNyArNDc4LDcgQEAKIChkZWZ1biBnaXQtZ2V0LWNvbW1pdC1kZXNjcmlwdGlvbiAoY29tbWl0KQogICAiR2V0IGEgb25lLWxpbmUgZGVzY3JpcHRpb24gb2YgQ09NTUlULiIKICAgKGxldCAoKGNvZGluZy1zeXN0ZW0tZm9yLXJlYWQgKGdpdC1nZXQtbG9nb3V0cHV0LWNvZGluZy1zeXN0ZW0pKSkKLSAgICAobGV0ICgoZGVzY3IgKGdpdC1jYWxsLXByb2Nlc3MtZW52LXN0cmluZyBuaWwgImxvZyIgIi0tbWF4LWNvdW50PTEiICItLXByZXR0eT1vbmVsaW5lIiBjb21taXQpKSkKKyAgICAobGV0ICgoZGVzY3IgKGdpdC1jYWxsLXByb2Nlc3Mtc3RyaW5nICJsb2ciICItLW1heC1jb3VudD0xIiAiLS1wcmV0dHk9b25lbGluZSIgY29tbWl0KSkpCiAgICAgICAoaWYgKGFuZCBkZXNjciAoc3RyaW5nLW1hdGNoICJcXGBcXChbMC05YS1mXVxcezQwXFx9XFwpICpcXCguKlxcKSQiIGRlc2NyKSkKICAgICAgICAgICAoY29uY2F0IChzdWJzdHJpbmcgKG1hdGNoLXN0cmluZyAxIGRlc2NyKSAwIDEwKSAiIC0gIiAobWF0Y2gtc3RyaW5nIDIgZGVzY3IpKQogICAgICAgICBkZXNjcikpKSkKQEAgLTQ4NywxNCArNDk3LDExIEBACiAgIG9sZC1wZXJtIG5ldy1wZXJtICAgOzsgcGVybWlzc2lvbiBmbGFncwogICByZW5hbWUtc3RhdGUgICAgICAgIDs7IHJlbmFtZSBvciBjb3B5IHN0YXRlCiAgIG9yaWctbmFtZSAgICAgICAgICAgOzsgb3JpZ2luYWwgbmFtZSBmb3IgcmVuYW1lcyBvciBjb3BpZXMKKyAgbmVlZHMtdXBkYXRlICAgICAgICA7OyB3aGV0aGVyIGZpbGUgbmVlZHMgdG8gYmUgdXBkYXRlZAogICBuZWVkcy1yZWZyZXNoKSAgICAgIDs7IHdoZXRoZXIgZmlsZSBuZWVkcyB0byBiZSByZWZyZXNoZWQKIAogKGRlZnZhciBnaXQtc3RhdHVzIG5pbCkKIAotKGRlZnVuIGdpdC1jbGVhci1zdGF0dXMgKHN0YXR1cykKLSAgIlJlbW92ZSBldmVyeXRoaW5nIGZyb20gdGhlIHN0YXR1cyBsaXN0LiIKLSAgKGV3b2MtZmlsdGVyIHN0YXR1cyAobGFtYmRhIChpbmZvKSBuaWwpKSkKLQogKGRlZnVuIGdpdC1zZXQtZmlsZWluZm8tc3RhdGUgKGluZm8gc3RhdGUpCiAgICJTZXQgdGhlIHN0YXRlIG9mIGEgZmlsZSBpbmZvLiIKICAgKHVubGVzcyAoZXEgKGdpdC1maWxlaW5mby0+c3RhdGUgaW5mbykgc3RhdGUpCkBAIC01MDIsNiArNTA5LDcgQEAKIAkgIChnaXQtZmlsZWluZm8tPm5ldy1wZXJtIGluZm8pIChnaXQtZmlsZWluZm8tPm9sZC1wZXJtIGluZm8pCiAgICAgICAgICAgKGdpdC1maWxlaW5mby0+cmVuYW1lLXN0YXRlIGluZm8pIG5pbAogICAgICAgICAgIChnaXQtZmlsZWluZm8tPm9yaWctbmFtZSBpbmZvKSBuaWwKKyAgICAgICAgICAoZ2l0LWZpbGVpbmZvLT5uZWVkcy11cGRhdGUgaW5mbykgbmlsCiAgICAgICAgICAgKGdpdC1maWxlaW5mby0+bmVlZHMtcmVmcmVzaCBpbmZvKSB0KSkpCiAKIChkZWZ1biBnaXQtc3RhdHVzLWZpbGVuYW1lcy1tYXAgKHN0YXR1cyBmdW5jIGZpbGVzICZyZXN0IGFyZ3MpCkBAIC01MTEsMTAgKzUxOSwxMSBAQAogICAgIChsZXQgKChmaWxlIChwb3AgZmlsZXMpKQogICAgICAgICAgIChub2RlIChld29jLW50aCBzdGF0dXMgMCkpKQogICAgICAgKHdoaWxlIChhbmQgZmlsZSBub2RlKQotICAgICAgICAobGV0ICgoaW5mbyAoZXdvYy1kYXRhIG5vZGUpKSkKLSAgICAgICAgICAoaWYgKHN0cmluZy1sZXNzcCAoZ2l0LWZpbGVpbmZvLT5uYW1lIGluZm8pIGZpbGUpCisgICAgICAgIChsZXQqICgoaW5mbyAoZXdvYy1kYXRhIG5vZGUpKQorICAgICAgICAgICAgICAgKG5hbWUgKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSkpCisgICAgICAgICAgKGlmIChzdHJpbmctbGVzc3AgbmFtZSBmaWxlKQogICAgICAgICAgICAgICAoc2V0cSBub2RlIChld29jLW5leHQgc3RhdHVzIG5vZGUpKQotICAgICAgICAgICAgKGlmIChzdHJpbmctZXF1YWwgKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSBmaWxlKQorICAgICAgICAgICAgKGlmIChzdHJpbmctZXF1YWwgbmFtZSBmaWxlKQogICAgICAgICAgICAgICAgIChhcHBseSBmdW5jIGluZm8gYXJncykpCiAgICAgICAgICAgICAoc2V0cSBmaWxlIChwb3AgZmlsZXMpKSkpKSkpKQogCkBAIC02MTIsMzkgKzYyMSw1MiBAQAogCQkgICAgKGdpdC1maWxlLXR5cGUtYXMtc3RyaW5nIG9sZC1wZXJtIG5ldy1wZXJtKQogCQkgICAgKGdpdC1yZW5hbWUtYXMtc3RyaW5nIGluZm8pKSkpKQogCi0oZGVmdW4gZ2l0LWluc2VydC1pbmZvLWxpc3QgKHN0YXR1cyBpbmZvbGlzdCkKLSAgIkluc2VydCBhIGxpc3Qgb2YgZmlsZSBpbmZvcyBpbiB0aGUgc3RhdHVzIGJ1ZmZlciwgcmVwbGFjaW5nIGV4aXN0aW5nIG9uZXMgaWYgYW55LiIKLSAgKHNldHEgaW5mb2xpc3QgKHNvcnQgaW5mb2xpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaW5mbzEgaW5mbzIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1sZXNzcCAoZ2l0LWZpbGVpbmZvLT5uYW1lIGluZm8xKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvMikpKSkpCi0gIChsZXQgKChpbmZvIChwb3AgaW5mb2xpc3QpKQotICAgICAgICAobm9kZSAoZXdvYy1udGggc3RhdHVzIDApKSkKKyhkZWZ1biBnaXQtdXBkYXRlLW5vZGUtZmlsZWluZm8gKG5vZGUgaW5mbykKKyAgIlVwZGF0ZSB0aGUgZmlsZWluZm8gb2YgdGhlIHNwZWNpZmllZCBub2RlLiBUaGUgbmFtZXMgYXJlIGFzc3VtZWQgdG8gbWF0Y2ggYWxyZWFkeS4iCisgIChsZXQgKChkYXRhIChld29jLWRhdGEgbm9kZSkpKQorICAgIChzZXRmCisgICAgIDs7IHByZXNlcnZlIHRoZSBtYXJrZWQgZmxhZworICAgICAoZ2l0LWZpbGVpbmZvLT5tYXJrZWQgaW5mbykgKGdpdC1maWxlaW5mby0+bWFya2VkIGRhdGEpCisgICAgIChnaXQtZmlsZWluZm8tPm5lZWRzLXVwZGF0ZSBkYXRhKSBuaWwpCisgICAgKHdoZW4gKG5vdCAoZXF1YWwgaW5mbyBkYXRhKSkKKyAgICAgIChzZXRmIChnaXQtZmlsZWluZm8tPm5lZWRzLXJlZnJlc2ggaW5mbykgdAorICAgICAgICAgICAgKGV3b2MtZGF0YSBub2RlKSBpbmZvKSkpKQorCisoZGVmdW4gZ2l0LWluc2VydC1pbmZvLWxpc3QgKHN0YXR1cyBpbmZvbGlzdCBmaWxlcykKKyAgIkluc2VydCBhIHNvcnRlZCBsaXN0IG9mIGZpbGUgaW5mb3MgaW4gdGhlIHN0YXR1cyBidWZmZXIsIHJlcGxhY2luZyBleGlzdGluZyBvbmVzIGlmIGFueS4iCisgIChsZXQqICgoaW5mbyAocG9wIGluZm9saXN0KSkKKyAgICAgICAgIChub2RlIChld29jLW50aCBzdGF0dXMgMCkpCisgICAgICAgICAobmFtZSAoYW5kIGluZm8gKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSkpCisgICAgICAgICByZW1haW5pbmcpCiAgICAgKHdoaWxlIGluZm8KLSAgICAgIChjb25kICgobm90IG5vZGUpCi0JICAgICAoc2V0cSBub2RlIChld29jLWVudGVyLWxhc3Qgc3RhdHVzIGluZm8pKQotICAgICAgICAgICAgIChzZXRxIGluZm8gKHBvcCBpbmZvbGlzdCkpKQotICAgICAgICAgICAgKChzdHJpbmctbGVzc3AgKGdpdC1maWxlaW5mby0+bmFtZSAoZXdvYy1kYXRhIG5vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSkKLSAgICAgICAgICAgICAoc2V0cSBub2RlIChld29jLW5leHQgc3RhdHVzIG5vZGUpKSkKLSAgICAgICAgICAgICgoc3RyaW5nLWVxdWFsIChnaXQtZmlsZWluZm8tPm5hbWUgKGV3b2MtZGF0YSBub2RlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbykpCi0gICAgICAgICAgICAgIDs7IHByZXNlcnZlIHRoZSBtYXJrZWQgZmxhZwotICAgICAgICAgICAgICAoc2V0ZiAoZ2l0LWZpbGVpbmZvLT5tYXJrZWQgaW5mbykgKGdpdC1maWxlaW5mby0+bWFya2VkIChld29jLWRhdGEgbm9kZSkpKQotCSAgICAgIChzZXRmIChnaXQtZmlsZWluZm8tPm5lZWRzLXJlZnJlc2ggaW5mbykgdCkKLSAgICAgICAgICAgICAgKHNldGYgKGV3b2MtZGF0YSBub2RlKSBpbmZvKQotICAgICAgICAgICAgICAoc2V0cSBpbmZvIChwb3AgaW5mb2xpc3QpKSkKLSAgICAgICAgICAgICh0Ci0JICAgICAoc2V0cSBub2RlIChld29jLWVudGVyLWJlZm9yZSBzdGF0dXMgbm9kZSBpbmZvKSkKLSAgICAgICAgICAgICAoc2V0cSBpbmZvIChwb3AgaW5mb2xpc3QpKSkpKSkpCisgICAgICAobGV0ICgobm9kZW5hbWUgKGFuZCBub2RlIChnaXQtZmlsZWluZm8tPm5hbWUgKGV3b2MtZGF0YSBub2RlKSkpKSkKKyAgICAgICAgKHdoaWxlIChhbmQgZmlsZXMgKHN0cmluZy1sZXNzcCAoY2FyIGZpbGVzKSBuYW1lKSkKKyAgICAgICAgICAocHVzaCAocG9wIGZpbGVzKSByZW1haW5pbmcpKQorICAgICAgICAod2hlbiAoYW5kIGZpbGVzIChzdHJpbmctZXF1YWwgKGNhciBmaWxlcykgbmFtZSkpCisgICAgICAgICAgKHNldHEgZmlsZXMgKGNkciBmaWxlcykpKQorICAgICAgICAoY29uZCAoKG5vdCBub2RlbmFtZSkKKyAgICAgICAgICAgICAgIChzZXRxIG5vZGUgKGV3b2MtZW50ZXItbGFzdCBzdGF0dXMgaW5mbykpCisgICAgICAgICAgICAgICAoc2V0cSBpbmZvIChwb3AgaW5mb2xpc3QpKQorICAgICAgICAgICAgICAgKHNldHEgbmFtZSAoYW5kIGluZm8gKGdpdC1maWxlaW5mby0+bmFtZSBpbmZvKSkpKQorICAgICAgICAgICAgICAoKHN0cmluZy1sZXNzcCBub2RlbmFtZSBuYW1lKQorICAgICAgICAgICAgICAgKHNldHEgbm9kZSAoZXdvYy1uZXh0IHN0YXR1cyBub2RlKSkpCisgICAgICAgICAgICAgICgoc3RyaW5nLWVxdWFsIG5vZGVuYW1lIG5hbWUpCisgICAgICAgICAgICAgICA7OyBwcmVzZXJ2ZSB0aGUgbWFya2VkIGZsYWcKKyAgICAgICAgICAgICAgIChnaXQtdXBkYXRlLW5vZGUtZmlsZWluZm8gbm9kZSBpbmZvKQorICAgICAgICAgICAgICAgKHNldHEgaW5mbyAocG9wIGluZm9saXN0KSkKKyAgICAgICAgICAgICAgIChzZXRxIG5hbWUgKGFuZCBpbmZvIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbykpKSkKKyAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgIChzZXRxIG5vZGUgKGV3b2MtZW50ZXItYmVmb3JlIHN0YXR1cyBub2RlIGluZm8pKQorICAgICAgICAgICAgICAgKHNldHEgaW5mbyAocG9wIGluZm9saXN0KSkKKyAgICAgICAgICAgICAgIChzZXRxIG5hbWUgKGFuZCBpbmZvIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbykpKSkpKSkKKyAgICAobmNvbmMgKG5yZXZlcnNlIHJlbWFpbmluZykgZmlsZXMpKSkKIAogKGRlZnVuIGdpdC1ydW4tZGlmZi1pbmRleCAoc3RhdHVzIGZpbGVzKQogICAiUnVuIGdpdC1kaWZmLWluZGV4IG9uIEZJTEVTIGFuZCBwYXJzZSB0aGUgcmVzdWx0cyBpbnRvIFNUQVRVUy4KIFJldHVybiB0aGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmVuJ3QgYmVlbiBoYW5kbGVkLiIKLSAgKGxldCAoKHJlbWFpbmluZyAoY29weS1zZXF1ZW5jZSBmaWxlcykpCi0JaW5mb2xpc3QpCisgIChsZXQgKGluZm9saXN0KQogICAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAiZGlmZi1pbmRleCIgIi16IiAiLU0iICJIRUFEIiAiLS0iIGZpbGVzKQorICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2VzcyB0ICJkaWZmLWluZGV4IiAiLXoiICItTSIgIkhFQUQiICItLSIgZmlsZXMpCiAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZAogCSAgICAgICI6XFwoWzAtN11cXHs2XFx9XFwpIFxcKFswLTddXFx7NlxcfVxcKSBbMC05YS1mXVxcezQwXFx9IFswLTlhLWZdXFx7NDBcXH0gXFwoXFwoW0FETVVUXVxcKVwwXFwoW15cMF0rXFwpXFx8XFwoW0NSXVxcKVswLTldKlwwXFwoW15cMF0rXFwpXDBcXChbXlwwXStcXClcXClcMCIKQEAgLTY1OSwxMSArNjgxLDEyIEBACiAgICAgICAgICAgICAgICAgICAocHVzaCAoZ2l0LWNyZWF0ZS1maWxlaW5mbyAnYWRkZWQgbmV3LW5hbWUgb2xkLXBlcm0gbmV3LXBlcm0gJ2NvcHkgbmFtZSkgaW5mb2xpc3QpCiAgICAgICAgICAgICAgICAgKHB1c2ggKGdpdC1jcmVhdGUtZmlsZWluZm8gJ2RlbGV0ZWQgbmFtZSAwIDAgJ3JlbmFtZSBuZXctbmFtZSkgaW5mb2xpc3QpCiAgICAgICAgICAgICAgICAgKHB1c2ggKGdpdC1jcmVhdGUtZmlsZWluZm8gJ2FkZGVkIG5ldy1uYW1lIG9sZC1wZXJtIG5ldy1wZXJtICdyZW5hbWUgbmFtZSkgaW5mb2xpc3QpKQotICAgICAgICAgICAgKHB1c2ggKGdpdC1jcmVhdGUtZmlsZWluZm8gKGdpdC1zdGF0ZS1jb2RlIHN0YXRlKSBuYW1lIG9sZC1wZXJtIG5ldy1wZXJtKSBpbmZvbGlzdCkpCi0JICAoc2V0cSByZW1haW5pbmcgKGRlbGV0ZSBuYW1lIHJlbWFpbmluZykpCi0JICAod2hlbiBuZXctbmFtZSAoc2V0cSByZW1haW5pbmcgKGRlbGV0ZSBuZXctbmFtZSByZW1haW5pbmcpKSkpKSkKLSAgICAoZ2l0LWluc2VydC1pbmZvLWxpc3Qgc3RhdHVzIGluZm9saXN0KQotICAgIHJlbWFpbmluZykpCisgICAgICAgICAgICAocHVzaCAoZ2l0LWNyZWF0ZS1maWxlaW5mbyAoZ2l0LXN0YXRlLWNvZGUgc3RhdGUpIG5hbWUgb2xkLXBlcm0gbmV3LXBlcm0pIGluZm9saXN0KSkpKSkKKyAgICAoc2V0cSBpbmZvbGlzdCAoc29ydCAobnJldmVyc2UgaW5mb2xpc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoaW5mbzEgaW5mbzIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWxlc3NwIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbzEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnaXQtZmlsZWluZm8tPm5hbWUgaW5mbzIpKSkpKQorICAgIChnaXQtaW5zZXJ0LWluZm8tbGlzdCBzdGF0dXMgaW5mb2xpc3QgZmlsZXMpKSkKIAogKGRlZnVuIGdpdC1maW5kLXN0YXR1cy1maWxlIChzdGF0dXMgZmlsZSkKICAgIkZpbmQgYSBnaXZlbiBmaWxlIGluIHRoZSBzdGF0dXMgZXdvYyBhbmQgcmV0dXJuIGl0cyBub2RlLiIKQEAgLTY3NywzOCArNzAwLDM1IEBACiBSZXR1cm4gdGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlbid0IGJlZW4gaGFuZGxlZC4iCiAgIChsZXQgKGluZm9saXN0KQogICAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAibHMtZmlsZXMiICIteiIgKGFwcGVuZCBvcHRpb25zIChsaXN0ICItLSIpIGZpbGVzKSkKKyAgICAgIChhcHBseSAjJ2dpdC1jYWxsLXByb2Nlc3MgdCAibHMtZmlsZXMiICIteiIgKGFwcGVuZCBvcHRpb25zIChsaXN0ICItLSIpIGZpbGVzKSkKICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcXChbXlwwXSo/XFwpXFwoLz9cXClcMCIgbmlsIHQgMSkKICAgICAgICAgKGxldCAoKG5hbWUgKG1hdGNoLXN0cmluZyAxKSkpCiAgICAgICAgICAgKHB1c2ggKGdpdC1jcmVhdGUtZmlsZWluZm8gZGVmYXVsdC1zdGF0ZSBuYW1lIDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1lcXVhbCAiLyIgKG1hdGNoLXN0cmluZyAyKSkgKGxzaCA/XDExMCA5KSAwKSkKLSAgICAgICAgICAgICAgICBpbmZvbGlzdCkKLSAgICAgICAgICAoc2V0cSBmaWxlcyAoZGVsZXRlIG5hbWUgZmlsZXMpKSkpKQotICAgIChnaXQtaW5zZXJ0LWluZm8tbGlzdCBzdGF0dXMgaW5mb2xpc3QpCi0gICAgZmlsZXMpKQorICAgICAgICAgICAgICAgIGluZm9saXN0KSkpKQorICAgIChzZXRxIGluZm9saXN0IChucmV2ZXJzZSBpbmZvbGlzdCkpICA7OyBhc3N1bWUgaXQgaXMgc29ydGVkIGFscmVhZHkKKyAgICAoZ2l0LWluc2VydC1pbmZvLWxpc3Qgc3RhdHVzIGluZm9saXN0IGZpbGVzKSkpCiAKIChkZWZ1biBnaXQtcnVuLWxzLWZpbGVzLWNhY2hlZCAoc3RhdHVzIGZpbGVzIGRlZmF1bHQtc3RhdGUpCiAgICJSdW4gZ2l0LWxzLWZpbGVzIC1jIG9uIEZJTEVTIGFuZCBwYXJzZSB0aGUgcmVzdWx0cyBpbnRvIFNUQVRVUy4KIFJldHVybiB0aGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmVuJ3QgYmVlbiBoYW5kbGVkLiIKLSAgKGxldCAoKHJlbWFpbmluZyAoY29weS1zZXF1ZW5jZSBmaWxlcykpCi0JaW5mb2xpc3QpCisgIChsZXQgKGluZm9saXN0KQogICAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAibHMtZmlsZXMiICIteiIgIi1zIiAiLWMiICItLSIgZmlsZXMpCisgICAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzIHQgImxzLWZpbGVzIiAiLXoiICItcyIgIi1jIiAiLS0iIGZpbGVzKQogICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxcKFswLTddXFx7NlxcfVxcKSBbMC05YS1mXVxcezQwXFx9IDBcdFxcKFteXDBdK1xcKVwwIiBuaWwgdCkKIAkobGV0KiAoKG5ldy1wZXJtIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMSkgOCkpCiAJICAgICAgIChvbGQtcGVybSAoaWYgKGVxIGRlZmF1bHQtc3RhdGUgJ2FkZGVkKSAwIG5ldy1wZXJtKSkKIAkgICAgICAgKG5hbWUgKG1hdGNoLXN0cmluZyAyKSkpCi0JICAocHVzaCAoZ2l0LWNyZWF0ZS1maWxlaW5mbyBkZWZhdWx0LXN0YXRlIG5hbWUgb2xkLXBlcm0gbmV3LXBlcm0pIGluZm9saXN0KQotCSAgKHNldHEgcmVtYWluaW5nIChkZWxldGUgbmFtZSByZW1haW5pbmcpKSkpKQotICAgIChnaXQtaW5zZXJ0LWluZm8tbGlzdCBzdGF0dXMgaW5mb2xpc3QpCi0gICAgcmVtYWluaW5nKSkKKwkgIChwdXNoIChnaXQtY3JlYXRlLWZpbGVpbmZvIGRlZmF1bHQtc3RhdGUgbmFtZSBvbGQtcGVybSBuZXctcGVybSkgaW5mb2xpc3QpKSkpCisgICAgKHNldHEgaW5mb2xpc3QgKG5yZXZlcnNlIGluZm9saXN0KSkgIDs7IGFzc3VtZSBpdCBpcyBzb3J0ZWQgYWxyZWFkeQorICAgIChnaXQtaW5zZXJ0LWluZm8tbGlzdCBzdGF0dXMgaW5mb2xpc3QgZmlsZXMpKSkKIAogKGRlZnVuIGdpdC1ydW4tbHMtdW5tZXJnZWQgKHN0YXR1cyBmaWxlcykKICAgIlJ1biBnaXQtbHMtZmlsZXMgLXUgb24gRklMRVMgYW5kIHBhcnNlIHRoZSByZXN1bHRzIGludG8gU1RBVFVTLiIKICAgKHdpdGgtdGVtcC1idWZmZXIKLSAgICAoYXBwbHkgIydnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAibHMtZmlsZXMiICIteiIgIi11IiAiLS0iIGZpbGVzKQorICAgIChhcHBseSAjJ2dpdC1jYWxsLXByb2Nlc3MgdCAibHMtZmlsZXMiICIteiIgIi11IiAiLS0iIGZpbGVzKQogICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgKGxldCAodW5tZXJnZWQtZmlsZXMpCiAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJbMC03XVxcezZcXH0gWzAtOWEtZl1cXHs0MFxcfSBbMTIzXVx0XFwoW15cMF0rXFwpXDAiIG5pbCB0KQpAQCAtNzMyLDExICs3NTIsMTcgQEAKICAgICAgICAgICAgKGNvbmNhdCAiLS1leGNsdWRlLXBlci1kaXJlY3Rvcnk9IiBnaXQtcGVyLWRpci1pZ25vcmUtZmlsZSkKICAgICAgICAgICAgKGFwcGVuZCBvcHRpb25zIChtYXBjYXIgKGxhbWJkYSAoZikgKGNvbmNhdCAiLS1leGNsdWRlLWZyb209IiBmKSkgZXhjbHVkZS1maWxlcykpKSkpCiAKLShkZWZ1biBnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyAoZmlsZXMgJm9wdGlvbmFsIGRlZmF1bHQtc3RhdGUpCisoZGVmdW4gZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgKCZvcHRpb25hbCBmaWxlcyBtYXJrLWZpbGVzKQogICAiVXBkYXRlIHRoZSBzdGF0dXMgb2YgRklMRVMgZnJvbSB0aGUgaW5kZXguIgogICAodW5sZXNzIGdpdC1zdGF0dXMgKGVycm9yICJOb3QgaW4gZ2l0LXN0YXR1cyBidWZmZXIuIikpCi0gICh3aGVuIChvciBnaXQtc2hvdy11cHRvZGF0ZSBmaWxlcykKLSAgICAoZ2l0LXJ1bi1scy1maWxlcy1jYWNoZWQgZ2l0LXN0YXR1cyBmaWxlcyAndXB0b2RhdGUpKQorICA7OyBzZXQgdGhlIG5lZWRzLXVwZGF0ZSBmbGFnIG9uIGV4aXN0aW5nIGZpbGVzCisgIChpZiAoc2V0cSBmaWxlcyAoc29ydCBmaWxlcyAjJ3N0cmluZy1sZXNzcCkpCisgICAgICAoZ2l0LXN0YXR1cy1maWxlbmFtZXMtbWFwCisgICAgICAgZ2l0LXN0YXR1cyAobGFtYmRhIChpbmZvKSAoc2V0ZiAoZ2l0LWZpbGVpbmZvLT5uZWVkcy11cGRhdGUgaW5mbykgdCkpIGZpbGVzKQorICAgIChld29jLW1hcCAobGFtYmRhIChpbmZvKSAoc2V0ZiAoZ2l0LWZpbGVpbmZvLT5uZWVkcy11cGRhdGUgaW5mbykgdCkgbmlsKSBnaXQtc3RhdHVzKQorICAgIChnaXQtY2FsbC1wcm9jZXNzIG5pbCAidXBkYXRlLWluZGV4IiAiLS1yZWZyZXNoIikKKyAgICAod2hlbiBnaXQtc2hvdy11cHRvZGF0ZQorICAgICAgKGdpdC1ydW4tbHMtZmlsZXMtY2FjaGVkIGdpdC1zdGF0dXMgbmlsICd1cHRvZGF0ZSkpKQogICAobGV0KiAoKHJlbWFpbmluZy1maWxlcwogICAgICAgICAgIChpZiAoZ2l0LWVtcHR5LWRiLXApIDsgd2UgbmVlZCBzb21lIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGFuIGVtcHR5IGRiCiAJICAgICAgKGdpdC1ydW4tbHMtZmlsZXMtY2FjaGVkIGdpdC1zdGF0dXMgZmlsZXMgJ2FkZGVkKQpAQCAtNzQ2LDEzICs3NzIsMTcgQEAKICAgICAgIChzZXRxIHJlbWFpbmluZy1maWxlcyAoZ2l0LXJ1bi1scy1maWxlcy13aXRoLWV4Y2x1ZGVzIGdpdC1zdGF0dXMgcmVtYWluaW5nLWZpbGVzICd1bmtub3duICItbyIpKSkKICAgICAod2hlbiAob3IgcmVtYWluaW5nLWZpbGVzIChhbmQgZ2l0LXNob3ctaWdub3JlZCAobm90IGZpbGVzKSkpCiAgICAgICAoc2V0cSByZW1haW5pbmctZmlsZXMgKGdpdC1ydW4tbHMtZmlsZXMtd2l0aC1leGNsdWRlcyBnaXQtc3RhdHVzIHJlbWFpbmluZy1maWxlcyAnaWdub3JlZCAiLW8iICItaSIpKSkKLSAgICAoZ2l0LXNldC1maWxlbmFtZXMtc3RhdGUgZ2l0LXN0YXR1cyByZW1haW5pbmctZmlsZXMgZGVmYXVsdC1zdGF0ZSkKKyAgICAodW5sZXNzIGZpbGVzCisgICAgICAoc2V0cSByZW1haW5pbmctZmlsZXMgKGdpdC1nZXQtZmlsZW5hbWVzIChld29jLWNvbGxlY3QgZ2l0LXN0YXR1cyAjJ2dpdC1maWxlaW5mby0+bmVlZHMtdXBkYXRlKSkpKQorICAgICh3aGVuIHJlbWFpbmluZy1maWxlcworICAgICAgKHNldHEgcmVtYWluaW5nLWZpbGVzIChnaXQtcnVuLWxzLWZpbGVzLWNhY2hlZCBnaXQtc3RhdHVzIHJlbWFpbmluZy1maWxlcyAndXB0b2RhdGUpKSkKKyAgICAoZ2l0LXNldC1maWxlbmFtZXMtc3RhdGUgZ2l0LXN0YXR1cyByZW1haW5pbmctZmlsZXMgbmlsKQorICAgICh3aGVuIG1hcmstZmlsZXMgKGdpdC1tYXJrLWZpbGVzIGdpdC1zdGF0dXMgZmlsZXMpKQogICAgIChnaXQtcmVmcmVzaC1maWxlcykKICAgICAoZ2l0LXJlZnJlc2gtZXdvYy1oZiBnaXQtc3RhdHVzKSkpCiAKIChkZWZ1biBnaXQtbWFyay1maWxlcyAoc3RhdHVzIGZpbGVzKQogICAiTWFyayBhbGwgdGhlIHNwZWNpZmllZCBGSUxFUywgYW5kIHVubWFyayB0aGUgb3RoZXJzLiIKLSAgKHNldHEgZmlsZXMgKHNvcnQgZmlsZXMgIydzdHJpbmctbGVzc3ApKQogICAobGV0ICgoZmlsZSAoYW5kIGZpbGVzIChwb3AgZmlsZXMpKSkKICAgICAgICAgKG5vZGUgKGV3b2MtbnRoIHN0YXR1cyAwKSkpCiAgICAgKHdoaWxlIG5vZGUKQEAgLTgyNCwxOSArODU0LDE4IEBACiAKIChkZWZ1biBnaXQtdXBkYXRlLWluZGV4IChpbmRleC1maWxlIGZpbGVzKQogICAiUnVuIGdpdC11cGRhdGUtaW5kZXggb24gYSBsaXN0IG9mIGZpbGVzLiIKLSAgKGxldCAoKGVudiAoYW5kIGluZGV4LWZpbGUgYCgoIkdJVF9JTkRFWF9GSUxFIiAuICxpbmRleC1maWxlKSkpKQorICAobGV0ICgocHJvY2Vzcy1lbnZpcm9ubWVudCAoYXBwZW5kIChhbmQgaW5kZXgtZmlsZSAobGlzdCAoY29uY2F0ICJHSVRfSU5ERVhfRklMRT0iIGluZGV4LWZpbGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLWVudmlyb25tZW50KSkKICAgICAgICAgYWRkZWQgZGVsZXRlZCBtb2RpZmllZCkKICAgICAoZG9saXN0IChpbmZvIGZpbGVzKQogICAgICAgKGNhc2UgKGdpdC1maWxlaW5mby0+c3RhdGUgaW5mbykKICAgICAgICAgKCdhZGRlZCAocHVzaCBpbmZvIGFkZGVkKSkKICAgICAgICAgKCdkZWxldGVkIChwdXNoIGluZm8gZGVsZXRlZCkpCiAgICAgICAgICgnbW9kaWZpZWQgKHB1c2ggaW5mbyBtb2RpZmllZCkpKSkKLSAgICAod2hlbiBhZGRlZAotICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIGVudiAidXBkYXRlLWluZGV4IiAiLS1hZGQiICItLSIgKGdpdC1nZXQtZmlsZW5hbWVzIGFkZGVkKSkpCi0gICAgKHdoZW4gZGVsZXRlZAotICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIGVudiAidXBkYXRlLWluZGV4IiAiLS1yZW1vdmUiICItLSIgKGdpdC1nZXQtZmlsZW5hbWVzIGRlbGV0ZWQpKSkKLSAgICAod2hlbiBtb2RpZmllZAotICAgICAgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIGVudiAidXBkYXRlLWluZGV4IiAiLS0iIChnaXQtZ2V0LWZpbGVuYW1lcyBtb2RpZmllZCkpKSkpCisgICAgKGFuZAorICAgICAob3IgKG5vdCBhZGRlZCkgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLWFkZCIgIi0tIiAoZ2l0LWdldC1maWxlbmFtZXMgYWRkZWQpKSkKKyAgICAgKG9yIChub3QgZGVsZXRlZCkgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLXJlbW92ZSIgIi0tIiAoZ2l0LWdldC1maWxlbmFtZXMgZGVsZXRlZCkpKQorICAgICAob3IgKG5vdCBtb2RpZmllZCkgKGFwcGx5ICMnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLSIgKGdpdC1nZXQtZmlsZW5hbWVzIG1vZGlmaWVkKSkpKSkpCiAKIChkZWZ1biBnaXQtcnVuLXByZS1jb21taXQtaG9vayAoKQogICAiUnVuIHRoZSBwcmUtY29tbWl0IGhvb2sgaWYgYW55LiIKQEAgLTg2MiwzMyArODkxLDMwIEBACiAgICAgICAgICAgKG1lc3NhZ2UgIllvdSBjYW5ub3QgY29tbWl0IHVubWVyZ2VkIGZpbGVzLCByZXNvbHZlIHRoZW0gZmlyc3QuIikKICAgICAgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgICAgICAobGV0ICgoZmlsZXMgKGdpdC1tYXJrZWQtZmlsZXMtc3RhdGUgJ2FkZGVkICdkZWxldGVkICdtb2RpZmllZCkpCi0gICAgICAgICAgICAgICAgICBoZWFkIGhlYWQtdHJlZSkKKyAgICAgICAgICAgICAgICAgIGhlYWQgdHJlZSBoZWFkLXRyZWUpCiAgICAgICAgICAgICAgICh1bmxlc3MgKGdpdC1lbXB0eS1kYi1wKQogICAgICAgICAgICAgICAgIChzZXRxIGhlYWQgKGdpdC1yZXYtcGFyc2UgIkhFQUQiKQogICAgICAgICAgICAgICAgICAgICAgIGhlYWQtdHJlZSAoZ2l0LXJldi1wYXJzZSAiSEVBRF57dHJlZX0iKSkpCi0gICAgICAgICAgICAgIChpZiBmaWxlcwotICAgICAgICAgICAgICAgICAgKHByb2duCi0gICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJSdW5uaW5nIGdpdCBjb21taXQuLi4iKQotICAgICAgICAgICAgICAgICAgICAoZ2l0LXJlYWQtdHJlZSBoZWFkLXRyZWUgaW5kZXgtZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgKGdpdC11cGRhdGUtaW5kZXggbmlsIGZpbGVzKSAgICAgICAgIDt1cGRhdGUgYm90aCB0aGUgZGVmYXVsdCBpbmRleAotICAgICAgICAgICAgICAgICAgICAoZ2l0LXVwZGF0ZS1pbmRleCBpbmRleC1maWxlIGZpbGVzKSAgO2FuZCB0aGUgdGVtcG9yYXJ5IG9uZQotICAgICAgICAgICAgICAgICAgICAobGV0ICgodHJlZSAoZ2l0LXdyaXRlLXRyZWUgaW5kZXgtZmlsZSkpKQotICAgICAgICAgICAgICAgICAgICAgIChpZiAob3IgKG5vdCAoc3RyaW5nLWVxdWFsIHRyZWUgaGVhZC10cmVlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ZXMtb3Itbm8tcCAiVGhlIHRyZWUgd2FzIG5vdCBtb2RpZmllZCwgZG8geW91IHJlYWxseSB3YW50IHRvIHBlcmZvcm0gYW4gZW1wdHkgY29tbWl0PyAiKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNvbW1pdCAoZ2l0LWNvbW1pdC10cmVlIGJ1ZmZlciB0cmVlIGhlYWQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBjb21taXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwgKGRlbGV0ZS1maWxlICIuZ2l0L01FUkdFX0hFQUQiKSAoZXJyb3IgbmlsKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwgKGRlbGV0ZS1maWxlICIuZ2l0L01FUkdFX01TRyIpIChlcnJvciBuaWwpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyIChlcmFzZS1idWZmZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChnaXQtZ2V0LWZpbGVuYW1lcyBmaWxlcykgJ3VwdG9kYXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1jYWxsLXByb2Nlc3MtZW52IG5pbCBuaWwgInJlcmVyZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIG5pbCAiZ2MiICItLWF1dG8iKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1yZWZyZXNoLWZpbGVzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1yZWZyZXNoLWV3b2MtaGYgZ2l0LXN0YXR1cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJDb21taXR0ZWQgJXMuIiBjb21taXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LXJ1bi1ob29rICJwb3N0LWNvbW1pdCIgbmlsKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiQ29tbWl0IGFib3J0ZWQuIikpKSkKLSAgICAgICAgICAgICAgICAobWVzc2FnZSAiTm8gZmlsZXMgdG8gY29tbWl0LiIpKSkKKyAgICAgICAgICAgICAgKG1lc3NhZ2UgIlJ1bm5pbmcgZ2l0IGNvbW1pdC4uLiIpCisgICAgICAgICAgICAgICh3aGVuCisgICAgICAgICAgICAgICAgICAoYW5kCisgICAgICAgICAgICAgICAgICAgKGdpdC1yZWFkLXRyZWUgaGVhZC10cmVlIGluZGV4LWZpbGUpCisgICAgICAgICAgICAgICAgICAgKGdpdC11cGRhdGUtaW5kZXggbmlsIGZpbGVzKSAgICAgICAgIDt1cGRhdGUgYm90aCB0aGUgZGVmYXVsdCBpbmRleAorICAgICAgICAgICAgICAgICAgIChnaXQtdXBkYXRlLWluZGV4IGluZGV4LWZpbGUgZmlsZXMpICA7YW5kIHRoZSB0ZW1wb3Jhcnkgb25lCisgICAgICAgICAgICAgICAgICAgKHNldHEgdHJlZSAoZ2l0LXdyaXRlLXRyZWUgaW5kZXgtZmlsZSkpKQorICAgICAgICAgICAgICAgIChpZiAob3IgKG5vdCAoc3RyaW5nLWVxdWFsIHRyZWUgaGVhZC10cmVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICh5ZXMtb3Itbm8tcCAiVGhlIHRyZWUgd2FzIG5vdCBtb2RpZmllZCwgZG8geW91IHJlYWxseSB3YW50IHRvIHBlcmZvcm0gYW4gZW1wdHkgY29tbWl0PyAiKSkKKyAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNvbW1pdCAoZ2l0LWNvbW1pdC10cmVlIGJ1ZmZlciB0cmVlIGhlYWQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAod2hlbiBjb21taXQKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwgKGRlbGV0ZS1maWxlICIuZ2l0L01FUkdFX0hFQUQiKSAoZXJyb3IgbmlsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwgKGRlbGV0ZS1maWxlICIuZ2l0L01FUkdFX01TRyIpIChlcnJvciBuaWwpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyIChlcmFzZS1idWZmZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChnaXQtZ2V0LWZpbGVuYW1lcyBmaWxlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2VzcyBuaWwgInJlcmVyZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2VzcyBuaWwgImdjIiAiLS1hdXRvIikKKyAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJDb21taXR0ZWQgJXMuIiBjb21taXQpCisgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LXJ1bi1ob29rICJwb3N0LWNvbW1pdCIgbmlsKSkpCisgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiQ29tbWl0IGFib3J0ZWQuIikpKSkKICAgICAgICAgICAoZGVsZXRlLWZpbGUgaW5kZXgtZmlsZSkpKSkpKQogCiAKQEAgLTk5MCw2ICsxMDE2LDExIEBACiAgICAgICAoc2V0cSBub2RlIChld29jLXByZXYgZ2l0LXN0YXR1cyBub2RlKSkpCiAgICAgKGV3b2MtZ290by1ub2RlIGdpdC1zdGF0dXMgbGFzdCkpKQogCisoZGVmdW4gZ2l0LWluc2VydC1maWxlIChmaWxlKQorICAiSW5zZXJ0IGZpbGUocykgaW50byB0aGUgZ2l0LXN0YXR1cyBidWZmZXIuIgorICAoaW50ZXJhY3RpdmUgImZJbnNlcnQgZmlsZTogIikKKyAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChsaXN0IChmaWxlLXJlbGF0aXZlLW5hbWUgZmlsZSkpKSkKKwogKGRlZnVuIGdpdC1hZGQtZmlsZSAoKQogICAiQWRkIG1hcmtlZCBmaWxlKHMpIHRvIHRoZSBpbmRleCBjYWNoZS4iCiAgIChpbnRlcmFjdGl2ZSkKQEAgLTk5OCw3ICsxMDI5LDcgQEAKICAgICAodW5sZXNzIGZpbGVzCiAgICAgICAocHVzaCAoZmlsZS1yZWxhdGl2ZS1uYW1lIChyZWFkLWZpbGUtbmFtZSAiRmlsZSB0byBhZGQ6ICIgbmlsIG5pbCB0KSkgZmlsZXMpKQogICAgICh3aGVuIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLWFkZCIgIi0tIiBmaWxlcykKLSAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcyAndXB0b2RhdGUpCisgICAgICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgZmlsZXMpCiAgICAgICAoZ2l0LXN1Y2Nlc3MtbWVzc2FnZSAiQWRkZWQiIGZpbGVzKSkpKQogCiAoZGVmdW4gZ2l0LWlnbm9yZS1maWxlICgpCkBAIC0xMDA4LDcgKzEwMzksNyBAQAogICAgICh1bmxlc3MgZmlsZXMKICAgICAgIChwdXNoIChmaWxlLXJlbGF0aXZlLW5hbWUgKHJlYWQtZmlsZS1uYW1lICJGaWxlIHRvIGlnbm9yZTogIiBuaWwgbmlsIHQpKSBmaWxlcykpCiAgICAgKGRvbGlzdCAoZiBmaWxlcykgKGdpdC1hcHBlbmQtdG8taWdub3JlIGYpKQotICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcyAnaWdub3JlZCkKKyAgICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgZmlsZXMpCiAgICAgKGdpdC1zdWNjZXNzLW1lc3NhZ2UgIklnbm9yZWQiIGZpbGVzKSkpCiAKIChkZWZ1biBnaXQtcmVtb3ZlLWZpbGUgKCkKQEAgLTEwMjYsNyArMTA1Nyw3IEBACiAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWRpcmVjdG9yeSBuYW1lKQogICAgICAgICAgICAgICAgIChkZWxldGUtZmlsZSBuYW1lKSkpKQogICAgICAgICAgICh3aGVuIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLXJlbW92ZSIgIi0tIiBmaWxlcykKLSAgICAgICAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcyBuaWwpCisgICAgICAgICAgICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgZmlsZXMpCiAgICAgICAgICAgICAoZ2l0LXN1Y2Nlc3MtbWVzc2FnZSAiUmVtb3ZlZCIgZmlsZXMpKSkKICAgICAgIChtZXNzYWdlICJBYm9ydGluZyIpKSkpCiAKQEAgLTEwNTQsNyArMTA4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAoYXBwbHkgJ2dpdC1jYWxsLXByb2Nlc3MtZGlzcGxheS1lcnJvciAidXBkYXRlLWluZGV4IiAiLS1mb3JjZS1yZW1vdmUiICItLSIgYWRkZWQpKQogICAgICAgICAgICAgICAgICAob3IgKG5vdCBtb2RpZmllZCkKICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJjaGVja291dCIgIkhFQUQiIG1vZGlmaWVkKSkpKSkKLSAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChhcHBlbmQgYWRkZWQgbW9kaWZpZWQpICd1cHRvZGF0ZSkKKyAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChhcHBlbmQgYWRkZWQgbW9kaWZpZWQpKQogICAgICAgICAod2hlbiBvawogICAgICAgICAgIChkb2xpc3QgKGZpbGUgbW9kaWZpZWQpCiAgICAgICAgICAgICAobGV0ICgoYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgZmlsZSkpKQpAQCAtMTA2Nyw3ICsxMDk4LDcgQEAKICAgKGxldCAoKGZpbGVzIChnaXQtZ2V0LWZpbGVuYW1lcyAoZ2l0LW1hcmtlZC1maWxlcy1zdGF0ZSAndW5tZXJnZWQpKSkpCiAgICAgKHdoZW4gZmlsZXMKICAgICAgICh3aGVuIChhcHBseSAnZ2l0LWNhbGwtcHJvY2Vzcy1kaXNwbGF5LWVycm9yICJ1cGRhdGUtaW5kZXgiICItLSIgZmlsZXMpCi0gICAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcyAndXB0b2RhdGUpCisgICAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyBmaWxlcykKICAgICAgICAgKGdpdC1zdWNjZXNzLW1lc3NhZ2UgIlJlc29sdmVkIiBmaWxlcykpKSkpCiAKIChkZWZ1biBnaXQtcmVtb3ZlLWhhbmRsZWQgKCkKQEAgLTEyMjUsMTEgKzEyNTYsMTAgQEAKICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAoaW5zZXJ0IHNpZ24tb2ZmICJcbiIpKSkpCiAKLShkZWZ1biBnaXQtc2V0dXAtbG9nLWJ1ZmZlciAoYnVmZmVyICZvcHRpb25hbCBhdXRob3ItbmFtZSBhdXRob3ItZW1haWwgc3ViamVjdCBkYXRlIG1zZykKKyhkZWZ1biBnaXQtc2V0dXAtbG9nLWJ1ZmZlciAoYnVmZmVyICZvcHRpb25hbCBtZXJnZS1oZWFkcyBhdXRob3ItbmFtZSBhdXRob3ItZW1haWwgc3ViamVjdCBkYXRlIG1zZykKICAgIlNldHVwIHRoZSBsb2cgYnVmZmVyIGZvciBhIGNvbW1pdC4iCiAgICh1bmxlc3MgZ2l0LXN0YXR1cyAoZXJyb3IgIk5vdCBpbiBnaXQtc3RhdHVzIGJ1ZmZlci4iKSkKLSAgKGxldCAoKG1lcmdlLWhlYWRzIChnaXQtZ2V0LW1lcmdlLWhlYWRzKSkKLSAgICAgICAgKGRpciBkZWZhdWx0LWRpcmVjdG9yeSkKKyAgKGxldCAoKGRpciBkZWZhdWx0LWRpcmVjdG9yeSkKICAgICAgICAgKGNvbW1pdHRlci1uYW1lIChnaXQtZ2V0LWNvbW1pdHRlci1uYW1lKSkKICAgICAgICAgKGNvbW1pdHRlci1lbWFpbCAoZ2l0LWdldC1jb21taXR0ZXItZW1haWwpKQogICAgICAgICAoc2lnbi1vZmYgZ2l0LWFwcGVuZC1zaWduZWQtb2ZmLWJ5KSkKQEAgLTEyNDMsOSArMTI3Myw4IEBACiAgICAgICAgICAgICAgICAgKG9yIGF1dGhvci1lbWFpbCBjb21taXR0ZXItZW1haWwpCiAgICAgICAgICAgICAgICAgKGlmIGRhdGUgKGZvcm1hdCAiRGF0ZTogJXNcbiIgZGF0ZSkgIiIpCiAgICAgICAgICAgICAgICAgKGlmIG1lcmdlLWhlYWRzCi0gICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIlBhcmVudDogJXNcbiVzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdpdC1yZXYtcGFyc2UgIkhFQUQiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgKGxhbWJkYSAoc3RyKSAoY29uY2F0ICJQYXJlbnQ6ICIgc3RyKSkgbWVyZ2UtaGVhZHMgIlxuIikpCisgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIk1lcmdlOiAlc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgJ2lkZW50aXR5IG1lcmdlLWhlYWRzICIgIikpCiAgICAgICAgICAgICAgICAgICAiIikpCiAgICAgICAgICdmYWNlICdnaXQtaGVhZGVyLWZhY2UpCiAgICAgICAgKHByb3BlcnRpemUgZ2l0LWxvZy1tc2ctc2VwYXJhdG9yICdmYWNlICdnaXQtc2VwYXJhdG9yLWZhY2UpCkBAIC0xMjg1LDcgKzEzMTQsNyBAQAogICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAgICAgICh3aGVuIChyZS1zZWFyY2gtZm9yd2FyZCAiXkRhdGU6IFxcKC4qXFwpJCIgbmlsIHQpCiAgICAgICAgICAgICAgIChzZXRxIGRhdGUgKG1hdGNoLXN0cmluZyAxKSkpKSkKLSAgICAgICAgKGdpdC1zZXR1cC1sb2ctYnVmZmVyIGJ1ZmZlciBhdXRob3ItbmFtZSBhdXRob3ItZW1haWwgc3ViamVjdCBkYXRlKSkKKyAgICAgICAgKGdpdC1zZXR1cC1sb2ctYnVmZmVyIGJ1ZmZlciAoZ2l0LWdldC1tZXJnZS1oZWFkcykgYXV0aG9yLW5hbWUgYXV0aG9yLWVtYWlsIHN1YmplY3QgZGF0ZSkpCiAgICAgICAoaWYgKGJvdW5kcCAnbG9nLWVkaXQtZGlmZi1mdW5jdGlvbikKIAkgIChsb2ctZWRpdCAnZ2l0LWRvLWNvbW1pdCBuaWwgJygobG9nLWVkaXQtbGlzdGZ1biAuIGdpdC1sb2ctZWRpdC1maWxlcykKIAkJCQkJIChsb2ctZWRpdC1kaWZmLWZ1bmN0aW9uIC4gZ2l0LWxvZy1lZGl0LWRpZmYpKSBidWZmZXIpCkBAIC0xMjk2LDExICsxMzI1LDEzIEBACiAKIChkZWZ1biBnaXQtc2V0dXAtY29tbWl0LWJ1ZmZlciAoY29tbWl0KQogICAiU2V0dXAgdGhlIGNvbW1pdCBidWZmZXIgd2l0aCB0aGUgY29udGVudHMgb2YgQ09NTUlULiIKLSAgKGxldCAoYXV0aG9yLW5hbWUgYXV0aG9yLWVtYWlsIHN1YmplY3QgZGF0ZSBtc2cpCisgIChsZXQgKHBhcmVudHMgYXV0aG9yLW5hbWUgYXV0aG9yLWVtYWlsIHN1YmplY3QgZGF0ZSBtc2cpCiAgICAgKHdpdGgtdGVtcC1idWZmZXIKICAgICAgIChsZXQgKChjb2Rpbmctc3lzdGVtIChnaXQtZ2V0LWxvZ291dHB1dC1jb2Rpbmctc3lzdGVtKSkpCi0gICAgICAgIChnaXQtY2FsbC1wcm9jZXNzLWVudiB0IG5pbCAibG9nIiAiLTEiICItLXByZXR0eT1tZWRpdW0iIGNvbW1pdCkKKyAgICAgICAgKGdpdC1jYWxsLXByb2Nlc3MgdCAibG9nIiAiLTEiICItLXByZXR0eT1tZWRpdW0iICItLWFiYnJldj00MCIgY29tbWl0KQogICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAod2hlbiAocmUtc2VhcmNoLWZvcndhcmQgIl5NZXJnZTogKlxcKC4qXFwpJCIgbmlsIHQpCisgICAgICAgICAgKHNldHEgcGFyZW50cyAoY2RyIChzcGxpdC1zdHJpbmcgKG1hdGNoLXN0cmluZyAxKSAiICsiKSkpKQogICAgICAgICAod2hlbiAocmUtc2VhcmNoLWZvcndhcmQgIl5BdXRob3I6ICpcXCguKlxcKSA8XFwoLipcXCk+JCIgbmlsIHQpCiAgICAgICAgICAgKHNldHEgYXV0aG9yLW5hbWUgKG1hdGNoLXN0cmluZyAxKSkKICAgICAgICAgICAoc2V0cSBhdXRob3ItZW1haWwgKG1hdGNoLXN0cmluZyAyKSkpCkBAIC0xMzEyLDE0ICsxMzQzLDE0IEBACiAgICAgICAgIChzZXRxIHN1YmplY3QgKHBvcCBtc2cpKQogICAgICAgICAod2hpbGUgKGFuZCBtc2cgKHplcm9wIChsZW5ndGggKGNhciBtc2cpKSkgKHBvcCBtc2cpKSkpKQogICAgIChnaXQtc2V0dXAtbG9nLWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipnaXQtY29tbWl0KiIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvci1uYW1lIGF1dGhvci1lbWFpbCBzdWJqZWN0IGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50cyBhdXRob3ItbmFtZSBhdXRob3ItZW1haWwgc3ViamVjdCBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgIydpZGVudGl0eSBtc2cgIlxuIikpKSkKIAogKGRlZnVuIGdpdC1nZXQtY29tbWl0LWZpbGVzIChjb21taXQpCiAgICJSZXRyaWV2ZSB0aGUgbGlzdCBvZiBmaWxlcyBtb2RpZmllZCBieSBDT01NSVQuIgogICAobGV0IChmaWxlcykKICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotICAgICAgKGdpdC1jYWxsLXByb2Nlc3MtZW52IHQgbmlsICJkaWZmLXRyZWUiICItciIgIi16IiAiLS1uYW1lLW9ubHkiICItLW5vLWNvbW1pdC1pZCIgY29tbWl0KQorICAgICAgKGdpdC1jYWxsLXByb2Nlc3MgdCAiZGlmZi10cmVlIiAiLW0iICItciIgIi16IiAiLS1uYW1lLW9ubHkiICItLW5vLWNvbW1pdC1pZCIgIi0tcm9vdCIgY29tbWl0KQogICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxcKFteXDBdKlxcKVwwIiBuaWwgdCAxKQogICAgICAgICAocHVzaCAobWF0Y2gtc3RyaW5nIDEpIGZpbGVzKSkpCkBAIC0xMzMzLDEwICsxMzY0LDExIEBACiAgICh3aGVuIChnaXQtZW1wdHktZGItcCkgKGVycm9yICJObyBjb21taXQgdG8gYW1lbmQuIikpCiAgIChsZXQqICgoY29tbWl0IChnaXQtcmV2LXBhcnNlICJIRUFEIikpCiAgICAgICAgICAoZmlsZXMgKGdpdC1nZXQtY29tbWl0LWZpbGVzIGNvbW1pdCkpKQotICAgICh3aGVuIChnaXQtY2FsbC1wcm9jZXNzLWRpc3BsYXktZXJyb3IgInJlc2V0IiAiLS1zb2Z0IiAiSEVBRF4iKQotICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChjb3B5LXNlcXVlbmNlIGZpbGVzKSAndXB0b2RhdGUpCi0gICAgICAoZ2l0LW1hcmstZmlsZXMgZ2l0LXN0YXR1cyBmaWxlcykKLSAgICAgIChnaXQtcmVmcmVzaC1maWxlcykKKyAgICAod2hlbiAoaWYgKGdpdC1yZXYtcGFyc2UgIkhFQUReIikKKyAgICAgICAgICAgICAgKGdpdC1jYWxsLXByb2Nlc3MtZGlzcGxheS1lcnJvciAicmVzZXQiICItLXNvZnQiICJIRUFEXiIpCisgICAgICAgICAgICAoYW5kIChnaXQtdXBkYXRlLXJlZiAiT1JJR19IRUFEIiBjb21taXQpCisgICAgICAgICAgICAgICAgIChnaXQtdXBkYXRlLXJlZiAiSEVBRCIgbmlsIGNvbW1pdCkpKQorICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIGZpbGVzIHQpCiAgICAgICAoZ2l0LXNldHVwLWNvbW1pdC1idWZmZXIgY29tbWl0KQogICAgICAgKGdpdC1jb21taXQtZmlsZSkpKSkKIApAQCAtMTM3NywyNyArMTQwOSwxMCBAQAogKGRlZnVuIGdpdC1yZWZyZXNoLXN0YXR1cyAoKQogICAiUmVmcmVzaCB0aGUgZ2l0IHN0YXR1cyBidWZmZXIuIgogICAoaW50ZXJhY3RpdmUpCi0gIChsZXQqICgoc3RhdHVzIGdpdC1zdGF0dXMpCi0gICAgICAgICAocG9zIChld29jLWxvY2F0ZSBzdGF0dXMpKQotICAgICAgICAgKG1hcmtlZC1maWxlcyAoZ2l0LWdldC1maWxlbmFtZXMgKGV3b2MtY29sbGVjdCBzdGF0dXMgKGxhbWJkYSAoaW5mbykgKGdpdC1maWxlaW5mby0+bWFya2VkIGluZm8pKSkpKQotICAgICAgICAgKGN1ci1uYW1lIChhbmQgcG9zIChnaXQtZmlsZWluZm8tPm5hbWUgKGV3b2MtZGF0YSBwb3MpKSkpKQotICAgICh1bmxlc3Mgc3RhdHVzIChlcnJvciAiTm90IGluIGdpdC1zdGF0dXMgYnVmZmVyLiIpKQotICAgIChtZXNzYWdlICJSZWZyZXNoaW5nIGdpdCBzdGF0dXMuLi4iKQotICAgIChnaXQtY2FsbC1wcm9jZXNzLWVudiBuaWwgbmlsICJ1cGRhdGUtaW5kZXgiICItLXJlZnJlc2giKQotICAgIChnaXQtY2xlYXItc3RhdHVzIHN0YXR1cykKLSAgICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMgbmlsKQotICAgIDsgcmVzdG9yZSBmaWxlIG1hcmtzCi0gICAgKHdoZW4gbWFya2VkLWZpbGVzCi0gICAgICAoZ2l0LXN0YXR1cy1maWxlbmFtZXMtbWFwIHN0YXR1cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpbmZvKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChnaXQtZmlsZWluZm8tPm1hcmtlZCBpbmZvKSB0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChnaXQtZmlsZWluZm8tPm5lZWRzLXJlZnJlc2ggaW5mbykgdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlZC1maWxlcykKLSAgICAgIChnaXQtcmVmcmVzaC1maWxlcykpCi0gICAgOyBtb3ZlIHBvaW50IHRvIHRoZSBjdXJyZW50IGZpbGUgbmFtZSBpZiBhbnkKLSAgICAobWVzc2FnZSAiUmVmcmVzaGluZyBnaXQgc3RhdHVzLi4uZG9uZSIpCi0gICAgKGxldCAoKG5vZGUgKGFuZCBjdXItbmFtZSAoZ2l0LWZpbmQtc3RhdHVzLWZpbGUgc3RhdHVzIGN1ci1uYW1lKSkpKQotICAgICAgKHdoZW4gbm9kZSAoZXdvYy1nb3RvLW5vZGUgc3RhdHVzIG5vZGUpKSkpKQorICAodW5sZXNzIGdpdC1zdGF0dXMgKGVycm9yICJOb3QgaW4gZ2l0LXN0YXR1cyBidWZmZXIuIikpCisgIChtZXNzYWdlICJSZWZyZXNoaW5nIGdpdCBzdGF0dXMuLi4iKQorICAoZ2l0LXVwZGF0ZS1zdGF0dXMtZmlsZXMpCisgIChtZXNzYWdlICJSZWZyZXNoaW5nIGdpdCBzdGF0dXMuLi5kb25lIikpCiAKIChkZWZ1biBnaXQtc3RhdHVzLXF1aXQgKCkKICAgIlF1aXQgZ2l0LXN0YXR1cyBtb2RlLiIKQEAgLTE0MzQsNiArMTQ0OSw3IEBACiAgICAgKGRlZmluZS1rZXkgbWFwICJcciIgICdnaXQtZmluZC1maWxlKQogICAgIChkZWZpbmUta2V5IG1hcCAiZyIgICAnZ2l0LXJlZnJlc2gtc3RhdHVzKQogICAgIChkZWZpbmUta2V5IG1hcCAiaSIgICAnZ2l0LWlnbm9yZS1maWxlKQorICAgIChkZWZpbmUta2V5IG1hcCAiSSIgICAnZ2l0LWluc2VydC1maWxlKQogICAgIChkZWZpbmUta2V5IG1hcCAibCIgICAnZ2l0LWxvZy1maWxlKQogICAgIChkZWZpbmUta2V5IG1hcCAibSIgICAnZ2l0LW1hcmstZmlsZSkKICAgICAoZGVmaW5lLWtleSBtYXAgIk0iICAgJ2dpdC1tYXJrLWFsbCkKQEAgLTE0OTAsNiArMTUwNiw3IEBACiAgICAgICBbIlJldmVydCBGaWxlIiBnaXQtcmV2ZXJ0LWZpbGUgdF0KICAgICAgIFsiSWdub3JlIEZpbGUiIGdpdC1pZ25vcmUtZmlsZSB0XQogICAgICAgWyJSZW1vdmUgRmlsZSIgZ2l0LXJlbW92ZS1maWxlIHRdCisgICAgICBbIkluc2VydCBGaWxlIiBnaXQtaW5zZXJ0LWZpbGUgdF0KICAgICAgICItLS0tLS0tLSIKICAgICAgIFsiRmluZCBGaWxlIiBnaXQtZmluZC1maWxlIHRdCiAgICAgICBbIlZpZXcgRmlsZSIgZ2l0LXZpZXctZmlsZSB0XQpAQCAtMTU3Niw4ICsxNTkzLDggQEAKICAgICAgICAgKGxldCAoKGZpbGVuYW1lIChmaWxlLXJlbGF0aXZlLW5hbWUgZmlsZSBkaXIpKSkKICAgICAgICAgICA7IHNraXAgZmlsZXMgbG9jYXRlZCBpbnNpZGUgdGhlIC5naXQgZGlyZWN0b3J5CiAgICAgICAgICAgKHVubGVzcyAoc3RyaW5nLW1hdGNoICJeXFwuZ2l0LyIgZmlsZW5hbWUpCi0gICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2Vzcy1lbnYgbmlsIG5pbCAiYWRkIiAiLS1yZWZyZXNoIiAiLS0iIGZpbGVuYW1lKQotICAgICAgICAgICAgKGdpdC11cGRhdGUtc3RhdHVzLWZpbGVzIChsaXN0IGZpbGVuYW1lKSAndXB0b2RhdGUpKSkpKSkpCisgICAgICAgICAgICAoZ2l0LWNhbGwtcHJvY2VzcyBuaWwgImFkZCIgIi0tcmVmcmVzaCIgIi0tIiBmaWxlbmFtZSkKKyAgICAgICAgICAgIChnaXQtdXBkYXRlLXN0YXR1cy1maWxlcyAobGlzdCBmaWxlbmFtZSkpKSkpKSkpCiAKIChkZWZ1biBnaXQtaGVscCAoKQogICAiRGlzcGxheSBoZWxwIGZvciBHaXQgbW9kZS4iCmRpZmYgLS1naXQgYS9jb250cmliL2Zhc3QtaW1wb3J0L2dpdC1wNCBiL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LXA0CmluZGV4IDJiMTIyZDMuLmE4NWE3YjIgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LXA0CisrKyBiL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LXA0CkBAIC0yNDUsNyArMjQ1LDIyIEBACiBkZWYgcDRXaGVyZShkZXBvdFBhdGgpOgogICAgIGlmIG5vdCBkZXBvdFBhdGguZW5kc3dpdGgoIi8iKToKICAgICAgICAgZGVwb3RQYXRoICs9ICIvIgotICAgIG91dHB1dCA9IHA0Q21kKCJ3aGVyZSAlcy4uLiIgJSBkZXBvdFBhdGgpCisgICAgZGVwb3RQYXRoID0gZGVwb3RQYXRoICsgIi4uLiIKKyAgICBvdXRwdXRMaXN0ID0gcDRDbWRMaXN0KCJ3aGVyZSAlcyIgJSBkZXBvdFBhdGgpCisgICAgb3V0cHV0ID0gTm9uZQorICAgIGZvciBlbnRyeSBpbiBvdXRwdXRMaXN0OgorICAgICAgICBpZiAiZGVwb3RGaWxlIiBpbiBlbnRyeToKKyAgICAgICAgICAgIGlmIGVudHJ5WyJkZXBvdEZpbGUiXSA9PSBkZXBvdFBhdGg6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gZW50cnkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbGlmICJkYXRhIiBpbiBlbnRyeToKKyAgICAgICAgICAgIGRhdGEgPSBlbnRyeS5nZXQoImRhdGEiKQorICAgICAgICAgICAgc3BhY2UgPSBkYXRhLmZpbmQoIiAiKQorICAgICAgICAgICAgaWYgZGF0YVs6c3BhY2VdID09IGRlcG90UGF0aDoKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBlbnRyeQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgaWYgb3V0cHV0ID09IE5vbmU6CisgICAgICAgIHJldHVybiAiIgogICAgIGlmIG91dHB1dFsiY29kZSJdID09ICJlcnJvciI6CiAgICAgICAgIHJldHVybiAiIgogICAgIGNsaWVudFBhdGggPSAiIgpAQCAtMzE2LDggKzMzMSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpOwogICAgIHJldHVybiBwcm9jLndhaXQoKSA9PSAwOwogCitfZ2l0Q29uZmlnID0ge30KIGRlZiBnaXRDb25maWcoa2V5KToKLSAgICByZXR1cm4gcmVhZF9waXBlKCJnaXQgY29uZmlnICVzIiAlIGtleSwgaWdub3JlX2Vycm9yPVRydWUpLnN0cmlwKCkKKyAgICBpZiBub3QgX2dpdENvbmZpZy5oYXNfa2V5KGtleSk6CisgICAgICAgIF9naXRDb25maWdba2V5XSA9IHJlYWRfcGlwZSgiZ2l0IGNvbmZpZyAlcyIgJSBrZXksIGlnbm9yZV9lcnJvcj1UcnVlKS5zdHJpcCgpCisgICAgcmV0dXJuIF9naXRDb25maWdba2V5XQogCiBkZWYgcDRCcmFuY2hlc0luR2l0KGJyYW5jaGVzQXJlSW5SZW1vdGVzID0gVHJ1ZSk6CiAgICAgYnJhbmNoZXMgPSB7fQpAQCAtNzA4LDYgKzcyNiw3IEBACiAgICAgICAgICAgICAgICAgbmV3ZGlmZiA9IG5ld2RpZmYucmVwbGFjZSgiXG4iLCAiXHJcbiIpCiAgICAgICAgICAgICB0bXBGaWxlLndyaXRlKHN1Ym1pdFRlbXBsYXRlICsgc2VwYXJhdG9yTGluZSArIGRpZmYgKyBuZXdkaWZmKQogICAgICAgICAgICAgdG1wRmlsZS5jbG9zZSgpCisgICAgICAgICAgICBtdGltZSA9IG9zLnN0YXQoZmlsZU5hbWUpLnN0X210aW1lCiAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yID0gInZpIgogICAgICAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIldpbmRvd3MiOgogICAgICAgICAgICAgICAgIGRlZmF1bHRFZGl0b3IgPSAibm90ZXBhZCIKQEAgLTcxNiwxNSArNzM1LDI5IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVkaXRvciA9IG9zLmVudmlyb24uZ2V0KCJFRElUT1IiLCBkZWZhdWx0RWRpdG9yKTsKICAgICAgICAgICAgIHN5c3RlbShlZGl0b3IgKyAiICIgKyBmaWxlTmFtZSkKLSAgICAgICAgICAgIHRtcEZpbGUgPSBvcGVuKGZpbGVOYW1lLCAicmIiKQotICAgICAgICAgICAgbWVzc2FnZSA9IHRtcEZpbGUucmVhZCgpCi0gICAgICAgICAgICB0bXBGaWxlLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlTmFtZSkKLSAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gbWVzc2FnZVs6bWVzc2FnZS5pbmRleChzZXBhcmF0b3JMaW5lKV0KLSAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzOgotICAgICAgICAgICAgICAgIHN1Ym1pdFRlbXBsYXRlID0gc3VibWl0VGVtcGxhdGUucmVwbGFjZSgiXHJcbiIsICJcbiIpCiAKLSAgICAgICAgICAgIHA0X3dyaXRlX3BpcGUoInN1Ym1pdCAtaSIsIHN1Ym1pdFRlbXBsYXRlKQorICAgICAgICAgICAgcmVzcG9uc2UgPSAieSIKKyAgICAgICAgICAgIGlmIG9zLnN0YXQoZmlsZU5hbWUpLnN0X210aW1lIDw9IG10aW1lOgorICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gIngiCisgICAgICAgICAgICAgICAgd2hpbGUgcmVzcG9uc2UgIT0gInkiIGFuZCByZXNwb25zZSAhPSAibiI6CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmF3X2lucHV0KCJTdWJtaXQgdGVtcGxhdGUgdW5jaGFuZ2VkLiBTdWJtaXQgYW55d2F5PyBbeV1lcywgW25dbyAoc2tpcCB0aGlzIHBhdGNoKSAiKQorCisgICAgICAgICAgICBpZiByZXNwb25zZSA9PSAieSI6CisgICAgICAgICAgICAgICAgdG1wRmlsZSA9IG9wZW4oZmlsZU5hbWUsICJyYiIpCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHRtcEZpbGUucmVhZCgpCisgICAgICAgICAgICAgICAgdG1wRmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc3VibWl0VGVtcGxhdGUgPSBtZXNzYWdlWzptZXNzYWdlLmluZGV4KHNlcGFyYXRvckxpbmUpXQorICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzOgorICAgICAgICAgICAgICAgICAgICBzdWJtaXRUZW1wbGF0ZSA9IHN1Ym1pdFRlbXBsYXRlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQorICAgICAgICAgICAgICAgIHA0X3dyaXRlX3BpcGUoInN1Ym1pdCAtaSIsIHN1Ym1pdFRlbXBsYXRlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBlZGl0ZWRGaWxlczoKKyAgICAgICAgICAgICAgICAgICAgcDRfc3lzdGVtKCJyZXZlcnQgXCIlc1wiIiAlIGYpOworICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzVG9BZGQ6CisgICAgICAgICAgICAgICAgICAgIHA0X3N5c3RlbSgicmV2ZXJ0IFwiJXNcIiIgJSBmKTsKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtKCJybSAlcyIgJWYpCisKKyAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlTmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZpbGVOYW1lID0gInN1Ym1pdC50eHQiCiAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlTmFtZSwgIncrIikKQEAgLTkzMSw3ICs5NjQsNyBAQAogCiAgICAgICAgICAgICBpZiBpbmNsdWRlRmlsZToKICAgICAgICAgICAgICAgICBmaWxlc0ZvckNvbW1pdC5hcHBlbmQoZikKLSAgICAgICAgICAgICAgICBpZiBmWydhY3Rpb24nXSAhPSAnZGVsZXRlJzoKKyAgICAgICAgICAgICAgICBpZiBmWydhY3Rpb24nXSBub3QgaW4gKCdkZWxldGUnLCAncHVyZ2UnKToKICAgICAgICAgICAgICAgICAgICAgZmlsZXNUb1JlYWQuYXBwZW5kKGYpCiAKICAgICAgICAgZmlsZWRhdGEgPSBbXQpAQCAtOTUwLDExICs5ODMsMTEgQEAKICAgICAgICAgd2hpbGUgaiA8IGxlbihmaWxlZGF0YSk6CiAgICAgICAgICAgICBzdGF0ID0gZmlsZWRhdGFbal0KICAgICAgICAgICAgIGogKz0gMQotICAgICAgICAgICAgdGV4dCA9IFtdOworICAgICAgICAgICAgdGV4dCA9ICcnCiAgICAgICAgICAgICB3aGlsZSBqIDwgbGVuKGZpbGVkYXRhKSBhbmQgZmlsZWRhdGFbal1bJ2NvZGUnXSBpbiAoJ3RleHQnLCAndW5pY29kZScsICdiaW5hcnknKToKLSAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChmaWxlZGF0YVtqXVsnZGF0YSddKQorICAgICAgICAgICAgICAgIHRleHQgKz0gZmlsZWRhdGFbal1bJ2RhdGEnXQorICAgICAgICAgICAgICAgIGRlbCBmaWxlZGF0YVtqXVsnZGF0YSddCiAgICAgICAgICAgICAgICAgaiArPSAxCi0gICAgICAgICAgICB0ZXh0ID0gJycuam9pbih0ZXh0KQogCiAgICAgICAgICAgICBpZiBub3Qgc3RhdC5oYXNfa2V5KCdkZXBvdEZpbGUnKToKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJwNCBwcmludCBmYWlscyB3aXRoOiAlc1xuIiAlIHJlcHIoc3RhdCkpCkBAIC0xMDIzLDcgKzEwNTYsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIHJlbFBhdGggPSBzZWxmLnN0cmlwUmVwb1BhdGgoZmlsZVsncGF0aCddLCBicmFuY2hQcmVmaXhlcykKLSAgICAgICAgICAgIGlmIGZpbGVbImFjdGlvbiJdID09ICJkZWxldGUiOgorICAgICAgICAgICAgaWYgZmlsZVsiYWN0aW9uIl0gaW4gKCJkZWxldGUiLCAicHVyZ2UiKToKICAgICAgICAgICAgICAgICBzZWxmLmdpdFN0cmVhbS53cml0ZSgiRCAlc1xuIiAlIHJlbFBhdGgpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRhdGEgPSBmaWxlWydkYXRhJ10KQEAgLTEwNjIsNyArMTA5NSw3IEBACiAKICAgICAgICAgICAgICAgICBjbGVhbmVkRmlsZXMgPSB7fQogICAgICAgICAgICAgICAgIGZvciBpbmZvIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICBpZiBpbmZvWyJhY3Rpb24iXSA9PSAiZGVsZXRlIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5mb1siYWN0aW9uIl0gaW4gKCJkZWxldGUiLCAicHVyZ2UiKToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIGNsZWFuZWRGaWxlc1tpbmZvWyJkZXBvdEZpbGUiXV0gPSBpbmZvWyJyZXYiXQogCkBAIC0xMzg1LDcgKzE0MTgsNyBAQAogICAgICAgICAgICAgaWYgY2hhbmdlID4gbmV3ZXN0UmV2aXNpb246CiAgICAgICAgICAgICAgICAgbmV3ZXN0UmV2aXNpb24gPSBjaGFuZ2UKIAotICAgICAgICAgICAgaWYgaW5mb1siYWN0aW9uIl0gPT0gImRlbGV0ZSI6CisgICAgICAgICAgICBpZiBpbmZvWyJhY3Rpb24iXSBpbiAoImRlbGV0ZSIsICJwdXJnZSIpOgogICAgICAgICAgICAgICAgICMgZG9uJ3QgaW5jcmVhc2UgdGhlIGZpbGUgY250LCBvdGhlcndpc2UgZGV0YWlsc1siZGVwb3RGaWxlMTIzIl0gd2lsbCBoYXZlIGdhcHMhCiAgICAgICAgICAgICAgICAgI2ZpbGVDbnQgPSBmaWxlQ250ICsgMQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0xNzMzLDggKzE3NjYsMTIgQEAKICAgICAgICAgaWYgbm90IFA0U3luYy5ydW4oc2VsZiwgZGVwb3RQYXRocyk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgc2VsZi5icmFuY2ggIT0gIm1hc3RlciI6Ci0gICAgICAgICAgICBpZiBnaXRCcmFuY2hFeGlzdHMoInJlZnMvcmVtb3Rlcy9wNC9tYXN0ZXIiKToKLSAgICAgICAgICAgICAgICBzeXN0ZW0oImdpdCBicmFuY2ggbWFzdGVyIHJlZnMvcmVtb3Rlcy9wNC9tYXN0ZXIiKQorICAgICAgICAgICAgaWYgc2VsZi5pbXBvcnRJbnRvUmVtb3RlczoKKyAgICAgICAgICAgICAgICBtYXN0ZXJicmFuY2ggPSAicmVmcy9yZW1vdGVzL3A0L21hc3RlciIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWFzdGVyYnJhbmNoID0gInJlZnMvaGVhZHMvcDQvbWFzdGVyIgorICAgICAgICAgICAgaWYgZ2l0QnJhbmNoRXhpc3RzKG1hc3RlcmJyYW5jaCk6CisgICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgYnJhbmNoIG1hc3RlciAlcyIgJSBtYXN0ZXJicmFuY2gpCiAgICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgY2hlY2tvdXQgLWYiKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwcmludCAiQ291bGQgbm90IGRldGVjdCBtYWluIGJyYW5jaC4gTm8gY2hlY2tvdXQvbWFzdGVyIGJyYW5jaCBjcmVhdGVkLiIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsIGIvY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwKaW5kZXggNDEzNjg5NS4uMjhhM2MwZSAxMDA2NDQKLS0tIGEvY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwKKysrIGIvY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwKQEAgLTM4LDYgKzM4LDEyIEBACiAjIGhvb2tzLmVtYWlscHJlZml4CiAjICAgQWxsIGVtYWlscyBoYXZlIHRoZWlyIHN1YmplY3RzIHByZWZpeGVkIHdpdGggdGhpcyBwcmVmaXgsIG9yICJbU0NNXSIKICMgICBpZiBlbWFpbHByZWZpeCBpcyB1bnNldCwgdG8gYWlkIGZpbHRlcmluZworIyBob29rcy5zaG93cmV2CisjICAgVGhlIHNoZWxsIGNvbW1hbmQgdXNlZCB0byBmb3JtYXQgZWFjaCByZXZpc2lvbiBpbiB0aGUgZW1haWwsIHdpdGgKKyMgICAiJXMiIHJlcGxhY2VkIHdpdGggdGhlIGNvbW1pdCBpZC4gIERlZmF1bHRzIHRvICJnaXQgcmV2LWxpc3QgLTEKKyMgICAtLXByZXR0eSAlcyIsIGRpc3BsYXlpbmcgdGhlIGNvbW1pdCBpZCwgYXV0aG9yLCBkYXRlIGFuZCBsb2cKKyMgICBtZXNzYWdlLiAgVG8gbGlzdCBmdWxsIHBhdGNoZXMgc2VwYXJhdGVkIGJ5IGEgYmxhbmsgbGluZSwgeW91CisjICAgY291bGQgc2V0IHRoaXMgdG8gImdpdCBzaG93IC1DICVzOyBlY2hvIi4KICMKICMgTm90ZXMKICMgLS0tLS0KQEAgLTIyNCwxMyArMjMwLDcgQEAKIAllY2hvICIiCiAKIAllY2hvICRMT0dCRUdJTgotCSMgVGhpcyBzaG93cyBhbGwgbG9nIGVudHJpZXMgdGhhdCBhcmUgbm90IGFscmVhZHkgY292ZXJlZCBieQotCSMgYW5vdGhlciByZWYgLSBpLmUuIGNvbW1pdHMgdGhhdCBhcmUgbm93IGFjY2Vzc2libGUgZnJvbSB0aGlzCi0JIyByZWYgdGhhdCB3ZXJlIHByZXZpb3VzbHkgbm90IGFjY2Vzc2libGUKLQkjIChzZWUgZ2VuZXJhdGVfdXBkYXRlX2JyYW5jaF9lbWFpbCBmb3IgdGhlIGV4cGxhbmF0aW9uIG9mIHRoaXMKLQkjIGNvbW1hbmQpCi0JZ2l0IHJldi1wYXJzZSAtLW5vdCAtLWJyYW5jaGVzIHwgZ3JlcCAtdiAkKGdpdCByZXYtcGFyc2UgJHJlZm5hbWUpIHwKLQlnaXQgcmV2LWxpc3QgLS1wcmV0dHkgLS1zdGRpbiAkbmV3cmV2CisJc2hvd19uZXdfcmV2aXNpb25zCiAJZWNobyAkTE9HRU5ECiB9CiAKQEAgLTM5MCw4ICszOTAsNyBAQAogCiAJCWVjaG8gIiIKIAkJZWNobyAkTE9HQkVHSU4KLQkJZ2l0IHJldi1wYXJzZSAtLW5vdCAtLWJyYW5jaGVzIHwgZ3JlcCAtdiAkKGdpdCByZXYtcGFyc2UgJHJlZm5hbWUpIHwKLQkJZ2l0IHJldi1saXN0IC0tcHJldHR5IC0tc3RkaW4gJG9sZHJldi4uJG5ld3JldgorCQlzaG93X25ld19yZXZpc2lvbnMKIAogCQkjIFhYWDogTmVlZCBhIHdheSBvZiBkZXRlY3Rpbmcgd2hldGhlciBnaXQgcmV2LWxpc3QgYWN0dWFsbHkKIAkJIyBvdXRwdXR0ZWQgYW55dGhpbmcsIHNvIHRoYXQgd2UgY2FuIGlzc3VlIGEgIm5vIG5ldwpAQCAtNTkxLDYgKzU5MCw0NSBAQAogCWVjaG8gJExPR0VORAogfQogCisKKyMgLS0tLS0tLS0tLS0tLS0tIE1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzCisKKyMKKyMgU2hvdyBuZXcgcmV2aXNpb25zIGFzIHRoZSB1c2VyIHdvdWxkIGxpa2UgdG8gc2VlIHRoZW0gaW4gdGhlIGVtYWlsLgorIworc2hvd19uZXdfcmV2aXNpb25zKCkKK3sKKwkjIFRoaXMgc2hvd3MgYWxsIGxvZyBlbnRyaWVzIHRoYXQgYXJlIG5vdCBhbHJlYWR5IGNvdmVyZWQgYnkKKwkjIGFub3RoZXIgcmVmIC0gaS5lLiBjb21taXRzIHRoYXQgYXJlIG5vdyBhY2Nlc3NpYmxlIGZyb20gdGhpcworCSMgcmVmIHRoYXQgd2VyZSBwcmV2aW91c2x5IG5vdCBhY2Nlc3NpYmxlCisJIyAoc2VlIGdlbmVyYXRlX3VwZGF0ZV9icmFuY2hfZW1haWwgZm9yIHRoZSBleHBsYW5hdGlvbiBvZiB0aGlzCisJIyBjb21tYW5kKQorCisJIyBSZXZpc2lvbiByYW5nZSBwYXNzZWQgdG8gcmV2LWxpc3QgZGlmZmVycyBmb3IgbmV3IHZzLiB1cGRhdGVkCisJIyBicmFuY2hlcy4KKwlpZiBbICIkY2hhbmdlX3R5cGUiID0gY3JlYXRlIF0KKwl0aGVuCisJCSMgU2hvdyBhbGwgcmV2aXNpb25zIGV4Y2x1c2l2ZSB0byB0aGlzIChuZXcpIGJyYW5jaC4KKwkJcmV2c3BlYz0kbmV3cmV2CisJZWxzZQorCQkjIEJyYW5jaCB1cGRhdGU7IHNob3cgcmV2aXNpb25zIG5vdCBwYXJ0IG9mICRvbGRyZXYuCisJCXJldnNwZWM9JG9sZHJldi4uJG5ld3JldgorCWZpCisKKwlnaXQgcmV2LXBhcnNlIC0tbm90IC0tYnJhbmNoZXMgfCBncmVwIC12ICQoZ2l0IHJldi1wYXJzZSAkcmVmbmFtZSkgfAorCWlmIFsgLXogIiRjdXN0b21fc2hvd3JldiIgXQorCXRoZW4KKwkJZ2l0IHJldi1saXN0IC0tcHJldHR5IC0tc3RkaW4gJHJldnNwZWMKKwllbHNlCisJCWdpdCByZXYtbGlzdCAtLXN0ZGluICRyZXZzcGVjIHwKKwkJd2hpbGUgcmVhZCBvbmVyZXYKKwkJZG8KKwkJCWV2YWwgJChwcmludGYgIiRjdXN0b21fc2hvd3JldiIgJG9uZXJldikKKwkJZG9uZQorCWZpCit9CisKKwogc2VuZF9tYWlsKCkKIHsKIAlpZiBbIC1uICIkZW52ZWxvcGVzZW5kZXIiIF07IHRoZW4KQEAgLTYyNyw2ICs2NjUsNyBAQAogYW5ub3VuY2VyZWNpcGllbnRzPSQoZ2l0IGNvbmZpZyBob29rcy5hbm5vdW5jZWxpc3QpCiBlbnZlbG9wZXNlbmRlcj0kKGdpdCBjb25maWcgaG9va3MuZW52ZWxvcGVzZW5kZXIpCiBlbWFpbHByZWZpeD0kKGdpdCBjb25maWcgaG9va3MuZW1haWxwcmVmaXggfHwgZWNobyAnW1NDTV0gJykKK2N1c3RvbV9zaG93cmV2PSQoZ2l0IGNvbmZpZyBob29rcy5zaG93cmV2KQogCiAjIC0tLSBNYWluIGxvb3AKICMgQWxsb3cgZHVhbCBtb2RlOiBydW4gZnJvbSB0aGUgY29tbWFuZCBsaW5lIGp1c3QgbGlrZSB0aGUgdXBkYXRlIGhvb2ssIG9yCmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL3ByZS1hdXRvLWdjLWJhdHRlcnkgYi9jb250cmliL2hvb2tzL3ByZS1hdXRvLWdjLWJhdHRlcnkKaW5kZXggMDA5NmY1Ny4uMWY5MTRjOSAxMDA2NDQKLS0tIGEvY29udHJpYi9ob29rcy9wcmUtYXV0by1nYy1iYXR0ZXJ5CisrKyBiL2NvbnRyaWIvaG9va3MvcHJlLWF1dG8tZ2MtYmF0dGVyeQpAQCAtMSw5ICsxLDkgQEAKICMhL2Jpbi9zaAogIwogIyBBbiBleGFtcGxlIGhvb2sgc2NyaXB0IHRvIHZlcmlmeSBpZiB5b3UgYXJlIG9uIGJhdHRlcnksIGluIGNhc2UgeW91Ci0jIGFyZSBydW5uaW5nIExpbnV4LiBDYWxsZWQgYnkgZ2l0LWdjIC0tYXV0byB3aXRoIG5vIGFyZ3VtZW50cy4gVGhlIGhvb2sKLSMgc2hvdWxkIGV4aXQgd2l0aCBub24temVybyBzdGF0dXMgYWZ0ZXIgaXNzdWluZyBhbiBhcHByb3ByaWF0ZSBtZXNzYWdlCi0jIGlmIGl0IHdhbnRzIHRvIHN0b3AgdGhlIGF1dG8gcmVwYWNraW5nLgorIyBhcmUgcnVubmluZyBMaW51eCBvciBPUyBYLiBDYWxsZWQgYnkgZ2l0LWdjIC0tYXV0byB3aXRoIG5vIGFyZ3VtZW50cy4KKyMgVGhlIGhvb2sgc2hvdWxkIGV4aXQgd2l0aCBub24temVybyBzdGF0dXMgYWZ0ZXIgaXNzdWluZyBhbiBhcHByb3ByaWF0ZQorIyBtZXNzYWdlIGlmIGl0IHdhbnRzIHRvIHN0b3AgdGhlIGF1dG8gcmVwYWNraW5nLgogIwogIyBUaGlzIGhvb2sgaXMgc3RvcmVkIGluIHRoZSBjb250cmliL2hvb2tzIGRpcmVjdG9yeS4gWW91ciBkaXN0cmlidXRpb24KICMgbWF5IGhhdmUgcHV0IHRoaXMgc29tZXdoZXJlIGVsc2UuIElmIHlvdSB3YW50IHRvIHVzZSB0aGlzIGhvb2ssIHlvdQpAQCAtMzAsNiArMzAsMTMgQEAKIGVsaWYgZ3JlcCAtcSAnMHgwMSQnIC9wcm9jL2FwbSAyPi9kZXYvbnVsbAogdGhlbgogCWV4aXQgMAorZWxpZiBncmVwIC1xICJBQyBQb3dlciBcKzogMSIgL3Byb2MvcG11L2luZm8gMj4vZGV2L251bGwKK3RoZW4KKwlleGl0IDAKK2VsaWYgdGVzdCAteCAvdXNyL2Jpbi9wbXNldCAmJiAvdXNyL2Jpbi9wbXNldCAtZyBiYXR0IHwKKwlncmVwIC1xICJDdXJyZW50bHkgZHJhd2luZyBmcm9tICdBQyBQb3dlciciCit0aGVuCisJZXhpdCAwCiBmaQogCiBlY2hvICJBdXRvIHBhY2tpbmcgZGVmZXJyZWQ7IG5vdCBvbiBBQyIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVyZXJlLXRyYWluLnNoIGIvY29udHJpYi9yZXJlcmUtdHJhaW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmNmZTFiOQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcmVyZXJlLXRyYWluLnNoCkBAIC0wLDAgKzEsNTIgQEAKKyMhL2Jpbi9zaAorIyBDb3B5cmlnaHQgKGMpIDIwMDgsIE5hbmFrbyBTaGlyYWlzaGkKKyMgUHJpbWUgcmVyZXJlIGRhdGFiYXNlIGZyb20gZXhpc3RpbmcgbWVyZ2UgY29tbWl0cworCittZT1yZXJlcmUtdHJhaW4KK1VTQUdFPSIkbWUgcmV2LWxpc3QtYXJncyIKKworU1VCRElSRUNUT1JZX09LPVllcworT1BUSU9OU19TUEVDPQorLiBnaXQtc2gtc2V0dXAKK3JlcXVpcmVfd29ya190cmVlCitjZF90b190b3BsZXZlbAorCisjIFJlbWVtYmVyIG9yaWdpbmFsIGJyYW5jaAorYnJhbmNoPSQoZ2l0IHN5bWJvbGljLXJlZiAtcSBIRUFEKSB8fAorb3JpZ2luYWxfSEVBRD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgfHwgeworCWVjaG8gPiYyICJOb3Qgb24gYW55IGJyYW5jaCBhbmQgbm8gY29tbWl0IHlldD8iCisJZXhpdCAxCit9CisKK21rZGlyIC1wICIkR0lUX0RJUi9yci1jYWNoZSIgfHwgZXhpdAorCitnaXQgcmV2LWxpc3QgLS1wYXJlbnRzICIkQCIgfAord2hpbGUgcmVhZCBjb21taXQgcGFyZW50MSBvdGhlcl9wYXJlbnRzCitkbworCWlmIHRlc3QgLXogIiRvdGhlcl9wYXJlbnRzIgorCXRoZW4KKwkJIyBTa2lwIG5vbi1tZXJnZXMKKwkJY29udGludWUKKwlmaQorCWdpdCBjaGVja291dCAtcSAiJHBhcmVudDFeMCIKKwlpZiBnaXQgbWVyZ2UgJG90aGVyX3BhcmVudHMgPi9kZXYvbnVsbCAyPiYxCisJdGhlbgorCQkjIENsZWFubHkgbWVyZ2VzCisJCWNvbnRpbnVlCisJZmkKKwlpZiB0ZXN0IC1zICIkR0lUX0RJUi9NRVJHRV9SUiIKKwl0aGVuCisJCWdpdCBzaG93IC1zIC0tcHJldHR5PWZvcm1hdDoiTGVhcm5pbmcgZnJvbSAlaCAlcyIgIiRjb21taXQiCisJCWdpdCByZXJlcmUKKwkJZ2l0IGNoZWNrb3V0IC1xICRjb21taXQgLS0gLgorCQlnaXQgcmVyZXJlCisJZmkKKwlnaXQgcmVzZXQgLXEgLS1oYXJkCitkb25lCisKK2lmIHRlc3QgLXogIiRicmFuY2giCit0aGVuCisJZ2l0IGNoZWNrb3V0ICIkb3JpZ2luYWxfSEVBRCIKK2Vsc2UKKwlnaXQgY2hlY2tvdXQgIiR7YnJhbmNoI3JlZnMvaGVhZHMvfSIKK2ZpCmRpZmYgLS1naXQgYS9jb250cmliL3ZpbS9SRUFETUUgYi9jb250cmliL3ZpbS9SRUFETUUKaW5kZXggOWU3ODgxZi4uYzQ4NzM0NiAxMDA2NDQKLS0tIGEvY29udHJpYi92aW0vUkVBRE1FCisrKyBiL2NvbnRyaWIvdmltL1JFQURNRQpAQCAtMSw4ICsxLDMwIEBACi1UbyBzeW50YXggaGlnaGxpZ2h0IGdpdCdzIGNvbW1pdCBtZXNzYWdlcywgeW91IG5lZWQgdG86Ci0gIDEuIENvcHkgc3ludGF4L2dpdGNvbW1pdC52aW0gdG8gdmltJ3Mgc3ludGF4IGRpcmVjdG9yeToKLSAgICAgJCBta2RpciAtcCAkSE9NRS8udmltL3N5bnRheAotICAgICAkIGNwIHN5bnRheC9naXRjb21taXQudmltICRIT01FLy52aW0vc3ludGF4Ci0gIDIuIEF1dG8tZGV0ZWN0IHRoZSBlZGl0aW5nIG9mIGdpdCBjb21taXQgZmlsZXM6Ci0gICAgICQgY2F0ID4+JEhPTUUvLnZpbXJjIDw8J0VPRicKLSAgICAgYXV0b2NtZCBCdWZOZXdGaWxlLEJ1ZlJlYWQgQ09NTUlUX0VESVRNU0cgc2V0IGZpbGV0eXBlPWdpdGNvbW1pdAotICAgICBFT0YKK1N5bnRheCBoaWdobGlnaHRpbmcgZm9yIGdpdCBjb21taXQgbWVzc2FnZXMsIGNvbmZpZyBmaWxlcywgZXRjLiBpcworaW5jbHVkZWQgd2l0aCB0aGUgdmltIGRpc3RyaWJ1dGlvbiBhcyBvZiB2aW0gNy4yLCBhbmQgc2hvdWxkIHdvcmsKK2F1dG9tYXRpY2FsbHkuCisKK0lmIHlvdSBoYXZlIGFuIG9sZGVyIHZlcnNpb24gb2YgdmltLCB5b3UgY2FuIGdldCB0aGUgbGF0ZXN0IHN5bnRheAorZmlsZXMgZnJvbSB0aGUgdmltIHByb2plY3Q6CisKKyAgaHR0cDovL3ZpbS5zdm4uc291cmNlZm9yZ2UubmV0L3ZpZXd2Yy92aW0vdHJ1bmsvcnVudGltZS9zeW50YXgvZ2l0LnZpbQorICBodHRwOi8vdmltLnN2bi5zb3VyY2Vmb3JnZS5uZXQvdmlld3ZjL3ZpbS90cnVuay9ydW50aW1lL3N5bnRheC9naXRjb21taXQudmltCisgIGh0dHA6Ly92aW0uc3ZuLnNvdXJjZWZvcmdlLm5ldC92aWV3dmMvdmltL3RydW5rL3J1bnRpbWUvc3ludGF4L2dpdGNvbmZpZy52aW0KKyAgaHR0cDovL3ZpbS5zdm4uc291cmNlZm9yZ2UubmV0L3ZpZXd2Yy92aW0vdHJ1bmsvcnVudGltZS9zeW50YXgvZ2l0cmViYXNlLnZpbQorICBodHRwOi8vdmltLnN2bi5zb3VyY2Vmb3JnZS5uZXQvdmlld3ZjL3ZpbS90cnVuay9ydW50aW1lL3N5bnRheC9naXRzZW5kZW1haWwudmltCisKK1RvIGluc3RhbGw6CisKKyAgMS4gQ29weSB0aGVzZSBmaWxlcyB0byB2aW0ncyBzeW50YXggZGlyZWN0b3J5ICRIT01FLy52aW0vc3ludGF4CisgIDIuIFRvIGF1dG8tZGV0ZWN0IHRoZSBlZGl0aW5nIG9mIHZhcmlvdXMgZ2l0LXJlbGF0ZWQgZmlsZXR5cGVzOgorCSQgY2F0ID4+JEhPTUUvLnZpbS9maWxldHlwZS52aW0gPDwnRU9GJworCWF1dG9jbWQgQnVmTmV3RmlsZSxCdWZSZWFkICouZ2l0L0NPTU1JVF9FRElUTVNHICAgIHNldGYgZ2l0Y29tbWl0CisJYXV0b2NtZCBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5naXQvY29uZmlnLC5naXRjb25maWcgc2V0ZiBnaXRjb25maWcKKwlhdXRvY21kIEJ1Zk5ld0ZpbGUsQnVmUmVhZCBnaXQtcmViYXNlLXRvZG8gICAgICAgICBzZXRmIGdpdHJlYmFzZQorCWF1dG9jbWQgQnVmTmV3RmlsZSxCdWZSZWFkIC5tc2cuWzAtOV0qCisJCVwgaWYgZ2V0bGluZSgxKSA9fiAnXkZyb20uKiMgVGhpcyBsaW5lIGlzIGlnbm9yZWQuJCcgfAorCQlcICAgc2V0ZiBnaXRzZW5kZW1haWwgfAorCQlcIGVuZGlmCisJYXV0b2NtZCBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5naXQvKioKKwkJXCBpZiBnZXRsaW5lKDEpID1+ICdeXHhcezQwXH1cPlx8XnJlZjogJyB8CisJCVwgICBzZXRmIGdpdCB8CisJCVwgZW5kaWYKKwlFT0YKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdmltL3N5bnRheC9naXRjb21taXQudmltIGIvY29udHJpYi92aW0vc3ludGF4L2dpdGNvbW1pdC52aW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMjEyMWIuLjAwMDAwMDAKLS0tIGEvY29udHJpYi92aW0vc3ludGF4L2dpdGNvbW1pdC52aW0KKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1zeW4gcmVnaW9uIGdpdExpbmUgc3RhcnQ9L14jLyBlbmQ9LyQvCi1zeW4gcmVnaW9uIGdpdENvbW1pdCBzdGFydD0vXiMgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6JC8gZW5kPS9eIyQvIGNvbnRhaW5zPWdpdEhlYWQsZ2l0Q29tbWl0RmlsZQotc3luIHJlZ2lvbiBnaXRIZWFkIGNvbnRhaW5lZCBzdGFydD0vXiMgICAoLiopLyBlbmQ9L14jJC8KLXN5biByZWdpb24gZ2l0Q2hhbmdlZCBzdGFydD0vXiMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6LyBlbmQ9L14jJC8gY29udGFpbnM9Z2l0SGVhZCxnaXRDaGFuZ2VkRmlsZQotc3luIHJlZ2lvbiBnaXRVbnRyYWNrZWQgc3RhcnQ9L14jIFVudHJhY2tlZCBmaWxlczovIGVuZD0vXiMkLyBjb250YWlucz1naXRIZWFkLGdpdFVudHJhY2tlZEZpbGUKLQotc3luIG1hdGNoIGdpdENvbW1pdEZpbGUgY29udGFpbmVkIC9eI1x0LiovaHM9cysyCi1zeW4gbWF0Y2ggZ2l0Q2hhbmdlZEZpbGUgY29udGFpbmVkIC9eI1x0LiovaHM9cysyCi1zeW4gbWF0Y2ggZ2l0VW50cmFja2VkRmlsZSBjb250YWluZWQgL14jXHQuKi9ocz1zKzIKLQotaGkgZGVmIGxpbmsgZ2l0TGluZSBDb21tZW50Ci1oaSBkZWYgbGluayBnaXRDb21taXQgQ29tbWVudAotaGkgZGVmIGxpbmsgZ2l0Q2hhbmdlZCBDb21tZW50Ci1oaSBkZWYgbGluayBnaXRIZWFkIENvbW1lbnQKLWhpIGRlZiBsaW5rIGdpdFVudHJhY2tlZCBDb21tZW50Ci1oaSBkZWYgbGluayBnaXRDb21taXRGaWxlIFR5cGUKLWhpIGRlZiBsaW5rIGdpdENoYW5nZWRGaWxlIENvbnN0YW50Ci1oaSBkZWYgbGluayBnaXRVbnRyYWNrZWRGaWxlIENvbnN0YW50CmRpZmYgLS1naXQgYS9jb250cmliL3dvcmtkaXIvZ2l0LW5ldy13b3JrZGlyIGIvY29udHJpYi93b3JrZGlyL2dpdC1uZXctd29ya2RpcgppbmRleCA3OTU5ZWFiLi45OTNjYWNmIDEwMDc1NQotLS0gYS9jb250cmliL3dvcmtkaXIvZ2l0LW5ldy13b3JrZGlyCisrKyBiL2NvbnRyaWIvd29ya2Rpci9naXQtbmV3LXdvcmtkaXIKQEAgLTIyLDcgKzIyLDcgQEAKICMgd2FudCB0byBtYWtlIHN1cmUgdGhhdCB3aGF0IGlzIHBvaW50ZWQgdG8gaGFzIGEgLmdpdCBkaXJlY3RvcnkgLi4uCiBnaXRfZGlyPSQoY2QgIiRvcmlnX2dpdCIgMj4vZGV2L251bGwgJiYKICAgZ2l0IHJldi1wYXJzZSAtLWdpdC1kaXIgMj4vZGV2L251bGwpIHx8Ci0gIGRpZSAiXCIkb3JpZ19naXRcIiBpcyBub3QgYSBnaXQgcmVwb3NpdG9yeSEiCisgIGRpZSAiTm90IGEgZ2l0IHJlcG9zaXRvcnk6IFwiJG9yaWdfZ2l0XCIiCiAKIGNhc2UgIiRnaXRfZGlyIiBpbgogLmdpdCkKZGlmZiAtLWdpdCBhL2NvbnZlcnQuYyBiL2NvbnZlcnQuYwppbmRleCA3OGVmZWQ4Li4xODE2ZTk3IDEwMDY0NAotLS0gYS9jb252ZXJ0LmMKKysrIGIvY29udmVydC5jCkBAIC0yODEsNyArMjgxLDcgQEAKIAkgKiAoY2hpbGQgLS0+IGNtZCkgLS0+IHVzCiAJICovCiAJaW50IHJldCA9IDE7Ci0Jc3RydWN0IHN0cmJ1ZiBuYnVmOworCXN0cnVjdCBzdHJidWYgbmJ1ZiA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCBhc3luYyBhc3luYzsKIAlzdHJ1Y3QgZmlsdGVyX3BhcmFtcyBwYXJhbXM7CiAKQEAgLTI5OSw3ICsyOTksNiBAQAogCWlmIChzdGFydF9hc3luYygmYXN5bmMpKQogCQlyZXR1cm4gMDsJLyogZXJyb3Igd2FzIGFscmVhZHkgcmVwb3J0ZWQgKi8KIAotCXN0cmJ1Zl9pbml0KCZuYnVmLCAwKTsKIAlpZiAoc3RyYnVmX3JlYWQoJm5idWYsIGFzeW5jLm91dCwgbGVuKSA8IDApIHsKIAkJZXJyb3IoInJlYWQgZnJvbSBleHRlcm5hbCBmaWx0ZXIgJXMgZmFpbGVkIiwgY21kKTsKIAkJcmV0ID0gMDsKZGlmZiAtLWdpdCBhL2NzdW0tZmlsZS5jIGIvY3N1bS1maWxlLmMKaW5kZXggY2ZjMWFjNC4uMmRkYjEyYSAxMDA2NDQKLS0tIGEvY3N1bS1maWxlLmMKKysrIGIvY3N1bS1maWxlLmMKQEAgLTExLDEwICsxMSw4IEBACiAjaW5jbHVkZSAicHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjc3VtLWZpbGUuaCIKIAotc3RhdGljIHZvaWQgZmx1c2goc3RydWN0IHNoYTFmaWxlICpmLCB1bnNpZ25lZCBpbnQgY291bnQpCitzdGF0aWMgdm9pZCBmbHVzaChzdHJ1Y3Qgc2hhMWZpbGUgKmYsIHZvaWQgKiBidWYsIHVuc2lnbmVkIGludCBjb3VudCkKIHsKLQl2b2lkICpidWYgPSBmLT5idWZmZXI7Ci0KIAlmb3IgKDs7KSB7CiAJCWludCByZXQgPSB4d3JpdGUoZi0+ZmQsIGJ1ZiwgY291bnQpOwogCQlpZiAocmV0ID4gMCkgewpAQCAtMzcsOCArMzUsOCBAQAogCXVuc2lnbmVkIG9mZnNldCA9IGYtPm9mZnNldDsKIAogCWlmIChvZmZzZXQpIHsKLQkJU0hBMV9VcGRhdGUoJmYtPmN0eCwgZi0+YnVmZmVyLCBvZmZzZXQpOwotCQlmbHVzaChmLCBvZmZzZXQpOworCQlnaXRfU0hBMV9VcGRhdGUoJmYtPmN0eCwgZi0+YnVmZmVyLCBvZmZzZXQpOworCQlmbHVzaChmLCBmLT5idWZmZXIsIG9mZnNldCk7CiAJCWYtPm9mZnNldCA9IDA7CiAJfQogfQpAQCAtNDgsMTIgKzQ2LDEyIEBACiAJaW50IGZkOwogCiAJc2hhMWZsdXNoKGYpOwotCVNIQTFfRmluYWwoZi0+YnVmZmVyLCAmZi0+Y3R4KTsKKwlnaXRfU0hBMV9GaW5hbChmLT5idWZmZXIsICZmLT5jdHgpOwogCWlmIChyZXN1bHQpCiAJCWhhc2hjcHkocmVzdWx0LCBmLT5idWZmZXIpOwogCWlmIChmbGFncyAmIChDU1VNX0NMT1NFIHwgQ1NVTV9GU1lOQykpIHsKIAkJLyogd3JpdGUgY2hlY2tzdW0gYW5kIGNsb3NlIGZkICovCi0JCWZsdXNoKGYsIDIwKTsKKwkJZmx1c2goZiwgZi0+YnVmZmVyLCAyMCk7CiAJCWlmIChmbGFncyAmIENTVU1fRlNZTkMpCiAJCQlmc3luY19vcl9kaWUoZi0+ZmQsIGYtPm5hbWUpOwogCQlpZiAoY2xvc2UoZi0+ZmQpKQpAQCAtNjgsMjEgKzY2LDMwIEBACiAKIGludCBzaGExd3JpdGUoc3RydWN0IHNoYTFmaWxlICpmLCB2b2lkICpidWYsIHVuc2lnbmVkIGludCBjb3VudCkKIHsKLQlpZiAoZi0+ZG9fY3JjKQotCQlmLT5jcmMzMiA9IGNyYzMyKGYtPmNyYzMyLCBidWYsIGNvdW50KTsKIAl3aGlsZSAoY291bnQpIHsKIAkJdW5zaWduZWQgb2Zmc2V0ID0gZi0+b2Zmc2V0OwogCQl1bnNpZ25lZCBsZWZ0ID0gc2l6ZW9mKGYtPmJ1ZmZlcikgLSBvZmZzZXQ7CiAJCXVuc2lnbmVkIG5yID0gY291bnQgPiBsZWZ0ID8gbGVmdCA6IGNvdW50OworCQl2b2lkICpkYXRhOwogCi0JCW1lbWNweShmLT5idWZmZXIgKyBvZmZzZXQsIGJ1ZiwgbnIpOworCQlpZiAoZi0+ZG9fY3JjKQorCQkJZi0+Y3JjMzIgPSBjcmMzMihmLT5jcmMzMiwgYnVmLCBucik7CisKKwkJaWYgKG5yID09IHNpemVvZihmLT5idWZmZXIpKSB7CisJCQkvKiBwcm9jZXNzIGZ1bGwgYnVmZmVyIGRpcmVjdGx5IHdpdGhvdXQgY29weSAqLworCQkJZGF0YSA9IGJ1ZjsKKwkJfSBlbHNlIHsKKwkJCW1lbWNweShmLT5idWZmZXIgKyBvZmZzZXQsIGJ1ZiwgbnIpOworCQkJZGF0YSA9IGYtPmJ1ZmZlcjsKKwkJfQorCiAJCWNvdW50IC09IG5yOwogCQlvZmZzZXQgKz0gbnI7CiAJCWJ1ZiA9IChjaGFyICopIGJ1ZiArIG5yOwogCQlsZWZ0IC09IG5yOwogCQlpZiAoIWxlZnQpIHsKLQkJCVNIQTFfVXBkYXRlKCZmLT5jdHgsIGYtPmJ1ZmZlciwgb2Zmc2V0KTsKLQkJCWZsdXNoKGYsIG9mZnNldCk7CisJCQlnaXRfU0hBMV9VcGRhdGUoJmYtPmN0eCwgZGF0YSwgb2Zmc2V0KTsKKwkJCWZsdXNoKGYsIGRhdGEsIG9mZnNldCk7CiAJCQlvZmZzZXQgPSAwOwogCQl9CiAJCWYtPm9mZnNldCA9IG9mZnNldDsKQEAgLTEwNCw3ICsxMTEsNyBAQAogCWYtPnRwID0gdHA7CiAJZi0+bmFtZSA9IG5hbWU7CiAJZi0+ZG9fY3JjID0gMDsKLQlTSEExX0luaXQoJmYtPmN0eCk7CisJZ2l0X1NIQTFfSW5pdCgmZi0+Y3R4KTsKIAlyZXR1cm4gZjsKIH0KIApkaWZmIC0tZ2l0IGEvY3N1bS1maWxlLmggYi9jc3VtLWZpbGUuaAppbmRleCAwMWYxM2I1Li4yOTRhZGQyIDEwMDY0NAotLS0gYS9jc3VtLWZpbGUuaAorKysgYi9jc3VtLWZpbGUuaApAQCAtNyw3ICs3LDcgQEAKIHN0cnVjdCBzaGExZmlsZSB7CiAJaW50IGZkOwogCXVuc2lnbmVkIGludCBvZmZzZXQ7Ci0JU0hBX0NUWCBjdHg7CisJZ2l0X1NIQV9DVFggY3R4OwogCW9mZl90IHRvdGFsOwogCXN0cnVjdCBwcm9ncmVzcyAqdHA7CiAJY29uc3QgY2hhciAqbmFtZTsKZGlmZiAtLWdpdCBhL2N0eXBlLmMgYi9jdHlwZS5jCmluZGV4IGQyYmQzOGUuLjkyMDhkNjcgMTAwNjQ0Ci0tLSBhL2N0eXBlLmMKKysrIGIvY3R5cGUuYwpAQCAtOSwxOCArOSwyMCBAQAogI3VuZGVmIFNTCiAjdW5kZWYgQUEKICN1bmRlZiBERAorI3VuZGVmIEdTCiAKICNkZWZpbmUgU1MgR0lUX1NQQUNFCiAjZGVmaW5lIEFBIEdJVF9BTFBIQQogI2RlZmluZSBERCBHSVRfRElHSVQKKyNkZWZpbmUgR1MgR0lUX1NQRUNJQUwgIC8qIFwwLCAqLCA/LCBbLCBcXCAqLwogCiB1bnNpZ25lZCBjaGFyIHNhbmVfY3R5cGVbMjU2XSA9IHsKLQkgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBTUywgU1MsICAwLCAgMCwgU1MsICAwLCAgMCwJCS8qIDAtMTUgKi8KKwlHUywgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBTUywgU1MsICAwLCAgMCwgU1MsICAwLCAgMCwJCS8qIDAtMTUgKi8KIAkgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwJCS8qIDE2LTE1ICovCi0JU1MsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCQkvKiAzMi0xNSAqLwotCURELCBERCwgREQsIERELCBERCwgREQsIERELCBERCwgREQsIERELCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLAkJLyogNDgtMTUgKi8KKwlTUywgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgR1MsICAwLCAgMCwgIDAsICAwLCAgMCwJCS8qIDMyLTE1ICovCisJREQsIERELCBERCwgREQsIERELCBERCwgREQsIERELCBERCwgREQsICAwLCAgMCwgIDAsICAwLCAgMCwgR1MsCQkvKiA0OC0xNSAqLwogCSAwLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLAkJLyogNjQtMTUgKi8KLQlBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsICAwLCAgMCwgIDAsICAwLCAgMCwJCS8qIDgwLTE1ICovCisJQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBHUywgR1MsICAwLCAgMCwgIDAsCQkvKiA4MC0xNSAqLwogCSAwLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLAkJLyogOTYtMTUgKi8KIAlBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsIEFBLCBBQSwgQUEsICAwLCAgMCwgIDAsICAwLCAgMCwJCS8qIDExMi0xNSAqLwogCS8qIE5vdGhpbmcgaW4gdGhlIDEyOC4uIHJhbmdlICovCmRpZmYgLS1naXQgYS9kYWVtb24uYyBiL2RhZW1vbi5jCmluZGV4IDhkY2RlNzMuLjYwYmY2YzcgMTAwNjQ0Ci0tLSBhL2RhZW1vbi5jCisrKyBiL2RhZW1vbi5jCkBAIC0xLDcgKzEsNiBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAicGt0LWxpbmUuaCIKICNpbmNsdWRlICJleGVjX2NtZC5oIgotI2luY2x1ZGUgImludGVycG9sYXRlLmgiCiAKICNpbmNsdWRlIDxzeXNsb2cuaD4KIApAQCAtMTYsMTIgKzE1LDExIEBACiBzdGF0aWMgaW50IGxvZ19zeXNsb2c7CiBzdGF0aWMgaW50IHZlcmJvc2U7CiBzdGF0aWMgaW50IHJldXNlYWRkcjsKLXN0YXRpYyBpbnQgY2hpbGRfaGFuZGxlcl9waXBlWzJdOwogCiBzdGF0aWMgY29uc3QgY2hhciBkYWVtb25fdXNhZ2VbXSA9CiAiZ2l0IGRhZW1vbiBbLS12ZXJib3NlXSBbLS1zeXNsb2ddIFstLWV4cG9ydC1hbGxdXG4iCi0iICAgICAgICAgICBbLS10aW1lb3V0PW5dIFstLWluaXQtdGltZW91dD1uXSBbLS1zdHJpY3QtcGF0aHNdXG4iCi0iICAgICAgICAgICBbLS1iYXNlLXBhdGg9cGF0aF0gWy0tYmFzZS1wYXRoLXJlbGF4ZWRdXG4iCisiICAgICAgICAgICBbLS10aW1lb3V0PW5dIFstLWluaXQtdGltZW91dD1uXSBbLS1tYXgtY29ubmVjdGlvbnM9bl1cbiIKKyIgICAgICAgICAgIFstLXN0cmljdC1wYXRoc10gWy0tYmFzZS1wYXRoPXBhdGhdIFstLWJhc2UtcGF0aC1yZWxheGVkXVxuIgogIiAgICAgICAgICAgWy0tdXNlci1wYXRoIHwgLS11c2VyLXBhdGg9cGF0aF1cbiIKICIgICAgICAgICAgIFstLWludGVycG9sYXRlZC1wYXRoPXBhdGhdXG4iCiAiICAgICAgICAgICBbLS1yZXVzZWFkZHJdIFstLWRldGFjaF0gWy0tcGlkLWZpbGU9ZmlsZV1cbiIKQEAgLTU1LDYxICs1MywyNiBAQAogc3RhdGljIHVuc2lnbmVkIGludCB0aW1lb3V0Owogc3RhdGljIHVuc2lnbmVkIGludCBpbml0X3RpbWVvdXQ7CiAKLS8qCi0gKiBTdGF0aWMgdGFibGUgZm9yIG5vdy4gIFVnaC4KLSAqIEZlZWwgZnJlZSB0byBtYWtlIGR5bmFtaWMgYXMgbmVlZGVkLgotICovCi0jZGVmaW5lIElOVEVSUF9TTE9UX0hPU1QJKDApCi0jZGVmaW5lIElOVEVSUF9TTE9UX0NBTk9OX0hPU1QJKDEpCi0jZGVmaW5lIElOVEVSUF9TTE9UX0lQCQkoMikKLSNkZWZpbmUgSU5URVJQX1NMT1RfUE9SVAkoMykKLSNkZWZpbmUgSU5URVJQX1NMT1RfRElSCQkoNCkKLSNkZWZpbmUgSU5URVJQX1NMT1RfUEVSQ0VOVAkoNSkKLQotc3RhdGljIHN0cnVjdCBpbnRlcnAgaW50ZXJwX3RhYmxlW10gPSB7Ci0JeyAiJUgiLCAwfSwKLQl7ICIlQ0giLCAwfSwKLQl7ICIlSVAiLCAwfSwKLQl7ICIlUCIsIDB9LAotCXsgIiVEIiwgMH0sCi0JeyAiJSUiLCAwfSwKLX07Ci0KK3N0YXRpYyBjaGFyICpob3N0bmFtZTsKK3N0YXRpYyBjaGFyICpjYW5vbl9ob3N0bmFtZTsKK3N0YXRpYyBjaGFyICppcF9hZGRyZXNzOworc3RhdGljIGNoYXIgKnRjcF9wb3J0OwogCiBzdGF0aWMgdm9pZCBsb2dyZXBvcnQoaW50IHByaW9yaXR5LCBjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKQogewotCS8qIFdlIHNob3VsZCBkbyBhIHNpbmdsZSB3cml0ZSBzbyB0aGF0IGl0IGlzIGF0b21pYyBhbmQgb3V0cHV0Ci0JICogb2Ygc2V2ZXJhbCBwcm9jZXNzZXMgZG8gbm90IGdldCBpbnRlcm1pbmdsZWQuICovCi0JY2hhciBidWZbMTAyNF07Ci0JaW50IGJ1ZmxlbjsKLQlpbnQgbWF4bGVuLCBtc2dsZW47Ci0KLQkvKiBzaXplb2YoYnVmKSBzaG91bGQgYmUgYmlnIGVub3VnaCBmb3IgIltwaWRdIFxuIiAqLwotCWJ1ZmxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJbJWxkXSAiLCAobG9uZykgZ2V0cGlkKCkpOwotCi0JbWF4bGVuID0gc2l6ZW9mKGJ1ZikgLSBidWZsZW4gLSAxOyAvKiAtMSBmb3Igb3VyIG93biBMRiAqLwotCW1zZ2xlbiA9IHZzbnByaW50ZihidWYgKyBidWZsZW4sIG1heGxlbiwgZXJyLCBwYXJhbXMpOwotCiAJaWYgKGxvZ19zeXNsb2cpIHsKKwkJY2hhciBidWZbMTAyNF07CisJCXZzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBlcnIsIHBhcmFtcyk7CiAJCXN5c2xvZyhwcmlvcml0eSwgIiVzIiwgYnVmKTsKLQkJcmV0dXJuOworCX0gZWxzZSB7CisJCS8qCisJCSAqIFNpbmNlIHN0ZGVyciBpcyBzZXQgdG8gbGluZWJ1ZmZlcmVkIG1vZGUsIHRoZQorCQkgKiBsb2dnaW5nIG9mIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3Qgb3ZlcmxhcAorCQkgKi8KKwkJZnByaW50ZihzdGRlcnIsICJbJSJQUkl1TUFYIl0gIiwgKHVpbnRtYXhfdClnZXRwaWQoKSk7CisJCXZmcHJpbnRmKHN0ZGVyciwgZXJyLCBwYXJhbXMpOworCQlmcHV0YygnXG4nLCBzdGRlcnIpOwogCX0KLQotCS8qIG1heGxlbiBjb3VudGVkIG91ciBvd24gTEYgYnV0IGFsc28gY291bnRzIHNwYWNlIGdpdmVuIHRvCi0JICogdnNucHJpbnRmIGZvciB0aGUgdGVybWluYXRpbmcgTlVMLiAgV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdAotCSAqIHdlIGhhdmUgc3BhY2UgZm9yIG91ciBvd24gTEYgYW5kIE5VTCBhZnRlciB0aGUgIm1lYXQiIG9mIHRoZQotCSAqIG1lc3NhZ2UsIHNvIHRydW5jYXRlIGl0IGF0IG1heGxlbiAtIDEuCi0JICovCi0JaWYgKG1zZ2xlbiA+IG1heGxlbiAtIDEpCi0JCW1zZ2xlbiA9IG1heGxlbiAtIDE7Ci0JZWxzZSBpZiAobXNnbGVuIDwgMCkKLQkJbXNnbGVuID0gMDsgLyogUHJvdGVjdCBhZ2FpbnN0IHdlaXJkIHJldHVybiB2YWx1ZXMuICovCi0JYnVmbGVuICs9IG1zZ2xlbjsKLQotCWJ1ZltidWZsZW4rK10gPSAnXG4nOwotCWJ1ZltidWZsZW5dID0gJ1wwJzsKLQotCXdyaXRlX2luX2Z1bGwoMiwgYnVmLCBidWZsZW4pOwogfQogCiBzdGF0aWMgdm9pZCBsb2dlcnJvcihjb25zdCBjaGFyICplcnIsIC4uLikKQEAgLTE4MywxNSArMTQ2LDE0IEBACiAJfQogfQogCi1zdGF0aWMgY2hhciAqcGF0aF9vayhzdHJ1Y3QgaW50ZXJwICppdGFibGUpCitzdGF0aWMgY2hhciAqcGF0aF9vayhjaGFyICpkaXJlY3RvcnkpCiB7CiAJc3RhdGljIGNoYXIgcnBhdGhbUEFUSF9NQVhdOwogCXN0YXRpYyBjaGFyIGludGVycF9wYXRoW1BBVEhfTUFYXTsKLQlpbnQgcmV0cmllZF9wYXRoID0gMDsKIAljaGFyICpwYXRoOwogCWNoYXIgKmRpcjsKIAotCWRpciA9IGl0YWJsZVtJTlRFUlBfU0xPVF9ESVJdLnZhbHVlOworCWRpciA9IGRpcmVjdG9yeTsKIAogCWlmIChhdm9pZF9hbGlhcyhkaXIpKSB7CiAJCWxvZ2Vycm9yKCInJXMnOiBhbGlhc2VkIiwgZGlyKTsKQEAgLTIyMSwxNCArMTgzLDI3IEBACiAJCX0KIAl9CiAJZWxzZSBpZiAoaW50ZXJwb2xhdGVkX3BhdGggJiYgc2F3X2V4dGVuZGVkX2FyZ3MpIHsKKwkJc3RydWN0IHN0cmJ1ZiBleHBhbmRlZF9wYXRoID0gU1RSQlVGX0lOSVQ7CisJCXN0cnVjdCBzdHJidWZfZXhwYW5kX2RpY3RfZW50cnkgZGljdFtdID0geworCQkJeyAiSCIsIGhvc3RuYW1lIH0sCisJCQl7ICJDSCIsIGNhbm9uX2hvc3RuYW1lIH0sCisJCQl7ICJJUCIsIGlwX2FkZHJlc3MgfSwKKwkJCXsgIlAiLCB0Y3BfcG9ydCB9LAorCQkJeyAiRCIsIGRpcmVjdG9yeSB9LAorCQkJeyAiJSIsICIlIiB9LAorCQkJeyBOVUxMIH0KKwkJfTsKKwogCQlpZiAoKmRpciAhPSAnLycpIHsKIAkJCS8qIEFsbG93IG9ubHkgYWJzb2x1dGUgKi8KIAkJCWxvZ2Vycm9yKCInJXMnOiBOb24tYWJzb2x1dGUgcGF0aCBkZW5pZWQgKGludGVycG9sYXRlZC1wYXRoIGFjdGl2ZSkiLCBkaXIpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAotCQlpbnRlcnBvbGF0ZShpbnRlcnBfcGF0aCwgUEFUSF9NQVgsIGludGVycG9sYXRlZF9wYXRoLAotCQkJICAgIGludGVycF90YWJsZSwgQVJSQVlfU0laRShpbnRlcnBfdGFibGUpKTsKKwkJc3RyYnVmX2V4cGFuZCgmZXhwYW5kZWRfcGF0aCwgaW50ZXJwb2xhdGVkX3BhdGgsCisJCQkJc3RyYnVmX2V4cGFuZF9kaWN0X2NiLCAmZGljdCk7CisJCXN0cmxjcHkoaW50ZXJwX3BhdGgsIGV4cGFuZGVkX3BhdGguYnVmLCBQQVRIX01BWCk7CisJCXN0cmJ1Zl9yZWxlYXNlKCZleHBhbmRlZF9wYXRoKTsKIAkJbG9naW5mbygiSW50ZXJwb2xhdGVkIGRpciAnJXMnIiwgaW50ZXJwX3BhdGgpOwogCiAJCWRpciA9IGludGVycF9wYXRoOwpAQCAtMjQzLDIyICsyMTgsMTUgQEAKIAkJZGlyID0gcnBhdGg7CiAJfQogCi0JZG8gewotCQlwYXRoID0gZW50ZXJfcmVwbyhkaXIsIHN0cmljdF9wYXRocyk7Ci0JCWlmIChwYXRoKQotCQkJYnJlYWs7Ci0KKwlwYXRoID0gZW50ZXJfcmVwbyhkaXIsIHN0cmljdF9wYXRocyk7CisJaWYgKCFwYXRoICYmIGJhc2VfcGF0aCAmJiBiYXNlX3BhdGhfcmVsYXhlZCkgewogCQkvKgogCQkgKiBpZiB3ZSBmYWlsIGFuZCBiYXNlX3BhdGhfcmVsYXhlZCBpcyBlbmFibGVkLCB0cnkgd2l0aG91dAogCQkgKiBwcmVmaXhpbmcgdGhlIGJhc2UgcGF0aAogCQkgKi8KLQkJaWYgKGJhc2VfcGF0aCAmJiBiYXNlX3BhdGhfcmVsYXhlZCAmJiAhcmV0cmllZF9wYXRoKSB7Ci0JCQlkaXIgPSBpdGFibGVbSU5URVJQX1NMT1RfRElSXS52YWx1ZTsKLQkJCXJldHJpZWRfcGF0aCA9IDE7Ci0JCQljb250aW51ZTsKLQkJfQotCQlicmVhazsKLQl9IHdoaWxlICgxKTsKKwkJZGlyID0gZGlyZWN0b3J5OworCQlwYXRoID0gZW50ZXJfcmVwbyhkaXIsIHN0cmljdF9wYXRocyk7CisJfQogCiAJaWYgKCFwYXRoKSB7CiAJCWxvZ2Vycm9yKCInJXMnOiB1bmFibGUgdG8gY2hkaXIgb3Igbm90IGEgZ2l0IGFyY2hpdmUiLCBkaXIpOwpAQCAtMzE5LDE0ICsyODcsMTIgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBydW5fc2VydmljZShzdHJ1Y3QgaW50ZXJwICppdGFibGUsIHN0cnVjdCBkYWVtb25fc2VydmljZSAqc2VydmljZSkKK3N0YXRpYyBpbnQgcnVuX3NlcnZpY2UoY2hhciAqZGlyLCBzdHJ1Y3QgZGFlbW9uX3NlcnZpY2UgKnNlcnZpY2UpCiB7CiAJY29uc3QgY2hhciAqcGF0aDsKIAlpbnQgZW5hYmxlZCA9IHNlcnZpY2UtPmVuYWJsZWQ7CiAKLQlsb2dpbmZvKCJSZXF1ZXN0ICVzIGZvciAnJXMnIiwKLQkJc2VydmljZS0+bmFtZSwKLQkJaXRhYmxlW0lOVEVSUF9TTE9UX0RJUl0udmFsdWUpOworCWxvZ2luZm8oIlJlcXVlc3QgJXMgZm9yICclcyciLCBzZXJ2aWNlLT5uYW1lLCBkaXIpOwogCiAJaWYgKCFlbmFibGVkICYmICFzZXJ2aWNlLT5vdmVycmlkYWJsZSkgewogCQlsb2dlcnJvcigiJyVzJzogc2VydmljZSBub3QgZW5hYmxlZC4iLCBzZXJ2aWNlLT5uYW1lKTsKQEAgLTMzNCw3ICszMDAsNyBAQAogCQlyZXR1cm4gLTE7CiAJfQogCi0JaWYgKCEocGF0aCA9IHBhdGhfb2soaXRhYmxlKSkpCisJaWYgKCEocGF0aCA9IHBhdGhfb2soZGlyKSkpCiAJCXJldHVybiAtMTsKIAogCS8qCkBAIC00MzEsMTEgKzM5NywxOCBAQAogCWRpZSgiTm8gc3VjaCBzZXJ2aWNlICVzIiwgbmFtZSk7CiB9CiAKK3N0YXRpYyBjaGFyICp4c3RyZHVwX3RvbG93ZXIoY29uc3QgY2hhciAqc3RyKQoreworCWNoYXIgKnAsICpkdXAgPSB4c3RyZHVwKHN0cik7CisJZm9yIChwID0gZHVwOyAqcDsgcCsrKQorCQkqcCA9IHRvbG93ZXIoKnApOworCXJldHVybiBkdXA7Cit9CisKIC8qCiAgKiBTZXBhcmF0ZSB0aGUgImV4dHJhIGFyZ3MiIGluZm9ybWF0aW9uIGFzIHN1cHBsaWVkIGJ5IHRoZSBjbGllbnQgY29ubmVjdGlvbi4KLSAqIEFueSByZXN1bHRpbmcgZGF0YSBpcyBzcXVpcnJlbGVkIGF3YXkgaW4gdGhlIGdpdmVuIGludGVycG9sYXRpb24gdGFibGUuCiAgKi8KLXN0YXRpYyB2b2lkIHBhcnNlX2V4dHJhX2FyZ3Moc3RydWN0IGludGVycCAqdGFibGUsIGNoYXIgKmV4dHJhX2FyZ3MsIGludCBidWZsZW4pCitzdGF0aWMgdm9pZCBwYXJzZV9leHRyYV9hcmdzKGNoYXIgKmV4dHJhX2FyZ3MsIGludCBidWZsZW4pCiB7CiAJY2hhciAqdmFsOwogCWludCB2YWxsZW47CkBAIC00NTMsMzUgKzQyNiwyMyBAQAogCQkJCWlmIChwb3J0KSB7CiAJCQkJCSpwb3J0ID0gMDsKIAkJCQkJcG9ydCsrOwotCQkJCQlpbnRlcnBfc2V0X2VudHJ5KHRhYmxlLCBJTlRFUlBfU0xPVF9QT1JULCBwb3J0KTsKKwkJCQkJZnJlZSh0Y3BfcG9ydCk7CisJCQkJCXRjcF9wb3J0ID0geHN0cmR1cChwb3J0KTsKIAkJCQl9Ci0JCQkJaW50ZXJwX3NldF9lbnRyeSh0YWJsZSwgSU5URVJQX1NMT1RfSE9TVCwgaG9zdCk7CisJCQkJZnJlZShob3N0bmFtZSk7CisJCQkJaG9zdG5hbWUgPSB4c3RyZHVwX3RvbG93ZXIoaG9zdCk7CiAJCQl9CiAKIAkJCS8qIE9uIHRvIHRoZSBuZXh0IG9uZSAqLwogCQkJZXh0cmFfYXJncyA9IHZhbCArIHZhbGxlbjsKIAkJfQogCX0KLX0KLQotc3RhdGljIHZvaWQgZmlsbF9pbl9leHRyYV90YWJsZV9lbnRyaWVzKHN0cnVjdCBpbnRlcnAgKml0YWJsZSkKLXsKLQljaGFyICpocDsKLQotCS8qCi0JICogUmVwbGFjZSBsaXRlcmFsIGhvc3Qgd2l0aCBsb3dlcmNhc2UtaXplZCBob3N0bmFtZS4KLQkgKi8KLQlocCA9IGludGVycF90YWJsZVtJTlRFUlBfU0xPVF9IT1NUXS52YWx1ZTsKLQlpZiAoIWhwKQotCQlyZXR1cm47Ci0JZm9yICggOyAqaHA7IGhwKyspCi0JCSpocCA9IHRvbG93ZXIoKmhwKTsKIAogCS8qCiAJICogTG9jYXRlIGNhbm9uaWNhbCBob3N0bmFtZSBhbmQgaXRzIElQIGFkZHJlc3MuCiAJICovCisJaWYgKGhvc3RuYW1lKSB7CiAjaWZuZGVmIE5PX0lQVjYKLQl7CiAJCXN0cnVjdCBhZGRyaW5mbyBoaW50czsKIAkJc3RydWN0IGFkZHJpbmZvICphaSwgKmFpMDsKIAkJaW50IGdhaTsKQEAgLTQ5MCwzMCArNDUxLDI4IEBACiAJCW1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOwogCQloaW50cy5haV9mbGFncyA9IEFJX0NBTk9OTkFNRTsKIAotCQlnYWkgPSBnZXRhZGRyaW5mbyhpbnRlcnBfdGFibGVbSU5URVJQX1NMT1RfSE9TVF0udmFsdWUsIDAsICZoaW50cywgJmFpMCk7CisJCWdhaSA9IGdldGFkZHJpbmZvKGhvc3RuYW1lLCAwLCAmaGludHMsICZhaTApOwogCQlpZiAoIWdhaSkgewogCQkJZm9yIChhaSA9IGFpMDsgYWk7IGFpID0gYWktPmFpX25leHQpIHsKIAkJCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbl9hZGRyID0gKHZvaWQgKilhaS0+YWlfYWRkcjsKIAogCQkJCWluZXRfbnRvcChBRl9JTkVULCAmc2luX2FkZHItPnNpbl9hZGRyLAogCQkJCQkgIGFkZHJidWYsIHNpemVvZihhZGRyYnVmKSk7Ci0JCQkJaW50ZXJwX3NldF9lbnRyeShpbnRlcnBfdGFibGUsCi0JCQkJCQkgSU5URVJQX1NMT1RfQ0FOT05fSE9TVCwgYWktPmFpX2Nhbm9ubmFtZSk7Ci0JCQkJaW50ZXJwX3NldF9lbnRyeShpbnRlcnBfdGFibGUsCi0JCQkJCQkgSU5URVJQX1NMT1RfSVAsIGFkZHJidWYpOworCQkJCWZyZWUoY2Fub25faG9zdG5hbWUpOworCQkJCWNhbm9uX2hvc3RuYW1lID0geHN0cmR1cChhaS0+YWlfY2Fub25uYW1lKTsKKwkJCQlmcmVlKGlwX2FkZHJlc3MpOworCQkJCWlwX2FkZHJlc3MgPSB4c3RyZHVwKGFkZHJidWYpOwogCQkJCWJyZWFrOwogCQkJfQogCQkJZnJlZWFkZHJpbmZvKGFpMCk7CiAJCX0KLQl9CiAjZWxzZQotCXsKIAkJc3RydWN0IGhvc3RlbnQgKmhlbnQ7CiAJCXN0cnVjdCBzb2NrYWRkcl9pbiBzYTsKIAkJY2hhciAqKmFwOwogCQlzdGF0aWMgY2hhciBhZGRyYnVmW0hPU1RfTkFNRV9NQVggKyAxXTsKIAotCQloZW50ID0gZ2V0aG9zdGJ5bmFtZShpbnRlcnBfdGFibGVbSU5URVJQX1NMT1RfSE9TVF0udmFsdWUpOworCQloZW50ID0gZ2V0aG9zdGJ5bmFtZShob3N0bmFtZSk7CiAKIAkJYXAgPSBoZW50LT5oX2FkZHJfbGlzdDsKIAkJbWVtc2V0KCZzYSwgMCwgc2l6ZW9mIHNhKTsKQEAgLTUyNCwxMCArNDgzLDEyIEBACiAJCWluZXRfbnRvcChoZW50LT5oX2FkZHJ0eXBlLCAmc2Euc2luX2FkZHIsCiAJCQkgIGFkZHJidWYsIHNpemVvZihhZGRyYnVmKSk7CiAKLQkJaW50ZXJwX3NldF9lbnRyeShpbnRlcnBfdGFibGUsIElOVEVSUF9TTE9UX0NBTk9OX0hPU1QsIGhlbnQtPmhfbmFtZSk7Ci0JCWludGVycF9zZXRfZW50cnkoaW50ZXJwX3RhYmxlLCBJTlRFUlBfU0xPVF9JUCwgYWRkcmJ1Zik7Ci0JfQorCQlmcmVlKGNhbm9uX2hvc3RuYW1lKTsKKwkJY2Fub25faG9zdG5hbWUgPSB4c3RyZHVwKGhlbnQtPmhfbmFtZSk7CisJCWZyZWUoaXBfYWRkcmVzcyk7CisJCWlwX2FkZHJlc3MgPSB4c3RyZHVwKGFkZHJidWYpOwogI2VuZGlmCisJfQogfQogCiAKQEAgLTU1Nyw2ICs1MTgsMTAgQEAKICNlbmRpZgogCQl9CiAJCWxvZ2luZm8oIkNvbm5lY3Rpb24gZnJvbSAlczolZCIsIGFkZHJidWYsIHBvcnQpOworCQlzZXRlbnYoIlJFTU9URV9BRERSIiwgYWRkcmJ1ZiwgMSk7CisJfQorCWVsc2UgeworCQl1bnNldGVudigiUkVNT1RFX0FERFIiKTsKIAl9CiAKIAlhbGFybShpbml0X3RpbWVvdXQgPyBpbml0X3RpbWVvdXQgOiB0aW1lb3V0KTsKQEAgLTU3MywxNiArNTM4LDE0IEBACiAJCXBrdGxlbi0tOwogCX0KIAotCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgcGF0aCBpbnRlcnBvbGF0aW9uIHRhYmxlIGZvciB0aGlzIGNvbm5lY3Rpb24uCi0JICovCi0JaW50ZXJwX2NsZWFyX3RhYmxlKGludGVycF90YWJsZSwgQVJSQVlfU0laRShpbnRlcnBfdGFibGUpKTsKLQlpbnRlcnBfc2V0X2VudHJ5KGludGVycF90YWJsZSwgSU5URVJQX1NMT1RfUEVSQ0VOVCwgIiUiKTsKKwlmcmVlKGhvc3RuYW1lKTsKKwlmcmVlKGNhbm9uX2hvc3RuYW1lKTsKKwlmcmVlKGlwX2FkZHJlc3MpOworCWZyZWUodGNwX3BvcnQpOworCWhvc3RuYW1lID0gY2Fub25faG9zdG5hbWUgPSBpcF9hZGRyZXNzID0gdGNwX3BvcnQgPSBOVUxMOwogCi0JaWYgKGxlbiAhPSBwa3RsZW4pIHsKLQkgICAgcGFyc2VfZXh0cmFfYXJncyhpbnRlcnBfdGFibGUsIGxpbmUgKyBsZW4gKyAxLCBwa3RsZW4gLSBsZW4gLSAxKTsKLQkgICAgZmlsbF9pbl9leHRyYV90YWJsZV9lbnRyaWVzKGludGVycF90YWJsZSk7Ci0JfQorCWlmIChsZW4gIT0gcGt0bGVuKQorCQlwYXJzZV9leHRyYV9hcmdzKGxpbmUgKyBsZW4gKyAxLCBwa3RsZW4gLSBsZW4gLSAxKTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRhZW1vbl9zZXJ2aWNlKTsgaSsrKSB7CiAJCXN0cnVjdCBkYWVtb25fc2VydmljZSAqcyA9ICYoZGFlbW9uX3NlcnZpY2VbaV0pOwpAQCAtNTk0LDkgKzU1Nyw3IEBACiAJCQkgKiBOb3RlOiBUaGUgZGlyZWN0b3J5IGhlcmUgaXMgcHJvYmFibHkgY29udGV4dCBzZW5zaXRpdmUsCiAJCQkgKiBhbmQgbWlnaHQgZGVwZW5kIG9uIHRoZSBhY3R1YWwgc2VydmljZSBiZWluZyBwZXJmb3JtZWQuCiAJCQkgKi8KLQkJCWludGVycF9zZXRfZW50cnkoaW50ZXJwX3RhYmxlLAotCQkJCQkgSU5URVJQX1NMT1RfRElSLCBsaW5lICsgbmFtZWxlbiArIDUpOwotCQkJcmV0dXJuIHJ1bl9zZXJ2aWNlKGludGVycF90YWJsZSwgcyk7CisJCQlyZXR1cm4gcnVuX3NlcnZpY2UobGluZSArIG5hbWVsZW4gKyA1LCBzKTsKIAkJfQogCX0KIApAQCAtNjA0LDE2OSArNTY1LDEwNyBAQAogCXJldHVybiAtMTsKIH0KIAorc3RhdGljIGludCBtYXhfY29ubmVjdGlvbnMgPSAzMjsKIAotLyoKLSAqIFdlIGNvdW50IHNwYXduZWQvcmVhcGVkIHNlcGFyYXRlbHksIGp1c3QgdG8gYXZvaWQgYW55Ci0gKiByYWNlcyB3aGVuIHVwZGF0aW5nIHRoZW0gZnJvbSBzaWduYWxzLiBUaGUgU0lHQ0hMRCBoYW5kbGVyCi0gKiB3aWxsIG9ubHkgdXBkYXRlIGNoaWxkcmVuX3JlYXBlZCwgYW5kIHRoZSBmb3JrIGxvZ2ljIHdpbGwKLSAqIG9ubHkgdXBkYXRlIGNoaWxkcmVuX3NwYXduZWQuCi0gKgotICogTUFYX0NISUxEUkVOIHNob3VsZCBiZSBhIHBvd2VyLW9mLXR3byB0byBtYWtlIHRoZSBtb2R1bHVzCi0gKiBvcGVyYXRpb24gY2hlYXAuIEl0IHNob3VsZCBhbHNvIGJlIGF0IGxlYXN0IHR3aWNlCi0gKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgd2Ugd2lsbCBldmVyIGFsbG93LgotICovCi0jZGVmaW5lIE1BWF9DSElMRFJFTiAxMjgKLQotc3RhdGljIGludCBtYXhfY29ubmVjdGlvbnMgPSAyNTsKLQotLyogVGhlc2UgYXJlIHVwZGF0ZWQgYnkgdGhlIHNpZ25hbCBoYW5kbGVyICovCi1zdGF0aWMgdm9sYXRpbGUgdW5zaWduZWQgaW50IGNoaWxkcmVuX3JlYXBlZDsKLXN0YXRpYyBwaWRfdCBkZWFkX2NoaWxkW01BWF9DSElMRFJFTl07Ci0KLS8qIFRoZXNlIGFyZSB1cGRhdGVkIGJ5IHRoZSBtYWluIGxvb3AgKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgY2hpbGRyZW5fc3Bhd25lZDsKLXN0YXRpYyB1bnNpZ25lZCBpbnQgY2hpbGRyZW5fZGVsZXRlZDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGl2ZV9jaGlsZHJlbjsKIAogc3RhdGljIHN0cnVjdCBjaGlsZCB7CisJc3RydWN0IGNoaWxkICpuZXh0OwogCXBpZF90IHBpZDsKLQlpbnQgYWRkcmxlbjsKIAlzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBhZGRyZXNzOwotfSBsaXZlX2NoaWxkW01BWF9DSElMRFJFTl07Cit9ICpmaXJzdGJvcm47CiAKLXN0YXRpYyB2b2lkIGFkZF9jaGlsZChpbnQgaWR4LCBwaWRfdCBwaWQsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFkZHJsZW4pCitzdGF0aWMgdm9pZCBhZGRfY2hpbGQocGlkX3QgcGlkLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCBhZGRybGVuKQogewotCWxpdmVfY2hpbGRbaWR4XS5waWQgPSBwaWQ7Ci0JbGl2ZV9jaGlsZFtpZHhdLmFkZHJsZW4gPSBhZGRybGVuOwotCW1lbWNweSgmbGl2ZV9jaGlsZFtpZHhdLmFkZHJlc3MsIGFkZHIsIGFkZHJsZW4pOworCXN0cnVjdCBjaGlsZCAqbmV3Ym9ybiwgKipjcmFkbGU7CisKKwkvKgorCSAqIFRoaXMgbXVzdCBiZSB4Y2FsbG9jKCkgLS0gd2UnbGwgY29tcGFyZSB0aGUgd2hvbGUgc29ja2FkZHJfc3RvcmFnZQorCSAqIGJ1dCBpbmRpdmlkdWFsIGFkZHJlc3MgbWF5IGJlIHNob3J0ZXIuCisJICovCisJbmV3Ym9ybiA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpuZXdib3JuKSk7CisJbGl2ZV9jaGlsZHJlbisrOworCW5ld2Jvcm4tPnBpZCA9IHBpZDsKKwltZW1jcHkoJm5ld2Jvcm4tPmFkZHJlc3MsIGFkZHIsIGFkZHJsZW4pOworCWZvciAoY3JhZGxlID0gJmZpcnN0Ym9ybjsgKmNyYWRsZTsgY3JhZGxlID0gJigqY3JhZGxlKS0+bmV4dCkKKwkJaWYgKCFtZW1jbXAoJigqY3JhZGxlKS0+YWRkcmVzcywgJm5ld2Jvcm4tPmFkZHJlc3MsCisJCQkgICAgc2l6ZW9mKG5ld2Jvcm4tPmFkZHJlc3MpKSkKKwkJCWJyZWFrOworCW5ld2Jvcm4tPm5leHQgPSAqY3JhZGxlOworCSpjcmFkbGUgPSBuZXdib3JuOwogfQogCi0vKgotICogV2FsayBmcm9tICJkZWxldGVkIiB0byAic3Bhd25lZCIsIGFuZCByZW1vdmUgY2hpbGQgInBpZCIuCi0gKgotICogV2UgbW92ZSBldmVyeXRoaW5nIHVwIGJ5IG9uZSwgc2luY2UgdGhlIG5ldyAiZGVsZXRlZCIgd2lsbAotICogYmUgb25lIGhpZ2hlci4KLSAqLwotc3RhdGljIHZvaWQgcmVtb3ZlX2NoaWxkKHBpZF90IHBpZCwgdW5zaWduZWQgZGVsZXRlZCwgdW5zaWduZWQgc3Bhd25lZCkKK3N0YXRpYyB2b2lkIHJlbW92ZV9jaGlsZChwaWRfdCBwaWQpCiB7Ci0Jc3RydWN0IGNoaWxkIG47CisJc3RydWN0IGNoaWxkICoqY3JhZGxlLCAqYmxhbmtldDsKIAotCWRlbGV0ZWQgJT0gTUFYX0NISUxEUkVOOwotCXNwYXduZWQgJT0gTUFYX0NISUxEUkVOOwotCWlmIChsaXZlX2NoaWxkW2RlbGV0ZWRdLnBpZCA9PSBwaWQpIHsKLQkJbGl2ZV9jaGlsZFtkZWxldGVkXS5waWQgPSAtMTsKLQkJcmV0dXJuOwotCX0KLQluID0gbGl2ZV9jaGlsZFtkZWxldGVkXTsKLQlmb3IgKDs7KSB7Ci0JCXN0cnVjdCBjaGlsZCBtOwotCQlkZWxldGVkID0gKGRlbGV0ZWQgKyAxKSAlIE1BWF9DSElMRFJFTjsKLQkJaWYgKGRlbGV0ZWQgPT0gc3Bhd25lZCkKLQkJCWRpZSgiY291bGQgbm90IGZpbmQgZGVhZCBjaGlsZCAlZFxuIiwgcGlkKTsKLQkJbSA9IGxpdmVfY2hpbGRbZGVsZXRlZF07Ci0JCWxpdmVfY2hpbGRbZGVsZXRlZF0gPSBuOwotCQlpZiAobS5waWQgPT0gcGlkKQotCQkJcmV0dXJuOwotCQluID0gbTsKLQl9CisJZm9yIChjcmFkbGUgPSAmZmlyc3Rib3JuOyAoYmxhbmtldCA9ICpjcmFkbGUpOyBjcmFkbGUgPSAmYmxhbmtldC0+bmV4dCkKKwkJaWYgKGJsYW5rZXQtPnBpZCA9PSBwaWQpIHsKKwkJCSpjcmFkbGUgPSBibGFua2V0LT5uZXh0OworCQkJbGl2ZV9jaGlsZHJlbi0tOworCQkJZnJlZShibGFua2V0KTsKKwkJCWJyZWFrOworCQl9CiB9CiAKIC8qCiAgKiBUaGlzIGdldHMgY2FsbGVkIGlmIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZ3Jvd3MKICAqIHBhc3QgIm1heF9jb25uZWN0aW9ucyIuCiAgKgotICogV2UgX3Nob3VsZF8gc3RhcnQgb2ZmIGJ5IHNlYXJjaGluZyBmb3IgY29ubmVjdGlvbnMKLSAqIGZyb20gdGhlIHNhbWUgSVAsIGFuZCBpZiB0aGVyZSBpcyBzb21lIGFkZHJlc3Mgd3RoCi0gKiBtdWx0aXBsZSBjb25uZWN0aW9ucywgd2Ugc2hvdWxkIGtpbGwgdGhhdCBmaXJzdC4KLSAqCi0gKiBBcyBpdCBpcywgd2UganVzdCAicmFuZG9tbHkiIGtpbGwgMjUlIG9mIHRoZSBjb25uZWN0aW9ucywKLSAqIGFuZCBvdXIgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3Igc3Vja3MgdG9vLiBJIGhhdmUgbm8KLSAqIHNoYW1lLgotICoKLSAqIFJlYWxseSwgdGhpcyBpcyBqdXN0IGEgcGxhY2UtaG9sZGVyIGZvciBhIF9yZWFsXyBhbGdvcml0aG0uCisgKiBXZSBraWxsIHRoZSBuZXdlc3QgY29ubmVjdGlvbiBmcm9tIGEgZHVwbGljYXRlIElQLgogICovCi1zdGF0aWMgdm9pZCBraWxsX3NvbWVfY2hpbGRyZW4oaW50IHNpZ25vLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgc3RvcCkKK3N0YXRpYyB2b2lkIGtpbGxfc29tZV9jaGlsZCh2b2lkKQogewotCXN0YXJ0ICU9IE1BWF9DSElMRFJFTjsKLQlzdG9wICU9IE1BWF9DSElMRFJFTjsKLQl3aGlsZSAoc3RhcnQgIT0gc3RvcCkgewotCQlpZiAoIShzdGFydCAmIDMpKQotCQkJa2lsbChsaXZlX2NoaWxkW3N0YXJ0XS5waWQsIHNpZ25vKTsKLQkJc3RhcnQgPSAoc3RhcnQgKyAxKSAlIE1BWF9DSElMRFJFTjsKLQl9CisJY29uc3Qgc3RydWN0IGNoaWxkICpibGFua2V0LCAqbmV4dDsKKworCWlmICghKGJsYW5rZXQgPSBmaXJzdGJvcm4pKQorCQlyZXR1cm47CisKKwlmb3IgKDsgKG5leHQgPSBibGFua2V0LT5uZXh0KTsgYmxhbmtldCA9IG5leHQpCisJCWlmICghbWVtY21wKCZibGFua2V0LT5hZGRyZXNzLCAmbmV4dC0+YWRkcmVzcywKKwkJCSAgICBzaXplb2YobmV4dC0+YWRkcmVzcykpKSB7CisJCQlraWxsKGJsYW5rZXQtPnBpZCwgU0lHVEVSTSk7CisJCQlicmVhazsKKwkJfQogfQogCiBzdGF0aWMgdm9pZCBjaGVja19kZWFkX2NoaWxkcmVuKHZvaWQpCiB7Ci0JdW5zaWduZWQgc3Bhd25lZCwgcmVhcGVkLCBkZWxldGVkOworCWludCBzdGF0dXM7CisJcGlkX3QgcGlkOwogCi0Jc3Bhd25lZCA9IGNoaWxkcmVuX3NwYXduZWQ7Ci0JcmVhcGVkID0gY2hpbGRyZW5fcmVhcGVkOwotCWRlbGV0ZWQgPSBjaGlsZHJlbl9kZWxldGVkOwotCi0Jd2hpbGUgKGRlbGV0ZWQgPCByZWFwZWQpIHsKLQkJcGlkX3QgcGlkID0gZGVhZF9jaGlsZFtkZWxldGVkICUgTUFYX0NISUxEUkVOXTsKLQkJY29uc3QgY2hhciAqZGVhZCA9IHBpZCA8IDAgPyAiICh3aXRoIGVycm9yKSIgOiAiIjsKLQotCQlpZiAocGlkIDwgMCkKLQkJCXBpZCA9IC1waWQ7Ci0KLQkJLyogWFhYOiBDdXN0b20gbG9nZ2luZywgc2luY2Ugd2UgZG9uJ3Qgd2FubmEgZ2V0cGlkKCkgKi8KLQkJaWYgKHZlcmJvc2UpIHsKLQkJCWlmIChsb2dfc3lzbG9nKQotCQkJCXN5c2xvZyhMT0dfSU5GTywgIlslZF0gRGlzY29ubmVjdGVkJXMiLAotCQkJCQkJcGlkLCBkZWFkKTsKLQkJCWVsc2UKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIlslZF0gRGlzY29ubmVjdGVkJXNcbiIsCi0JCQkJCQlwaWQsIGRlYWQpOwotCQl9Ci0JCXJlbW92ZV9jaGlsZChwaWQsIGRlbGV0ZWQsIHNwYXduZWQpOwotCQlkZWxldGVkKys7Ci0JfQotCWNoaWxkcmVuX2RlbGV0ZWQgPSBkZWxldGVkOwotfQotCi1zdGF0aWMgdm9pZCBjaGVja19tYXhfY29ubmVjdGlvbnModm9pZCkKLXsKLQlmb3IgKDs7KSB7Ci0JCWludCBhY3RpdmU7Ci0JCXVuc2lnbmVkIHNwYXduZWQsIGRlbGV0ZWQ7Ci0KLQkJY2hlY2tfZGVhZF9jaGlsZHJlbigpOwotCi0JCXNwYXduZWQgPSBjaGlsZHJlbl9zcGF3bmVkOwotCQlkZWxldGVkID0gY2hpbGRyZW5fZGVsZXRlZDsKLQotCQlhY3RpdmUgPSBzcGF3bmVkIC0gZGVsZXRlZDsKLQkJaWYgKGFjdGl2ZSA8PSBtYXhfY29ubmVjdGlvbnMpCi0JCQlicmVhazsKLQotCQkvKiBLaWxsIHNvbWUgdW5zdGFydGVkIGNvbm5lY3Rpb25zIHdpdGggU0lHVEVSTSAqLwotCQlraWxsX3NvbWVfY2hpbGRyZW4oU0lHVEVSTSwgZGVsZXRlZCwgc3Bhd25lZCk7Ci0JCWlmIChhY3RpdmUgPD0gbWF4X2Nvbm5lY3Rpb25zIDw8IDEpCi0JCQlicmVhazsKLQotCQkvKiBJZiB0aGUgU0lHVEVSTSB0aGluZyBpc24ndCBoZWxwaW5nIHVzZSBTSUdLSUxMICovCi0JCWtpbGxfc29tZV9jaGlsZHJlbihTSUdLSUxMLCBkZWxldGVkLCBzcGF3bmVkKTsKLQkJc2xlZXAoMSk7CisJd2hpbGUgKChwaWQgPSB3YWl0cGlkKC0xLCAmc3RhdHVzLCBXTk9IQU5HKSkgPiAwKSB7CisJCWNvbnN0IGNoYXIgKmRlYWQgPSAiIjsKKwkJcmVtb3ZlX2NoaWxkKHBpZCk7CisJCWlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgKFdFWElUU1RBVFVTKHN0YXR1cykgPiAwKSkKKwkJCWRlYWQgPSAiICh3aXRoIGVycm9yKSI7CisJCWxvZ2luZm8oIlslIlBSSXVNQVgiXSBEaXNjb25uZWN0ZWQlcyIsICh1aW50bWF4X3QpcGlkLCBkZWFkKTsKIAl9CiB9CiAKIHN0YXRpYyB2b2lkIGhhbmRsZShpbnQgaW5jb21pbmcsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFkZHJsZW4pCiB7Ci0JcGlkX3QgcGlkID0gZm9yaygpOworCXBpZF90IHBpZDsKIAotCWlmIChwaWQpIHsKLQkJdW5zaWduZWQgaWR4OwotCi0JCWNsb3NlKGluY29taW5nKTsKLQkJaWYgKHBpZCA8IDApCisJaWYgKG1heF9jb25uZWN0aW9ucyAmJiBsaXZlX2NoaWxkcmVuID49IG1heF9jb25uZWN0aW9ucykgeworCQlraWxsX3NvbWVfY2hpbGQoKTsKKwkJc2xlZXAoMSk7ICAvKiBnaXZlIGl0IHNvbWUgdGltZSB0byBkaWUgKi8KKwkJY2hlY2tfZGVhZF9jaGlsZHJlbigpOworCQlpZiAobGl2ZV9jaGlsZHJlbiA+PSBtYXhfY29ubmVjdGlvbnMpIHsKKwkJCWNsb3NlKGluY29taW5nKTsKKwkJCWxvZ2Vycm9yKCJUb28gbWFueSBjaGlsZHJlbiwgZHJvcHBpbmcgY29ubmVjdGlvbiIpOwogCQkJcmV0dXJuOworCQl9CisJfQogCi0JCWlkeCA9IGNoaWxkcmVuX3NwYXduZWQgJSBNQVhfQ0hJTERSRU47Ci0JCWNoaWxkcmVuX3NwYXduZWQrKzsKLQkJYWRkX2NoaWxkKGlkeCwgcGlkLCBhZGRyLCBhZGRybGVuKTsKKwlpZiAoKHBpZCA9IGZvcmsoKSkpIHsKKwkJY2xvc2UoaW5jb21pbmcpOworCQlpZiAocGlkIDwgMCkgeworCQkJbG9nZXJyb3IoIkNvdWxkbid0IGZvcmsgJXMiLCBzdHJlcnJvcihlcnJubykpOworCQkJcmV0dXJuOworCQl9CiAKLQkJY2hlY2tfbWF4X2Nvbm5lY3Rpb25zKCk7CisJCWFkZF9jaGlsZChwaWQsIGFkZHIsIGFkZHJsZW4pOwogCQlyZXR1cm47CiAJfQogCkBAIC03NzksMjEgKzY3OCwxMSBAQAogCiBzdGF0aWMgdm9pZCBjaGlsZF9oYW5kbGVyKGludCBzaWdubykKIHsKLQlmb3IgKDs7KSB7Ci0JCWludCBzdGF0dXM7Ci0JCXBpZF90IHBpZCA9IHdhaXRwaWQoLTEsICZzdGF0dXMsIFdOT0hBTkcpOwotCi0JCWlmIChwaWQgPiAwKSB7Ci0JCQl1bnNpZ25lZCByZWFwZWQgPSBjaGlsZHJlbl9yZWFwZWQ7Ci0JCQlpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0YXR1cykgPiAwKQotCQkJCXBpZCA9IC1waWQ7Ci0JCQlkZWFkX2NoaWxkW3JlYXBlZCAlIE1BWF9DSElMRFJFTl0gPSBwaWQ7Ci0JCQljaGlsZHJlbl9yZWFwZWQgPSByZWFwZWQgKyAxOwotCQkJd3JpdGUoY2hpbGRfaGFuZGxlcl9waXBlWzFdLCAmc3RhdHVzLCAxKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWJyZWFrOwotCX0KKwkvKgorCSAqIE90aGVyd2lzZSBlbXB0eSBoYW5kbGVyIGJlY2F1c2Ugc3lzdGVtY2FsbHMgd2lsbCBnZXQgaW50ZXJydXB0ZWQKKwkgKiB1cG9uIHNpZ25hbCByZWNlaXB0CisJICogU3lzViBuZWVkcyB0aGUgaGFuZGxlciB0byBiZSByZWFybWVkCisJICovCiAJc2lnbmFsKFNJR0NITEQsIGNoaWxkX2hhbmRsZXIpOwogfQogCkBAIC04MzYsNyArNzI1LDcgQEAKIAkJaWYgKHNvY2tmZCA8IDApCiAJCQljb250aW51ZTsKIAkJaWYgKHNvY2tmZCA+PSBGRF9TRVRTSVpFKSB7Ci0JCQllcnJvcigidG9vIGxhcmdlIHNvY2tldCBkZXNjcmlwdG9yLiIpOworCQkJbG9nZXJyb3IoIlNvY2tldCBkZXNjcmlwdG9yIHRvbyBsYXJnZSIpOwogCQkJY2xvc2Uoc29ja2ZkKTsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC05MzYsMzUgKzgyNSwyOCBAQAogCXN0cnVjdCBwb2xsZmQgKnBmZDsKIAlpbnQgaTsKIAotCWlmIChwaXBlKGNoaWxkX2hhbmRsZXJfcGlwZSkgPCAwKQotCQlkaWUgKCJDb3VsZCBub3Qgc2V0IHVwIHBpcGUgZm9yIGNoaWxkIGhhbmRsZXIiKTsKLQotCXBmZCA9IHhjYWxsb2Moc29ja251bSArIDEsIHNpemVvZihzdHJ1Y3QgcG9sbGZkKSk7CisJcGZkID0geGNhbGxvYyhzb2NrbnVtLCBzaXplb2Yoc3RydWN0IHBvbGxmZCkpOwogCiAJZm9yIChpID0gMDsgaSA8IHNvY2tudW07IGkrKykgewogCQlwZmRbaV0uZmQgPSBzb2NrbGlzdFtpXTsKIAkJcGZkW2ldLmV2ZW50cyA9IFBPTExJTjsKIAl9Ci0JcGZkW3NvY2tudW1dLmZkID0gY2hpbGRfaGFuZGxlcl9waXBlWzBdOwotCXBmZFtzb2NrbnVtXS5ldmVudHMgPSBQT0xMSU47CiAKIAlzaWduYWwoU0lHQ0hMRCwgY2hpbGRfaGFuZGxlcik7CiAKIAlmb3IgKDs7KSB7CiAJCWludCBpOwogCi0JCWlmIChwb2xsKHBmZCwgc29ja251bSArIDEsIC0xKSA8IDApIHsKKwkJY2hlY2tfZGVhZF9jaGlsZHJlbigpOworCisJCWlmIChwb2xsKHBmZCwgc29ja251bSwgLTEpIDwgMCkgewogCQkJaWYgKGVycm5vICE9IEVJTlRSKSB7Ci0JCQkJZXJyb3IoInBvbGwgZmFpbGVkLCByZXN1bWluZzogJXMiLAorCQkJCWxvZ2Vycm9yKCJQb2xsIGZhaWxlZCwgcmVzdW1pbmc6ICVzIiwKIAkJCQkgICAgICBzdHJlcnJvcihlcnJubykpOwogCQkJCXNsZWVwKDEpOwogCQkJfQogCQkJY29udGludWU7CiAJCX0KLQkJaWYgKHBmZFtzb2NrbnVtXS5yZXZlbnRzICYgUE9MTElOKSB7Ci0JCQlyZWFkKGNoaWxkX2hhbmRsZXJfcGlwZVswXSwgJmksIDEpOwotCQkJY2hlY2tfZGVhZF9jaGlsZHJlbigpOwotCQl9CiAKIAkJZm9yIChpID0gMDsgaSA8IHNvY2tudW07IGkrKykgewogCQkJaWYgKHBmZFtpXS5yZXZlbnRzICYgUE9MTElOKSB7CkBAIC0xMDIyLDcgKzkwNCw3IEBACiAJRklMRSAqZiA9IGZvcGVuKHBhdGgsICJ3Iik7CiAJaWYgKCFmKQogCQlkaWUoImNhbm5vdCBvcGVuIHBpZCBmaWxlICVzOiAlcyIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7Ci0JaWYgKGZwcmludGYoZiwgIiVkXG4iLCBnZXRwaWQoKSkgPCAwIHx8IGZjbG9zZShmKSAhPSAwKQorCWlmIChmcHJpbnRmKGYsICIlIlBSSXVNQVgiXG4iLCAodWludG1heF90KSBnZXRwaWQoKSkgPCAwIHx8IGZjbG9zZShmKSAhPSAwKQogCQlkaWUoImZhaWxlZCB0byB3cml0ZSBwaWQgZmlsZSAlczogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwogfQogCkBAIC0xMDU1LDIxICs5MzcsMTIgQEAKIAlnaWRfdCBnaWQgPSAwOwogCWludCBpOwogCi0JLyogV2l0aG91dCB0aGlzIHdlIGNhbm5vdCByZWx5IG9uIHdhaXRwaWQoKSB0byB0ZWxsCi0JICogd2hhdCBoYXBwZW5lZCB0byBvdXIgY2hpbGRyZW4uCi0JICovCi0Jc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwotCiAJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgewogCQljaGFyICphcmcgPSBhcmd2W2ldOwogCiAJCWlmICghcHJlZml4Y21wKGFyZywgIi0tbGlzdGVuPSIpKSB7Ci0JCSAgICBjaGFyICpwID0gYXJnICsgOTsKLQkJICAgIGNoYXIgKnBoID0gbGlzdGVuX2FkZHIgPSB4bWFsbG9jKHN0cmxlbihhcmcgKyA5KSArIDEpOwotCQkgICAgd2hpbGUgKCpwKQotCQkJKnBoKysgPSB0b2xvd2VyKCpwKyspOwotCQkgICAgKnBoID0gMDsKLQkJICAgIGNvbnRpbnVlOworCQkJbGlzdGVuX2FkZHIgPSB4c3RyZHVwX3RvbG93ZXIoYXJnICsgOSk7CisJCQljb250aW51ZTsKIAkJfQogCQlpZiAoIXByZWZpeGNtcChhcmcsICItLXBvcnQ9IikpIHsKIAkJCWNoYXIgKmVuZDsKQEAgLTExMDUsNiArOTc4LDEyIEBACiAJCQlpbml0X3RpbWVvdXQgPSBhdG9pKGFyZysxNSk7CiAJCQljb250aW51ZTsKIAkJfQorCQlpZiAoIXByZWZpeGNtcChhcmcsICItLW1heC1jb25uZWN0aW9ucz0iKSkgeworCQkJbWF4X2Nvbm5lY3Rpb25zID0gYXRvaShhcmcrMTgpOworCQkJaWYgKG1heF9jb25uZWN0aW9ucyA8IDApCisJCQkJbWF4X2Nvbm5lY3Rpb25zID0gMDsJICAgICAgICAvKiB1bmxpbWl0ZWQgKi8KKwkJCWNvbnRpbnVlOworCQl9CiAJCWlmICghc3RyY21wKGFyZywgIi0tc3RyaWN0LXBhdGhzIikpIHsKIAkJCXN0cmljdF9wYXRocyA9IDE7CiAJCQljb250aW51ZTsKQEAgLTExNzgsOSArMTA1NywxMSBAQAogCX0KIAogCWlmIChsb2dfc3lzbG9nKSB7Ci0JCW9wZW5sb2coImdpdC1kYWVtb24iLCAwLCBMT0dfREFFTU9OKTsKKwkJb3BlbmxvZygiZ2l0LWRhZW1vbiIsIExPR19QSUQsIExPR19EQUVNT04pOwogCQlzZXRfZGllX3JvdXRpbmUoZGFlbW9uX2RpZSk7Ci0JfQorCX0gZWxzZQorCQkvKiBhdm9pZCBzcGxpdHRpbmcgYSBtZXNzYWdlIGluIHRoZSBtaWRkbGUgKi8KKwkJc2V0dmJ1ZihzdGRlcnIsIE5VTEwsIF9JT0xCRiwgMCk7CiAKIAlpZiAoaW5ldGRfbW9kZSAmJiAoZ3JvdXBfbmFtZSB8fCB1c2VyX25hbWUpKQogCQlkaWUoIi0tdXNlciBhbmQgLS1ncm91cCBhcmUgaW5jb21wYXRpYmxlIHdpdGggLS1pbmV0ZCIpOwpAQCAtMTIxMiwyMCArMTA5MywxOCBAQAogCWlmIChzdHJpY3RfcGF0aHMgJiYgKCFva19wYXRocyB8fCAhKm9rX3BhdGhzKSkKIAkJZGllKCJvcHRpb24gLS1zdHJpY3QtcGF0aHMgcmVxdWlyZXMgYSB3aGl0ZWxpc3QiKTsKIAotCWlmIChiYXNlX3BhdGgpIHsKLQkJc3RydWN0IHN0YXQgc3Q7Ci0KLQkJaWYgKHN0YXQoYmFzZV9wYXRoLCAmc3QpIHx8ICFTX0lTRElSKHN0LnN0X21vZGUpKQotCQkJZGllKCJiYXNlLXBhdGggJyVzJyBkb2VzIG5vdCBleGlzdCBvciAiCi0JCQkgICAgImlzIG5vdCBhIGRpcmVjdG9yeSIsIGJhc2VfcGF0aCk7Ci0JfQorCWlmIChiYXNlX3BhdGggJiYgIWlzX2RpcmVjdG9yeShiYXNlX3BhdGgpKQorCQlkaWUoImJhc2UtcGF0aCAnJXMnIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhIGRpcmVjdG9yeSIsCisJCSAgICBiYXNlX3BhdGgpOwogCiAJaWYgKGluZXRkX21vZGUpIHsKIAkJc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7CiAJCXN0cnVjdCBzb2NrYWRkciAqcGVlciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmc3M7CiAJCXNvY2tsZW5fdCBzbGVuID0gc2l6ZW9mKHNzKTsKIAotCQlmcmVvcGVuKCIvZGV2L251bGwiLCAidyIsIHN0ZGVycik7CisJCWlmICghZnJlb3BlbigiL2Rldi9udWxsIiwgInciLCBzdGRlcnIpKQorCQkJZGllKCJmYWlsZWQgdG8gcmVkaXJlY3Qgc3RkZXJyIHRvIC9kZXYvbnVsbDogJXMiLAorCQkJICAgIHN0cmVycm9yKGVycm5vKSk7CiAKIAkJaWYgKGdldHBlZXJuYW1lKDAsIHBlZXIsICZzbGVuKSkKIAkJCXBlZXIgPSBOVUxMOwpAQCAtMTIzMyw4ICsxMTEyLDEwIEBACiAJCXJldHVybiBleGVjdXRlKHBlZXIpOwogCX0KIAotCWlmIChkZXRhY2gpCisJaWYgKGRldGFjaCkgewogCQlkYWVtb25pemUoKTsKKwkJbG9naW5mbygiUmVhZHkgdG8gcnVtYmxlIik7CisJfQogCWVsc2UKIAkJc2FuaXRpemVfc3RkZmRzKCk7CiAKZGlmZiAtLWdpdCBhL2RpZmYtbGliLmMgYi9kaWZmLWxpYi5jCmluZGV4IGU3ZWFmZjkuLmFlOTZjNjQgMTAwNjQ0Ci0tLSBhL2RpZmYtbGliLmMKKysrIGIvZGlmZi1saWIuYwpAQCAtNjMsNiArNjMsOCBAQAogCQkJICAgICAgPyBDRV9NQVRDSF9SQUNZX0lTX0RJUlRZIDogMCk7CiAJY2hhciBzeW1jYWNoZVtQQVRIX01BWF07CiAKKwlkaWZmX3NldF9tbmVtb25pY19wcmVmaXgoJnJldnMtPmRpZmZvcHQsICJpLyIsICJ3LyIpOworCiAJaWYgKGRpZmZfdW5tZXJnZWRfc3RhZ2UgPCAwKQogCQlkaWZmX3VubWVyZ2VkX3N0YWdlID0gMjsKIAllbnRyaWVzID0gYWN0aXZlX25yOwpAQCAtNDY5LDYgKzQ3MSw3IEBACiAJaWYgKHVucGFja190cmVlcygxLCAmdCwgJm9wdHMpKQogCQlleGl0KDEyOCk7CiAKKwlkaWZmX3NldF9tbmVtb25pY19wcmVmaXgoJnJldnMtPmRpZmZvcHQsICJjLyIsIGNhY2hlZCA/ICJpLyIgOiAidy8iKTsKIAlkaWZmY29yZV9zdGQoJnJldnMtPmRpZmZvcHQpOwogCWRpZmZfZmx1c2goJnJldnMtPmRpZmZvcHQpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZGlmZi1uby1pbmRleC5jIGIvZGlmZi1uby1pbmRleC5jCmluZGV4IDdkNjhiN2YuLjYwZWQxNzQgMTAwNjQ0Ci0tLSBhL2RpZmYtbm8taW5kZXguYworKysgYi9kaWZmLW5vLWluZGV4LmMKQEAgLTE3Myw4ICsxNzMsMTAgQEAKIAogCS8qIFdlcmUgd2UgYXNrZWQgdG8gZG8gLS1uby1pbmRleCBleHBsaWNpdGx5PyAqLwogCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKLQkJaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tIikpCi0JCQlyZXR1cm47CisJCWlmICghc3RyY21wKGFyZ3ZbaV0sICItLSIpKSB7CisJCQlpKys7CisJCQlicmVhazsKKwkJfQogCQlpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS1uby1pbmRleCIpKQogCQkJbm9faW5kZXggPSAxOwogCQlpZiAoYXJndltpXVswXSAhPSAnLScpCkBAIC0xOTgsMTMgKzIwMCw2IEBACiAJCWRpZSgiZ2l0IGRpZmYgJXMgdGFrZXMgdHdvIHBhdGhzIiwKIAkJICAgIG5vX2luZGV4ID8gIi0tbm8taW5kZXgiIDogIlstLW5vLWluZGV4XSIpOwogCi0JLyoKLQkgKiBJZiB0aGUgdXNlciBhc2tlZCBmb3Igb3VyIGV4aXQgY29kZSB0aGVuIGRvbid0IHN0YXJ0IGEKLQkgKiBwYWdlciBvciB3ZSB3b3VsZCBlbmQgdXAgcmVwb3J0aW5nIGl0cyBleGl0IGNvZGUgaW5zdGVhZC4KLQkgKi8KLQlpZiAoIURJRkZfT1BUX1RTVCgmcmV2cy0+ZGlmZm9wdCwgRVhJVF9XSVRIX1NUQVRVUykpCi0JCXNldHVwX3BhZ2VyKCk7Ci0KIAlkaWZmX3NldHVwKCZyZXZzLT5kaWZmb3B0KTsKIAlpZiAoIXJldnMtPmRpZmZvcHQub3V0cHV0X2Zvcm1hdCkKIAkJcmV2cy0+ZGlmZm9wdC5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfUEFUQ0g7CkBAIC0yMTIsOCArMjA3LDEyIEBACiAJCWludCBqOwogCQlpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS1uby1pbmRleCIpKQogCQkJaSsrOwotCQllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICItcSIpKQorCQllbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItcSIpKSB7CiAJCQlvcHRpb25zIHw9IERJRkZfU0lMRU5UX09OX1JFTU9WRUQ7CisJCQlpKys7CisJCX0KKwkJZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS0iKSkKKwkJCWkrKzsKIAkJZWxzZSB7CiAJCQlqID0gZGlmZl9vcHRfcGFyc2UoJnJldnMtPmRpZmZvcHQsIGFyZ3YgKyBpLCBhcmdjIC0gaSk7CiAJCQlpZiAoIWopCkBAIC0yMjIsNiArMjIxLDEzIEBACiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIHRoZSB1c2VyIGFza2VkIGZvciBvdXIgZXhpdCBjb2RlIHRoZW4gZG9uJ3Qgc3RhcnQgYQorCSAqIHBhZ2VyIG9yIHdlIHdvdWxkIGVuZCB1cCByZXBvcnRpbmcgaXRzIGV4aXQgY29kZSBpbnN0ZWFkLgorCSAqLworCWlmICghRElGRl9PUFRfVFNUKCZyZXZzLT5kaWZmb3B0LCBFWElUX1dJVEhfU1RBVFVTKSkKKwkJc2V0dXBfcGFnZXIoKTsKKwogCWlmIChwcmVmaXgpIHsKIAkJaW50IGxlbiA9IHN0cmxlbihwcmVmaXgpOwogCkBAIC0yNTIsNiArMjU4LDcgQEAKIAlpZiAocXVldWVfZGlmZigmcmV2cy0+ZGlmZm9wdCwgcmV2cy0+ZGlmZm9wdC5wYXRoc1swXSwKIAkJICAgICAgIHJldnMtPmRpZmZvcHQucGF0aHNbMV0pKQogCQlleGl0KDEpOworCWRpZmZfc2V0X21uZW1vbmljX3ByZWZpeCgmcmV2cy0+ZGlmZm9wdCwgIjEvIiwgIjIvIik7CiAJZGlmZmNvcmVfc3RkKCZyZXZzLT5kaWZmb3B0KTsKIAlkaWZmX2ZsdXNoKCZyZXZzLT5kaWZmb3B0KTsKIApkaWZmIC0tZ2l0IGEvZGlmZi5jIGIvZGlmZi5jCmluZGV4IGY5MWYyNTYuLjQxNmM1YWEgMTAwNjQ0Ci0tLSBhL2RpZmYuYworKysgYi9kaWZmLmMKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJhdHRyLmgiCiAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKICNpbmNsdWRlICJ1dGY4LmgiCisjaW5jbHVkZSAidXNlcmRpZmYuaCIKIAogI2lmZGVmIE5PX0ZBU1RfV09SS0lOR19ESVJFQ1RPUlkKICNkZWZpbmUgRkFTVF9XT1JLSU5HX0RJUkVDVE9SWSAwCkBAIC0yMCw5ICsyMSwxMSBAQAogCiBzdGF0aWMgaW50IGRpZmZfZGV0ZWN0X3JlbmFtZV9kZWZhdWx0Owogc3RhdGljIGludCBkaWZmX3JlbmFtZV9saW1pdF9kZWZhdWx0ID0gMjAwOworc3RhdGljIGludCBkaWZmX3N1cHByZXNzX2JsYW5rX2VtcHR5OwogaW50IGRpZmZfdXNlX2NvbG9yX2RlZmF1bHQgPSAtMTsKIHN0YXRpYyBjb25zdCBjaGFyICpleHRlcm5hbF9kaWZmX2NtZF9jZmc7CiBpbnQgZGlmZl9hdXRvX3JlZnJlc2hfaW5kZXggPSAxOworc3RhdGljIGludCBkaWZmX21uZW1vbmljX3ByZWZpeDsKIAogc3RhdGljIGNoYXIgZGlmZl9jb2xvcnNbXVtDT0xPUl9NQVhMRU5dID0gewogCSJcMDMzW20iLAkvKiByZXNldCAqLwpAQCAtMzUsNiArMzgsOSBAQAogCSJcMDMzWzQxbSIsCS8qIFdISVRFU1BBQ0UgKHJlZCBiYWNrZ3JvdW5kKSAqLwogfTsKIAorc3RhdGljIHZvaWQgZGlmZl9maWxlc3BlY19sb2FkX2RyaXZlcihzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lKTsKK3N0YXRpYyBjaGFyICpydW5fdGV4dGNvbnYoY29uc3QgY2hhciAqLCBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqLCBzaXplX3QgKik7CisKIHN0YXRpYyBpbnQgcGFyc2VfZGlmZl9jb2xvcl9zbG90KGNvbnN0IGNoYXIgKnZhciwgaW50IG9mcykKIHsKIAlpZiAoIXN0cmNhc2VjbXAodmFyK29mcywgInBsYWluIikpCkBAIC01NCw4MCArNjAsNiBAQAogCWRpZSgiYmFkIGNvbmZpZyB2YXJpYWJsZSAnJXMnIiwgdmFyKTsKIH0KIAotc3RhdGljIHN0cnVjdCBsbF9kaWZmX2RyaXZlciB7Ci0JY29uc3QgY2hhciAqbmFtZTsKLQlzdHJ1Y3QgbGxfZGlmZl9kcml2ZXIgKm5leHQ7Ci0JY29uc3QgY2hhciAqY21kOwotfSAqdXNlcl9kaWZmLCAqKnVzZXJfZGlmZl90YWlsOwotCi0vKgotICogQ3VycmVudGx5IHRoZXJlIGlzIG9ubHkgImRpZmYuPGRyaXZlcm5hbWU+LmNvbW1hbmQiIHZhcmlhYmxlOwotICogYmVjYXVzZSB0aGVyZSBhcmUgImRpZmYuY29sb3IuPHNsb3Q+IiB2YXJpYWJsZXMsIHdlIGFyZSBwYXJzaW5nCi0gKiB0aGlzIGluIGEgYml0IGNvbnZvbHV0ZWQgd2F5IHRvIGFsbG93IGxvdyBsZXZlbCBkaWZmIGRyaXZlcgotICogY2FsbGVkICJjb2xvciIuCi0gKi8KLXN0YXRpYyBpbnQgcGFyc2VfbGxkaWZmX2NvbW1hbmQoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICplcCwgY29uc3QgY2hhciAqdmFsdWUpCi17Ci0JY29uc3QgY2hhciAqbmFtZTsKLQlpbnQgbmFtZWxlbjsKLQlzdHJ1Y3QgbGxfZGlmZl9kcml2ZXIgKmRydjsKLQotCW5hbWUgPSB2YXIgKyA1OwotCW5hbWVsZW4gPSBlcCAtIG5hbWU7Ci0JZm9yIChkcnYgPSB1c2VyX2RpZmY7IGRydjsgZHJ2ID0gZHJ2LT5uZXh0KQotCQlpZiAoIXN0cm5jbXAoZHJ2LT5uYW1lLCBuYW1lLCBuYW1lbGVuKSAmJiAhZHJ2LT5uYW1lW25hbWVsZW5dKQotCQkJYnJlYWs7Ci0JaWYgKCFkcnYpIHsKLQkJZHJ2ID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxsX2RpZmZfZHJpdmVyKSk7Ci0JCWRydi0+bmFtZSA9IHhtZW1kdXB6KG5hbWUsIG5hbWVsZW4pOwotCQlpZiAoIXVzZXJfZGlmZl90YWlsKQotCQkJdXNlcl9kaWZmX3RhaWwgPSAmdXNlcl9kaWZmOwotCQkqdXNlcl9kaWZmX3RhaWwgPSBkcnY7Ci0JCXVzZXJfZGlmZl90YWlsID0gJihkcnYtPm5leHQpOwotCX0KLQotCXJldHVybiBnaXRfY29uZmlnX3N0cmluZygmKGRydi0+Y21kKSwgdmFyLCB2YWx1ZSk7Ci19Ci0KLS8qCi0gKiAnZGlmZi48d2hhdD4uZnVuY25hbWUnIGF0dHJpYnV0ZSBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uCi0gKiB0byBkZWZpbmUgYSBjdXN0b21pemVkIHJlZ2V4cCB0byBmaW5kIHRoZSBiZWdpbm5pbmcgb2YgYSBmdW5jdGlvbiB0bwotICogYmUgdXNlZCBmb3IgaHVuayBoZWFkZXIgbGluZXMgb2YgImRpZmYgLXAiIHN0eWxlIG91dHB1dC4KLSAqLwotc3RydWN0IGZ1bmNuYW1lX3BhdHRlcm5fZW50cnkgewotCWNoYXIgKm5hbWU7Ci0JY2hhciAqcGF0dGVybjsKLQlpbnQgY2ZsYWdzOwotfTsKLXN0YXRpYyBzdHJ1Y3QgZnVuY25hbWVfcGF0dGVybl9saXN0IHsKLQlzdHJ1Y3QgZnVuY25hbWVfcGF0dGVybl9saXN0ICpuZXh0OwotCXN0cnVjdCBmdW5jbmFtZV9wYXR0ZXJuX2VudHJ5IGU7Ci19ICpmdW5jbmFtZV9wYXR0ZXJuX2xpc3Q7Ci0KLXN0YXRpYyBpbnQgcGFyc2VfZnVuY25hbWVfcGF0dGVybihjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKmVwLCBjb25zdCBjaGFyICp2YWx1ZSwgaW50IGNmbGFncykKLXsKLQljb25zdCBjaGFyICpuYW1lOwotCWludCBuYW1lbGVuOwotCXN0cnVjdCBmdW5jbmFtZV9wYXR0ZXJuX2xpc3QgKnBwOwotCi0JbmFtZSA9IHZhciArIDU7IC8qICJkaWZmLiIgKi8KLQluYW1lbGVuID0gZXAgLSBuYW1lOwotCi0JZm9yIChwcCA9IGZ1bmNuYW1lX3BhdHRlcm5fbGlzdDsgcHA7IHBwID0gcHAtPm5leHQpCi0JCWlmICghc3RybmNtcChwcC0+ZS5uYW1lLCBuYW1lLCBuYW1lbGVuKSAmJiAhcHAtPmUubmFtZVtuYW1lbGVuXSkKLQkJCWJyZWFrOwotCWlmICghcHApIHsKLQkJcHAgPSB4Y2FsbG9jKDEsIHNpemVvZigqcHApKTsKLQkJcHAtPmUubmFtZSA9IHhtZW1kdXB6KG5hbWUsIG5hbWVsZW4pOwotCQlwcC0+bmV4dCA9IGZ1bmNuYW1lX3BhdHRlcm5fbGlzdDsKLQkJZnVuY25hbWVfcGF0dGVybl9saXN0ID0gcHA7Ci0JfQotCWZyZWUocHAtPmUucGF0dGVybik7Ci0JcHAtPmUucGF0dGVybiA9IHhzdHJkdXAodmFsdWUpOwotCXBwLT5lLmNmbGFncyA9IGNmbGFnczsKLQlyZXR1cm4gMDsKLX0KLQogLyoKICAqIFRoZXNlIGFyZSB0byBnaXZlIFVJIGxheWVyIGRlZmF1bHRzLgogICogVGhlIGNvcmUtbGV2ZWwgY29tbWFuZHMgc3VjaCBhcyBnaXQtZGlmZi1maWxlcyBzaG91bGQKQEAgLTE1NCwxNCArODYsMTIgQEAKIAkJZGlmZl9hdXRvX3JlZnJlc2hfaW5kZXggPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CiAJCXJldHVybiAwOwogCX0KKwlpZiAoIXN0cmNtcCh2YXIsICJkaWZmLm1uZW1vbmljcHJlZml4IikpIHsKKwkJZGlmZl9tbmVtb25pY19wcmVmaXggPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KIAlpZiAoIXN0cmNtcCh2YXIsICJkaWZmLmV4dGVybmFsIikpCiAJCXJldHVybiBnaXRfY29uZmlnX3N0cmluZygmZXh0ZXJuYWxfZGlmZl9jbWRfY2ZnLCB2YXIsIHZhbHVlKTsKLQlpZiAoIXByZWZpeGNtcCh2YXIsICJkaWZmLiIpKSB7Ci0JCWNvbnN0IGNoYXIgKmVwID0gc3RycmNocih2YXIsICcuJyk7Ci0KLQkJaWYgKGVwICE9IHZhciArIDQgJiYgIXN0cmNtcChlcCwgIi5jb21tYW5kIikpCi0JCQlyZXR1cm4gcGFyc2VfbGxkaWZmX2NvbW1hbmQodmFyLCBlcCwgdmFsdWUpOwotCX0KIAogCXJldHVybiBnaXRfZGlmZl9iYXNpY19jb25maWcodmFyLCB2YWx1ZSwgY2IpOwogfQpAQCAtMTczLDYgKzEwMywxMiBAQAogCQlyZXR1cm4gMDsKIAl9CiAKKwlzd2l0Y2ggKHVzZXJkaWZmX2NvbmZpZyh2YXIsIHZhbHVlKSkgeworCQljYXNlIDA6IGJyZWFrOworCQljYXNlIC0xOiByZXR1cm4gLTE7CisJCWRlZmF1bHQ6IHJldHVybiAwOworCX0KKwogCWlmICghcHJlZml4Y21wKHZhciwgImRpZmYuY29sb3IuIikgfHwgIXByZWZpeGNtcCh2YXIsICJjb2xvci5kaWZmLiIpKSB7CiAJCWludCBzbG90ID0gcGFyc2VfZGlmZl9jb2xvcl9zbG90KHZhciwgMTEpOwogCQlpZiAoIXZhbHVlKQpAQCAtMTgxLDIxICsxMTcsMTIgQEAKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKCFwcmVmaXhjbXAodmFyLCAiZGlmZi4iKSkgewotCQljb25zdCBjaGFyICplcCA9IHN0cnJjaHIodmFyLCAnLicpOwotCQlpZiAoZXAgIT0gdmFyICsgNCkgewotCQkJaWYgKCFzdHJjbXAoZXAsICIuZnVuY25hbWUiKSkgewotCQkJCWlmICghdmFsdWUpCi0JCQkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOwotCQkJCXJldHVybiBwYXJzZV9mdW5jbmFtZV9wYXR0ZXJuKHZhciwgZXAsIHZhbHVlLAotCQkJCQkwKTsKLQkJCX0gZWxzZSBpZiAoIXN0cmNtcChlcCwgIi54ZnVuY25hbWUiKSkgewotCQkJCWlmICghdmFsdWUpCi0JCQkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOwotCQkJCXJldHVybiBwYXJzZV9mdW5jbmFtZV9wYXR0ZXJuKHZhciwgZXAsIHZhbHVlLAotCQkJCQlSRUdfRVhURU5ERUQpOwotCQkJfQotCQl9CisJLyogbGlrZSBHTlUgZGlmZidzIC0tc3VwcHJlc3MtYmxhbmstZW1wdHkgb3B0aW9uICAqLworCWlmICghc3RyY21wKHZhciwgImRpZmYuc3VwcHJlc3NibGFua2VtcHR5IikgfHwKKwkJCS8qIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAqLworCQkJIXN0cmNtcCh2YXIsICJkaWZmLnN1cHByZXNzLWJsYW5rLWVtcHR5IikpIHsKKwkJZGlmZl9zdXBwcmVzc19ibGFua19lbXB0eSA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKKwkJcmV0dXJuIDA7CiAJfQogCiAJcmV0dXJuIGdpdF9jb2xvcl9kZWZhdWx0X2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7CkBAIC0yMDUsOSArMTMyLDggQEAKIHsKIAlpbnQgbmVlZF9vbmUgPSBxdW90ZV9jX3N0eWxlKG9uZSwgTlVMTCwgTlVMTCwgMSk7CiAJaW50IG5lZWRfdHdvID0gcXVvdGVfY19zdHlsZSh0d28sIE5VTEwsIE5VTEwsIDEpOwotCXN0cnVjdCBzdHJidWYgcmVzOworCXN0cnVjdCBzdHJidWYgcmVzID0gU1RSQlVGX0lOSVQ7CiAKLQlzdHJidWZfaW5pdCgmcmVzLCAwKTsKIAlpZiAobmVlZF9vbmUgKyBuZWVkX3R3bykgewogCQlzdHJidWZfYWRkY2goJnJlcywgJyInKTsKIAkJcXVvdGVfY19zdHlsZShvbmUsICZyZXMsIE5VTEwsIDEpOwpAQCAtMzA1LDYgKzIzMSw4IEBACiAJCQkgICAgICBjb25zdCBjaGFyICpuYW1lX2IsCiAJCQkgICAgICBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lLAogCQkJICAgICAgc3RydWN0IGRpZmZfZmlsZXNwZWMgKnR3bywKKwkJCSAgICAgIGNvbnN0IGNoYXIgKnRleHRjb252X29uZSwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKnRleHRjb252X3R3bywKIAkJCSAgICAgIHN0cnVjdCBkaWZmX29wdGlvbnMgKm8pCiB7CiAJaW50IGxjX2EsIGxjX2I7CkBAIC0zMTYsNiArMjQ0LDE3IEBACiAJY29uc3QgY2hhciAqbmV3ID0gZGlmZl9nZXRfY29sb3IoY29sb3JfZGlmZiwgRElGRl9GSUxFX05FVyk7CiAJY29uc3QgY2hhciAqcmVzZXQgPSBkaWZmX2dldF9jb2xvcihjb2xvcl9kaWZmLCBESUZGX1JFU0VUKTsKIAlzdGF0aWMgc3RydWN0IHN0cmJ1ZiBhX25hbWUgPSBTVFJCVUZfSU5JVCwgYl9uYW1lID0gU1RSQlVGX0lOSVQ7CisJY29uc3QgY2hhciAqYV9wcmVmaXgsICpiX3ByZWZpeDsKKwljb25zdCBjaGFyICpkYXRhX29uZSwgKmRhdGFfdHdvOworCXNpemVfdCBzaXplX29uZSwgc2l6ZV90d287CisKKwlpZiAoZGlmZl9tbmVtb25pY19wcmVmaXggJiYgRElGRl9PUFRfVFNUKG8sIFJFVkVSU0VfRElGRikpIHsKKwkJYV9wcmVmaXggPSBvLT5iX3ByZWZpeDsKKwkJYl9wcmVmaXggPSBvLT5hX3ByZWZpeDsKKwl9IGVsc2UgeworCQlhX3ByZWZpeCA9IG8tPmFfcHJlZml4OworCQliX3ByZWZpeCA9IG8tPmJfcHJlZml4OworCX0KIAogCW5hbWVfYSArPSAoKm5hbWVfYSA9PSAnLycpOwogCW5hbWVfYiArPSAoKm5hbWVfYiA9PSAnLycpOwpAQCAtMzI0LDEzICsyNjMsMzIgQEAKIAogCXN0cmJ1Zl9yZXNldCgmYV9uYW1lKTsKIAlzdHJidWZfcmVzZXQoJmJfbmFtZSk7Ci0JcXVvdGVfdHdvX2Nfc3R5bGUoJmFfbmFtZSwgby0+YV9wcmVmaXgsIG5hbWVfYSwgMCk7Ci0JcXVvdGVfdHdvX2Nfc3R5bGUoJmJfbmFtZSwgby0+Yl9wcmVmaXgsIG5hbWVfYiwgMCk7CisJcXVvdGVfdHdvX2Nfc3R5bGUoJmFfbmFtZSwgYV9wcmVmaXgsIG5hbWVfYSwgMCk7CisJcXVvdGVfdHdvX2Nfc3R5bGUoJmJfbmFtZSwgYl9wcmVmaXgsIG5hbWVfYiwgMCk7CiAKIAlkaWZmX3BvcHVsYXRlX2ZpbGVzcGVjKG9uZSwgMCk7CiAJZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyh0d28sIDApOwotCWxjX2EgPSBjb3VudF9saW5lcyhvbmUtPmRhdGEsIG9uZS0+c2l6ZSk7Ci0JbGNfYiA9IGNvdW50X2xpbmVzKHR3by0+ZGF0YSwgdHdvLT5zaXplKTsKKwlpZiAodGV4dGNvbnZfb25lKSB7CisJCWRhdGFfb25lID0gcnVuX3RleHRjb252KHRleHRjb252X29uZSwgb25lLCAmc2l6ZV9vbmUpOworCQlpZiAoIWRhdGFfb25lKQorCQkJZGllKCJ1bmFibGUgdG8gcmVhZCBmaWxlcyB0byBkaWZmIik7CisJfQorCWVsc2UgeworCQlkYXRhX29uZSA9IG9uZS0+ZGF0YTsKKwkJc2l6ZV9vbmUgPSBvbmUtPnNpemU7CisJfQorCWlmICh0ZXh0Y29udl90d28pIHsKKwkJZGF0YV90d28gPSBydW5fdGV4dGNvbnYodGV4dGNvbnZfdHdvLCB0d28sICZzaXplX3R3byk7CisJCWlmICghZGF0YV90d28pCisJCQlkaWUoInVuYWJsZSB0byByZWFkIGZpbGVzIHRvIGRpZmYiKTsKKwl9CisJZWxzZSB7CisJCWRhdGFfdHdvID0gdHdvLT5kYXRhOworCQlzaXplX3R3byA9IHR3by0+c2l6ZTsKKwl9CisKKwlsY19hID0gY291bnRfbGluZXMoZGF0YV9vbmUsIHNpemVfb25lKTsKKwlsY19iID0gY291bnRfbGluZXMoZGF0YV90d28sIHNpemVfdHdvKTsKIAlmcHJpbnRmKG8tPmZpbGUsCiAJCSIlcy0tLSAlcyVzJXNcbiVzKysrICVzJXMlc1xuJXNAQCAtIiwKIAkJbWV0YWluZm8sIGFfbmFtZS5idWYsIG5hbWVfYV90YWIsIHJlc2V0LApAQCAtMzQwLDkgKzI5OCw5IEBACiAJcHJpbnRfbGluZV9jb3VudChvLT5maWxlLCBsY19iKTsKIAlmcHJpbnRmKG8tPmZpbGUsICIgQEAlc1xuIiwgcmVzZXQpOwogCWlmIChsY19hKQotCQljb3B5X2ZpbGVfd2l0aF9wcmVmaXgoby0+ZmlsZSwgJy0nLCBvbmUtPmRhdGEsIG9uZS0+c2l6ZSwgb2xkLCByZXNldCk7CisJCWNvcHlfZmlsZV93aXRoX3ByZWZpeChvLT5maWxlLCAnLScsIGRhdGFfb25lLCBzaXplX29uZSwgb2xkLCByZXNldCk7CiAJaWYgKGxjX2IpCi0JCWNvcHlfZmlsZV93aXRoX3ByZWZpeChvLT5maWxlLCAnKycsIHR3by0+ZGF0YSwgdHdvLT5zaXplLCBuZXcsIHJlc2V0KTsKKwkJY29weV9maWxlX3dpdGhfcHJlZml4KG8tPmZpbGUsICcrJywgZGF0YV90d28sIHNpemVfdHdvLCBuZXcsIHJlc2V0KTsKIH0KIAogc3RhdGljIGludCBmaWxsX21tZmlsZShtbWZpbGVfdCAqbWYsIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvbmUpCkBAIC0zNTQsNiArMzEyLDcgQEAKIAl9CiAJZWxzZSBpZiAoZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhvbmUsIDApKQogCQlyZXR1cm4gLTE7CisKIAltZi0+cHRyID0gb25lLT5kYXRhOwogCW1mLT5zaXplID0gb25lLT5zaXplOwogCXJldHVybiAwOwpAQCAtMzgwLDcgKzMzOSw2IEBACiB9CiAKIHN0cnVjdCBkaWZmX3dvcmRzX2RhdGEgewotCXN0cnVjdCB4ZGlmZl9lbWl0X3N0YXRlIHhtOwogCXN0cnVjdCBkaWZmX3dvcmRzX2J1ZmZlciBtaW51cywgcGx1czsKIAlGSUxFICpmaWxlOwogfTsKQEAgLTQ1MSw2ICs0MDksNyBAQAogCW1tZmlsZV90IG1pbnVzLCBwbHVzOwogCWludCBpOwogCisJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKIAltZW1zZXQoJnhlY2ZnLCAwLCBzaXplb2YoeGVjZmcpKTsKIAltaW51cy5zaXplID0gZGlmZl93b3Jkcy0+bWludXMudGV4dC5zaXplOwogCW1pbnVzLnB0ciA9IHhtYWxsb2MobWludXMuc2l6ZSk7CkBAIC00NzAsMTEgKzQyOSw4IEBACiAKIAl4cHAuZmxhZ3MgPSBYREZfTkVFRF9NSU5JTUFMOwogCXhlY2ZnLmN0eGxlbiA9IGRpZmZfd29yZHMtPm1pbnVzLmFsbG9jICsgZGlmZl93b3Jkcy0+cGx1cy5hbGxvYzsKLQllY2Iub3V0ZiA9IHhkaWZmX291dGY7Ci0JZWNiLnByaXYgPSBkaWZmX3dvcmRzOwotCWRpZmZfd29yZHMtPnhtLmNvbnN1bWUgPSBmbl9vdXRfZGlmZl93b3Jkc19hdXg7Ci0JeGRpX2RpZmYoJm1pbnVzLCAmcGx1cywgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKLQorCXhkaV9kaWZmX291dGYoJm1pbnVzLCAmcGx1cywgZm5fb3V0X2RpZmZfd29yZHNfYXV4LCBkaWZmX3dvcmRzLAorCQkgICAgICAmeHBwLCAmeGVjZmcsICZlY2IpOwogCWZyZWUobWludXMucHRyKTsKIAlmcmVlKHBsdXMucHRyKTsKIAlkaWZmX3dvcmRzLT5taW51cy50ZXh0LnNpemUgPSBkaWZmX3dvcmRzLT5wbHVzLnRleHQuc2l6ZSA9IDA7CkBAIC00ODgsNyArNDQ0LDYgQEAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAoKnNhbmVfdHJ1bmNhdGVfZm4pKGNoYXIgKmxpbmUsIHVuc2lnbmVkIGxvbmcgbGVuKTsKIAogc3RydWN0IGVtaXRfY2FsbGJhY2sgewotCXN0cnVjdCB4ZGlmZl9lbWl0X3N0YXRlIHhtOwogCWludCBucGFyZW50cywgY29sb3JfZGlmZjsKIAl1bnNpZ25lZCB3c19ydWxlOwogCXNhbmVfdHJ1bmNhdGVfZm4gdHJ1bmNhdGU7CkBAIC01OTgsNiArNTUzLDEyIEBACiAJCWVjYmRhdGEtPmxhYmVsX3BhdGhbMF0gPSBlY2JkYXRhLT5sYWJlbF9wYXRoWzFdID0gTlVMTDsKIAl9CiAKKwlpZiAoZGlmZl9zdXBwcmVzc19ibGFua19lbXB0eQorCSAgICAmJiBsZW4gPT0gMiAmJiBsaW5lWzBdID09ICcgJyAmJiBsaW5lWzFdID09ICdcbicpIHsKKwkJbGluZVswXSA9ICdcbic7CisJCWxlbiA9IDE7CisJfQorCiAJLyogVGhpcyBpcyBub3QgcmVhbGx5IG5lY2Vzc2FyeSBmb3Igbm93IGJlY2F1c2UKIAkgKiB0aGlzIGNvZGVwYXRoIG9ubHkgZGVhbHMgd2l0aCB0d28td2F5IGRpZmZzLgogCSAqLwpAQCAtNjYxLDcgKzYyMiw3IEBACiB7CiAJY29uc3QgY2hhciAqb2xkID0gYTsKIAljb25zdCBjaGFyICpuZXcgPSBiOwotCXN0cnVjdCBzdHJidWYgbmFtZTsKKwlzdHJ1Y3Qgc3RyYnVmIG5hbWUgPSBTVFJCVUZfSU5JVDsKIAlpbnQgcGZ4X2xlbmd0aCwgc2Z4X2xlbmd0aDsKIAlpbnQgbGVuX2EgPSBzdHJsZW4oYSk7CiAJaW50IGxlbl9iID0gc3RybGVuKGIpOwpAQCAtNjY5LDcgKzYzMCw2IEBACiAJaW50IHFsZW5fYSA9IHF1b3RlX2Nfc3R5bGUoYSwgTlVMTCwgTlVMTCwgMCk7CiAJaW50IHFsZW5fYiA9IHF1b3RlX2Nfc3R5bGUoYiwgTlVMTCwgTlVMTCwgMCk7CiAKLQlzdHJidWZfaW5pdCgmbmFtZSwgMCk7CiAJaWYgKHFsZW5fYSB8fCBxbGVuX2IpIHsKIAkJcXVvdGVfY19zdHlsZShhLCAmbmFtZSwgTlVMTCwgMCk7CiAJCXN0cmJ1Zl9hZGRzdHIoJm5hbWUsICIgPT4gIik7CkBAIC03MjYsOCArNjg2LDYgQEAKIH0KIAogc3RydWN0IGRpZmZzdGF0X3QgewotCXN0cnVjdCB4ZGlmZl9lbWl0X3N0YXRlIHhtOwotCiAJaW50IG5yOwogCWludCBhbGxvYzsKIAlzdHJ1Y3QgZGlmZnN0YXRfZmlsZSB7CkBAIC04MTQsOCArNzcyLDcgQEAKIAkJcmV0dXJuOwogCiAJaWYgKCFmaWxlLT5pc19yZW5hbWVkKSB7Ci0JCXN0cnVjdCBzdHJidWYgYnVmOwotCQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKKwkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAkJaWYgKHF1b3RlX2Nfc3R5bGUoZmlsZS0+bmFtZSwgJmJ1ZiwgTlVMTCwgMCkpIHsKIAkJCXBuYW1lID0gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKIAkJfSBlbHNlIHsKQEAgLTExMjIsOSArMTA3OSwxMyBAQAogCQkvKgogCQkgKiBPcmlnaW5hbCBtaW51cyBjb3BpZWQgaXMgdGhlIHJlbW92ZWQgbWF0ZXJpYWwsCiAJCSAqIGFkZGVkIGlzIHRoZSBuZXcgbWF0ZXJpYWwuICBUaGV5IGFyZSBib3RoIGRhbWFnZXMKLQkJICogbWFkZSB0byB0aGUgcHJlaW1hZ2UuCisJCSAqIG1hZGUgdG8gdGhlIHByZWltYWdlLiBJbiAtLWRpcnN0YXQtYnktZmlsZSBtb2RlLCBjb3VudAorCQkgKiBkYW1hZ2VkIGZpbGVzLCBub3QgZGFtYWdlZCBsaW5lcy4gVGhpcyBpcyBkb25lIGJ5CisJCSAqIGNvdW50aW5nIG9ubHkgYSBzaW5nbGUgZGFtYWdlZCBsaW5lIHBlciBmaWxlLgogCQkgKi8KIAkJZGFtYWdlID0gKHAtPm9uZS0+c2l6ZSAtIGNvcGllZCkgKyBhZGRlZDsKKwkJaWYgKERJRkZfT1BUX1RTVChvcHRpb25zLCBESVJTVEFUX0JZX0ZJTEUpICYmIGRhbWFnZSA+IDApCisJCQlkYW1hZ2UgPSAxOwogCiAJCUFMTE9DX0dST1coZGlyLmZpbGVzLCBkaXIubnIgKyAxLCBkaXIuYWxsb2MpOwogCQlkaXIuZmlsZXNbZGlyLm5yXS5uYW1lID0gbmFtZTsKQEAgLTExNTcsNyArMTExOCw2IEBACiB9CiAKIHN0cnVjdCBjaGVja2RpZmZfdCB7Ci0Jc3RydWN0IHhkaWZmX2VtaXRfc3RhdGUgeG07CiAJY29uc3QgY2hhciAqZmlsZW5hbWU7CiAJaW50IGxpbmVubzsKIAlzdHJ1Y3QgZGlmZl9vcHRpb25zICpvOwpAQCAtMTMzMiwxMjMgKzEyOTIsNTUgQEAKIAllbWl0X2JpbmFyeV9kaWZmX2JvZHkoZmlsZSwgdHdvLCBvbmUpOwogfQogCi1zdGF0aWMgdm9pZCBzZXR1cF9kaWZmX2F0dHJfY2hlY2soc3RydWN0IGdpdF9hdHRyX2NoZWNrICpjaGVjaykKK3N0YXRpYyB2b2lkIGRpZmZfZmlsZXNwZWNfbG9hZF9kcml2ZXIoc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSkKIHsKLQlzdGF0aWMgc3RydWN0IGdpdF9hdHRyICphdHRyX2RpZmY7Ci0KLQlpZiAoIWF0dHJfZGlmZikgewotCQlhdHRyX2RpZmYgPSBnaXRfYXR0cigiZGlmZiIsIDQpOwotCX0KLQljaGVja1swXS5hdHRyID0gYXR0cl9kaWZmOwotfQotCi1zdGF0aWMgdm9pZCBkaWZmX2ZpbGVzcGVjX2NoZWNrX2F0dHIoc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSkKLXsKLQlzdHJ1Y3QgZ2l0X2F0dHJfY2hlY2sgYXR0cl9kaWZmX2NoZWNrOwotCWludCBjaGVja19mcm9tX2RhdGEgPSAwOwotCi0JaWYgKG9uZS0+Y2hlY2tlZF9hdHRyKQotCQlyZXR1cm47Ci0KLQlzZXR1cF9kaWZmX2F0dHJfY2hlY2soJmF0dHJfZGlmZl9jaGVjayk7Ci0Jb25lLT5pc19iaW5hcnkgPSAwOwotCW9uZS0+ZnVuY25hbWVfcGF0dGVybl9pZGVudCA9IE5VTEw7Ci0KLQlpZiAoIWdpdF9jaGVja2F0dHIob25lLT5wYXRoLCAxLCAmYXR0cl9kaWZmX2NoZWNrKSkgewotCQljb25zdCBjaGFyICp2YWx1ZTsKLQotCQkvKiBiaW5hcnluZXNzICovCi0JCXZhbHVlID0gYXR0cl9kaWZmX2NoZWNrLnZhbHVlOwotCQlpZiAoQVRUUl9UUlVFKHZhbHVlKSkKLQkJCTsKLQkJZWxzZSBpZiAoQVRUUl9GQUxTRSh2YWx1ZSkpCi0JCQlvbmUtPmlzX2JpbmFyeSA9IDE7Ci0JCWVsc2UKLQkJCWNoZWNrX2Zyb21fZGF0YSA9IDE7Ci0KLQkJLyogZnVuY25hbWUgcGF0dGVybiBpZGVudCAqLwotCQlpZiAoQVRUUl9UUlVFKHZhbHVlKSB8fCBBVFRSX0ZBTFNFKHZhbHVlKSB8fCBBVFRSX1VOU0VUKHZhbHVlKSkKLQkJCTsKLQkJZWxzZQotCQkJb25lLT5mdW5jbmFtZV9wYXR0ZXJuX2lkZW50ID0gdmFsdWU7Ci0JfQotCi0JaWYgKGNoZWNrX2Zyb21fZGF0YSkgewotCQlpZiAoIW9uZS0+ZGF0YSAmJiBESUZGX0ZJTEVfVkFMSUQob25lKSkKLQkJCWRpZmZfcG9wdWxhdGVfZmlsZXNwZWMob25lLCAwKTsKLQotCQlpZiAob25lLT5kYXRhKQotCQkJb25lLT5pc19iaW5hcnkgPSBidWZmZXJfaXNfYmluYXJ5KG9uZS0+ZGF0YSwgb25lLT5zaXplKTsKLQl9CisJaWYgKCFvbmUtPmRyaXZlcikKKwkJb25lLT5kcml2ZXIgPSB1c2VyZGlmZl9maW5kX2J5X3BhdGgob25lLT5wYXRoKTsKKwlpZiAoIW9uZS0+ZHJpdmVyKQorCQlvbmUtPmRyaXZlciA9IHVzZXJkaWZmX2ZpbmRfYnlfbmFtZSgiZGVmYXVsdCIpOwogfQogCiBpbnQgZGlmZl9maWxlc3BlY19pc19iaW5hcnkoc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSkKIHsKLQlkaWZmX2ZpbGVzcGVjX2NoZWNrX2F0dHIob25lKTsKKwlpZiAob25lLT5pc19iaW5hcnkgPT0gLTEpIHsKKwkJZGlmZl9maWxlc3BlY19sb2FkX2RyaXZlcihvbmUpOworCQlpZiAob25lLT5kcml2ZXItPmJpbmFyeSAhPSAtMSkKKwkJCW9uZS0+aXNfYmluYXJ5ID0gb25lLT5kcml2ZXItPmJpbmFyeTsKKwkJZWxzZSB7CisJCQlpZiAoIW9uZS0+ZGF0YSAmJiBESUZGX0ZJTEVfVkFMSUQob25lKSkKKwkJCQlkaWZmX3BvcHVsYXRlX2ZpbGVzcGVjKG9uZSwgMCk7CisJCQlpZiAob25lLT5kYXRhKQorCQkJCW9uZS0+aXNfYmluYXJ5ID0gYnVmZmVyX2lzX2JpbmFyeShvbmUtPmRhdGEsCisJCQkJCQlvbmUtPnNpemUpOworCQkJaWYgKG9uZS0+aXNfYmluYXJ5ID09IC0xKQorCQkJCW9uZS0+aXNfYmluYXJ5ID0gMDsKKwkJfQorCX0KIAlyZXR1cm4gb25lLT5pc19iaW5hcnk7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnVuY25hbWVfcGF0dGVybl9lbnRyeSAqZnVuY25hbWVfcGF0dGVybihjb25zdCBjaGFyICppZGVudCkKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdXNlcmRpZmZfZnVuY25hbWUgKmRpZmZfZnVuY25hbWVfcGF0dGVybihzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lKQogewotCXN0cnVjdCBmdW5jbmFtZV9wYXR0ZXJuX2xpc3QgKnBwOwotCi0JZm9yIChwcCA9IGZ1bmNuYW1lX3BhdHRlcm5fbGlzdDsgcHA7IHBwID0gcHAtPm5leHQpCi0JCWlmICghc3RyY21wKGlkZW50LCBwcC0+ZS5uYW1lKSkKLQkJCXJldHVybiAmcHAtPmU7Ci0JcmV0dXJuIE5VTEw7CisJZGlmZl9maWxlc3BlY19sb2FkX2RyaXZlcihvbmUpOworCXJldHVybiBvbmUtPmRyaXZlci0+ZnVuY25hbWUucGF0dGVybiA/ICZvbmUtPmRyaXZlci0+ZnVuY25hbWUgOiBOVUxMOwogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGZ1bmNuYW1lX3BhdHRlcm5fZW50cnkgYnVpbHRpbl9mdW5jbmFtZV9wYXR0ZXJuW10gPSB7Ci0JeyAiamF2YSIsCi0JICAiIV5bIFx0XSooY2F0Y2h8ZG98Zm9yfGlmfGluc3RhbmNlb2Z8bmV3fHJldHVybnxzd2l0Y2h8dGhyb3d8d2hpbGUpXG4iCi0JICAiXlsgXHRdKigoWyBcdF0qW0EtWmEtel9dW0EtWmEtel8wLTldKil7Mix9WyBcdF0qXFwoW147XSopJCIsCi0JICBSRUdfRVhURU5ERUQgfSwKLQl7ICJwYXNjYWwiLAotCSAgIl4oKHByb2NlZHVyZXxmdW5jdGlvbnxjb25zdHJ1Y3RvcnxkZXN0cnVjdG9yfGludGVyZmFjZXwiCi0JCSJpbXBsZW1lbnRhdGlvbnxpbml0aWFsaXphdGlvbnxmaW5hbGl6YXRpb24pWyBcdF0qLiopJCIKLQkgICJ8IgotCSAgIl4oLio9WyBcdF0qKGNsYXNzfHJlY29yZCkuKikkIiwKLQkgIFJFR19FWFRFTkRFRCB9LAotCXsgImJpYnRleCIsICIoQFthLXpBLVpdezEsfVsgXHRdKlxce3swLDF9WyBcdF0qW14gXHRcIkAnLFxcI317fiVdKikuKiQiLAotCSAgUkVHX0VYVEVOREVEIH0sCi0JeyAidGV4IiwKLQkgICJeKFxcXFwoKHN1Yikqc2VjdGlvbnxjaGFwdGVyfHBhcnQpXFwqezAsMX1cXHsuKikkIiwKLQkgIFJFR19FWFRFTkRFRCB9LAotCXsgInJ1YnkiLCAiXlsgXHRdKigoY2xhc3N8bW9kdWxlfGRlZilbIFx0XS4qKSQiLAotCSAgUkVHX0VYVEVOREVEIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGZ1bmNuYW1lX3BhdHRlcm5fZW50cnkgKmRpZmZfZnVuY25hbWVfcGF0dGVybihzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lKQordm9pZCBkaWZmX3NldF9tbmVtb25pY19wcmVmaXgoc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0aW9ucywgY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYikKIHsKLQljb25zdCBjaGFyICppZGVudDsKLQljb25zdCBzdHJ1Y3QgZnVuY25hbWVfcGF0dGVybl9lbnRyeSAqcGU7Ci0JaW50IGk7CisJaWYgKCFvcHRpb25zLT5hX3ByZWZpeCkKKwkJb3B0aW9ucy0+YV9wcmVmaXggPSBhOworCWlmICghb3B0aW9ucy0+Yl9wcmVmaXgpCisJCW9wdGlvbnMtPmJfcHJlZml4ID0gYjsKK30KIAotCWRpZmZfZmlsZXNwZWNfY2hlY2tfYXR0cihvbmUpOwotCWlkZW50ID0gb25lLT5mdW5jbmFtZV9wYXR0ZXJuX2lkZW50OwotCi0JaWYgKCFpZGVudCkKLQkJLyoKLQkJICogSWYgdGhlIGNvbmZpZyBmaWxlIGhhcyAiZnVuY25hbWUuZGVmYXVsdCIgZGVmaW5lZCwgdGhhdAotCQkgKiByZWdleHAgaXMgdXNlZDsgb3RoZXJ3aXNlIE5VTEwgaXMgcmV0dXJuZWQgYW5kIHhlbWl0IHVzZXMKLQkJICogdGhlIGJ1aWx0LWluIGRlZmF1bHQuCi0JCSAqLwotCQlyZXR1cm4gZnVuY25hbWVfcGF0dGVybigiZGVmYXVsdCIpOwotCi0JLyogTG9vayB1cCBjdXN0b20gImZ1bmNuYW1lLiRpZGVudCIgcmVnZXhwIGZyb20gY29uZmlnLiAqLwotCXBlID0gZnVuY25hbWVfcGF0dGVybihpZGVudCk7Ci0JaWYgKHBlKQotCQlyZXR1cm4gcGU7Ci0KLQkvKgotCSAqIEFuZCBkZWZpbmUgYnVpbHQtaW4gZmFsbGJhY2sgcGF0dGVybnMgaGVyZS4gIE5vdGUgdGhhdAotCSAqIHRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSB1c2VyJ3MgY29uZmlnIHNldHRpbmdzLgotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGJ1aWx0aW5fZnVuY25hbWVfcGF0dGVybik7IGkrKykKLQkJaWYgKCFzdHJjbXAoaWRlbnQsIGJ1aWx0aW5fZnVuY25hbWVfcGF0dGVybltpXS5uYW1lKSkKLQkJCXJldHVybiAmYnVpbHRpbl9mdW5jbmFtZV9wYXR0ZXJuW2ldOwotCi0JcmV0dXJuIE5VTEw7CitzdGF0aWMgY29uc3QgY2hhciAqZ2V0X3RleHRjb252KHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvbmUpCit7CisJaWYgKCFESUZGX0ZJTEVfVkFMSUQob25lKSkKKwkJcmV0dXJuIE5VTEw7CisJaWYgKCFTX0lTUkVHKG9uZS0+bW9kZSkpCisJCXJldHVybiBOVUxMOworCWRpZmZfZmlsZXNwZWNfbG9hZF9kcml2ZXIob25lKTsKKwlyZXR1cm4gb25lLT5kcml2ZXItPnRleHRjb252OwogfQogCiBzdGF0aWMgdm9pZCBidWlsdGluX2RpZmYoY29uc3QgY2hhciAqbmFtZV9hLApAQCAtMTQ2NCwxMyArMTM1NiwyOSBAQAogCWNoYXIgKmFfb25lLCAqYl90d287CiAJY29uc3QgY2hhciAqc2V0ID0gZGlmZl9nZXRfY29sb3Jfb3B0KG8sIERJRkZfTUVUQUlORk8pOwogCWNvbnN0IGNoYXIgKnJlc2V0ID0gZGlmZl9nZXRfY29sb3Jfb3B0KG8sIERJRkZfUkVTRVQpOworCWNvbnN0IGNoYXIgKmFfcHJlZml4LCAqYl9wcmVmaXg7CisJY29uc3QgY2hhciAqdGV4dGNvbnZfb25lID0gTlVMTCwgKnRleHRjb252X3R3byA9IE5VTEw7CisKKwlpZiAoRElGRl9PUFRfVFNUKG8sIEFMTE9XX1RFWFRDT05WKSkgeworCQl0ZXh0Y29udl9vbmUgPSBnZXRfdGV4dGNvbnYob25lKTsKKwkJdGV4dGNvbnZfdHdvID0gZ2V0X3RleHRjb252KHR3byk7CisJfQorCisJZGlmZl9zZXRfbW5lbW9uaWNfcHJlZml4KG8sICJhLyIsICJiLyIpOworCWlmIChESUZGX09QVF9UU1QobywgUkVWRVJTRV9ESUZGKSkgeworCQlhX3ByZWZpeCA9IG8tPmJfcHJlZml4OworCQliX3ByZWZpeCA9IG8tPmFfcHJlZml4OworCX0gZWxzZSB7CisJCWFfcHJlZml4ID0gby0+YV9wcmVmaXg7CisJCWJfcHJlZml4ID0gby0+Yl9wcmVmaXg7CisJfQogCiAJLyogTmV2ZXIgdXNlIGEgbm9uLXZhbGlkIGZpbGVuYW1lIGFueXdoZXJlIGlmIGF0IGFsbCBwb3NzaWJsZSAqLwogCW5hbWVfYSA9IERJRkZfRklMRV9WQUxJRChvbmUpID8gbmFtZV9hIDogbmFtZV9iOwogCW5hbWVfYiA9IERJRkZfRklMRV9WQUxJRCh0d28pID8gbmFtZV9iIDogbmFtZV9hOwogCi0JYV9vbmUgPSBxdW90ZV90d28oby0+YV9wcmVmaXgsIG5hbWVfYSArICgqbmFtZV9hID09ICcvJykpOwotCWJfdHdvID0gcXVvdGVfdHdvKG8tPmJfcHJlZml4LCBuYW1lX2IgKyAoKm5hbWVfYiA9PSAnLycpKTsKKwlhX29uZSA9IHF1b3RlX3R3byhhX3ByZWZpeCwgbmFtZV9hICsgKCpuYW1lX2EgPT0gJy8nKSk7CisJYl90d28gPSBxdW90ZV90d28oYl9wcmVmaXgsIG5hbWVfYiArICgqbmFtZV9iID09ICcvJykpOwogCWxibFswXSA9IERJRkZfRklMRV9WQUxJRChvbmUpID8gYV9vbmUgOiAiL2Rldi9udWxsIjsKIAlsYmxbMV0gPSBESUZGX0ZJTEVfVkFMSUQodHdvKSA/IGJfdHdvIDogIi9kZXYvbnVsbCI7CiAJZnByaW50ZihvLT5maWxlLCAiJXNkaWZmIC0tZ2l0ICVzICVzJXNcbiIsIHNldCwgYV9vbmUsIGJfdHdvLCByZXNldCk7CkBAIC0xNDk4LDggKzE0MDYsMTEgQEAKIAkJICovCiAJCWlmICgob25lLT5tb2RlIF4gdHdvLT5tb2RlKSAmIFNfSUZNVCkKIAkJCWdvdG8gZnJlZV9hYl9hbmRfcmV0dXJuOwotCQlpZiAoY29tcGxldGVfcmV3cml0ZSkgewotCQkJZW1pdF9yZXdyaXRlX2RpZmYobmFtZV9hLCBuYW1lX2IsIG9uZSwgdHdvLCBvKTsKKwkJaWYgKGNvbXBsZXRlX3Jld3JpdGUgJiYKKwkJICAgICh0ZXh0Y29udl9vbmUgfHwgIWRpZmZfZmlsZXNwZWNfaXNfYmluYXJ5KG9uZSkpICYmCisJCSAgICAodGV4dGNvbnZfdHdvIHx8ICFkaWZmX2ZpbGVzcGVjX2lzX2JpbmFyeSh0d28pKSkgeworCQkJZW1pdF9yZXdyaXRlX2RpZmYobmFtZV9hLCBuYW1lX2IsIG9uZSwgdHdvLAorCQkJCQkJdGV4dGNvbnZfb25lLCB0ZXh0Y29udl90d28sIG8pOwogCQkJby0+Zm91bmRfY2hhbmdlcyA9IDE7CiAJCQlnb3RvIGZyZWVfYWJfYW5kX3JldHVybjsKIAkJfQpAQCAtMTUwOSw3ICsxNDIwLDggQEAKIAkJZGllKCJ1bmFibGUgdG8gcmVhZCBmaWxlcyB0byBkaWZmIik7CiAKIAlpZiAoIURJRkZfT1BUX1RTVChvLCBURVhUKSAmJgotCSAgICAoZGlmZl9maWxlc3BlY19pc19iaW5hcnkob25lKSB8fCBkaWZmX2ZpbGVzcGVjX2lzX2JpbmFyeSh0d28pKSkgeworCSAgICAoIChkaWZmX2ZpbGVzcGVjX2lzX2JpbmFyeShvbmUpICYmICF0ZXh0Y29udl9vbmUpIHx8CisJICAgICAgKGRpZmZfZmlsZXNwZWNfaXNfYmluYXJ5KHR3bykgJiYgIXRleHRjb252X3R3bykgKSkgewogCQkvKiBRdWl0ZSBjb21tb24gY29uZnVzaW5nIGNhc2UgKi8KIAkJaWYgKG1mMS5zaXplID09IG1mMi5zaXplICYmCiAJCSAgICAhbWVtY21wKG1mMS5wdHIsIG1mMi5wdHIsIG1mMS5zaXplKSkKQEAgLTE1MjgsMTIgKzE0NDAsMjggQEAKIAkJeGRlbWl0Y29uZl90IHhlY2ZnOwogCQl4ZGVtaXRjYl90IGVjYjsKIAkJc3RydWN0IGVtaXRfY2FsbGJhY2sgZWNiZGF0YTsKLQkJY29uc3Qgc3RydWN0IGZ1bmNuYW1lX3BhdHRlcm5fZW50cnkgKnBlOworCQljb25zdCBzdHJ1Y3QgdXNlcmRpZmZfZnVuY25hbWUgKnBlOworCisJCWlmICh0ZXh0Y29udl9vbmUpIHsKKwkJCXNpemVfdCBzaXplOworCQkJbWYxLnB0ciA9IHJ1bl90ZXh0Y29udih0ZXh0Y29udl9vbmUsIG9uZSwgJnNpemUpOworCQkJaWYgKCFtZjEucHRyKQorCQkJCWRpZSgidW5hYmxlIHRvIHJlYWQgZmlsZXMgdG8gZGlmZiIpOworCQkJbWYxLnNpemUgPSBzaXplOworCQl9CisJCWlmICh0ZXh0Y29udl90d28pIHsKKwkJCXNpemVfdCBzaXplOworCQkJbWYyLnB0ciA9IHJ1bl90ZXh0Y29udih0ZXh0Y29udl90d28sIHR3bywgJnNpemUpOworCQkJaWYgKCFtZjIucHRyKQorCQkJCWRpZSgidW5hYmxlIHRvIHJlYWQgZmlsZXMgdG8gZGlmZiIpOworCQkJbWYyLnNpemUgPSBzaXplOworCQl9CiAKIAkJcGUgPSBkaWZmX2Z1bmNuYW1lX3BhdHRlcm4ob25lKTsKIAkJaWYgKCFwZSkKIAkJCXBlID0gZGlmZl9mdW5jbmFtZV9wYXR0ZXJuKHR3byk7CiAKKwkJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKIAkJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CiAJCW1lbXNldCgmZWNiZGF0YSwgMCwgc2l6ZW9mKGVjYmRhdGEpKTsKIAkJZWNiZGF0YS5sYWJlbF9wYXRoID0gbGJsOwpAQCAtMTU1MiwxNyArMTQ4MCwxOSBAQAogCQkJeGVjZmcuY3R4bGVuID0gc3RydG91bChkaWZmb3B0cyArIDEwLCBOVUxMLCAxMCk7CiAJCWVsc2UgaWYgKCFwcmVmaXhjbXAoZGlmZm9wdHMsICItdSIpKQogCQkJeGVjZmcuY3R4bGVuID0gc3RydG91bChkaWZmb3B0cyArIDIsIE5VTEwsIDEwKTsKLQkJZWNiLm91dGYgPSB4ZGlmZl9vdXRmOwotCQllY2IucHJpdiA9ICZlY2JkYXRhOwotCQllY2JkYXRhLnhtLmNvbnN1bWUgPSBmbl9vdXRfY29uc3VtZTsKIAkJaWYgKERJRkZfT1BUX1RTVChvLCBDT0xPUl9ESUZGX1dPUkRTKSkgewogCQkJZWNiZGF0YS5kaWZmX3dvcmRzID0KIAkJCQl4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgZGlmZl93b3Jkc19kYXRhKSk7CiAJCQllY2JkYXRhLmRpZmZfd29yZHMtPmZpbGUgPSBvLT5maWxlOwogCQl9Ci0JCXhkaV9kaWZmKCZtZjEsICZtZjIsICZ4cHAsICZ4ZWNmZywgJmVjYik7CisJCXhkaV9kaWZmX291dGYoJm1mMSwgJm1mMiwgZm5fb3V0X2NvbnN1bWUsICZlY2JkYXRhLAorCQkJICAgICAgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKIAkJaWYgKERJRkZfT1BUX1RTVChvLCBDT0xPUl9ESUZGX1dPUkRTKSkKIAkJCWZyZWVfZGlmZl93b3Jkc19kYXRhKCZlY2JkYXRhKTsKKwkJaWYgKHRleHRjb252X29uZSkKKwkJCWZyZWUobWYxLnB0cik7CisJCWlmICh0ZXh0Y29udl90d28pCisJCQlmcmVlKG1mMi5wdHIpOwogCX0KIAogIGZyZWVfYWJfYW5kX3JldHVybjoKQEAgLTE2MDksMTEgKzE1MzksMTEgQEAKIAkJeGRlbWl0Y29uZl90IHhlY2ZnOwogCQl4ZGVtaXRjYl90IGVjYjsKIAorCQltZW1zZXQoJnhwcCwgMCwgc2l6ZW9mKHhwcCkpOwogCQltZW1zZXQoJnhlY2ZnLCAwLCBzaXplb2YoeGVjZmcpKTsKIAkJeHBwLmZsYWdzID0gWERGX05FRURfTUlOSU1BTCB8IG8tPnhkbF9vcHRzOwotCQllY2Iub3V0ZiA9IHhkaWZmX291dGY7Ci0JCWVjYi5wcml2ID0gZGlmZnN0YXQ7Ci0JCXhkaV9kaWZmKCZtZjEsICZtZjIsICZ4cHAsICZ4ZWNmZywgJmVjYik7CisJCXhkaV9kaWZmX291dGYoJm1mMSwgJm1mMiwgZGlmZnN0YXRfY29uc3VtZSwgZGlmZnN0YXQsCisJCQkgICAgICAmeHBwLCAmeGVjZmcsICZlY2IpOwogCX0KIAogIGZyZWVfYW5kX3JldHVybjoKQEAgLTE2MzQsNyArMTU2NCw2IEBACiAJCXJldHVybjsKIAogCW1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKLQlkYXRhLnhtLmNvbnN1bWUgPSBjaGVja2RpZmZfY29uc3VtZTsKIAlkYXRhLmZpbGVuYW1lID0gbmFtZV9iID8gbmFtZV9iIDogbmFtZV9hOwogCWRhdGEubGluZW5vID0gMDsKIAlkYXRhLm8gPSBvOwpAQCAtMTY1NywxMiArMTU4NiwxMiBAQAogCQl4ZGVtaXRjb25mX3QgeGVjZmc7CiAJCXhkZW1pdGNiX3QgZWNiOwogCisJCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CiAJCW1lbXNldCgmeGVjZmcsIDAsIHNpemVvZih4ZWNmZykpOwogCQl4ZWNmZy5jdHhsZW4gPSAxOyAvKiBhdCBsZWFzdCBvbmUgY29udGV4dCBsaW5lICovCiAJCXhwcC5mbGFncyA9IFhERl9ORUVEX01JTklNQUw7Ci0JCWVjYi5vdXRmID0geGRpZmZfb3V0ZjsKLQkJZWNiLnByaXYgPSAmZGF0YTsKLQkJeGRpX2RpZmYoJm1mMSwgJm1mMiwgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKKwkJeGRpX2RpZmZfb3V0ZigmbWYxLCAmbWYyLCBjaGVja2RpZmZfY29uc3VtZSwgJmRhdGEsCisJCQkgICAgICAmeHBwLCAmeGVjZmcsICZlY2IpOwogCiAJCWlmICgoZGF0YS53c19ydWxlICYgV1NfVFJBSUxJTkdfU1BBQ0UpICYmCiAJCSAgICBkYXRhLnRyYWlsaW5nX2JsYW5rc19zdGFydCkgewpAQCAtMTY4Nyw2ICsxNjE2LDcgQEAKIAlzcGVjLT5wYXRoID0gKGNoYXIgKikoc3BlYyArIDEpOwogCW1lbWNweShzcGVjLT5wYXRoLCBwYXRoLCBuYW1lbGVuKzEpOwogCXNwZWMtPmNvdW50ID0gMTsKKwlzcGVjLT5pc19iaW5hcnkgPSAtMTsKIAlyZXR1cm4gc3BlYzsKIH0KIApAQCAtMTc3MSwxMCArMTcwMSw5IEBACiAKIHN0YXRpYyBpbnQgcG9wdWxhdGVfZnJvbV9zdGRpbihzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqcykKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCXNpemVfdCBzaXplID0gMDsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCWlmIChzdHJidWZfcmVhZCgmYnVmLCAwLCAwKSA8IDApCiAJCXJldHVybiBlcnJvcigiZXJyb3Igd2hpbGUgcmVhZGluZyBmcm9tIHN0ZGluICVzIiwKIAkJCQkgICAgIHN0cmVycm9yKGVycm5vKSk7CkBAIC0xODI2LDcgKzE3NTUsNyBAQAogCiAJaWYgKCFzLT5zaGExX3ZhbGlkIHx8CiAJICAgIHJldXNlX3dvcmt0cmVlX2ZpbGUocy0+cGF0aCwgcy0+c2hhMSwgMCkpIHsKLQkJc3RydWN0IHN0cmJ1ZiBidWY7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJCXN0cnVjdCBzdGF0IHN0OwogCQlpbnQgZmQ7CiAKQEAgLTE4NDYsMTkgKzE3NzUsMTggQEAKIAkJcy0+c2l6ZSA9IHhzaXplX3Qoc3Quc3Rfc2l6ZSk7CiAJCWlmICghcy0+c2l6ZSkKIAkJCWdvdG8gZW1wdHk7Ci0JCWlmIChzaXplX29ubHkpCi0JCQlyZXR1cm4gMDsKIAkJaWYgKFNfSVNMTksoc3Quc3RfbW9kZSkpIHsKLQkJCWludCByZXQ7Ci0JCQlzLT5kYXRhID0geG1hbGxvYyhzLT5zaXplKTsKLQkJCXMtPnNob3VsZF9mcmVlID0gMTsKLQkJCXJldCA9IHJlYWRsaW5rKHMtPnBhdGgsIHMtPmRhdGEsIHMtPnNpemUpOwotCQkJaWYgKHJldCA8IDApIHsKLQkJCQlmcmVlKHMtPmRhdGEpOworCQkJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOworCisJCQlpZiAoc3RyYnVmX3JlYWRsaW5rKCZzYiwgcy0+cGF0aCwgcy0+c2l6ZSkpCiAJCQkJZ290byBlcnJfZW1wdHk7Ci0JCQl9CisJCQlzLT5zaXplID0gc2IubGVuOworCQkJcy0+ZGF0YSA9IHN0cmJ1Zl9kZXRhY2goJnNiLCBOVUxMKTsKKwkJCXMtPnNob3VsZF9mcmVlID0gMTsKIAkJCXJldHVybiAwOwogCQl9CisJCWlmIChzaXplX29ubHkpCisJCQlyZXR1cm4gMDsKIAkJZmQgPSBvcGVuKHMtPnBhdGgsIE9fUkRPTkxZKTsKIAkJaWYgKGZkIDwgMCkKIAkJCWdvdG8gZXJyX2VtcHR5OwpAQCAtMTg2OSw3ICsxNzk3LDYgQEAKIAkJLyoKIAkJICogQ29udmVydCBmcm9tIHdvcmtpbmcgdHJlZSBmb3JtYXQgdG8gY2Fub25pY2FsIGdpdCBmb3JtYXQKIAkJICovCi0JCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCQlpZiAoY29udmVydF90b19naXQocy0+cGF0aCwgcy0+ZGF0YSwgcy0+c2l6ZSwgJmJ1Ziwgc2FmZV9jcmxmKSkgewogCQkJc2l6ZV90IHNpemUgPSAwOwogCQkJbXVubWFwKHMtPmRhdGEsIHMtPnNpemUpOwpAQCAtMTk1NywxMyArMTg4NCwxMiBAQAogCQlpZiAoU19JU0xOSyhzdC5zdF9tb2RlKSkgewogCQkJaW50IHJldDsKIAkJCWNoYXIgYnVmW1BBVEhfTUFYICsgMV07IC8qIG91Z2h0IHRvIGJlIFNZTUxJTktfTUFYICovCi0JCQlzaXplX3Qgc3ogPSB4c2l6ZV90KHN0LnN0X3NpemUpOwotCQkJaWYgKHNpemVvZihidWYpIDw9IHN0LnN0X3NpemUpCi0JCQkJZGllKCJzeW1saW5rIHRvbyBsb25nOiAlcyIsIG5hbWUpOwotCQkJcmV0ID0gcmVhZGxpbmsobmFtZSwgYnVmLCBzeik7CisJCQlyZXQgPSByZWFkbGluayhuYW1lLCBidWYsIHNpemVvZihidWYpKTsKIAkJCWlmIChyZXQgPCAwKQogCQkJCWRpZSgicmVhZGxpbmsoJXMpIiwgbmFtZSk7Ci0JCQlwcmVwX3RlbXBfYmxvYih0ZW1wLCBidWYsIHN6LAorCQkJaWYgKHJldCA9PSBzaXplb2YoYnVmKSkKKwkJCQlkaWUoInN5bWxpbmsgdG9vIGxvbmc6ICVzIiwgbmFtZSk7CisJCQlwcmVwX3RlbXBfYmxvYih0ZW1wLCBidWYsIHJldCwKIAkJCQkgICAgICAgKG9uZS0+c2hhMV92YWxpZCA/CiAJCQkJCW9uZS0+c2hhMSA6IG51bGxfc2hhMSksCiAJCQkJICAgICAgIChvbmUtPnNoYTFfdmFsaWQgPwpAQCAtMjA3MywyNyArMTk5OSw2NiBAQAogCX0KIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKmV4dGVybmFsX2RpZmZfYXR0cihjb25zdCBjaGFyICpuYW1lKQorc3RhdGljIGludCBzaW1pbGFyaXR5X2luZGV4KHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwKQogewotCXN0cnVjdCBnaXRfYXR0cl9jaGVjayBhdHRyX2RpZmZfY2hlY2s7CisJcmV0dXJuIHAtPnNjb3JlICogMTAwIC8gTUFYX1NDT1JFOworfQogCi0JaWYgKCFuYW1lKQotCQlyZXR1cm4gTlVMTDsKLQotCXNldHVwX2RpZmZfYXR0cl9jaGVjaygmYXR0cl9kaWZmX2NoZWNrKTsKLQlpZiAoIWdpdF9jaGVja2F0dHIobmFtZSwgMSwgJmF0dHJfZGlmZl9jaGVjaykpIHsKLQkJY29uc3QgY2hhciAqdmFsdWUgPSBhdHRyX2RpZmZfY2hlY2sudmFsdWU7Ci0JCWlmICghQVRUUl9UUlVFKHZhbHVlKSAmJgotCQkgICAgIUFUVFJfRkFMU0UodmFsdWUpICYmCi0JCSAgICAhQVRUUl9VTlNFVCh2YWx1ZSkpIHsKLQkJCXN0cnVjdCBsbF9kaWZmX2RyaXZlciAqZHJ2OwotCi0JCQlmb3IgKGRydiA9IHVzZXJfZGlmZjsgZHJ2OyBkcnYgPSBkcnYtPm5leHQpCi0JCQkJaWYgKCFzdHJjbXAoZHJ2LT5uYW1lLCB2YWx1ZSkpCi0JCQkJCXJldHVybiBkcnYtPmNtZDsKK3N0YXRpYyB2b2lkIGZpbGxfbWV0YWluZm8oc3RydWN0IHN0cmJ1ZiAqbXNnLAorCQkJICBjb25zdCBjaGFyICpuYW1lLAorCQkJICBjb25zdCBjaGFyICpvdGhlciwKKwkJCSAgc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSwKKwkJCSAgc3RydWN0IGRpZmZfZmlsZXNwZWMgKnR3bywKKwkJCSAgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKKwkJCSAgc3RydWN0IGRpZmZfZmlsZXBhaXIgKnApCit7CisJc3RyYnVmX2luaXQobXNnLCBQQVRIX01BWCAqIDIgKyAzMDApOworCXN3aXRjaCAocC0+c3RhdHVzKSB7CisJY2FzZSBESUZGX1NUQVRVU19DT1BJRUQ6CisJCXN0cmJ1Zl9hZGRmKG1zZywgInNpbWlsYXJpdHkgaW5kZXggJWQlJSIsIHNpbWlsYXJpdHlfaW5kZXgocCkpOworCQlzdHJidWZfYWRkc3RyKG1zZywgIlxuY29weSBmcm9tICIpOworCQlxdW90ZV9jX3N0eWxlKG5hbWUsIG1zZywgTlVMTCwgMCk7CisJCXN0cmJ1Zl9hZGRzdHIobXNnLCAiXG5jb3B5IHRvICIpOworCQlxdW90ZV9jX3N0eWxlKG90aGVyLCBtc2csIE5VTEwsIDApOworCQlzdHJidWZfYWRkY2gobXNnLCAnXG4nKTsKKwkJYnJlYWs7CisJY2FzZSBESUZGX1NUQVRVU19SRU5BTUVEOgorCQlzdHJidWZfYWRkZihtc2csICJzaW1pbGFyaXR5IGluZGV4ICVkJSUiLCBzaW1pbGFyaXR5X2luZGV4KHApKTsKKwkJc3RyYnVmX2FkZHN0cihtc2csICJcbnJlbmFtZSBmcm9tICIpOworCQlxdW90ZV9jX3N0eWxlKG5hbWUsIG1zZywgTlVMTCwgMCk7CisJCXN0cmJ1Zl9hZGRzdHIobXNnLCAiXG5yZW5hbWUgdG8gIik7CisJCXF1b3RlX2Nfc3R5bGUob3RoZXIsIG1zZywgTlVMTCwgMCk7CisJCXN0cmJ1Zl9hZGRjaChtc2csICdcbicpOworCQlicmVhazsKKwljYXNlIERJRkZfU1RBVFVTX01PRElGSUVEOgorCQlpZiAocC0+c2NvcmUpIHsKKwkJCXN0cmJ1Zl9hZGRmKG1zZywgImRpc3NpbWlsYXJpdHkgaW5kZXggJWQlJVxuIiwKKwkJCQkgICAgc2ltaWxhcml0eV9pbmRleChwKSk7CisJCQlicmVhazsKIAkJfQorCQkvKiBmYWxsdGhydSAqLworCWRlZmF1bHQ6CisJCS8qIG5vdGhpbmcgKi8KKwkJOwogCX0KLQlyZXR1cm4gTlVMTDsKKwlpZiAob25lICYmIHR3byAmJiBoYXNoY21wKG9uZS0+c2hhMSwgdHdvLT5zaGExKSkgeworCQlpbnQgYWJicmV2ID0gRElGRl9PUFRfVFNUKG8sIEZVTExfSU5ERVgpID8gNDAgOiBERUZBVUxUX0FCQlJFVjsKKworCQlpZiAoRElGRl9PUFRfVFNUKG8sIEJJTkFSWSkpIHsKKwkJCW1tZmlsZV90IG1mOworCQkJaWYgKCghZmlsbF9tbWZpbGUoJm1mLCBvbmUpICYmIGRpZmZfZmlsZXNwZWNfaXNfYmluYXJ5KG9uZSkpIHx8CisJCQkgICAgKCFmaWxsX21tZmlsZSgmbWYsIHR3bykgJiYgZGlmZl9maWxlc3BlY19pc19iaW5hcnkodHdvKSkpCisJCQkJYWJicmV2ID0gNDA7CisJCX0KKwkJc3RyYnVmX2FkZGYobXNnLCAiaW5kZXggJS4qcy4uJS4qcyIsCisJCQkgICAgYWJicmV2LCBzaGExX3RvX2hleChvbmUtPnNoYTEpLAorCQkJICAgIGFiYnJldiwgc2hhMV90b19oZXgodHdvLT5zaGExKSk7CisJCWlmIChvbmUtPm1vZGUgPT0gdHdvLT5tb2RlKQorCQkJc3RyYnVmX2FkZGYobXNnLCAiICUwNm8iLCBvbmUtPm1vZGUpOworCQlzdHJidWZfYWRkY2gobXNnLCAnXG4nKTsKKwl9CisJaWYgKG1zZy0+bGVuKQorCQlzdHJidWZfc2V0bGVuKG1zZywgbXNnLT5sZW4gLSAxKTsKIH0KIAogc3RhdGljIHZvaWQgcnVuX2RpZmZfY21kKGNvbnN0IGNoYXIgKnBnbSwKQEAgLTIxMDIsMTYgKzIwNjcsMjQgQEAKIAkJCSBjb25zdCBjaGFyICphdHRyX3BhdGgsCiAJCQkgc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSwKIAkJCSBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqdHdvLAotCQkJIGNvbnN0IGNoYXIgKnhmcm1fbXNnLAorCQkJIHN0cnVjdCBzdHJidWYgKm1zZywKIAkJCSBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAotCQkJIGludCBjb21wbGV0ZV9yZXdyaXRlKQorCQkJIHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwKQogeworCWNvbnN0IGNoYXIgKnhmcm1fbXNnID0gTlVMTDsKKwlpbnQgY29tcGxldGVfcmV3cml0ZSA9IChwLT5zdGF0dXMgPT0gRElGRl9TVEFUVVNfTU9ESUZJRUQpICYmIHAtPnNjb3JlOworCisJaWYgKG1zZykgeworCQlmaWxsX21ldGFpbmZvKG1zZywgbmFtZSwgb3RoZXIsIG9uZSwgdHdvLCBvLCBwKTsKKwkJeGZybV9tc2cgPSBtc2ctPmxlbiA/IG1zZy0+YnVmIDogTlVMTDsKKwl9CisKIAlpZiAoIURJRkZfT1BUX1RTVChvLCBBTExPV19FWFRFUk5BTCkpCiAJCXBnbSA9IE5VTEw7CiAJZWxzZSB7Ci0JCWNvbnN0IGNoYXIgKmNtZCA9IGV4dGVybmFsX2RpZmZfYXR0cihhdHRyX3BhdGgpOwotCQlpZiAoY21kKQotCQkJcGdtID0gY21kOworCQlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICpkcnYgPSB1c2VyZGlmZl9maW5kX2J5X3BhdGgoYXR0cl9wYXRoKTsKKwkJaWYgKGRydiAmJiBkcnYtPmV4dGVybmFsKQorCQkJcGdtID0gZHJ2LT5leHRlcm5hbDsKIAl9CiAKIAlpZiAocGdtKSB7CkBAIC0yMTQ1LDExICsyMTE4LDYgQEAKIAkJaGFzaGNscihvbmUtPnNoYTEpOwogfQogCi1zdGF0aWMgaW50IHNpbWlsYXJpdHlfaW5kZXgoc3RydWN0IGRpZmZfZmlsZXBhaXIgKnApCi17Ci0JcmV0dXJuIHAtPnNjb3JlICogMTAwIC8gTUFYX1NDT1JFOwotfQotCiBzdGF0aWMgdm9pZCBzdHJpcF9wcmVmaXgoaW50IHByZWZpeF9sZW5ndGgsIGNvbnN0IGNoYXIgKipuYW1lcCwgY29uc3QgY2hhciAqKm90aGVycCkKIHsKIAkvKiBTdHJpcCB0aGUgcHJlZml4IGJ1dCBkbyBub3QgbW9sZXN0IC9kZXYvbnVsbCBhbmQgYWJzb2x1dGUgcGF0aHMgKi8KQEAgLTIxNjMsMTMgKzIxMzEsMTEgQEAKIHsKIAljb25zdCBjaGFyICpwZ20gPSBleHRlcm5hbF9kaWZmKCk7CiAJc3RydWN0IHN0cmJ1ZiBtc2c7Ci0JY2hhciAqeGZybV9tc2c7CiAJc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSA9IHAtPm9uZTsKIAlzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqdHdvID0gcC0+dHdvOwogCWNvbnN0IGNoYXIgKm5hbWU7CiAJY29uc3QgY2hhciAqb3RoZXI7CiAJY29uc3QgY2hhciAqYXR0cl9wYXRoOwotCWludCBjb21wbGV0ZV9yZXdyaXRlID0gMDsKIAogCW5hbWUgID0gcC0+b25lLT5wYXRoOwogCW90aGVyID0gKHN0cmNtcChuYW1lLCBwLT50d28tPnBhdGgpID8gcC0+dHdvLT5wYXRoIDogTlVMTCk7CkBAIC0yMTc5LDgzICsyMTQ1LDM0IEBACiAKIAlpZiAoRElGRl9QQUlSX1VOTUVSR0VEKHApKSB7CiAJCXJ1bl9kaWZmX2NtZChwZ20sIG5hbWUsIE5VTEwsIGF0dHJfcGF0aCwKLQkJCSAgICAgTlVMTCwgTlVMTCwgTlVMTCwgbywgMCk7CisJCQkgICAgIE5VTEwsIE5VTEwsIE5VTEwsIG8sIHApOwogCQlyZXR1cm47CiAJfQogCiAJZGlmZl9maWxsX3NoYTFfaW5mbyhvbmUpOwogCWRpZmZfZmlsbF9zaGExX2luZm8odHdvKTsKIAotCXN0cmJ1Zl9pbml0KCZtc2csIFBBVEhfTUFYICogMiArIDMwMCk7Ci0Jc3dpdGNoIChwLT5zdGF0dXMpIHsKLQljYXNlIERJRkZfU1RBVFVTX0NPUElFRDoKLQkJc3RyYnVmX2FkZGYoJm1zZywgInNpbWlsYXJpdHkgaW5kZXggJWQlJSIsIHNpbWlsYXJpdHlfaW5kZXgocCkpOwotCQlzdHJidWZfYWRkc3RyKCZtc2csICJcbmNvcHkgZnJvbSAiKTsKLQkJcXVvdGVfY19zdHlsZShuYW1lLCAmbXNnLCBOVUxMLCAwKTsKLQkJc3RyYnVmX2FkZHN0cigmbXNnLCAiXG5jb3B5IHRvICIpOwotCQlxdW90ZV9jX3N0eWxlKG90aGVyLCAmbXNnLCBOVUxMLCAwKTsKLQkJc3RyYnVmX2FkZGNoKCZtc2csICdcbicpOwotCQlicmVhazsKLQljYXNlIERJRkZfU1RBVFVTX1JFTkFNRUQ6Ci0JCXN0cmJ1Zl9hZGRmKCZtc2csICJzaW1pbGFyaXR5IGluZGV4ICVkJSUiLCBzaW1pbGFyaXR5X2luZGV4KHApKTsKLQkJc3RyYnVmX2FkZHN0cigmbXNnLCAiXG5yZW5hbWUgZnJvbSAiKTsKLQkJcXVvdGVfY19zdHlsZShuYW1lLCAmbXNnLCBOVUxMLCAwKTsKLQkJc3RyYnVmX2FkZHN0cigmbXNnLCAiXG5yZW5hbWUgdG8gIik7Ci0JCXF1b3RlX2Nfc3R5bGUob3RoZXIsICZtc2csIE5VTEwsIDApOwotCQlzdHJidWZfYWRkY2goJm1zZywgJ1xuJyk7Ci0JCWJyZWFrOwotCWNhc2UgRElGRl9TVEFUVVNfTU9ESUZJRUQ6Ci0JCWlmIChwLT5zY29yZSkgewotCQkJc3RyYnVmX2FkZGYoJm1zZywgImRpc3NpbWlsYXJpdHkgaW5kZXggJWQlJVxuIiwKLQkJCQkJc2ltaWxhcml0eV9pbmRleChwKSk7Ci0JCQljb21wbGV0ZV9yZXdyaXRlID0gMTsKLQkJCWJyZWFrOwotCQl9Ci0JCS8qIGZhbGx0aHJ1ICovCi0JZGVmYXVsdDoKLQkJLyogbm90aGluZyAqLwotCQk7Ci0JfQotCi0JaWYgKGhhc2hjbXAob25lLT5zaGExLCB0d28tPnNoYTEpKSB7Ci0JCWludCBhYmJyZXYgPSBESUZGX09QVF9UU1QobywgRlVMTF9JTkRFWCkgPyA0MCA6IERFRkFVTFRfQUJCUkVWOwotCi0JCWlmIChESUZGX09QVF9UU1QobywgQklOQVJZKSkgewotCQkJbW1maWxlX3QgbWY7Ci0JCQlpZiAoKCFmaWxsX21tZmlsZSgmbWYsIG9uZSkgJiYgZGlmZl9maWxlc3BlY19pc19iaW5hcnkob25lKSkgfHwKLQkJCSAgICAoIWZpbGxfbW1maWxlKCZtZiwgdHdvKSAmJiBkaWZmX2ZpbGVzcGVjX2lzX2JpbmFyeSh0d28pKSkKLQkJCQlhYmJyZXYgPSA0MDsKLQkJfQotCQlzdHJidWZfYWRkZigmbXNnLCAiaW5kZXggJS4qcy4uJS4qcyIsCi0JCQkJYWJicmV2LCBzaGExX3RvX2hleChvbmUtPnNoYTEpLAotCQkJCWFiYnJldiwgc2hhMV90b19oZXgodHdvLT5zaGExKSk7Ci0JCWlmIChvbmUtPm1vZGUgPT0gdHdvLT5tb2RlKQotCQkJc3RyYnVmX2FkZGYoJm1zZywgIiAlMDZvIiwgb25lLT5tb2RlKTsKLQkJc3RyYnVmX2FkZGNoKCZtc2csICdcbicpOwotCX0KLQotCWlmIChtc2cubGVuKQotCQlzdHJidWZfc2V0bGVuKCZtc2csIG1zZy5sZW4gLSAxKTsKLQl4ZnJtX21zZyA9IG1zZy5sZW4gPyBtc2cuYnVmIDogTlVMTDsKLQogCWlmICghcGdtICYmCiAJICAgIERJRkZfRklMRV9WQUxJRChvbmUpICYmIERJRkZfRklMRV9WQUxJRCh0d28pICYmCiAJICAgIChTX0lGTVQgJiBvbmUtPm1vZGUpICE9IChTX0lGTVQgJiB0d28tPm1vZGUpKSB7Ci0JCS8qIGEgZmlsZXBhaXIgdGhhdCBjaGFuZ2VzIGJldHdlZW4gZmlsZSBhbmQgc3ltbGluaworCQkvKgorCQkgKiBhIGZpbGVwYWlyIHRoYXQgY2hhbmdlcyBiZXR3ZWVuIGZpbGUgYW5kIHN5bWxpbmsKIAkJICogbmVlZHMgdG8gYmUgc3BsaXQgaW50byBkZWxldGlvbiBhbmQgY3JlYXRpb24uCiAJCSAqLwogCQlzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqbnVsbCA9IGFsbG9jX2ZpbGVzcGVjKHR3by0+cGF0aCk7CiAJCXJ1bl9kaWZmX2NtZChOVUxMLCBuYW1lLCBvdGhlciwgYXR0cl9wYXRoLAotCQkJICAgICBvbmUsIG51bGwsIHhmcm1fbXNnLCBvLCAwKTsKKwkJCSAgICAgb25lLCBudWxsLCAmbXNnLCBvLCBwKTsKIAkJZnJlZShudWxsKTsKKwkJc3RyYnVmX3JlbGVhc2UoJm1zZyk7CisKIAkJbnVsbCA9IGFsbG9jX2ZpbGVzcGVjKG9uZS0+cGF0aCk7CiAJCXJ1bl9kaWZmX2NtZChOVUxMLCBuYW1lLCBvdGhlciwgYXR0cl9wYXRoLAotCQkJICAgICBudWxsLCB0d28sIHhmcm1fbXNnLCBvLCAwKTsKKwkJCSAgICAgbnVsbCwgdHdvLCAmbXNnLCBvLCBwKTsKIAkJZnJlZShudWxsKTsKIAl9CiAJZWxzZQogCQlydW5fZGlmZl9jbWQocGdtLCBuYW1lLCBvdGhlciwgYXR0cl9wYXRoLAotCQkJICAgICBvbmUsIHR3bywgeGZybV9tc2csIG8sIGNvbXBsZXRlX3Jld3JpdGUpOworCQkJICAgICBvbmUsIHR3bywgJm1zZywgbywgcCk7CiAKIAlzdHJidWZfcmVsZWFzZSgmbXNnKTsKIH0KQEAgLTIzMzIsOCArMjI0OSwxMCBAQAogCQlESUZGX09QVF9DTFIob3B0aW9ucywgQ09MT1JfRElGRik7CiAJb3B0aW9ucy0+ZGV0ZWN0X3JlbmFtZSA9IGRpZmZfZGV0ZWN0X3JlbmFtZV9kZWZhdWx0OwogCi0Jb3B0aW9ucy0+YV9wcmVmaXggPSAiYS8iOwotCW9wdGlvbnMtPmJfcHJlZml4ID0gImIvIjsKKwlpZiAoIWRpZmZfbW5lbW9uaWNfcHJlZml4KSB7CisJCW9wdGlvbnMtPmFfcHJlZml4ID0gImEvIjsKKwkJb3B0aW9ucy0+Yl9wcmVmaXggPSAiYi8iOworCX0KIH0KIAogaW50IGRpZmZfc2V0dXBfZG9uZShzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHRpb25zKQpAQCAtMjQ5MCw2ICsyNDA5LDEwIEBACiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWN1bXVsYXRpdmUiKSkgewogCQlvcHRpb25zLT5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX0RJUlNUQVQ7CiAJCURJRkZfT1BUX1NFVChvcHRpb25zLCBESVJTVEFUX0NVTVVMQVRJVkUpOworCX0gZWxzZSBpZiAob3B0X2FyZyhhcmcsIDAsICJkaXJzdGF0LWJ5LWZpbGUiLAorCQkJICAgJm9wdGlvbnMtPmRpcnN0YXRfcGVyY2VudCkpIHsKKwkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9ESVJTVEFUOworCQlESUZGX09QVF9TRVQob3B0aW9ucywgRElSU1RBVF9CWV9GSUxFKTsKIAl9CiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWNoZWNrIikpCiAJCW9wdGlvbnMtPm91dHB1dF9mb3JtYXQgfD0gRElGRl9GT1JNQVRfQ0hFQ0tESUZGOwpAQCAtMjU5NCw2ICsyNTE3LDEwIEBACiAJCURJRkZfT1BUX1NFVChvcHRpb25zLCBBTExPV19FWFRFUk5BTCk7CiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLW5vLWV4dC1kaWZmIikpCiAJCURJRkZfT1BUX0NMUihvcHRpb25zLCBBTExPV19FWFRFUk5BTCk7CisJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXRleHRjb252IikpCisJCURJRkZfT1BUX1NFVChvcHRpb25zLCBBTExPV19URVhUQ09OVik7CisJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLW5vLXRleHRjb252IikpCisJCURJRkZfT1BUX0NMUihvcHRpb25zLCBBTExPV19URVhUQ09OVik7CiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWlnbm9yZS1zdWJtb2R1bGVzIikpCiAJCURJRkZfT1BUX1NFVChvcHRpb25zLCBJR05PUkVfU1VCTU9EVUxFUyk7CiAKQEAgLTMwNDYsOCArMjk3Myw3IEBACiB9CiAKIHN0cnVjdCBwYXRjaF9pZF90IHsKLQlzdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSB4bTsKLQlTSEFfQ1RYICpjdHg7CisJZ2l0X1NIQV9DVFggKmN0eDsKIAlpbnQgcGF0Y2hsZW47CiB9OwogCkBAIC0zMDc1LDcgKzMwMDEsNyBAQAogCiAJbmV3X2xlbiA9IHJlbW92ZV9zcGFjZShsaW5lLCBsZW4pOwogCi0JU0hBMV9VcGRhdGUoZGF0YS0+Y3R4LCBsaW5lLCBuZXdfbGVuKTsKKwlnaXRfU0hBMV9VcGRhdGUoZGF0YS0+Y3R4LCBsaW5lLCBuZXdfbGVuKTsKIAlkYXRhLT5wYXRjaGxlbiArPSBuZXdfbGVuOwogfQogCkBAIC0zMDg0LDE0ICszMDEwLDEzIEBACiB7CiAJc3RydWN0IGRpZmZfcXVldWVfc3RydWN0ICpxID0gJmRpZmZfcXVldWVkX2RpZmY7CiAJaW50IGk7Ci0JU0hBX0NUWCBjdHg7CisJZ2l0X1NIQV9DVFggY3R4OwogCXN0cnVjdCBwYXRjaF9pZF90IGRhdGE7CiAJY2hhciBidWZmZXJbUEFUSF9NQVggKiA0ICsgMjBdOwogCi0JU0hBMV9Jbml0KCZjdHgpOworCWdpdF9TSEExX0luaXQoJmN0eCk7CiAJbWVtc2V0KCZkYXRhLCAwLCBzaXplb2Yoc3RydWN0IHBhdGNoX2lkX3QpKTsKIAlkYXRhLmN0eCA9ICZjdHg7Ci0JZGF0YS54bS5jb25zdW1lID0gcGF0Y2hfaWRfY29uc3VtZTsKIAogCWZvciAoaSA9IDA7IGkgPCBxLT5ucjsgaSsrKSB7CiAJCXhwcGFyYW1fdCB4cHA7CkBAIC0zMTAxLDYgKzMwMjYsNyBAQAogCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCA9IHEtPnF1ZXVlW2ldOwogCQlpbnQgbGVuMSwgbGVuMjsKIAorCQltZW1zZXQoJnhwcCwgMCwgc2l6ZW9mKHhwcCkpOwogCQltZW1zZXQoJnhlY2ZnLCAwLCBzaXplb2YoeGVjZmcpKTsKIAkJaWYgKHAtPnN0YXR1cyA9PSAwKQogCQkJcmV0dXJuIGVycm9yKCJpbnRlcm5hbCBkaWZmIHN0YXR1cyBlcnJvciIpOwpAQCAtMzE1MSwxNyArMzA3NywxNiBAQAogCQkJCQlsZW4yLCBwLT50d28tPnBhdGgsCiAJCQkJCWxlbjEsIHAtPm9uZS0+cGF0aCwKIAkJCQkJbGVuMiwgcC0+dHdvLT5wYXRoKTsKLQkJU0hBMV9VcGRhdGUoJmN0eCwgYnVmZmVyLCBsZW4xKTsKKwkJZ2l0X1NIQTFfVXBkYXRlKCZjdHgsIGJ1ZmZlciwgbGVuMSk7CiAKIAkJeHBwLmZsYWdzID0gWERGX05FRURfTUlOSU1BTDsKIAkJeGVjZmcuY3R4bGVuID0gMzsKIAkJeGVjZmcuZmxhZ3MgPSBYRExfRU1JVF9GVU5DTkFNRVM7Ci0JCWVjYi5vdXRmID0geGRpZmZfb3V0ZjsKLQkJZWNiLnByaXYgPSAmZGF0YTsKLQkJeGRpX2RpZmYoJm1mMSwgJm1mMiwgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKKwkJeGRpX2RpZmZfb3V0ZigmbWYxLCAmbWYyLCBwYXRjaF9pZF9jb25zdW1lLCAmZGF0YSwKKwkJCSAgICAgICZ4cHAsICZ4ZWNmZywgJmVjYik7CiAJfQogCi0JU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKKwlnaXRfU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMzIzNSw3ICszMTYwLDYgQEAKIAkJc3RydWN0IGRpZmZzdGF0X3QgZGlmZnN0YXQ7CiAKIAkJbWVtc2V0KCZkaWZmc3RhdCwgMCwgc2l6ZW9mKHN0cnVjdCBkaWZmc3RhdF90KSk7Ci0JCWRpZmZzdGF0LnhtLmNvbnN1bWUgPSBkaWZmc3RhdF9jb25zdW1lOwogCQlmb3IgKGkgPSAwOyBpIDwgcS0+bnI7IGkrKykgewogCQkJc3RydWN0IGRpZmZfZmlsZXBhaXIgKnAgPSBxLT5xdWV1ZVtpXTsKIAkJCWlmIChjaGVja19wYWlyX3N0YXR1cyhwKSkKQEAgLTM1MzIsMyArMzQ1NiwzNCBAQAogCWZpbGxfZmlsZXNwZWMob25lLCBzaGExLCBtb2RlKTsKIAlkaWZmX3F1ZXVlKCZkaWZmX3F1ZXVlZF9kaWZmLCBvbmUsIHR3byktPmlzX3VubWVyZ2VkID0gMTsKIH0KKworc3RhdGljIGNoYXIgKnJ1bl90ZXh0Y29udihjb25zdCBjaGFyICpwZ20sIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpzcGVjLAorCQlzaXplX3QgKm91dHNpemUpCit7CisJc3RydWN0IGRpZmZfdGVtcGZpbGUgdGVtcDsKKwljb25zdCBjaGFyICphcmd2WzNdOworCWNvbnN0IGNoYXIgKiphcmcgPSBhcmd2OworCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNoaWxkOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisKKwlwcmVwYXJlX3RlbXBfZmlsZShzcGVjLT5wYXRoLCAmdGVtcCwgc3BlYyk7CisJKmFyZysrID0gcGdtOworCSphcmcrKyA9IHRlbXAubmFtZTsKKwkqYXJnID0gTlVMTDsKKworCW1lbXNldCgmY2hpbGQsIDAsIHNpemVvZihjaGlsZCkpOworCWNoaWxkLmFyZ3YgPSBhcmd2OworCWNoaWxkLm91dCA9IC0xOworCWlmIChzdGFydF9jb21tYW5kKCZjaGlsZCkgIT0gMCB8fAorCSAgICBzdHJidWZfcmVhZCgmYnVmLCBjaGlsZC5vdXQsIDApIDwgMCB8fAorCSAgICBmaW5pc2hfY29tbWFuZCgmY2hpbGQpICE9IDApIHsKKwkJaWYgKHRlbXAubmFtZSA9PSB0ZW1wLnRtcF9wYXRoKQorCQkJdW5saW5rKHRlbXAubmFtZSk7CisJCWVycm9yKCJlcnJvciBydW5uaW5nIHRleHRjb252IGNvbW1hbmQgJyVzJyIsIHBnbSk7CisJCXJldHVybiBOVUxMOworCX0KKwlpZiAodGVtcC5uYW1lID09IHRlbXAudG1wX3BhdGgpCisJCXVubGluayh0ZW1wLm5hbWUpOworCisJcmV0dXJuIHN0cmJ1Zl9kZXRhY2goJmJ1Ziwgb3V0c2l6ZSk7Cit9CmRpZmYgLS1naXQgYS9kaWZmLmggYi9kaWZmLmgKaW5kZXggN2Y1M2JlYi4uNDI1ODJlZCAxMDA2NDQKLS0tIGEvZGlmZi5oCisrKyBiL2RpZmYuaApAQCAtNjQsNiArNjQsOCBAQAogI2RlZmluZSBESUZGX09QVF9SRUxBVElWRV9OQU1FICAgICAgICgxIDw8IDE3KQogI2RlZmluZSBESUZGX09QVF9JR05PUkVfU1VCTU9EVUxFUyAgICgxIDw8IDE4KQogI2RlZmluZSBESUZGX09QVF9ESVJTVEFUX0NVTVVMQVRJVkUgICgxIDw8IDE5KQorI2RlZmluZSBESUZGX09QVF9ESVJTVEFUX0JZX0ZJTEUgICAgICgxIDw8IDIwKQorI2RlZmluZSBESUZGX09QVF9BTExPV19URVhUQ09OViAgICAgICgxIDw8IDIxKQogI2RlZmluZSBESUZGX09QVF9UU1Qob3B0cywgZmxhZykgICAgKChvcHRzKS0+ZmxhZ3MgJiBESUZGX09QVF8jI2ZsYWcpCiAjZGVmaW5lIERJRkZfT1BUX1NFVChvcHRzLCBmbGFnKSAgICAoKG9wdHMpLT5mbGFncyB8PSBESUZGX09QVF8jI2ZsYWcpCiAjZGVmaW5lIERJRkZfT1BUX0NMUihvcHRzLCBmbGFnKSAgICAoKG9wdHMpLT5mbGFncyAmPSB+RElGRl9PUFRfIyNmbGFnKQpAQCAtMTYwLDYgKzE2Miw4IEBACiAKIGV4dGVybiB2b2lkIGRpZmZfdHJlZV9jb21iaW5lZF9tZXJnZShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQsIHN0cnVjdCByZXZfaW5mbyAqKTsKIAordm9pZCBkaWZmX3NldF9tbmVtb25pY19wcmVmaXgoc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0aW9ucywgY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYik7CisKIGV4dGVybiB2b2lkIGRpZmZfYWRkcmVtb3ZlKHN0cnVjdCBkaWZmX29wdGlvbnMgKiwKIAkJCSAgIGludCBhZGRyZW1vdmUsCiAJCQkgICB1bnNpZ25lZCBtb2RlLApkaWZmIC0tZ2l0IGEvZGlmZmNvcmUtcmVuYW1lLmMgYi9kaWZmY29yZS1yZW5hbWUuYwppbmRleCAxNjhhOTViLi4wYjBkNmI4IDEwMDY0NAotLS0gYS9kaWZmY29yZS1yZW5hbWUuYworKysgYi9kaWZmY29yZS1yZW5hbWUuYwpAQCAtMTUzLDkgKzE1Myw5IEBACiAJICogaXMgYSBwb3NzaWJsZSBzaXplIC0gd2UgcmVhbGx5IHNob3VsZCBoYXZlIGEgZmxhZyB0bwogCSAqIHNheSB3aGV0aGVyIHRoZSBzaXplIGlzIHZhbGlkIG9yIG5vdCEpCiAJICovCi0JaWYgKCFzcmMtPmNudF9kYXRhICYmIGRpZmZfcG9wdWxhdGVfZmlsZXNwZWMoc3JjLCAwKSkKKwlpZiAoIXNyYy0+Y250X2RhdGEgJiYgZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhzcmMsIDEpKQogCQlyZXR1cm4gMDsKLQlpZiAoIWRzdC0+Y250X2RhdGEgJiYgZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhkc3QsIDApKQorCWlmICghZHN0LT5jbnRfZGF0YSAmJiBkaWZmX3BvcHVsYXRlX2ZpbGVzcGVjKGRzdCwgMSkpCiAJCXJldHVybiAwOwogCiAJbWF4X3NpemUgPSAoKHNyYy0+c2l6ZSA+IGRzdC0+c2l6ZSkgPyBzcmMtPnNpemUgOiBkc3QtPnNpemUpOwpAQCAtMTczLDYgKzE3MywxMSBAQAogCWlmIChiYXNlX3NpemUgKiAoTUFYX1NDT1JFLW1pbmltdW1fc2NvcmUpIDwgZGVsdGFfc2l6ZSAqIE1BWF9TQ09SRSkKIAkJcmV0dXJuIDA7CiAKKwlpZiAoIXNyYy0+Y250X2RhdGEgJiYgZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhzcmMsIDApKQorCQlyZXR1cm4gMDsKKwlpZiAoIWRzdC0+Y250X2RhdGEgJiYgZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhkc3QsIDApKQorCQlyZXR1cm4gMDsKKwogCWRlbHRhX2xpbWl0ID0gKHVuc2lnbmVkIGxvbmcpCiAJCShiYXNlX3NpemUgKiAoTUFYX1NDT1JFLW1pbmltdW1fc2NvcmUpIC8gTUFYX1NDT1JFKTsKIAlpZiAoZGlmZmNvcmVfY291bnRfY2hhbmdlcyhzcmMsIGRzdCwKZGlmZiAtLWdpdCBhL2RpZmZjb3JlLmggYi9kaWZmY29yZS5oCmluZGV4IDFlYmZkYWUuLjViNjM0NTggMTAwNjQ0Ci0tLSBhL2RpZmZjb3JlLmgKKysrIGIvZGlmZmNvcmUuaApAQCAtMjIsNiArMjIsOCBAQAogCiAjZGVmaW5lIE1JTklNVU1fQlJFQUtfU0laRSAgICAgNDAwIC8qIGRvIG5vdCBicmVhayBhIGZpbGUgc21hbGxlciB0aGFuIHRoaXMgKi8KIAorc3RydWN0IHVzZXJkaWZmX2RyaXZlcjsKKwogc3RydWN0IGRpZmZfZmlsZXNwZWMgewogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJY2hhciAqcGF0aDsKQEAgLTQwLDggKzQyLDEwIEBACiAjZGVmaW5lIERJRkZfRklMRV9WQUxJRChzcGVjKSAoKChzcGVjKS0+bW9kZSkgIT0gMCkKIAl1bnNpZ25lZCBzaG91bGRfZnJlZSA6IDE7IC8qIGRhdGEgc2hvdWxkIGJlIGZyZWUoKSdlZCAqLwogCXVuc2lnbmVkIHNob3VsZF9tdW5tYXAgOiAxOyAvKiBkYXRhIHNob3VsZCBiZSBtdW5tYXAoKSdlZCAqLwotCXVuc2lnbmVkIGNoZWNrZWRfYXR0ciA6IDE7Ci0JdW5zaWduZWQgaXNfYmluYXJ5IDogMTsgLyogZGF0YSBzaG91bGQgYmUgY29uc2lkZXJlZCAiYmluYXJ5IiAqLworCisJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJpdmVyOworCS8qIGRhdGEgc2hvdWxkIGJlIGNvbnNpZGVyZWQgImJpbmFyeSI7IC0xIG1lYW5zICJkb24ndCBrbm93IHlldCIgKi8KKwlpbnQgaXNfYmluYXJ5OwogfTsKIAogZXh0ZXJuIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICphbGxvY19maWxlc3BlYyhjb25zdCBjaGFyICopOwpkaWZmIC0tZ2l0IGEvZGlyLmMgYi9kaXIuYwppbmRleCBjZmFhMjhmLi4wMTMxOTgzZCAxMDA2NDQKLS0tIGEvZGlyLmMKKysrIGIvZGlyLmMKQEAgLTUyLDExICs1Miw2IEBACiAJcmV0dXJuIHByZWZpeDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgc3BlY2lhbF9jaGFyKHVuc2lnbmVkIGNoYXIgYzEpCi17Ci0JcmV0dXJuICFjMSB8fCBjMSA9PSAnKicgfHwgYzEgPT0gJ1snIHx8IGMxID09ICc/JyB8fCBjMSA9PSAnXFwnOwotfQotCiAvKgogICogRG9lcyAnbWF0Y2gnIG1hdGNoZXMgdGhlIGdpdmVuIG5hbWU/CiAgKiBBIG1hdGNoIGlzIGZvdW5kIGlmCkBAIC04MCw3ICs3NSw3IEBACiAJZm9yICg7OykgewogCQl1bnNpZ25lZCBjaGFyIGMxID0gKm1hdGNoOwogCQl1bnNpZ25lZCBjaGFyIGMyID0gKm5hbWU7Ci0JCWlmIChzcGVjaWFsX2NoYXIoYzEpKQorCQlpZiAoaXNzcGVjaWFsKGMxKSkKIAkJCWJyZWFrOwogCQlpZiAoYzEgIT0gYzIpCiAJCQlyZXR1cm4gMDsKQEAgLTM4Nyw3ICszODIsNyBAQAogCXJldHVybiBlbnQ7CiB9CiAKLXN0cnVjdCBkaXJfZW50cnkgKmRpcl9hZGRfbmFtZShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGxlbikKK3N0YXRpYyBzdHJ1Y3QgZGlyX2VudHJ5ICpkaXJfYWRkX25hbWUoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBsZW4pCiB7CiAJaWYgKGNhY2hlX25hbWVfZXhpc3RzKHBhdGhuYW1lLCBsZW4sIGlnbm9yZV9jYXNlKSkKIAkJcmV0dXJuIE5VTEw7CkBAIC0zOTYsNyArMzkxLDcgQEAKIAlyZXR1cm4gZGlyLT5lbnRyaWVzW2Rpci0+bnIrK10gPSBkaXJfZW50cnlfbmV3KHBhdGhuYW1lLCBsZW4pOwogfQogCi1zdHJ1Y3QgZGlyX2VudHJ5ICpkaXJfYWRkX2lnbm9yZWQoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBsZW4pCitzdGF0aWMgc3RydWN0IGRpcl9lbnRyeSAqZGlyX2FkZF9pZ25vcmVkKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbGVuKQogewogCWlmIChjYWNoZV9uYW1lX3BvcyhwYXRobmFtZSwgbGVuKSA+PSAwKQogCQlyZXR1cm4gTlVMTDsKQEAgLTY4MCwxNyArNjc1LDEyIEBACiAgKi8KIHN0YXRpYyBpbnQgc2ltcGxlX2xlbmd0aChjb25zdCBjaGFyICptYXRjaCkKIHsKLQljb25zdCBjaGFyIHNwZWNpYWxbMjU2XSA9IHsKLQkJWzBdID0gMSwgWyc/J10gPSAxLAotCQlbJ1xcJ10gPSAxLCBbJyonXSA9IDEsCi0JCVsnWyddID0gMQotCX07CiAJaW50IGxlbiA9IC0xOwogCiAJZm9yICg7OykgewogCQl1bnNpZ25lZCBjaGFyIGMgPSAqbWF0Y2grKzsKIAkJbGVuKys7Ci0JCWlmIChzcGVjaWFsW2NdKQorCQlpZiAoaXNzcGVjaWFsKGMpKQogCQkJcmV0dXJuIGxlbjsKIAl9CiB9CkBAIC03MjcsOCArNzE3LDEyIEBACiAKIGludCByZWFkX2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpiYXNlLCBpbnQgYmFzZWxlbiwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQogewotCXN0cnVjdCBwYXRoX3NpbXBsaWZ5ICpzaW1wbGlmeSA9IGNyZWF0ZV9zaW1wbGlmeShwYXRoc3BlYyk7CisJc3RydWN0IHBhdGhfc2ltcGxpZnkgKnNpbXBsaWZ5OwogCisJaWYgKGhhc19zeW1saW5rX2xlYWRpbmdfcGF0aChzdHJsZW4ocGF0aCksIHBhdGgpKQorCQlyZXR1cm4gZGlyLT5ucjsKKworCXNpbXBsaWZ5ID0gY3JlYXRlX3NpbXBsaWZ5KHBhdGhzcGVjKTsKIAlyZWFkX2RpcmVjdG9yeV9yZWN1cnNpdmUoZGlyLCBwYXRoLCBiYXNlLCBiYXNlbGVuLCAwLCBzaW1wbGlmeSk7CiAJZnJlZV9zaW1wbGlmeShzaW1wbGlmeSk7CiAJcXNvcnQoZGlyLT5lbnRyaWVzLCBkaXItPm5yLCBzaXplb2Yoc3RydWN0IGRpcl9lbnRyeSAqKSwgY21wX25hbWUpOwpkaWZmIC0tZ2l0IGEvZGlyLmggYi9kaXIuaAppbmRleCAyNzhlZTQyLi43Njg0MjVhIDEwMDY0NAotLS0gYS9kaXIuaAorKysgYi9kaXIuaApAQCAtNzMsNyArNzMsNiBAQAogZXh0ZXJuIHZvaWQgYWRkX2V4Y2x1ZGUoY29uc3QgY2hhciAqc3RyaW5nLCBjb25zdCBjaGFyICpiYXNlLAogCQkJaW50IGJhc2VsZW4sIHN0cnVjdCBleGNsdWRlX2xpc3QgKndoaWNoKTsKIGV4dGVybiBpbnQgZmlsZV9leGlzdHMoY29uc3QgY2hhciAqKTsKLWV4dGVybiBzdHJ1Y3QgZGlyX2VudHJ5ICpkaXJfYWRkX25hbWUoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBsZW4pOwogCiBleHRlcm4gY2hhciAqZ2V0X3JlbGF0aXZlX2N3ZChjaGFyICpidWZmZXIsIGludCBzaXplLCBjb25zdCBjaGFyICpkaXIpOwogZXh0ZXJuIGludCBpc19pbnNpZGVfZGlyKGNvbnN0IGNoYXIgKmRpcik7CmRpZmYgLS1naXQgYS9lZGl0b3IuYyBiL2VkaXRvci5jCmluZGV4IGVlYmMzZTkuLjRkNDY5ZDAgMTAwNjQ0Ci0tLSBhL2VkaXRvci5jCisrKyBiL2VkaXRvci5jCkBAIC0yNiw5ICsyNiw4IEBACiAJCWludCBpID0gMDsKIAkJaW50IGZhaWxlZDsKIAkJY29uc3QgY2hhciAqYXJnc1s2XTsKLQkJc3RydWN0IHN0cmJ1ZiBhcmcwOworCQlzdHJ1Y3Qgc3RyYnVmIGFyZzAgPSBTVFJCVUZfSU5JVDsKIAotCQlzdHJidWZfaW5pdCgmYXJnMCwgMCk7CiAJCWlmIChzdHJjc3BuKGVkaXRvciwgIiQgXHQnIikgIT0gbGVuKSB7CiAJCQkvKiB0aGVyZSBhcmUgc3BlY2lhbHMgKi8KIAkJCXN0cmJ1Zl9hZGRmKCZhcmcwLCAiJXMgXCIkQFwiIiwgZWRpdG9yKTsKZGlmZiAtLWdpdCBhL2Vudmlyb25tZW50LmMgYi9lbnZpcm9ubWVudC5jCmluZGV4IDllYmY0ODUuLmUyNzhiY2UgMTAwNjQ0Ci0tLSBhL2Vudmlyb25tZW50LmMKKysrIGIvZW52aXJvbm1lbnQuYwpAQCAtNDMsNiArNDMsOSBAQAogZW51bSBicmFuY2hfdHJhY2sgZ2l0X2JyYW5jaF90cmFjayA9IEJSQU5DSF9UUkFDS19SRU1PVEU7CiBlbnVtIHJlYmFzZV9zZXR1cF90eXBlIGF1dG9yZWJhc2UgPSBBVVRPUkVCQVNFX05FVkVSOwogCisvKiBQYXJhbGxlbCBpbmRleCBzdGF0IGRhdGEgcHJlbG9hZD8gKi8KK2ludCBjb3JlX3ByZWxvYWRfaW5kZXggPSAwOworCiAvKiBUaGlzIGlzIHNldCBieSBzZXR1cF9naXRfZGlyX2dlbnRseSgpIGFuZC9vciBnaXRfZGVmYXVsdF9jb25maWcoKSAqLwogY2hhciAqZ2l0X3dvcmtfdHJlZV9jZmc7CiBzdGF0aWMgY2hhciAqd29ya190cmVlOwpAQCAtODAsNiArODMsMTEgQEAKIAlyZXR1cm4gaXNfYmFyZV9yZXBvc2l0b3J5X2NmZyAmJiAhZ2V0X2dpdF93b3JrX3RyZWUoKTsKIH0KIAoraW50IGhhdmVfZ2l0X2Rpcih2b2lkKQoreworCXJldHVybiAhIWdpdF9kaXI7Cit9CisKIGNvbnN0IGNoYXIgKmdldF9naXRfZGlyKHZvaWQpCiB7CiAJaWYgKCFnaXRfZGlyKQpkaWZmIC0tZ2l0IGEvZXhlY19jbWQuYyBiL2V4ZWNfY21kLmMKaW5kZXggY2U2NzQxZS4uY2RkMzVmOSAxMDA2NDQKLS0tIGEvZXhlY19jbWQuYworKysgYi9leGVjX2NtZC5jCkBAIC01OSw5ICs1OSw3IEBACiB2b2lkIHNldHVwX3BhdGgodm9pZCkKIHsKIAljb25zdCBjaGFyICpvbGRfcGF0aCA9IGdldGVudigiUEFUSCIpOwotCXN0cnVjdCBzdHJidWYgbmV3X3BhdGg7Ci0KLQlzdHJidWZfaW5pdCgmbmV3X3BhdGgsIDApOworCXN0cnVjdCBzdHJidWYgbmV3X3BhdGggPSBTVFJCVUZfSU5JVDsKIAogCWFkZF9wYXRoKCZuZXdfcGF0aCwgYXJndl9leGVjX3BhdGgpOwogCWFkZF9wYXRoKCZuZXdfcGF0aCwgZ2V0ZW52KEVYRUNfUEFUSF9FTlZJUk9OTUVOVCkpOwpkaWZmIC0tZ2l0IGEvZmFzdC1pbXBvcnQuYyBiL2Zhc3QtaW1wb3J0LmMKaW5kZXggNmQ1ZWU2Zi4uZjBlMDhhYyAxMDA2NDQKLS0tIGEvZmFzdC1pbXBvcnQuYworKysgYi9mYXN0LWltcG9ydC5jCkBAIC0zNzYsNyArMzc2LDcgQEAKIAogc3RhdGljIHZvaWQgd3JpdGVfY3Jhc2hfcmVwb3J0KGNvbnN0IGNoYXIgKmVycikKIHsKLQljaGFyICpsb2MgPSBnaXRfcGF0aCgiZmFzdF9pbXBvcnRfY3Jhc2hfJWQiLCBnZXRwaWQoKSk7CisJY2hhciAqbG9jID0gZ2l0X3BhdGgoImZhc3RfaW1wb3J0X2NyYXNoXyUiUFJJdU1BWCwgKHVpbnRtYXhfdCkgZ2V0cGlkKCkpOwogCUZJTEUgKnJwdCA9IGZvcGVuKGxvYywgInciKTsKIAlzdHJ1Y3QgYnJhbmNoICpiOwogCXVuc2lnbmVkIGxvbmcgbHU7CkBAIC0zOTAsOCArMzkwLDggQEAKIAlmcHJpbnRmKHN0ZGVyciwgImZhc3QtaW1wb3J0OiBkdW1waW5nIGNyYXNoIHJlcG9ydCB0byAlc1xuIiwgbG9jKTsKIAogCWZwcmludGYocnB0LCAiZmFzdC1pbXBvcnQgY3Jhc2ggcmVwb3J0OlxuIik7Ci0JZnByaW50ZihycHQsICIgICAgZmFzdC1pbXBvcnQgcHJvY2VzczogJWRcbiIsIGdldHBpZCgpKTsKLQlmcHJpbnRmKHJwdCwgIiAgICBwYXJlbnQgcHJvY2VzcyAgICAgOiAlZFxuIiwgZ2V0cHBpZCgpKTsKKwlmcHJpbnRmKHJwdCwgIiAgICBmYXN0LWltcG9ydCBwcm9jZXNzOiAlIlBSSXVNQVgiXG4iLCAodWludG1heF90KSBnZXRwaWQoKSk7CisJZnByaW50ZihycHQsICIgICAgcGFyZW50IHByb2Nlc3MgICAgIDogJSJQUkl1TUFYIlxuIiwgKHVpbnRtYXhfdCkgZ2V0cHBpZCgpKTsKIAlmcHJpbnRmKHJwdCwgIiAgICBhdCAlc1xuIiwgc2hvd19kYXRlKHRpbWUoTlVMTCksIDAsIERBVEVfTE9DQUwpKTsKIAlmcHV0YygnXG4nLCBycHQpOwogCkBAIC01NTQsNiArNTU0LDEwIEBACiAJc3RydWN0IG1lbV9wb29sICpwOwogCXZvaWQgKnI7CiAKKwkvKiByb3VuZCB1cCB0byBhICd1aW50bWF4X3QnIGFsaWdubWVudCAqLworCWlmIChsZW4gJiAoc2l6ZW9mKHVpbnRtYXhfdCkgLSAxKSkKKwkJbGVuICs9IHNpemVvZih1aW50bWF4X3QpIC0gKGxlbiAmIChzaXplb2YodWludG1heF90KSAtIDEpKTsKKwogCWZvciAocCA9IG1lbV9wb29sOyBwOyBwID0gcC0+bmV4dF9wb29sKQogCQlpZiAoKHAtPmVuZCAtIHAtPm5leHRfZnJlZSA+PSBsZW4pKQogCQkJYnJlYWs7CkBAIC01NzIsOSArNTc2LDYgQEAKIAl9CiAKIAlyID0gcC0+bmV4dF9mcmVlOwotCS8qIHJvdW5kIG91dCB0byBhICd1aW50bWF4X3QnIGFsaWdubWVudCAqLwotCWlmIChsZW4gJiAoc2l6ZW9mKHVpbnRtYXhfdCkgLSAxKSkKLQkJbGVuICs9IHNpemVvZih1aW50bWF4X3QpIC0gKGxlbiAmIChzaXplb2YodWludG1heF90KSAtIDEpKTsKIAlwLT5uZXh0X2ZyZWUgKz0gbGVuOwogCXJldHVybiByOwogfQpAQCAtODQ1LDcgKzg0Niw3IEBACiBzdGF0aWMgY2hhciAqY3JlYXRlX2luZGV4KHZvaWQpCiB7CiAJc3RhdGljIGNoYXIgdG1wZmlsZVtQQVRIX01BWF07Ci0JU0hBX0NUWCBjdHg7CisJZ2l0X1NIQV9DVFggY3R4OwogCXN0cnVjdCBzaGExZmlsZSAqZjsKIAlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICoqaWR4LCAqKmMsICoqbGFzdCwgKmU7CiAJc3RydWN0IG9iamVjdF9lbnRyeV9wb29sICpvOwpAQCAtODgyLDE3ICs4ODMsMTcgQEAKIAlpZHhfZmQgPSB4bWtzdGVtcCh0bXBmaWxlKTsKIAlmID0gc2hhMWZkKGlkeF9mZCwgdG1wZmlsZSk7CiAJc2hhMXdyaXRlKGYsIGFycmF5LCAyNTYgKiBzaXplb2YoaW50KSk7Ci0JU0hBMV9Jbml0KCZjdHgpOworCWdpdF9TSEExX0luaXQoJmN0eCk7CiAJZm9yIChjID0gaWR4OyBjICE9IGxhc3Q7IGMrKykgewogCQl1aW50MzJfdCBvZmZzZXQgPSBodG9ubCgoKmMpLT5vZmZzZXQpOwogCQlzaGExd3JpdGUoZiwgJm9mZnNldCwgNCk7CiAJCXNoYTF3cml0ZShmLCAoKmMpLT5zaGExLCBzaXplb2YoKCpjKS0+c2hhMSkpOwotCQlTSEExX1VwZGF0ZSgmY3R4LCAoKmMpLT5zaGExLCAyMCk7CisJCWdpdF9TSEExX1VwZGF0ZSgmY3R4LCAoKmMpLT5zaGExLCAyMCk7CiAJfQogCXNoYTF3cml0ZShmLCBwYWNrX2RhdGEtPnNoYTEsIHNpemVvZihwYWNrX2RhdGEtPnNoYTEpKTsKIAlzaGExY2xvc2UoZiwgTlVMTCwgQ1NVTV9GU1lOQyk7CiAJZnJlZShpZHgpOwotCVNIQTFfRmluYWwocGFja19kYXRhLT5zaGExLCAmY3R4KTsKKwlnaXRfU0hBMV9GaW5hbChwYWNrX2RhdGEtPnNoYTEsICZjdHgpOwogCXJldHVybiB0bXBmaWxlOwogfQogCkBAIC0xMDM1LDE1ICsxMDM2LDE1IEBACiAJdW5zaWduZWQgY2hhciBoZHJbOTZdOwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJdW5zaWduZWQgbG9uZyBoZHJsZW4sIGRlbHRhbGVuOwotCVNIQV9DVFggYzsKKwlnaXRfU0hBX0NUWCBjOwogCXpfc3RyZWFtIHM7CiAKIAloZHJsZW4gPSBzcHJpbnRmKChjaGFyKiloZHIsIiVzICVsdSIsIHR5cGVuYW1lKHR5cGUpLAogCQkodW5zaWduZWQgbG9uZylkYXQtPmxlbikgKyAxOwotCVNIQTFfSW5pdCgmYyk7Ci0JU0hBMV9VcGRhdGUoJmMsIGhkciwgaGRybGVuKTsKLQlTSEExX1VwZGF0ZSgmYywgZGF0LT5idWYsIGRhdC0+bGVuKTsKLQlTSEExX0ZpbmFsKHNoYTEsICZjKTsKKwlnaXRfU0hBMV9Jbml0KCZjKTsKKwlnaXRfU0hBMV9VcGRhdGUoJmMsIGhkciwgaGRybGVuKTsKKwlnaXRfU0hBMV9VcGRhdGUoJmMsIGRhdC0+YnVmLCBkYXQtPmxlbik7CisJZ2l0X1NIQTFfRmluYWwoc2hhMSwgJmMpOwogCWlmIChzaGExb3V0KQogCQloYXNoY3B5KHNoYTFvdXQsIHNoYTEpOwogCkBAIC0xNzQ3LDkgKzE3NDgsMTIgQEAKIHsKIAljb25zdCBjaGFyICpvcmlnX3NyYyA9IHNyYzsKIAljaGFyICplbmRwLCBzaWduOworCXVuc2lnbmVkIGxvbmcgZGF0ZTsKIAotCXN0cnRvdWwoc3JjLCAmZW5kcCwgMTApOwotCWlmIChlbmRwID09IHNyYyB8fCAqZW5kcCAhPSAnICcpCisJZXJybm8gPSAwOworCisJZGF0ZSA9IHN0cnRvdWwoc3JjLCAmZW5kcCwgMTApOworCWlmIChlcnJubyB8fCBlbmRwID09IHNyYyB8fCAqZW5kcCAhPSAnICcpCiAJCXJldHVybiAtMTsKIAogCXNyYyA9IGVuZHAgKyAxOwpAQCAtMTc1Nyw4ICsxNzYxLDggQEAKIAkJcmV0dXJuIC0xOwogCXNpZ24gPSAqc3JjOwogCi0Jc3RydG91bChzcmMgKyAxLCAmZW5kcCwgMTApOwotCWlmIChlbmRwID09IHNyYyB8fCAqZW5kcCB8fCAoZW5kcCAtIG9yaWdfc3JjKSA+PSBtYXhsZW4pCisJZGF0ZSA9IHN0cnRvdWwoc3JjICsgMSwgJmVuZHAsIDEwKTsKKwlpZiAoZXJybm8gfHwgZW5kcCA9PSBzcmMgfHwgKmVuZHAgfHwgKGVuZHAgLSBvcmlnX3NyYykgPj0gbWF4bGVuKQogCQlyZXR1cm4gLTE7CiAKIAlzdHJjcHkocmVzdWx0LCBvcmlnX3NyYyk7CmRpZmYgLS1naXQgYS9mc2NrLmMgYi9mc2NrLmMKaW5kZXggYWI2NGMxOC4uOTdmNzZjNSAxMDA2NDQKLS0tIGEvZnNjay5jCisrKyBiL2ZzY2suYwpAQCAtMzA3LDkgKzMwNyw4IEBACiB7CiAJdmFfbGlzdCBhcDsKIAlpbnQgbGVuOwotCXN0cnVjdCBzdHJidWYgc2I7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCi0Jc3RyYnVmX2luaXQoJnNiLCAwKTsKIAlzdHJidWZfYWRkZigmc2IsICJvYmplY3QgJXM6Iiwgb2JqLT5zaGExP3NoYTFfdG9faGV4KG9iai0+c2hhMSk6IihudWxsKSIpOwogCiAJdmFfc3RhcnQoYXAsIGZtdCk7CmRpZmYgLS1naXQgYS9naXQtYW0uc2ggYi9naXQtYW0uc2gKaW5kZXggYWE2MDI2MS4uNGIxNTdmZSAxMDA3NTUKLS0tIGEvZ2l0LWFtLnNoCisrKyBiL2dpdC1hbS5zaApAQCAtMjQ3LDEwICsyNDcsMTEgQEAKIAkJZXhpdCAxCiAJfQogCi0JIyAtcywgLXUsIC1rIGFuZCAtLXdoaXRlc3BhY2UgZmxhZ3MgYXJlIGtlcHQgZm9yIHRoZQotCSMgcmVzdW1pbmcgc2Vzc2lvbiBhZnRlciBhIHBhdGNoIGZhaWx1cmUuCi0JIyAtMyBhbmQgLWkgY2FuIGFuZCBtdXN0IGJlIGdpdmVuIHdoZW4gcmVzdW1pbmcuCi0JZWNobyAiICR3cyIgPiIkZG90ZXN0L3doaXRlc3BhY2UiCisJIyAtcywgLXUsIC1rLCAtLXdoaXRlc3BhY2UsIC0zLCAtQyBhbmQgLXAgZmxhZ3MgYXJlIGtlcHQKKwkjIGZvciB0aGUgcmVzdW1pbmcgc2Vzc2lvbiBhZnRlciBhIHBhdGNoIGZhaWx1cmUuCisJIyAtaSBjYW4gYW5kIG11c3QgYmUgZ2l2ZW4gd2hlbiByZXN1bWluZy4KKwllY2hvICIgJGdpdF9hcHBseV9vcHQiID4iJGRvdGVzdC9hcHBseS1vcHQiCisJZWNobyAiJHRocmVld2F5IiA+IiRkb3Rlc3QvdGhyZWV3YXkiCiAJZWNobyAiJHNpZ24iID4iJGRvdGVzdC9zaWduIgogCWVjaG8gIiR1dGY4IiA+IiRkb3Rlc3QvdXRmOCIKIAllY2hvICIka2VlcCIgPiIkZG90ZXN0L2tlZXAiCkBAIC0yODMsNyArMjg0LDExIEBACiB0aGVuCiAJa2VlcD0tawogZmkKLXdzPWBjYXQgIiRkb3Rlc3Qvd2hpdGVzcGFjZSJgCitpZiB0ZXN0ICIkKGNhdCAiJGRvdGVzdC90aHJlZXdheSIpIiA9IHQKK3RoZW4KKwl0aHJlZXdheT10CitmaQorZ2l0X2FwcGx5X29wdD0kKGNhdCAiJGRvdGVzdC9hcHBseS1vcHQiKQogaWYgdGVzdCAiJChjYXQgIiRkb3Rlc3Qvc2lnbiIpIiA9IHQKIHRoZW4KIAlTSUdOT0ZGPWBnaXQgdmFyIEdJVF9DT01NSVRURVJfSURFTlQgfCBzZWQgLWUgJwpkaWZmIC0tZ2l0IGEvZ2l0LWJpc2VjdC5zaCBiL2dpdC1iaXNlY3Quc2gKaW5kZXggOTdhYzYwMC4uODVkYjRiYSAxMDA3NTUKLS0tIGEvZ2l0LWJpc2VjdC5zaAorKysgYi9naXQtYmlzZWN0LnNoCkBAIC05LDcgKzksNyBAQAogICAgICAgICBtYXJrIDxyZXY+IGEga25vd24tYmFkIHJldmlzaW9uLgogZ2l0IGJpc2VjdCBnb29kIFs8cmV2Pi4uLl0KICAgICAgICAgbWFyayA8cmV2Pi4uLiBrbm93bi1nb29kIHJldmlzaW9ucy4KLWdpdCBiaXNlY3Qgc2tpcCBbPHJldj4uLi5dCitnaXQgYmlzZWN0IHNraXAgWyg8cmV2Pnw8cmFuZ2U+KS4uLl0KICAgICAgICAgbWFyayA8cmV2Pi4uLiB1bnRlc3RhYmxlIHJldmlzaW9ucy4KIGdpdCBiaXNlY3QgbmV4dAogICAgICAgICBmaW5kIG5leHQgYmlzZWN0aW9uIHRvIHRlc3QgYW5kIGNoZWNrIGl0IG91dC4KQEAgLTE3Miw2ICsxNzIsNDAgQEAKIAl0ZXN0IC1uICIkbm9sb2ciIHx8IGVjaG8gImdpdCBiaXNlY3QgJHN0YXRlICRyZXYiID4+IiRHSVRfRElSL0JJU0VDVF9MT0ciCiB9CiAKK2lzX2V4cGVjdGVkX3JldigpIHsKKwl0ZXN0IC1mICIkR0lUX0RJUi9CSVNFQ1RfRVhQRUNURURfUkVWIiAmJgorCXRlc3QgIiQxIiA9ICQoY2F0ICIkR0lUX0RJUi9CSVNFQ1RfRVhQRUNURURfUkVWIikKK30KKworbWFya19leHBlY3RlZF9yZXYoKSB7CisJZWNobyAiJDEiID4gIiRHSVRfRElSL0JJU0VDVF9FWFBFQ1RFRF9SRVYiCit9CisKK2NoZWNrX2V4cGVjdGVkX3JldnMoKSB7CisJZm9yIF9yZXYgaW4gIiRAIjsgZG8KKwkJaWYgISBpc19leHBlY3RlZF9yZXYgIiRfcmV2IjsgdGhlbgorCQkJcm0gLWYgIiRHSVRfRElSL0JJU0VDVF9BTkNFU1RPUlNfT0siCisJCQlybSAtZiAiJEdJVF9ESVIvQklTRUNUX0VYUEVDVEVEX1JFViIKKwkJCXJldHVybgorCQlmaQorCWRvbmUKK30KKworYmlzZWN0X3NraXAoKSB7CisgICAgICAgIGFsbD0nJworCWZvciBhcmcgaW4gIiRAIgorCWRvCisJICAgIGNhc2UgIiRhcmciIGluCisgICAgICAgICAgICAqLi4qKQorICAgICAgICAgICAgICAgIHJldnM9JChnaXQgcmV2LWxpc3QgIiRhcmciKSB8fCBkaWUgIkJhZCByZXYgaW5wdXQ6ICRhcmciIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIHJldnM9JChzcSAiJGFyZyIpIDs7CisJICAgIGVzYWMKKyAgICAgICAgICAgIGFsbD0iJGFsbCAkcmV2cyIKKyAgICAgICAgZG9uZQorICAgICAgICBldmFsIGJpc2VjdF9zdGF0ZSAnc2tpcCcgJGFsbAorfQorCiBiaXNlY3Rfc3RhdGUoKSB7CiAJYmlzZWN0X2F1dG9zdGFydAogCXN0YXRlPSQxCkBAIC0xODEsNyArMjE1LDggQEAKIAkxLGJhZHwxLGdvb2R8MSxza2lwKQogCQlyZXY9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpIHx8CiAJCQlkaWUgIkJhZCByZXYgaW5wdXQ6IEhFQUQiCi0JCWJpc2VjdF93cml0ZSAiJHN0YXRlIiAiJHJldiIgOzsKKwkJYmlzZWN0X3dyaXRlICIkc3RhdGUiICIkcmV2IgorCQljaGVja19leHBlY3RlZF9yZXZzICIkcmV2IiA7OwogCTIsYmFkfCosZ29vZHwqLHNraXApCiAJCXNoaWZ0CiAJCWV2YWw9JycKQEAgLTE5MSw3ICsyMjYsOCBAQAogCQkJCWRpZSAiQmFkIHJldiBpbnB1dDogJHJldiIKIAkJCWV2YWw9IiRldmFsIGJpc2VjdF93cml0ZSAnJHN0YXRlJyAnJHNoYSc7ICIKIAkJZG9uZQotCQlldmFsICIkZXZhbCIgOzsKKwkJZXZhbCAiJGV2YWwiCisJCWNoZWNrX2V4cGVjdGVkX3JldnMgIiRAIiA7OwogCSosYmFkKQogCQlkaWUgIidnaXQgYmlzZWN0IGJhZCcgY2FuIHRha2Ugb25seSBvbmUgYXJndW1lbnQuIiA7OwogCSopCkBAIC0yNDMsMzMgKzI3OSwxOCBAQAogCWJpc2VjdF9uZXh0X2NoZWNrICYmIGJpc2VjdF9uZXh0IHx8IDoKIH0KIAotZXZhbF9yZXZfbGlzdCgpIHsKLQlfZXZhbD0iJDEiCi0KLQlldmFsICRfZXZhbAotCXJlcz0kPwotCi0JaWYgWyAkcmVzIC1uZSAwIF07IHRoZW4KLQkJZWNobyA+JjIgIidnaXQgcmV2LWxpc3QgLS1iaXNlY3QtdmFycycgZmFpbGVkOiIKLQkJZWNobyA+JjIgIm1heWJlIHlvdSBtaXN0YWtlIGdvb2QgYW5kIGJhZCByZXZzPyIKLQkJZXhpdCAkcmVzCi0JZmkKLQotCXJldHVybiAkcmVzCi19Ci0KIGZpbHRlcl9za2lwcGVkKCkgewogCV9ldmFsPSIkMSIKIAlfc2tpcD0iJDIiCiAKIAlpZiBbIC16ICIkX3NraXAiIF07IHRoZW4KLQkJZXZhbF9yZXZfbGlzdCAiJF9ldmFsIgorCQlldmFsICIkX2V2YWwiCiAJCXJldHVybgogCWZpCiAKIAkjIExldCdzIHBhcnNlIHRoZSBvdXRwdXQgb2Y6CiAJIyAiZ2l0IHJldi1saXN0IC0tYmlzZWN0LXZhcnMgLS1iaXNlY3QtYWxsIC4uLiIKLQlldmFsX3Jldl9saXN0ICIkX2V2YWwiIHwgd2hpbGUgcmVhZCBoYXNoIGxpbmUKKwlldmFsICIkX2V2YWwiIHwgd2hpbGUgcmVhZCBoYXNoIGxpbmUKIAlkbwogCQljYXNlICIkVkFSUywkRk9VTkQsJFRSSUVELCRoYXNoIiBpbgogCQkJIyBXZSBkaXNwbGF5IHNvbWUgdmFycy4KQEAgLTMzMiwyMCArMzUzLDEzMyBAQAogCWZpCiB9CiAKK2Jpc2VjdF9jaGVja291dCgpIHsKKwlfcmV2PSIkMSIKKwlfbXNnPSIkMiIKKwllY2hvICJCaXNlY3Rpbmc6ICRfbXNnIgorCW1hcmtfZXhwZWN0ZWRfcmV2ICIkX3JldiIKKwlnaXQgY2hlY2tvdXQgLXEgIiRfcmV2IiB8fCBleGl0CisJZ2l0IHNob3ctYnJhbmNoICIkX3JldiIKK30KKworaXNfYW1vbmcoKSB7CisJX3Jldj0iJDEiCisJX2xpc3Q9IiQyIgorCWNhc2UgIiRfbGlzdCIgaW4gKiRfcmV2KikgcmV0dXJuIDAgOzsgZXNhYworCXJldHVybiAxCit9CisKK2hhbmRsZV9iYWRfbWVyZ2VfYmFzZSgpIHsKKwlfYmFkbWI9IiQxIgorCV9nb29kPSIkMiIKKwlpZiBpc19leHBlY3RlZF9yZXYgIiRfYmFkbWIiOyB0aGVuCisJCWNhdCA+JjIgPDxFT0YKK1RoZSBtZXJnZSBiYXNlICRfYmFkbWIgaXMgYmFkLgorVGhpcyBtZWFucyB0aGUgYnVnIGhhcyBiZWVuIGZpeGVkIGJldHdlZW4gJF9iYWRtYiBhbmQgWyRfZ29vZF0uCitFT0YKKwkJZXhpdCAzCisJZWxzZQorCQljYXQgPiYyIDw8RU9GCitTb21lIGdvb2QgcmV2cyBhcmUgbm90IGFuY2VzdG9yIG9mIHRoZSBiYWQgcmV2LgorZ2l0IGJpc2VjdCBjYW5ub3Qgd29yayBwcm9wZXJseSBpbiB0aGlzIGNhc2UuCitNYXliZSB5b3UgbWlzdGFrZSBnb29kIGFuZCBiYWQgcmV2cz8KK0VPRgorCQlleGl0IDEKKwlmaQorfQorCitoYW5kbGVfc2tpcHBlZF9tZXJnZV9iYXNlKCkgeworCV9tYj0iJDEiCisJX2JhZD0iJDIiCisJX2dvb2Q9IiQzIgorCWNhdCA+JjIgPDxFT0YKK1dhcm5pbmc6IHRoZSBtZXJnZSBiYXNlIGJldHdlZW4gJF9iYWQgYW5kIFskX2dvb2RdIG11c3QgYmUgc2tpcHBlZC4KK1NvIHdlIGNhbm5vdCBiZSBzdXJlIHRoZSBmaXJzdCBiYWQgY29tbWl0IGlzIGJldHdlZW4gJF9tYiBhbmQgJF9iYWQuCitXZSBjb250aW51ZSBhbnl3YXkuCitFT0YKK30KKworIworIyAiY2hlY2tfbWVyZ2VfYmFzZXMiIGNoZWNrcyB0aGF0IG1lcmdlIGJhc2VzIGFyZSBub3QgImJhZCIuCisjCisjIC0gSWYgb25lIGlzICJnb29kIiwgdGhhdCdzIGdvb2QsIHdlIGhhdmUgbm90aGluZyB0byBkby4KKyMgLSBJZiBvbmUgaXMgImJhZCIsIGl0IG1lYW5zIHRoZSB1c2VyIGFzc3VtZWQgc29tZXRoaW5nIHdyb25nCisjIGFuZCB3ZSBtdXN0IGV4aXQuCisjIC0gSWYgb25lIGlzICJza2lwcGVkIiwgd2UgY2FuJ3Qga25vdyBidXQgd2Ugc2hvdWxkIHdhcm4uCisjIC0gSWYgd2UgZG9uJ3Qga25vdywgd2Ugc2hvdWxkIGNoZWNrIGl0IG91dCBhbmQgYXNrIHRoZSB1c2VyIHRvIHRlc3QuCisjCisjIEluIHRoZSBsYXN0IGNhc2Ugd2Ugd2lsbCByZXR1cm4gMSwgYW5kIG90aGVyd2lzZSAwLgorIworY2hlY2tfbWVyZ2VfYmFzZXMoKSB7CisJX2JhZD0iJDEiCisJX2dvb2Q9IiQyIgorCV9za2lwPSIkMyIKKwlmb3IgX21iIGluICQoZ2l0IG1lcmdlLWJhc2UgLS1hbGwgJF9iYWQgJF9nb29kKQorCWRvCisJCWlmIGlzX2Ftb25nICIkX21iIiAiJF9nb29kIjsgdGhlbgorCQkJY29udGludWUKKwkJZWxpZiB0ZXN0ICIkX21iIiA9ICIkX2JhZCI7IHRoZW4KKwkJCWhhbmRsZV9iYWRfbWVyZ2VfYmFzZSAiJF9iYWQiICIkX2dvb2QiCisJCWVsaWYgaXNfYW1vbmcgIiRfbWIiICIkX3NraXAiOyB0aGVuCisJCQloYW5kbGVfc2tpcHBlZF9tZXJnZV9iYXNlICIkX21iIiAiJF9iYWQiICIkX2dvb2QiCisJCWVsc2UKKwkJCWJpc2VjdF9jaGVja291dCAiJF9tYiIgImEgbWVyZ2UgYmFzZSBtdXN0IGJlIHRlc3RlZCIKKwkJCXJldHVybiAxCisJCWZpCisJZG9uZQorCXJldHVybiAwCit9CisKKyMKKyMgImNoZWNrX2dvb2RfYXJlX2FuY2VzdG9yc19vZl9iYWQiIGNoZWNrcyB0aGF0IGFsbCAiZ29vZCIgcmV2cyBhcmUKKyMgYW5jZXN0b3Igb2YgdGhlICJiYWQiIHJldi4KKyMKKyMgSWYgdGhhdCdzIG5vdCB0aGUgY2FzZSwgd2UgbmVlZCB0byBjaGVjayB0aGUgbWVyZ2UgYmFzZXMuCisjIElmIGEgbWVyZ2UgYmFzZSBtdXN0IGJlIHRlc3RlZCBieSB0aGUgdXNlciB3ZSByZXR1cm4gMSBhbmQKKyMgb3RoZXJ3aXNlIDAuCisjCitjaGVja19nb29kX2FyZV9hbmNlc3RvcnNfb2ZfYmFkKCkgeworCXRlc3QgLWYgIiRHSVRfRElSL0JJU0VDVF9BTkNFU1RPUlNfT0siICYmCisJCXJldHVybgorCisJX2JhZD0iJDEiCisJX2dvb2Q9JChlY2hvICQyIHwgc2VkIC1lICdzL1xeLy9nJykKKwlfc2tpcD0iJDMiCisKKwkjIEJpc2VjdGluZyB3aXRoIG5vIGdvb2QgcmV2IGlzIG9rCisJdGVzdCAteiAiJF9nb29kIiAmJiByZXR1cm4KKworCV9zaWRlPSQoZ2l0IHJldi1saXN0ICRfZ29vZCBeJF9iYWQpCisJaWYgdGVzdCAtbiAiJF9zaWRlIjsgdGhlbgorCQkjIFJldHVybiBpZiBhIGNoZWNrb3V0IHdhcyBkb25lCisJCWNoZWNrX21lcmdlX2Jhc2VzICIkX2JhZCIgIiRfZ29vZCIgIiRfc2tpcCIgfHwgcmV0dXJuCisJZmkKKworCTogPiAiJEdJVF9ESVIvQklTRUNUX0FOQ0VTVE9SU19PSyIKKworCXJldHVybiAwCit9CisKIGJpc2VjdF9uZXh0KCkgewogCWNhc2UgIiQjIiBpbiAwKSA7OyAqKSB1c2FnZSA7OyBlc2FjCiAJYmlzZWN0X2F1dG9zdGFydAogCWJpc2VjdF9uZXh0X2NoZWNrIGdvb2QKIAotCXNraXA9JChnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKG9iamVjdG5hbWUpJyBcCi0JCSJyZWZzL2Jpc2VjdC9za2lwLSoiIHwgdHIgJ1wwMTInICcgJykgfHwgZXhpdAotCi0JQklTRUNUX09QVD0nJwotCXRlc3QgLW4gIiRza2lwIiAmJiBCSVNFQ1RfT1BUPSctLWJpc2VjdC1hbGwnCi0KKwkjIEdldCBiYWQsIGdvb2QgYW5kIHNraXBwZWQgcmV2cwogCWJhZD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9iaXNlY3QvYmFkKSAmJgogCWdvb2Q9JChnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSdeJShvYmplY3RuYW1lKScgXAogCQkicmVmcy9iaXNlY3QvZ29vZC0qIiB8IHRyICdcMDEyJyAnICcpICYmCisJc2tpcD0kKGdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9JyUob2JqZWN0bmFtZSknIFwKKwkJInJlZnMvYmlzZWN0L3NraXAtKiIgfCB0ciAnXDAxMicgJyAnKSB8fCBleGl0CisKKwkjIE1heWJlIHNvbWUgbWVyZ2UgYmFzZXMgbXVzdCBiZSB0ZXN0ZWQgZmlyc3QKKwljaGVja19nb29kX2FyZV9hbmNlc3RvcnNfb2ZfYmFkICIkYmFkIiAiJGdvb2QiICIkc2tpcCIKKwkjIFJldHVybiBub3cgaWYgYSBjaGVja291dCBoYXMgYWxyZWFkeSBiZWVuIGRvbmUKKwl0ZXN0ICIkPyIgLWVxICIxIiAmJiByZXR1cm4KKworCSMgR2V0IGJpc2VjdGlvbiBpbmZvcm1hdGlvbgorCUJJU0VDVF9PUFQ9JycKKwl0ZXN0IC1uICIkc2tpcCIgJiYgQklTRUNUX09QVD0nLS1iaXNlY3QtYWxsJwogCWV2YWw9ImdpdCByZXYtbGlzdCAtLWJpc2VjdC12YXJzICRCSVNFQ1RfT1BUICRnb29kICRiYWQgLS0iICYmCiAJZXZhbD0iJGV2YWwgJChjYXQgIiRHSVRfRElSL0JJU0VDVF9OQU1FUyIpIiAmJgogCWV2YWw9JChmaWx0ZXJfc2tpcHBlZCAiJGV2YWwiICIkc2tpcCIpICYmCkBAIC0zNjYsOSArNTAwLDcgQEAKIAkjIGNvbW1pdCBpcyBhbHNvIGEgInNraXAiIGNvbW1pdCAoc2VlIGFib3ZlKS4KIAlleGl0X2lmX3NraXBwZWRfY29tbWl0cyAiJGJpc2VjdF9yZXYiCiAKLQllY2hvICJCaXNlY3Rpbmc6ICRiaXNlY3RfbnIgcmV2aXNpb25zIGxlZnQgdG8gdGVzdCBhZnRlciB0aGlzIgotCWdpdCBjaGVja291dCAtcSAiJGJpc2VjdF9yZXYiIHx8IGV4aXQKLQlnaXQgc2hvdy1icmFuY2ggIiRiaXNlY3RfcmV2IgorCWJpc2VjdF9jaGVja291dCAiJGJpc2VjdF9yZXYiICIkYmlzZWN0X25yIHJldmlzaW9ucyBsZWZ0IHRvIHRlc3QgYWZ0ZXIgdGhpcyIKIH0KIAogYmlzZWN0X3Zpc3VhbGl6ZSgpIHsKQEAgLTM3Niw3ICs1MDgsNyBAQAogCiAJaWYgdGVzdCAkIyA9IDAKIAl0aGVuCi0JCWNhc2UgIiR7RElTUExBWStzZXR9JHtNU1lTVEVNK3NldH0ke1NFQ1VSSVRZU0VTU0lPTklEK3NldH0iIGluCisJCWNhc2UgIiR7RElTUExBWStzZXR9JHtTRVNTSU9OTkFNRStzZXR9JHtNU1lTVEVNK3NldH0ke1NFQ1VSSVRZU0VTU0lPTklEK3NldH0iIGluCiAJCScnKQlzZXQgZ2l0IGxvZyA7OwogCQlzZXQqKQlzZXQgZ2l0ayA7OwogCQllc2FjCkBAIC00MTUsNiArNTQ3LDggQEAKIAlkbwogCQlnaXQgdXBkYXRlLXJlZiAtZCAkcmVmICRoYXNoIHx8IGV4aXQKIAlkb25lCisJcm0gLWYgIiRHSVRfRElSL0JJU0VDVF9FWFBFQ1RFRF9SRVYiICYmCisJcm0gLWYgIiRHSVRfRElSL0JJU0VDVF9BTkNFU1RPUlNfT0siICYmCiAJcm0gLWYgIiRHSVRfRElSL0JJU0VDVF9MT0ciICYmCiAJcm0gLWYgIiRHSVRfRElSL0JJU0VDVF9OQU1FUyIgJiYKIAlybSAtZiAiJEdJVF9ESVIvQklTRUNUX1JVTiIgJiYKQEAgLTUxMSw4ICs2NDUsMTAgQEAKICAgICAgICAgZ2l0IGJpc2VjdCAtaCA7OwogICAgIHN0YXJ0KQogICAgICAgICBiaXNlY3Rfc3RhcnQgIiRAIiA7OwotICAgIGJhZHxnb29kfHNraXApCisgICAgYmFkfGdvb2QpCiAgICAgICAgIGJpc2VjdF9zdGF0ZSAiJGNtZCIgIiRAIiA7OworICAgIHNraXApCisgICAgICAgIGJpc2VjdF9za2lwICIkQCIgOzsKICAgICBuZXh0KQogICAgICAgICAjIE5vdCBzdXJlIHdlIHdhbnQgIm5leHQiIGF0IHRoZSBVSSBsZXZlbCBhbnltb3JlLgogICAgICAgICBiaXNlY3RfbmV4dCAiJEAiIDs7CmRpZmYgLS1naXQgYS9naXQtY29tcGF0LXV0aWwuaCBiL2dpdC1jb21wYXQtdXRpbC5oCmluZGV4IGNmODljZGYuLmUyMGIxZTggMTAwNjQ0Ci0tLSBhL2dpdC1jb21wYXQtdXRpbC5oCisrKyBiL2dpdC1jb21wYXQtdXRpbC5oCkBAIC04NSw2ICs4NSw3IEBACiAjdW5kZWYgX1hPUEVOX1NPVVJDRQogI2luY2x1ZGUgPGdycC5oPgogI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMAorI2luY2x1ZGUgImNvbXBhdC9jeWd3aW4uaCIKICNlbHNlCiAjdW5kZWYgX0FMTF9TT1VSQ0UgLyogQUlYIDUuM0wgZGVmaW5lcyBhIHN0cnVjdCBsaXN0IHdpdGggX0FMTF9TT1VSQ0UuICovCiAjaW5jbHVkZSA8Z3JwLmg+CkBAIC05OSw2ICsxMDAsMTEgQEAKICNpbmNsdWRlIDxpY29udi5oPgogI2VuZGlmCiAKKyNpZm5kZWYgTk9fT1BFTlNTTAorI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKyNlbmRpZgorCiAvKiBPbiBtb3N0IHN5c3RlbXMgPGxpbWl0cy5oPiB3b3VsZCBoYXZlIGdpdmVuIHVzIHRoaXMsIGJ1dAogICogbm90IG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBHTlUvSHVyZCkuCiAgKi8KQEAgLTE0OSwxMCArMTU1LDcgQEAKIGV4dGVybiBpbnQgZXJyb3IoY29uc3QgY2hhciAqZXJyLCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogZXh0ZXJuIHZvaWQgd2FybmluZyhjb25zdCBjaGFyICplcnIsIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CiAKLWV4dGVybiB2b2lkIHNldF91c2FnZV9yb3V0aW5lKHZvaWQgKCpyb3V0aW5lKShjb25zdCBjaGFyICplcnIpIE5PUkVUVVJOKTsKIGV4dGVybiB2b2lkIHNldF9kaWVfcm91dGluZSh2b2lkICgqcm91dGluZSkoY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcykgTk9SRVRVUk4pOwotZXh0ZXJuIHZvaWQgc2V0X2Vycm9yX3JvdXRpbmUodm9pZCAoKnJvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpKTsKLWV4dGVybiB2b2lkIHNldF93YXJuX3JvdXRpbmUodm9pZCAoKnJvdXRpbmUpKGNvbnN0IGNoYXIgKndhcm4sIHZhX2xpc3QgcGFyYW1zKSk7CiAKIGV4dGVybiBpbnQgcHJlZml4Y21wKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiB0aW1lX3QgdG1fdG9fdGltZV90KGNvbnN0IHN0cnVjdCB0bSAqdG0pOwpAQCAtMTkyLDYgKzE5NSwxMiBAQAogCiAjZW5kaWYgLyogTk9fTU1BUCAqLwogCisjaWZkZWYgTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUCisjZGVmaW5lIG9uX2Rpc2tfYnl0ZXMoc3QpICgoc3QpLnN0X3NpemUpCisjZWxzZQorI2RlZmluZSBvbl9kaXNrX2J5dGVzKHN0KSAoKHN0KS5zdF9ibG9ja3MgKiA1MTIpCisjZW5kaWYKKwogI2RlZmluZSBERUZBVUxUX1BBQ0tFRF9HSVRfTElNSVQgXAogCSgoMTAyNEwgKiAxMDI0TCkgKiAoc2l6ZW9mKHZvaWQqKSA+PSA4ID8gODE5MiA6IDI1NikpCiAKQEAgLTMxOCwxMSArMzI3LDEzIEBACiAjZGVmaW5lIEdJVF9TUEFDRSAweDAxCiAjZGVmaW5lIEdJVF9ESUdJVCAweDAyCiAjZGVmaW5lIEdJVF9BTFBIQSAweDA0CisjZGVmaW5lIEdJVF9TUEVDSUFMIDB4MDgKICNkZWZpbmUgc2FuZV9pc3Rlc3QoeCxtYXNrKSAoKHNhbmVfY3R5cGVbKHVuc2lnbmVkIGNoYXIpKHgpXSAmIChtYXNrKSkgIT0gMCkKICNkZWZpbmUgaXNzcGFjZSh4KSBzYW5lX2lzdGVzdCh4LEdJVF9TUEFDRSkKICNkZWZpbmUgaXNkaWdpdCh4KSBzYW5lX2lzdGVzdCh4LEdJVF9ESUdJVCkKICNkZWZpbmUgaXNhbHBoYSh4KSBzYW5lX2lzdGVzdCh4LEdJVF9BTFBIQSkKICNkZWZpbmUgaXNhbG51bSh4KSBzYW5lX2lzdGVzdCh4LEdJVF9BTFBIQSB8IEdJVF9ESUdJVCkKKyNkZWZpbmUgaXNzcGVjaWFsKHgpIHNhbmVfaXN0ZXN0KHgsR0lUX1NQRUNJQUwpCiAjZGVmaW5lIHRvbG93ZXIoeCkgc2FuZV9jYXNlKCh1bnNpZ25lZCBjaGFyKSh4KSwgMHgyMCkKICNkZWZpbmUgdG91cHBlcih4KSBzYW5lX2Nhc2UoKHVuc2lnbmVkIGNoYXIpKHgpLCAwKQogCmRpZmYgLS1naXQgYS9naXQtZmlsdGVyLWJyYW5jaC5zaCBiL2dpdC1maWx0ZXItYnJhbmNoLnNoCmluZGV4IGEzMjRjZjAuLmMxMDZmNDUgMTAwNzU1Ci0tLSBhL2dpdC1maWx0ZXItYnJhbmNoLnNoCisrKyBiL2dpdC1maWx0ZXItYnJhbmNoLnNoCkBAIC0yMzIsMTEgKzIzMiwxMSBAQAogY2FzZSAiJGZpbHRlcl9zdWJkaXIiIGluCiAiIikKIAlnaXQgcmV2LWxpc3QgLS1yZXZlcnNlIC0tdG9wby1vcmRlciAtLWRlZmF1bHQgSEVBRCBcCi0JCS0tcGFyZW50cyAiJEAiCisJCS0tcGFyZW50cyAtLXNpbXBsaWZ5LW1lcmdlcyAiJEAiCiAJOzsKICopCiAJZ2l0IHJldi1saXN0IC0tcmV2ZXJzZSAtLXRvcG8tb3JkZXIgLS1kZWZhdWx0IEhFQUQgXAotCQktLXBhcmVudHMgIiRAIiAtLSAiJGZpbHRlcl9zdWJkaXIiCisJCS0tcGFyZW50cyAtLXNpbXBsaWZ5LW1lcmdlcyAiJEAiIC0tICIkZmlsdGVyX3N1YmRpciIKIGVzYWMgPiAuLi9yZXZzIHx8IGRpZSAiQ291bGQgbm90IGdldCB0aGUgY29tbWl0cyIKIGNvbW1pdHM9JCh3YyAtbCA8Li4vcmV2cyB8IHRyIC1kICIgIikKIApAQCAtMjU2LDcgKzI1Niw3IEBACiAJKikKIAkJIyBUaGUgY29tbWl0IG1heSBub3QgaGF2ZSB0aGUgc3ViZGlyZWN0b3J5IGF0IGFsbAogCQllcnI9JChnaXQgcmVhZC10cmVlIC1pIC1tICRjb21taXQ6IiRmaWx0ZXJfc3ViZGlyIiAyPiYxKSB8fCB7Ci0JCQlpZiAhIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgJGNvbW1pdDoiJGZpbHRlcl9zdWJkaXIiIDI+L2Rldi9udWxsCisJCQlpZiAhIGdpdCByZXYtcGFyc2UgLXEgLS12ZXJpZnkgJGNvbW1pdDoiJGZpbHRlcl9zdWJkaXIiCiAJCQl0aGVuCiAJCQkJcm0gLWYgIiRHSVRfSU5ERVhfRklMRSIKIAkJCWVsc2UKQEAgLTMxNywyNCArMzE3LDIwIEBACiAKICMgSW4gY2FzZSBvZiBhIHN1YmRpcmVjdG9yeSBmaWx0ZXIsIGl0IGlzIHBvc3NpYmxlIHRoYXQgYSBzcGVjaWZpZWQgaGVhZAogIyBpcyBub3QgaW4gdGhlIHNldCBvZiByZXdyaXR0ZW4gY29tbWl0cywgYmVjYXVzZSBpdCB3YXMgcHJ1bmVkIGJ5IHRoZQotIyByZXZpc2lvbiB3YWxrZXIuICBGaXggaXQgYnkgbWFwcGluZyB0aGVzZSBoZWFkcyB0byB0aGUgbmV4dCByZXdyaXR0ZW4KLSMgYW5jZXN0b3IocyksIGkuZS4gdGhlIGJvdW5kYXJpZXMgaW4gdGhlIHNldCBvZiByZXdyaXR0ZW4gY29tbWl0cy4KKyMgcmV2aXNpb24gd2Fsa2VyLiAgRml4IGl0IGJ5IG1hcHBpbmcgdGhlc2UgaGVhZHMgdG8gdGhlIHVuaXF1ZSBuZWFyZXN0CisjIGFuY2VzdG9yIHRoYXQgc3Vydml2ZWQgdGhlIHBydW5pbmcuCiAKLSMgTkVFRFNXT1JLOiB3ZSBzaG91bGQgc29ydCB0aGUgdW5tYXBwZWQgcmVmcyB0b3BvbG9naWNhbGx5IGZpcnN0Ci13aGlsZSByZWFkIHJlZgotZG8KLQlzaGExPSQoZ2l0IHJldi1wYXJzZSAiJHJlZiJeMCkKLQl0ZXN0IC1mICIkd29ya2RpciIvLi4vbWFwLyRzaGExICYmIGNvbnRpbnVlCi0JIyBBc3NpZ24gdGhlIGJvdW5kYXJpZShzKSBpbiB0aGUgc2V0IG9mIHJld3JpdHRlbiBjb21taXRzCi0JIyBhcyB0aGUgcmVwbGFjZW1lbnQgY29tbWl0KHMpLgotCSMgKFRoaXMgd291bGQgbG9vayBhIGJpdCBuaWNlciBpZiAtLW5vdCAtLXN0ZGluIHdvcmtlZC4pCi0JZm9yIHAgaW4gJCggKGNkICIkd29ya2RpciIvLi4vbWFwOyBscyB8IHNlZCAicy9eL14vIikgfAotCQlnaXQgcmV2LWxpc3QgJHJlZiAtLWJvdW5kYXJ5IC0tc3RkaW4gfAotCQlzZWQgLW4gInMvXi0vL3AiKQoraWYgdGVzdCAiJGZpbHRlcl9zdWJkaXIiCit0aGVuCisJd2hpbGUgcmVhZCByZWYKIAlkbwotCQltYXAgJHAgPj4gIiR3b3JrZGlyIi8uLi9tYXAvJHNoYTEKLQlkb25lCi1kb25lIDwgIiR0ZW1wZGlyIi9oZWFkcworCQlzaGExPSQoZ2l0IHJldi1wYXJzZSAiJHJlZiJeMCkKKwkJdGVzdCAtZiAiJHdvcmtkaXIiLy4uL21hcC8kc2hhMSAmJiBjb250aW51ZQorCQlhbmNlc3Rvcj0kKGdpdCByZXYtbGlzdCAtLXNpbXBsaWZ5LW1lcmdlcyAtMSBcCisJCQkJJHJlZiAtLSAiJGZpbHRlcl9zdWJkaXIiKQorCQl0ZXN0ICIkYW5jZXN0b3IiICYmIGVjaG8gJChtYXAgJGFuY2VzdG9yKSA+PiAiJHdvcmtkaXIiLy4uL21hcC8kc2hhMQorCWRvbmUgPCAiJHRlbXBkaXIiL2hlYWRzCitmaQogCiAjIEZpbmFsbHkgdXBkYXRlIHRoZSByZWZzCiAKQEAgLTQxNiwxNSArNDEyLDE3IEBACiAJCWVjaG8gIiRyZWYgLT4gJG5ld19yZWYgKCRzaGExIC0+ICRuZXdfc2hhMSkiCiAKIAkJaWYgWyAiJHR5cGUiID0gInRhZyIgXTsgdGhlbgotCQkJbmV3X3NoYTE9JChnaXQgY2F0LWZpbGUgdGFnICIkcmVmIiB8CisJCQluZXdfc2hhMT0kKCAoIHByaW50ZiAnb2JqZWN0ICVzXG50eXBlIGNvbW1pdFxudGFnICVzXG4nIFwKKwkJCQkJCSIkbmV3X3NoYTEiICIkbmV3X3JlZiIKKwkJCQlnaXQgY2F0LWZpbGUgdGFnICIkcmVmIiB8CiAJCQkJc2VkIC1uIFwKIAkJCQkgICAgLWUgIjEsL14kL3sKLQkJCQkJICBzL15vYmplY3QgLiovb2JqZWN0ICRuZXdfc2hhMS8KLQkJCQkJICBzL150eXBlIC4qL3R5cGUgY29tbWl0LwotCQkJCQkgIHMvXnRhZyAuKi90YWcgJG5ld19yZWYvCisJCQkJCSAgL15vYmplY3QgL2QKKwkJCQkJICAvXnR5cGUgL2QKKwkJCQkJICAvXnRhZyAvZAogCQkJCQl9IiBcCiAJCQkJICAgIC1lICcvXi0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tL3EnIFwKLQkJCQkgICAgLWUgJ3AnIHwKKwkJCQkgICAgLWUgJ3AnICkgfAogCQkJCWdpdCBta3RhZykgfHwKIAkJCQlkaWUgIkNvdWxkIG5vdCBjcmVhdGUgbmV3IHRhZyBvYmplY3QgZm9yICRyZWYiCiAJCQlpZiBnaXQgY2F0LWZpbGUgdGFnICIkcmVmIiB8IFwKZGlmZiAtLWdpdCBhL2dpdC1ndWkvLmdpdGF0dHJpYnV0ZXMgYi9naXQtZ3VpLy5naXRhdHRyaWJ1dGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjExMmQKLS0tIC9kZXYvbnVsbAorKysgYi9naXQtZ3VpLy5naXRhdHRyaWJ1dGVzCkBAIC0wLDAgKzEsMyBAQAorKiAgICAgICAgICAgZW5jb2Rpbmc9VVMtQVNDSUkKK2dpdC1ndWkuc2ggIGVuY29kaW5nPVVURi04CisvcG8vKi5wbyAgICBlbmNvZGluZz1VVEYtOApkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9HSVQtVkVSU0lPTi1HRU4gYi9naXQtZ3VpL0dJVC1WRVJTSU9OLUdFTgppbmRleCA0ZTcwOWViLi5iM2Y5MzdlIDEwMDc1NQotLS0gYS9naXQtZ3VpL0dJVC1WRVJTSU9OLUdFTgorKysgYi9naXQtZ3VpL0dJVC1WRVJTSU9OLUdFTgpAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogCiBHVkY9R0lULVZFUlNJT04tRklMRQotREVGX1ZFUj0wLjExLkdJVEdVSQorREVGX1ZFUj0wLjEyLkdJVEdVSQogCiBMRj0nCiAnCmRpZmYgLS1naXQgYS9naXQtZ3VpL01ha2VmaWxlIGIvZ2l0LWd1aS9NYWtlZmlsZQppbmRleCA1NTc2NWM4Li4zYWQ4YTIxIDEwMDY0NAotLS0gYS9naXQtZ3VpL01ha2VmaWxlCisrKyBiL2dpdC1ndWkvTWFrZWZpbGUKQEAgLTI4NSw2ICsyODUsNyBAQAogaW5zdGFsbDogYWxsCiAJJChRVUlFVCkkKElOU1RBTExfRDApJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNkaXJfU1EpJyAkKElOU1RBTExfRDEpCiAJJChRVUlFVCkkKElOU1RBTExfWDApZ2l0LWd1aSAkKElOU1RBTExfWDEpICckKERFU1RESVJfU1EpJChnaXRleGVjZGlyX1NRKScKKwkkKFFVSUVUKSQoSU5TVEFMTF9YMClnaXQtZ3VpLS1hc2twYXNzICQoSU5TVEFMTF9YMSkgJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNkaXJfU1EpJwogCSQoUVVJRVQpJChmb3JlYWNoIHAsJChHSVRHVUlfQlVJTFRfSU5TKSwgJChJTlNUQUxMX0wwKSckKERFU1RESVJfU1EpJChnaXRleGVjZGlyX1NRKS8kcCcgJChJTlNUQUxMX0wxKSckKERFU1RESVJfU1EpJChnaXRleGVjZGlyX1NRKS9naXQtZ3VpJyAkKElOU1RBTExfTDIpJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNkaXJfU1EpLyRwJyAkKElOU1RBTExfTDMpICYmKSB0cnVlCiBpZmRlZiBHSVRHVUlfV0lORE9XU19XUkFQUEVSCiAJJChRVUlFVCkkKElOU1RBTExfUjApZ2l0LWd1aS50Y2wgJChJTlNUQUxMX1IxKSAnJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknCkBAIC0zMDIsNiArMzAzLDcgQEAKIHVuaW5zdGFsbDoKIAkkKFFVSUVUKSQoQ0xFQU5fRFNUKSAnJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknCiAJJChRVUlFVCkkKFJFTU9WRV9GMCknJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknL2dpdC1ndWkgJChSRU1PVkVfRjEpCisJJChRVUlFVCkkKFJFTU9WRV9GMCknJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknL2dpdC1ndWktLWFza3Bhc3MgJChSRU1PVkVfRjEpCiAJJChRVUlFVCkkKGZvcmVhY2ggcCwkKEdJVEdVSV9CVUlMVF9JTlMpLCAkKFJFTU9WRV9GMCknJChERVNURElSX1NRKSQoZ2l0ZXhlY2Rpcl9TUSknLyRwICQoUkVNT1ZFX0YxKSAmJikgdHJ1ZQogaWZkZWYgR0lUR1VJX1dJTkRPV1NfV1JBUFBFUgogCSQoUVVJRVQpJChSRU1PVkVfRjApJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNkaXJfU1EpJy9naXQtZ3VpLnRjbCAkKFJFTU9WRV9GMSkKZGlmZiAtLWdpdCBhL2dpdC1ndWkvZ2l0LWd1aS0tYXNrcGFzcyBiL2dpdC1ndWkvZ2l0LWd1aS0tYXNrcGFzcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMmUxMTdlCi0tLSAvZGV2L251bGwKKysrIGIvZ2l0LWd1aS9naXQtZ3VpLS1hc2twYXNzCkBAIC0wLDAgKzEsNTkgQEAKKyMhL2Jpbi9zaAorIyBUY2wgaWdub3JlcyB0aGUgbmV4dCBsaW5lIC0qLSB0Y2wgLSotIFwKK2V4ZWMgd2lzaCAiJDAiIC0tICIkQCIKKworIyBUaGlzIGlzIGEgdHJpdmlhbCBpbXBsZW1lbnRhdGlvbiBvZiBhbiBTU0hfQVNLUEFTUyBoYW5kbGVyLgorIyBHaXQtZ3VpIHVzZXMgdGhpcyBzY3JpcHQgaWYgbm9uZSBhcmUgYWxyZWFkeSBjb25maWd1cmVkLgorCitzZXQgYW5zd2VyIHt9CitzZXQgeWVzbm8gIDAKK3NldCByYyAgICAgMjU1CisKK2lmIHskYXJnYyA8IDF9IHsKKwlzZXQgcHJvbXB0ICJFbnRlciB5b3VyIE9wZW5TU0ggcGFzc3BocmFzZToiCit9IGVsc2UgeworCXNldCBwcm9tcHQgW2pvaW4gJGFyZ3YgIiAiXQorCWlmIHtbcmVnZXhwIC1ub2Nhc2Uge1woeWVzXC9ub1wpXD9ccyokfSAkcHJvbXB0XX0geworCQlzZXQgeWVzbm8gMQorCX0KK30KKworbWVzc2FnZSAubSAtdGV4dCAkcHJvbXB0IC1qdXN0aWZ5IGNlbnRlciAtYXNwZWN0IDQwMDAKK3BhY2sgLm0gLXNpZGUgdG9wIC1maWxsIHggLXBhZHggMjAgLXBhZHkgMjAgLWV4cGFuZCAxCisKK2VudHJ5IC5lIC10ZXh0dmFyaWFibGUgYW5zd2VyIC13aWR0aCA1MAorcGFjayAuZSAtc2lkZSB0b3AgLWZpbGwgeCAtcGFkeCAxMCAtcGFkeSAxMAorCitpZiB7ISR5ZXNub30geworCS5lIGNvbmZpZ3VyZSAtc2hvdyAiKiIKK30KKworZnJhbWUgLmIKK2J1dHRvbiAuYi5vayAgICAgLXRleHQgT0sgICAgIC1jb21tYW5kIGZpbmlzaAorYnV0dG9uIC5iLmNhbmNlbCAtdGV4dCBDYW5jZWwgLWNvbW1hbmQge2Rlc3Ryb3kgLn0KKworcGFjayAuYi5vayAtc2lkZSBsZWZ0IC1leHBhbmQgMQorcGFjayAuYi5jYW5jZWwgLXNpZGUgcmlnaHQgLWV4cGFuZCAxCitwYWNrIC5iIC1zaWRlIGJvdHRvbSAtZmlsbCB4IC1wYWR4IDEwIC1wYWR5IDEwCisKK2JpbmQgLiA8VmlzaWJpbGl0eT4ge2ZvY3VzIC1mb3JjZSAuZX0KK2JpbmQgLiA8S2V5LVJldHVybj4gZmluaXNoCitiaW5kIC4gPEtleS1Fc2NhcGU+IHtkZXN0cm95IC59CitiaW5kIC4gPERlc3Ryb3k+ICAgIHtleGl0ICRyY30KKworcHJvYyBmaW5pc2gge30geworCWlmIHskOjp5ZXNub30geworCQlpZiB7JDo6YW5zd2VyIG5lICJ5ZXMiICYmICQ6OmFuc3dlciBuZSAibm8ifSB7CisJCQl0a19tZXNzYWdlQm94IC1pY29uIGVycm9yIC10aXRsZSAiRXJyb3IiIC10eXBlIG9rIFwKKwkJCQktbWVzc2FnZSAiT25seSAneWVzJyBvciAnbm8nIGlucHV0IGFsbG93ZWQuIgorCQkJcmV0dXJuCisJCX0KKwl9CisKKwlzZXQgOjpyYyAwCisJcHV0cyAkOjphbnN3ZXIKKwlkZXN0cm95IC4KK30KKword20gdGl0bGUgLiAiT3BlblNTSCIKK3RrOjpQbGFjZVdpbmRvdyAuCmRpZmYgLS1naXQgYS9naXQtZ3VpL2dpdC1ndWkuc2ggYi9naXQtZ3VpL2dpdC1ndWkuc2gKaW5kZXggODY0MDJkNC4uZTAxOGUwNyAxMDA3NTUKLS0tIGEvZ2l0LWd1aS9naXQtZ3VpLnNoCisrKyBiL2dpdC1ndWkvZ2l0LWd1aS5zaApAQCAtNTIxLDYgKzUyMSwxOSBAQAogCX0KIH0KIAorcHJvYyBnaXRhdHRyIHtwYXRoIGF0dHIgZGVmYXVsdH0geworCWlmIHtbY2F0Y2gge3NldCByIFtnaXQgY2hlY2stYXR0ciAkYXR0ciAtLSAkcGF0aF19XX0geworCQlzZXQgciB1bnNwZWNpZmllZAorCX0gZWxzZSB7CisJCXNldCByIFtqb2luIFtscmFuZ2UgW3NwbGl0ICRyIDpdIDIgZW5kXSA6XQorCQlyZWdzdWIge14gfSAkciB7fSByCisJfQorCWlmIHskciBlcSB7dW5zcGVjaWZpZWR9fSB7CisJCXJldHVybiAkZGVmYXVsdAorCX0KKwlyZXR1cm4gJHIKK30KKwogcHJvYyBzcSB7dmFsdWV9IHsKIAlyZWdzdWIgLWFsbCAnICR2YWx1ZSAiJ1xcJyciIHZhbHVlCiAJcmV0dXJuICInJHZhbHVlJyIKQEAgLTU3OCw2ICs1OTEsMzQgQEAKIAogaWYge1tpc19XaW5kb3dzXX0gewogCXdtIGljb25iaXRtYXAgLiAtZGVmYXVsdCAkb2d1aWxpYi9naXQtZ3VpLmljbworCXNldCA6OnRrOjpBbHdheXNTaG93U2VsZWN0aW9uIDEKKworCSMgU3Bvb2YgYW4gWDExIGRpc3BsYXkgZm9yIFNTSAorCWlmIHshW2luZm8gZXhpc3RzIGVudihESVNQTEFZKV19IHsKKwkJc2V0IGVudihESVNQTEFZKSA6OTk5OQorCX0KK30gZWxzZSB7CisJY2F0Y2ggeworCQlpbWFnZSBjcmVhdGUgcGhvdG8gZ2l0bG9nbyAtd2lkdGggMTYgLWhlaWdodCAxNgorCisJCWdpdGxvZ28gcHV0ICMzM0NDMzMgLXRvICA3ICAwICA5ICAyCisJCWdpdGxvZ28gcHV0ICMzM0NDMzMgLXRvICA0ICAyIDEyICA0CisJCWdpdGxvZ28gcHV0ICMzM0NDMzMgLXRvICA3ICA0ICA5ICA2CisJCWdpdGxvZ28gcHV0ICNDQzMzMzMgLXRvICA0ICA2IDEyICA4CisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA0ICA5ICA2IDEwCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICAzIDEwICA2IDEyCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA4ICA5IDEzIDExCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA4IDExIDEwIDEyCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvIDExIDExIDEzIDE0CisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICAzIDEyICA1IDE0CisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA1IDEzCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvIDEwIDEzCisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA0IDE0IDEyIDE1CisJCWdpdGxvZ28gcHV0IGdyYXkyNiAgLXRvICA1IDE1IDExIDE2CisJCWdpdGxvZ28gcmVkaXRoZXIKKworCQl3bSBpY29ucGhvdG8gLiAtZGVmYXVsdCBnaXRsb2dvCisJfQogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC02NTcsMTcgKzY5OCwyMSBAQAogfQogCiBzZXQgZGVmYXVsdF9jb25maWcoYnJhbmNoLmF1dG9zZXR1cG1lcmdlKSB0cnVlCitzZXQgZGVmYXVsdF9jb25maWcobWVyZ2UudG9vbCkge30KK3NldCBkZWZhdWx0X2NvbmZpZyhtZXJnZS5rZWVwYmFja3VwKSB0cnVlCiBzZXQgZGVmYXVsdF9jb25maWcobWVyZ2UuZGlmZnN0YXQpIHRydWUKIHNldCBkZWZhdWx0X2NvbmZpZyhtZXJnZS5zdW1tYXJ5KSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKG1lcmdlLnZlcmJvc2l0eSkgMgogc2V0IGRlZmF1bHRfY29uZmlnKHVzZXIubmFtZSkge30KIHNldCBkZWZhdWx0X2NvbmZpZyh1c2VyLmVtYWlsKSB7fQogCitzZXQgZGVmYXVsdF9jb25maWcoZ3VpLmVuY29kaW5nKSBbZW5jb2Rpbmcgc3lzdGVtXQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5tYXRjaHRyYWNraW5nYnJhbmNoKSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5wcnVuZWR1cmluZ2ZldGNoKSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS50cnVzdG10aW1lKSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5mYXN0Y29weWJsYW1lKSBmYWxzZQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5jb3B5YmxhbWV0aHJlc2hvbGQpIDQwCitzZXQgZGVmYXVsdF9jb25maWcoZ3VpLmJsYW1laGlzdG9yeWN0eCkgNwogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5kaWZmY29udGV4dCkgNQogc2V0IGRlZmF1bHRfY29uZmlnKGd1aS5jb21taXRtc2d3aWR0aCkgNzUKIHNldCBkZWZhdWx0X2NvbmZpZyhndWkubmV3YnJhbmNodGVtcGxhdGUpIHt9CkBAIC04OTUsMTkgKzk0MCwyNSBAQAogfQogCiBwcm9jIGxvYWRfY29uZmlnIHtpbmNsdWRlX2dsb2JhbH0gewotCWdsb2JhbCByZXBvX2NvbmZpZyBnbG9iYWxfY29uZmlnIGRlZmF1bHRfY29uZmlnCisJZ2xvYmFsIHJlcG9fY29uZmlnIGdsb2JhbF9jb25maWcgc3lzdGVtX2NvbmZpZyBkZWZhdWx0X2NvbmZpZwogCiAJaWYgeyRpbmNsdWRlX2dsb2JhbH0geworCQlfcGFyc2VfY29uZmlnIHN5c3RlbV9jb25maWcgLS1zeXN0ZW0KIAkJX3BhcnNlX2NvbmZpZyBnbG9iYWxfY29uZmlnIC0tZ2xvYmFsCiAJfQogCV9wYXJzZV9jb25maWcgcmVwb19jb25maWcKIAogCWZvcmVhY2ggbmFtZSBbYXJyYXkgbmFtZXMgZGVmYXVsdF9jb25maWddIHsKKwkJaWYge1tjYXRjaCB7c2V0IHYgJHN5c3RlbV9jb25maWcoJG5hbWUpfV19IHsKKwkJCXNldCBzeXN0ZW1fY29uZmlnKCRuYW1lKSAkZGVmYXVsdF9jb25maWcoJG5hbWUpCisJCX0KKwl9CisJZm9yZWFjaCBuYW1lIFthcnJheSBuYW1lcyBzeXN0ZW1fY29uZmlnXSB7CiAJCWlmIHtbY2F0Y2gge3NldCB2ICRnbG9iYWxfY29uZmlnKCRuYW1lKX1dfSB7Ci0JCQlzZXQgZ2xvYmFsX2NvbmZpZygkbmFtZSkgJGRlZmF1bHRfY29uZmlnKCRuYW1lKQorCQkJc2V0IGdsb2JhbF9jb25maWcoJG5hbWUpICRzeXN0ZW1fY29uZmlnKCRuYW1lKQogCQl9CiAJCWlmIHtbY2F0Y2gge3NldCB2ICRyZXBvX2NvbmZpZygkbmFtZSl9XX0gewotCQkJc2V0IHJlcG9fY29uZmlnKCRuYW1lKSAkZGVmYXVsdF9jb25maWcoJG5hbWUpCisJCQlzZXQgcmVwb19jb25maWcoJG5hbWUpICRzeXN0ZW1fY29uZmlnKCRuYW1lKQogCQl9CiAJfQogfQpAQCAtOTQ1LDE3ICs5OTYsNTEgQEAKIH0KIGNpdG9vbCB7CiAJZW5hYmxlX29wdGlvbiBzaW5nbGVjb21taXQKKwllbmFibGVfb3B0aW9uIHJldGNvZGUKIAogCWRpc2FibGVfb3B0aW9uIG11bHRpY29tbWl0CiAJZGlzYWJsZV9vcHRpb24gYnJhbmNoCiAJZGlzYWJsZV9vcHRpb24gdHJhbnNwb3J0CisKKwl3aGlsZSB7W2xsZW5ndGggJGFyZ3ZdID4gMH0geworCQlzZXQgYSBbbGluZGV4ICRhcmd2IDBdCisJCXN3aXRjaCAtLSAkYSB7CisJCS0tYW1lbmQgeworCQkJZW5hYmxlX29wdGlvbiBpbml0aWFsYW1lbmQKKwkJfQorCQktLW5vY29tbWl0IHsKKwkJCWVuYWJsZV9vcHRpb24gbm9jb21taXQKKwkJCWVuYWJsZV9vcHRpb24gbm9jb21taXRtc2cKKwkJfQorCQktLWNvbW1pdG1zZyB7CisJCQlkaXNhYmxlX29wdGlvbiBub2NvbW1pdG1zZworCQl9CisJCWRlZmF1bHQgeworCQkJYnJlYWsKKwkJfQorCQl9CisKKwkJc2V0IGFyZ3YgW2xyYW5nZSAkYXJndiAxIGVuZF0KKwl9CiB9CiB9CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjCisjIyBleGVjdXRpb24gZW52aXJvbm1lbnQKKworc2V0IGhhdmVfdGs4NSBbZXhwciB7W3BhY2thZ2UgdmNvbXBhcmUgJHRrX3ZlcnNpb24gIjguNSJdID49IDB9XQorCisjIFN1Z2dlc3Qgb3VyIGltcGxlbWVudGF0aW9uIG9mIGFza3Bhc3MsIGlmIG5vbmUgaXMgc2V0CitpZiB7IVtpbmZvIGV4aXN0cyBlbnYoU1NIX0FTS1BBU1MpXX0geworCXNldCBlbnYoU1NIX0FTS1BBU1MpIFtnaXRleGVjIGdpdC1ndWktLWFza3Bhc3NdCit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCiAjIyByZXBvc2l0b3J5IHNldHVwCiAKK3NldCBwaWNrZWQgMAogaWYge1tjYXRjaCB7CiAJCXNldCBfZ2l0ZGlyICRlbnYoR0lUX0RJUikKIAkJc2V0IF9wcmVmaXgge30KQEAgLTk2Nyw2ICsxMDUyLDcgQEAKIAlsb2FkX2NvbmZpZyAxCiAJYXBwbHlfY29uZmlnCiAJY2hvb3NlX3JlcG9zaXRvcnk6OnBpY2sKKwlzZXQgcGlja2VkIDEKIH0KIGlmIHshW2ZpbGUgaXNkaXJlY3RvcnkgJF9naXRkaXJdICYmIFtpc19DeWd3aW5dfSB7CiAJY2F0Y2gge3NldCBfZ2l0ZGlyIFtleGVjIGN5Z3BhdGggLS13aW5kb3dzICRfZ2l0ZGlyXX0KQEAgLTEwMjAsOCArMTEwNiwxMiBAQAogc2V0IGlzX2RldGFjaGVkIDAKIHNldCBjdXJyZW50X2RpZmZfcGF0aCB7fQogc2V0IGlzXzN3YXlfZGlmZiAwCitzZXQgaXNfY29uZmxpY3RfZGlmZiAwCiBzZXQgc2VsZWN0ZWRfY29tbWl0X3R5cGUgbmV3CiAKK3NldCBudWxsaWQgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiCitzZXQgbnVsbGlkMiAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSIKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMKICMjIHRhc2sgbWFuYWdlbWVudApAQCAtMTEwMiw2ICsxMTkyLDIwIEBACiAJcmV0dXJuICRlbXB0eV90cmVlCiB9CiAKK3Byb2MgZm9yY2VfYW1lbmQge30geworCWdsb2JhbCBzZWxlY3RlZF9jb21taXRfdHlwZQorCWdsb2JhbCBIRUFEIFBBUkVOVCBNRVJHRV9IRUFEIGNvbW1pdF90eXBlCisKKwlyZXBvc2l0b3J5X3N0YXRlIG5ld1R5cGUgbmV3SEVBRCBuZXdNRVJHRV9IRUFECisJc2V0IEhFQUQgJG5ld0hFQUQKKwlzZXQgUEFSRU5UICRuZXdIRUFECisJc2V0IE1FUkdFX0hFQUQgJG5ld01FUkdFX0hFQUQKKwlzZXQgY29tbWl0X3R5cGUgJG5ld1R5cGUKKworCXNldCBzZWxlY3RlZF9jb21taXRfdHlwZSBhbWVuZAorCWRvX3NlbGVjdF9jb21taXRfdHlwZQorfQorCiBwcm9jIHJlc2NhbiB7YWZ0ZXIge2hvbm9yX3RydXN0bXRpbWUgMX19IHsKIAlnbG9iYWwgSEVBRCBQQVJFTlQgTUVSR0VfSEVBRCBjb21taXRfdHlwZQogCWdsb2JhbCB1aV9pbmRleCB1aV93b3JrZGlyIHVpX2NvbW0KQEAgLTExMjgsNiArMTIzMiw3IEBACiAJCXx8IFtzdHJpbmcgdHJpbSBbJHVpX2NvbW0gZ2V0IDAuMCBlbmRdXSBlcSB7fSl9IHsKIAkJaWYge1tzdHJpbmcgbWF0Y2ggYW1lbmQqICRjb21taXRfdHlwZV19IHsKIAkJfSBlbHNlaWYge1tsb2FkX21lc3NhZ2UgR0lUR1VJX01TR119IHsKKwkJfSBlbHNlaWYge1tydW5fcHJlcGFyZV9jb21taXRfbXNnX2hvb2tdfSB7CiAJCX0gZWxzZWlmIHtbbG9hZF9tZXNzYWdlIE1FUkdFX01TR119IHsKIAkJfSBlbHNlaWYge1tsb2FkX21lc3NhZ2UgU1FVQVNIX01TR119IHsKIAkJfQpAQCAtMTIyNyw2ICsxMzMyLDcwIEBACiAJcmV0dXJuIDAKIH0KIAorcHJvYyBydW5fcHJlcGFyZV9jb21taXRfbXNnX2hvb2sge30geworCWdsb2JhbCBwY2hfZXJyb3IKKworCSMgcHJlcGFyZS1jb21taXQtbXNnIHJlcXVpcmVzIFBSRVBBUkVfQ09NTUlUX01TRyBleGlzdC4gIEZyb20gZ2l0LWd1aQorCSMgaXQgd2lsbCBiZSAuZ2l0L01FUkdFX01TRyAobWVyZ2UpLCAuZ2l0L1NRVUFTSF9NU0cgKHNxdWFzaCksIG9yIGFuCisJIyBlbXB0eSBmaWxlIGJ1dCBleGlzdGFudCBmaWxlLgorCisJc2V0IGZkX3BjbSBbb3BlbiBbZ2l0ZGlyIFBSRVBBUkVfQ09NTUlUX01TR10gYV0KKworCWlmIHtbZmlsZSBpc2ZpbGUgW2dpdGRpciBNRVJHRV9NU0ddXX0geworCQlzZXQgcGNtX3NvdXJjZSAibWVyZ2UiCisJCXNldCBmZF9tbSBbb3BlbiBbZ2l0ZGlyIE1FUkdFX01TR10gcl0KKwkJcHV0cyAtbm9uZXdsaW5lICRmZF9wY20gW3JlYWQgJGZkX21tXQorCQljbG9zZSAkZmRfbW0KKwl9IGVsc2VpZiB7W2ZpbGUgaXNmaWxlIFtnaXRkaXIgU1FVQVNIX01TR11dfSB7CisJCXNldCBwY21fc291cmNlICJzcXVhc2giCisJCXNldCBmZF9zbSBbb3BlbiBbZ2l0ZGlyIFNRVUFTSF9NU0ddIHJdCisJCXB1dHMgLW5vbmV3bGluZSAkZmRfcGNtIFtyZWFkICRmZF9zbV0KKwkJY2xvc2UgJGZkX3NtCisJfSBlbHNlIHsKKwkJc2V0IHBjbV9zb3VyY2UgIiIKKwl9CisKKwljbG9zZSAkZmRfcGNtCisKKwlzZXQgZmRfcGggW2dpdGhvb2tfcmVhZCBwcmVwYXJlLWNvbW1pdC1tc2cgXAorCQkJW2dpdGRpciBQUkVQQVJFX0NPTU1JVF9NU0ddICRwY21fc291cmNlXQorCWlmIHskZmRfcGggZXEge319IHsKKwkJY2F0Y2gge2ZpbGUgZGVsZXRlIFtnaXRkaXIgUFJFUEFSRV9DT01NSVRfTVNHXX0KKwkJcmV0dXJuIDA7CisJfQorCisJdWlfc3RhdHVzIFttYyAiQ2FsbGluZyBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4uLiJdCisJc2V0IHBjaF9lcnJvciB7fQorCisJZmNvbmZpZ3VyZSAkZmRfcGggLWJsb2NraW5nIDAgLXRyYW5zbGF0aW9uIGJpbmFyeSAtZW9mY2hhciB7fQorCWZpbGVldmVudCAkZmRfcGggcmVhZGFibGUgXAorCQlbbGlzdCBwcmVwYXJlX2NvbW1pdF9tc2dfaG9va193YWl0ICRmZF9waF0KKworCXJldHVybiAxOworfQorCitwcm9jIHByZXBhcmVfY29tbWl0X21zZ19ob29rX3dhaXQge2ZkX3BofSB7CisJZ2xvYmFsIHBjaF9lcnJvcgorCisJYXBwZW5kIHBjaF9lcnJvciBbcmVhZCAkZmRfcGhdCisJZmNvbmZpZ3VyZSAkZmRfcGggLWJsb2NraW5nIDEKKwlpZiB7W2VvZiAkZmRfcGhdfSB7CisJCWlmIHtbY2F0Y2gge2Nsb3NlICRmZF9waH1dfSB7CisJCQl1aV9zdGF0dXMgW21jICJDb21taXQgZGVjbGluZWQgYnkgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suIl0KKwkJCWhvb2tfZmFpbGVkX3BvcHVwIHByZXBhcmUtY29tbWl0LW1zZyAkcGNoX2Vycm9yCisJCQljYXRjaCB7ZmlsZSBkZWxldGUgW2dpdGRpciBQUkVQQVJFX0NPTU1JVF9NU0ddfQorCQkJZXhpdCAxCisJCX0gZWxzZSB7CisJCQlsb2FkX21lc3NhZ2UgUFJFUEFSRV9DT01NSVRfTVNHCisJCX0KKwkJc2V0IHBjaF9lcnJvciB7fQorCQljYXRjaCB7ZmlsZSBkZWxldGUgW2dpdGRpciBQUkVQQVJFX0NPTU1JVF9NU0ddfQorCQlyZXR1cm4KKyAgICAgICAgfQorCWZjb25maWd1cmUgJGZkX3BoIC1ibG9ja2luZyAwCisJY2F0Y2gge2ZpbGUgZGVsZXRlIFtnaXRkaXIgUFJFUEFSRV9DT01NSVRfTVNHXX0KK30KKwogcHJvYyByZWFkX2RpZmZfaW5kZXgge2ZkIGFmdGVyfSB7CiAJZ2xvYmFsIGJ1Zl9yZGkKIApAQCAtMTMyMiw4ICsxNDkxLDggQEAKIAlwcnVuZV9zZWxlY3Rpb24KIAl1bmxvY2tfaW5kZXgKIAlkaXNwbGF5X2FsbF9maWxlcwotCWlmIHskY3VycmVudF9kaWZmX3BhdGggbmUge319IHJlc2hvd19kaWZmCi0JdXBsZXZlbCAjMCAkYWZ0ZXIKKwlpZiB7JGN1cnJlbnRfZGlmZl9wYXRoIG5lIHt9fSB7IHJlc2hvd19kaWZmICRhZnRlciB9CisJaWYgeyRjdXJyZW50X2RpZmZfcGF0aCBlcSB7fX0geyBzZWxlY3RfZmlyc3RfZGlmZiAkYWZ0ZXIgfQogfQogCiBwcm9jIHBydW5lX3NlbGVjdGlvbiB7fSB7CkBAIC0xNjE5LDYgKzE3ODgsMTUgQEAKICAgIDB4ZmEsIDB4MTcsIDB4MDIsIDB4MTAsIDB4ZmUsIDB4MWZ9OwogfSAtbWFza2RhdGEgJGZpbGVtYXNrCiAKK2ltYWdlIGNyZWF0ZSBiaXRtYXAgZmlsZV9zdGF0ZWNoYW5nZSAtYmFja2dyb3VuZCB3aGl0ZSAtZm9yZWdyb3VuZCBncmVlbiAtZGF0YSB7CisjZGVmaW5lIGZpbGVfbWVyZ2Vfd2lkdGggMTQKKyNkZWZpbmUgZmlsZV9tZXJnZV9oZWlnaHQgMTUKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGZpbGVfc3RhdGVjaGFuZ2VfYml0c1tdID0geworICAgMHhmZSwgMHgwMSwgMHgwMiwgMHgwMywgMHgwMiwgMHgwNSwgMHgwMiwgMHgwOSwgMHgwMiwgMHgxZiwgMHg2MiwgMHgxMCwKKyAgIDB4NjIsIDB4MTAsIDB4YmEsIDB4MTEsIDB4YmEsIDB4MTEsIDB4NjIsIDB4MTAsIDB4NjIsIDB4MTAsIDB4MDIsIDB4MTAsCisgICAweDAyLCAweDEwLCAweDAyLCAweDEwLCAweGZlLCAweDFmfTsKK30gLW1hc2tkYXRhICRmaWxlbWFzaworCiBzZXQgdWlfaW5kZXggLnZwYW5lLmZpbGVzLmluZGV4Lmxpc3QKIHNldCB1aV93b3JrZGlyIC52cGFuZS5maWxlcy53b3JrZGlyLmxpc3QKIApAQCAtMTYyNywxMiArMTgwNSwxNCBAQAogc2V0IGFsbF9pY29ucyhNJHVpX2luZGV4KSAgIGZpbGVfZnVsbHRpY2sKIHNldCBhbGxfaWNvbnMoRCR1aV9pbmRleCkgICBmaWxlX3JlbW92ZWQKIHNldCBhbGxfaWNvbnMoVSR1aV9pbmRleCkgICBmaWxlX21lcmdlCitzZXQgYWxsX2ljb25zKFQkdWlfaW5kZXgpICAgZmlsZV9zdGF0ZWNoYW5nZQogCiBzZXQgYWxsX2ljb25zKF8kdWlfd29ya2RpcikgZmlsZV9wbGFpbgogc2V0IGFsbF9pY29ucyhNJHVpX3dvcmtkaXIpIGZpbGVfbW9kCiBzZXQgYWxsX2ljb25zKEQkdWlfd29ya2RpcikgZmlsZV9xdWVzdGlvbgogc2V0IGFsbF9pY29ucyhVJHVpX3dvcmtkaXIpIGZpbGVfbWVyZ2UKIHNldCBhbGxfaWNvbnMoTyR1aV93b3JrZGlyKSBmaWxlX3BsYWluCitzZXQgYWxsX2ljb25zKFQkdWlfd29ya2RpcikgZmlsZV9zdGF0ZWNoYW5nZQogCiBzZXQgbWF4X3N0YXR1c19kZXNjIDAKIGZvcmVhY2ggaSB7CkBAIC0xNjQzLDYgKzE4MjMsOSBAQAogCQl7TU0ge21jICJQb3J0aW9ucyBzdGFnZWQgZm9yIGNvbW1pdCJ9fQogCQl7TUQge21jICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyJ9fQogCisJCXtfVCB7bWMgIkZpbGUgdHlwZSBjaGFuZ2VkLCBub3Qgc3RhZ2VkIn19CisJCXtUXyB7bWMgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQifX0KKwogCQl7X08ge21jICJVbnRyYWNrZWQsIG5vdCBzdGFnZWQifX0KIAkJe0FfIHttYyAiU3RhZ2VkIGZvciBjb21taXQifX0KIAkJe0FNIHttYyAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQifX0KQEAgLTE2NTIsMTAgKzE4MzUsMTIgQEAKIAkJe0RfIHttYyAiU3RhZ2VkIGZvciByZW1vdmFsIn19CiAJCXtETyB7bWMgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCJ9fQogCisJCXtfVSB7bWMgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24ifX0KIAkJe1VfIHttYyAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiJ9fQogCQl7VVUge21jICJSZXF1aXJlcyBtZXJnZSByZXNvbHV0aW9uIn19CiAJCXtVTSB7bWMgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24ifX0KIAkJe1VEIHttYyAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiJ9fQorCQl7VVQge21jICJSZXF1aXJlcyBtZXJnZSByZXNvbHV0aW9uIn19CiAJfSB7CiAJc2V0IHRleHQgW2V2YWwgW2xpbmRleCAkaSAxXV0KIAlpZiB7JG1heF9zdGF0dXNfZGVzYyA8IFtzdHJpbmcgbGVuZ3RoICR0ZXh0XX0gewpAQCAtMTcyOSwxMiArMTkxNCwzMyBAQAogCX0KIH0KIAotc2V0IGlzX3F1aXR0aW5nIDAKK3Byb2MgZG9fZXhwbG9yZSB7fSB7CisJc2V0IGV4cGxvcmVyIHt9CisJaWYge1tpc19DeWd3aW5dIHx8IFtpc19XaW5kb3dzXX0geworCQlzZXQgZXhwbG9yZXIgImV4cGxvcmVyLmV4ZSIKKwl9IGVsc2VpZiB7W2lzX01hY09TWF19IHsKKwkJc2V0IGV4cGxvcmVyICJvcGVuIgorCX0gZWxzZSB7CisJCSMgZnJlZWRlc2t0b3Aub3JnLWNvbmZvcm1pbmcgc3lzdGVtIGlzIG91ciBiZXN0IHNob3QKKwkJc2V0IGV4cGxvcmVyICJ4ZGctb3BlbiIKKwl9CisJZXZhbCBleGVjICRleHBsb3JlciBbZmlsZSBkaXJuYW1lIFtnaXRkaXJdXSAmCit9CiAKLXByb2MgZG9fcXVpdCB7fSB7CitzZXQgaXNfcXVpdHRpbmcgMAorc2V0IHJldF9jb2RlICAgIDEKKworcHJvYyB0ZXJtaW5hdGVfbWUge3dpbn0geworCWdsb2JhbCByZXRfY29kZQorCWlmIHskd2luIG5lIHsufX0gcmV0dXJuCisJZXhpdCAkcmV0X2NvZGUKK30KKworcHJvYyBkb19xdWl0IHt7cmMgezF9fX0gewogCWdsb2JhbCB1aV9jb21tIGlzX3F1aXR0aW5nIHJlcG9fY29uZmlnIGNvbW1pdF90eXBlCiAJZ2xvYmFsIEdJVEdVSV9CQ0tfZXhpc3RzIEdJVEdVSV9CQ0tfaQogCWdsb2JhbCB1aV9jb21tX3NwZWxsCisJZ2xvYmFsIHJldF9jb2RlCiAKIAlpZiB7JGlzX3F1aXR0aW5nfSByZXR1cm4KIAlzZXQgaXNfcXVpdHRpbmcgMQpAQCAtMTc4OSw2ICsxOTk1LDcgQEAKIAkJfQogCX0KIAorCXNldCByZXRfY29kZSAkcmMKIAlkZXN0cm95IC4KIH0KIApAQCAtMTc5NiwxMyArMjAwMywxMzcgQEAKIAlyZXNjYW4gdWlfcmVhZHkKIH0KIAorcHJvYyB1aV9kb19yZXNjYW4ge30geworCXJlc2NhbiB7Zm9yY2VfZmlyc3RfZGlmZiB1aV9yZWFkeX0KK30KKwogcHJvYyBkb19jb21taXQge30gewogCWNvbW1pdF90cmVlCiB9CiAKLXByb2MgbmV4dF9kaWZmIHt9IHsKK3Byb2MgbmV4dF9kaWZmIHt7YWZ0ZXIge319fSB7CiAJZ2xvYmFsIG5leHRfZGlmZl9wIG5leHRfZGlmZl93IG5leHRfZGlmZl9pCi0Jc2hvd19kaWZmICRuZXh0X2RpZmZfcCAkbmV4dF9kaWZmX3cgJG5leHRfZGlmZl9pCisJc2hvd19kaWZmICRuZXh0X2RpZmZfcCAkbmV4dF9kaWZmX3cge30ge30gJGFmdGVyCit9CisKK3Byb2MgZmluZF9hbmNob3JfcG9zIHtsc3QgbmFtZX0geworCXNldCBsaWQgW2xzZWFyY2ggLXNvcnRlZCAtZXhhY3QgJGxzdCAkbmFtZV0KKworCWlmIHskbGlkID09IC0xfSB7CisJCXNldCBsaWQgMAorCQlmb3JlYWNoIGxuYW1lICRsc3QgeworCQkJaWYgeyRsbmFtZSA+PSAkbmFtZX0gYnJlYWsKKwkJCWluY3IgbGlkCisJCX0KKwl9CisKKwlyZXR1cm4gJGxpZAorfQorCitwcm9jIGZpbmRfZmlsZV9mcm9tIHtmbGlzdCBpZHggZGVsdGEgcGF0aCBtbWFza30geworCWdsb2JhbCBmaWxlX3N0YXRlcworCisJc2V0IGxlbiBbbGxlbmd0aCAkZmxpc3RdCisJd2hpbGUgeyRpZHggPj0gMCAmJiAkaWR4IDwgJGxlbn0geworCQlzZXQgbmFtZSBbbGluZGV4ICRmbGlzdCAkaWR4XQorCisJCWlmIHskbmFtZSBuZSAkcGF0aCAmJiBbaW5mbyBleGlzdHMgZmlsZV9zdGF0ZXMoJG5hbWUpXX0geworCQkJc2V0IHN0YXRlIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRuYW1lKSAwXQorCisJCQlpZiB7JG1tYXNrIGVxIHt9IHx8IFtyZWdleHAgJG1tYXNrICRzdGF0ZV19IHsKKwkJCQlyZXR1cm4gJGlkeAorCQkJfQorCQl9CisKKwkJaW5jciBpZHggJGRlbHRhCisJfQorCisJcmV0dXJuIHt9Cit9CisKK3Byb2MgZmluZF9uZXh0X2RpZmYge3cgcGF0aCB7bG5vIHt9fSB7bW1hc2sge319fSB7CisJZ2xvYmFsIG5leHRfZGlmZl9wIG5leHRfZGlmZl93IG5leHRfZGlmZl9pCisJZ2xvYmFsIGZpbGVfbGlzdHMgdWlfaW5kZXggdWlfd29ya2RpcgorCisJc2V0IGZsaXN0ICRmaWxlX2xpc3RzKCR3KQorCWlmIHskbG5vIGVxIHt9fSB7CisJCXNldCBsbm8gW2ZpbmRfYW5jaG9yX3BvcyAkZmxpc3QgJHBhdGhdCisJfSBlbHNlIHsKKwkJaW5jciBsbm8gLTEKKwl9CisKKwlpZiB7JG1tYXNrIG5lIHt9ICYmICFbcmVnZXhwIHsoXlxeKXwoXCQkKX0gJG1tYXNrXX0geworCQlpZiB7JHcgZXEgJHVpX2luZGV4fSB7CisJCQlzZXQgbW1hc2sgIl4kbW1hc2siCisJCX0gZWxzZSB7CisJCQlzZXQgbW1hc2sgIiRtbWFza1wkIgorCQl9CisJfQorCisJc2V0IGlkeCBbZmluZF9maWxlX2Zyb20gJGZsaXN0ICRsbm8gMSAkcGF0aCAkbW1hc2tdCisJaWYgeyRpZHggZXEge319IHsKKwkJaW5jciBsbm8gLTEKKwkJc2V0IGlkeCBbZmluZF9maWxlX2Zyb20gJGZsaXN0ICRsbm8gLTEgJHBhdGggJG1tYXNrXQorCX0KKworCWlmIHskaWR4IG5lIHt9fSB7CisJCXNldCBuZXh0X2RpZmZfdyAkdworCQlzZXQgbmV4dF9kaWZmX3AgW2xpbmRleCAkZmxpc3QgJGlkeF0KKwkJc2V0IG5leHRfZGlmZl9pIFtleHByIHskaWR4KzF9XQorCQlyZXR1cm4gMQorCX0gZWxzZSB7CisJCXJldHVybiAwCisJfQorfQorCitwcm9jIG5leHRfZGlmZl9hZnRlcl9hY3Rpb24ge3cgcGF0aCB7bG5vIHt9fSB7bW1hc2sge319fSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoCisKKwlpZiB7JHBhdGggbmUgJGN1cnJlbnRfZGlmZl9wYXRofSB7CisJCXJldHVybiB7fQorCX0gZWxzZWlmIHtbZmluZF9uZXh0X2RpZmYgJHcgJHBhdGggJGxubyAkbW1hc2tdfSB7CisJCXJldHVybiB7bmV4dF9kaWZmO30KKwl9IGVsc2UgeworCQlyZXR1cm4ge3Jlc2hvd19kaWZmO30KKwl9Cit9CisKK3Byb2Mgc2VsZWN0X2ZpcnN0X2RpZmYge2FmdGVyfSB7CisJZ2xvYmFsIHVpX3dvcmtkaXIKKworCWlmIHtbZmluZF9uZXh0X2RpZmYgJHVpX3dvcmtkaXIge30gMSB7Xl8/VX1dIHx8CisJICAgIFtmaW5kX25leHRfZGlmZiAkdWlfd29ya2RpciB7fSAxIHtbXk9dJH1dfSB7CisJCW5leHRfZGlmZiAkYWZ0ZXIKKwl9IGVsc2UgeworCQl1cGxldmVsICMwICRhZnRlcgorCX0KK30KKworcHJvYyBmb3JjZV9maXJzdF9kaWZmIHthZnRlcn0geworCWdsb2JhbCB1aV93b3JrZGlyIGN1cnJlbnRfZGlmZl9wYXRoIGZpbGVfc3RhdGVzCisKKwlpZiB7W2luZm8gZXhpc3RzIGZpbGVfc3RhdGVzKCRjdXJyZW50X2RpZmZfcGF0aCldfSB7CisJCXNldCBzdGF0ZSBbbGluZGV4ICRmaWxlX3N0YXRlcygkY3VycmVudF9kaWZmX3BhdGgpIDBdCisJfSBlbHNlIHsKKwkJc2V0IHN0YXRlIHtPT30KKwl9CisKKwlzZXQgcmVzZWxlY3QgMAorCWlmIHtbc3RyaW5nIGZpcnN0IHtVfSAkc3RhdGVdID49IDB9IHsKKwkJIyBBbHJlYWR5IGEgY29uZmxpY3QsIGRvIG5vdGhpbmcKKwl9IGVsc2VpZiB7W2ZpbmRfbmV4dF9kaWZmICR1aV93b3JrZGlyICRjdXJyZW50X2RpZmZfcGF0aCB7fSB7Xl8/VX1dfSB7CisJCXNldCByZXNlbGVjdCAxCisJfSBlbHNlaWYge1tzdHJpbmcgaW5kZXggJHN0YXRlIDFdIG5lIHtPfX0geworCQkjIEFscmVhZHkgYSBkaWZmICYgbm8gY29uZmxpY3RzLCBkbyBub3RoaW5nCisJfSBlbHNlaWYge1tmaW5kX25leHRfZGlmZiAkdWlfd29ya2RpciAkY3VycmVudF9kaWZmX3BhdGgge30ge1teT10kfV19IHsKKwkJc2V0IHJlc2VsZWN0IDEKKwl9CisKKwlpZiB7JHJlc2VsZWN0fSB7CisJCW5leHRfZGlmZiAkYWZ0ZXIKKwl9IGVsc2UgeworCQl1cGxldmVsICMwICRhZnRlcgorCX0KIH0KIAogcHJvYyB0b2dnbGVfb3JfZGlmZiB7dyB4IHl9IHsKQEAgLTE4MjMsMzQgKzIxNTQsMzEgQEAKIAkkdWlfaW5kZXggdGFnIHJlbW92ZSBpbl9zZWwgMC4wIGVuZAogCSR1aV93b3JrZGlyIHRhZyByZW1vdmUgaW5fc2VsIDAuMCBlbmQKIAorCSMgRGV0ZXJtaW5lIHRoZSBzdGF0ZSBvZiB0aGUgZmlsZQorCWlmIHtbaW5mbyBleGlzdHMgZmlsZV9zdGF0ZXMoJHBhdGgpXX0geworCQlzZXQgc3RhdGUgW2xpbmRleCAkZmlsZV9zdGF0ZXMoJHBhdGgpIDBdCisJfSBlbHNlIHsKKwkJc2V0IHN0YXRlIHtfX30KKwl9CisKKwkjIFJlc3RhZ2UgdGhlIGZpbGUsIG9yIHNpbXBseSBzaG93IHRoZSBkaWZmCiAJaWYgeyRjb2wgPT0gMCAmJiAkeSA+IDF9IHsKLQkJc2V0IGkgW2V4cHIgeyRsbm8tMX1dCi0JCXNldCBsbCBbZXhwciB7W2xsZW5ndGggJGZpbGVfbGlzdHMoJHcpXS0xfV0KLQotCQlpZiB7JGkgPT0gJGxsICYmICRpID09IDB9IHsKLQkJCXNldCBhZnRlciB7cmVzaG93X2RpZmY7fQotCQl9IGVsc2UgewotCQkJZ2xvYmFsIG5leHRfZGlmZl9wIG5leHRfZGlmZl93IG5leHRfZGlmZl9pCi0KLQkJCXNldCBuZXh0X2RpZmZfdyAkdwotCi0JCQlpZiB7JGkgPCAkbGx9IHsKLQkJCQlzZXQgaSBbZXhwciB7JGkgKyAxfV0KLQkJCQlzZXQgbmV4dF9kaWZmX2kgJGkKLQkJCX0gZWxzZSB7Ci0JCQkJc2V0IG5leHRfZGlmZl9pICRpCi0JCQkJc2V0IGkgW2V4cHIgeyRpIC0gMX1dCi0JCQl9Ci0KLQkJCXNldCBuZXh0X2RpZmZfcCBbbGluZGV4ICRmaWxlX2xpc3RzKCR3KSAkaV0KLQotCQkJaWYgeyRuZXh0X2RpZmZfcCBuZSB7fSAmJiAkY3VycmVudF9kaWZmX3BhdGggbmUge319IHsKLQkJCQlzZXQgYWZ0ZXIge25leHRfZGlmZjt9Ci0JCQl9IGVsc2UgewotCQkJCXNldCBhZnRlciB7fQotCQkJfQorCQkjIENvbmZsaWN0cyBuZWVkIHNwZWNpYWwgaGFuZGxpbmcKKwkJaWYge1tzdHJpbmcgZmlyc3Qge1V9ICRzdGF0ZV0gPj0gMH0geworCQkJIyAkdyBtdXN0IGFsd2F5cyBiZSAkdWlfd29ya2RpciwgYnV0Li4uCisJCQlpZiB7JHcgbmUgJHVpX3dvcmtkaXJ9IHsgc2V0IGxubyB7fSB9CisJCQltZXJnZV9zdGFnZV93b3JrZGlyICRwYXRoICRsbm8KKwkJCXJldHVybgogCQl9CiAKKwkJaWYge1tzdHJpbmcgaW5kZXggJHN0YXRlIDFdIGVxIHtPfX0geworCQkJc2V0IG1tYXNrIHt9CisJCX0gZWxzZSB7CisJCQlzZXQgbW1hc2sge1teT119CisJCX0KKworCQlzZXQgYWZ0ZXIgW25leHRfZGlmZl9hZnRlcl9hY3Rpb24gJHcgJHBhdGggJGxubyAkbW1hc2tdCisKIAkJaWYgeyR3IGVxICR1aV9pbmRleH0gewogCQkJdXBkYXRlX2luZGV4aW5mbyBcCiAJCQkJIlVuc3RhZ2luZyBbc2hvcnRfcGF0aCAkcGF0aF0gZnJvbSBjb21taXQiIFwKQEAgLTE5NjEsNiArMjI4OSw5IEBACiAJLm1iYXIgYWRkIGNhc2NhZGUgLWxhYmVsIFttYyBNZXJnZV0gLW1lbnUgLm1iYXIubWVyZ2UKIAkubWJhciBhZGQgY2FzY2FkZSAtbGFiZWwgW21jIFJlbW90ZV0gLW1lbnUgLm1iYXIucmVtb3RlCiB9CitpZiB7W2lzX2VuYWJsZWQgbXVsdGljb21taXRdIHx8IFtpc19lbmFibGVkIHNpbmdsZWNvbW1pdF19IHsKKwkubWJhciBhZGQgY2FzY2FkZSAtbGFiZWwgW21jIFRvb2xzXSAtbWVudSAubWJhci50b29scworfQogLiBjb25maWd1cmUgLW1lbnUgLm1iYXIKIAogIyAtLSBSZXBvc2l0b3J5IE1lbnUKQEAgLTE5NjgsNiArMjI5OSwxMSBAQAogbWVudSAubWJhci5yZXBvc2l0b3J5CiAKIC5tYmFyLnJlcG9zaXRvcnkgYWRkIGNvbW1hbmQgXAorCS1sYWJlbCBbbWMgIkV4cGxvcmUgV29ya2luZyBDb3B5Il0gXAorCS1jb21tYW5kIHtkb19leHBsb3JlfQorLm1iYXIucmVwb3NpdG9yeSBhZGQgc2VwYXJhdG9yCisKKy5tYmFyLnJlcG9zaXRvcnkgYWRkIGNvbW1hbmQgXAogCS1sYWJlbCBbbWMgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIl0gXAogCS1jb21tYW5kIHticm93c2VyOjpuZXcgJGN1cnJlbnRfYnJhbmNofQogc2V0IHVpX2Jyb3dzZV9jdXJyZW50IFsubWJhci5yZXBvc2l0b3J5IGluZGV4IGxhc3RdCkBAIC0yMDkxLDI5ICsyNDI3LDM5IEBACiAKICMgLS0gQ29tbWl0IE1lbnUKICMKK3Byb2MgY29tbWl0X2J0bl9jYXB0aW9uIHt9IHsKKwlpZiB7W2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJCXJldHVybiBbbWMgIkRvbmUiXQorCX0gZWxzZSB7CisJCXJldHVybiBbbWMgQ29tbWl0QEB2ZXJiXQorCX0KK30KKwogaWYge1tpc19lbmFibGVkIG11bHRpY29tbWl0XSB8fCBbaXNfZW5hYmxlZCBzaW5nbGVjb21taXRdfSB7CiAJbWVudSAubWJhci5jb21taXQKIAotCS5tYmFyLmNvbW1pdCBhZGQgcmFkaW9idXR0b24gXAotCQktbGFiZWwgW21jICJOZXcgQ29tbWl0Il0gXAotCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAotCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAotCQktdmFsdWUgbmV3Ci0JbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXAotCQlbbGlzdCAubWJhci5jb21taXQgZW50cnljb25mIFsubWJhci5jb21taXQgaW5kZXggbGFzdF0gLXN0YXRlXQorCWlmIHshW2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJCS5tYmFyLmNvbW1pdCBhZGQgcmFkaW9idXR0b24gXAorCQkJLWxhYmVsIFttYyAiTmV3IENvbW1pdCJdIFwKKwkJCS1jb21tYW5kIGRvX3NlbGVjdF9jb21taXRfdHlwZSBcCisJCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAorCQkJLXZhbHVlIG5ldworCQlsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCisJCQlbbGlzdCAubWJhci5jb21taXQgZW50cnljb25mIFsubWJhci5jb21taXQgaW5kZXggbGFzdF0gLXN0YXRlXQogCi0JLm1iYXIuY29tbWl0IGFkZCByYWRpb2J1dHRvbiBcCi0JCS1sYWJlbCBbbWMgIkFtZW5kIExhc3QgQ29tbWl0Il0gXAotCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAotCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAotCQktdmFsdWUgYW1lbmQKLQlsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCi0JCVtsaXN0IC5tYmFyLmNvbW1pdCBlbnRyeWNvbmYgWy5tYmFyLmNvbW1pdCBpbmRleCBsYXN0XSAtc3RhdGVdCisJCS5tYmFyLmNvbW1pdCBhZGQgcmFkaW9idXR0b24gXAorCQkJLWxhYmVsIFttYyAiQW1lbmQgTGFzdCBDb21taXQiXSBcCisJCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAorCQkJLXZhcmlhYmxlIHNlbGVjdGVkX2NvbW1pdF90eXBlIFwKKwkJCS12YWx1ZSBhbWVuZAorCQlsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCisJCQlbbGlzdCAubWJhci5jb21taXQgZW50cnljb25mIFsubWJhci5jb21taXQgaW5kZXggbGFzdF0gLXN0YXRlXQogCi0JLm1iYXIuY29tbWl0IGFkZCBzZXBhcmF0b3IKKwkJLm1iYXIuY29tbWl0IGFkZCBzZXBhcmF0b3IKKwl9CiAKIAkubWJhci5jb21taXQgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyBSZXNjYW5dIFwKLQkJLWNvbW1hbmQgZG9fcmVzY2FuIFwKKwkJLWNvbW1hbmQgdWlfZG9fcmVzY2FuIFwKIAkJLWFjY2VsZXJhdG9yIEY1CiAJbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXAogCQlbbGlzdCAubWJhci5jb21taXQgZW50cnljb25mIFsubWJhci5jb21taXQgaW5kZXggbGFzdF0gLXN0YXRlXQpAQCAtMjE1MiwxMSArMjQ5OCwxMyBAQAogCiAJLm1iYXIuY29tbWl0IGFkZCBzZXBhcmF0b3IKIAotCS5tYmFyLmNvbW1pdCBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJTaWduIE9mZiJdIFwKLQkJLWNvbW1hbmQgZG9fc2lnbm9mZiBcCi0JCS1hY2NlbGVyYXRvciAkTTFULVMKKwlpZiB7IVtpc19lbmFibGVkIG5vY29tbWl0bXNnXX0geworCQkubWJhci5jb21taXQgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiU2lnbiBPZmYiXSBcCisJCQktY29tbWFuZCBkb19zaWdub2ZmIFwKKwkJCS1hY2NlbGVyYXRvciAkTTFULVMKKwl9CiAKLQkubWJhci5jb21taXQgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyBDb21taXRAQHZlcmJdIFwKKwkubWJhci5jb21taXQgYWRkIGNvbW1hbmQgLWxhYmVsIFtjb21taXRfYnRuX2NhcHRpb25dIFwKIAkJLWNvbW1hbmQgZG9fY29tbWl0IFwKIAkJLWFjY2VsZXJhdG9yICRNMVQtUmV0dXJuCiAJbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXApAQCAtMjE4NCwxMSArMjUzMiwxNSBAQAogCW1lbnUgLm1iYXIucmVtb3RlCiAKIAkubWJhci5yZW1vdGUgYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jICJBZGQuLi4iXSBcCisJCS1jb21tYW5kIHJlbW90ZV9hZGQ6OmRpYWxvZyBcCisJCS1hY2NlbGVyYXRvciAkTTFULUEKKwkubWJhci5yZW1vdGUgYWRkIGNvbW1hbmQgXAogCQktbGFiZWwgW21jICJQdXNoLi4uIl0gXAogCQktY29tbWFuZCBkb19wdXNoX2FueXdoZXJlIFwKIAkJLWFjY2VsZXJhdG9yICRNMVQtUAogCS5tYmFyLnJlbW90ZSBhZGQgY29tbWFuZCBcCi0JCS1sYWJlbCBbbWMgIkRlbGV0ZS4uLiJdIFwKKwkJLWxhYmVsIFttYyAiRGVsZXRlIEJyYW5jaC4uLiJdIFwKIAkJLWNvbW1hbmQgcmVtb3RlX2JyYW5jaF9kZWxldGU6OmRpYWxvZwogfQogCkBAIC0yMjE0LDYgKzI1NjYsMjAgQEAKIAkJLWNvbW1hbmQgZG9fb3B0aW9ucwogfQogCisjIC0tIFRvb2xzIE1lbnUKKyMKK2lmIHtbaXNfZW5hYmxlZCBtdWx0aWNvbW1pdF0gfHwgW2lzX2VuYWJsZWQgc2luZ2xlY29tbWl0XX0geworCXNldCB0b29sc19tZW51YmFyIC5tYmFyLnRvb2xzCisJbWVudSAkdG9vbHNfbWVudWJhcgorCSR0b29sc19tZW51YmFyIGFkZCBzZXBhcmF0b3IKKwkkdG9vbHNfbWVudWJhciBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJBZGQuLi4iXSAtY29tbWFuZCB0b29sc19hZGQ6OmRpYWxvZworCSR0b29sc19tZW51YmFyIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIlJlbW92ZS4uLiJdIC1jb21tYW5kIHRvb2xzX3JlbW92ZTo6ZGlhbG9nCisJc2V0IHRvb2xzX3RhaWxjbnQgMworCWlmIHtbYXJyYXkgbmFtZXMgcmVwb19jb25maWcgZ3VpdG9vbC4qLmNtZF0gbmUge319IHsKKwkJdG9vbHNfcG9wdWxhdGVfYWxsCisJfQorfQorCiAjIC0tIEhlbHAgTWVudQogIwogLm1iYXIgYWRkIGNhc2NhZGUgLWxhYmVsIFttYyBIZWxwXSAtbWVudSAubWJhci5oZWxwCkBAIC0yMjI0LDggKzI1OTAsNyBAQAogCQktY29tbWFuZCBkb19hYm91dAogfQogCi1zZXQgYnJvd3NlciB7fQotY2F0Y2gge3NldCBicm93c2VyICRyZXBvX2NvbmZpZyhpbnN0YXdlYi5icm93c2VyKX0KKwogc2V0IGRvY19wYXRoIFtmaWxlIGRpcm5hbWUgW2dpdGV4ZWNdXQogc2V0IGRvY19wYXRoIFtmaWxlIGpvaW4gJGRvY19wYXRoIERvY3VtZW50YXRpb24gaW5kZXguaHRtbF0KIApAQCAtMjIzMywzNCArMjU5OCwyMyBAQAogCXNldCBkb2NfcGF0aCBbZXhlYyBjeWdwYXRoIC0tbWl4ZWQgJGRvY19wYXRoXQogfQogCi1pZiB7JGJyb3dzZXIgZXEge319IHsKLQlpZiB7W2lzX01hY09TWF19IHsKLQkJc2V0IGJyb3dzZXIgb3BlbgotCX0gZWxzZWlmIHtbaXNfQ3lnd2luXX0gewotCQlzZXQgcHJvZ3JhbV9maWxlcyBbZmlsZSBkaXJuYW1lIFtleGVjIGN5Z3BhdGggLS13aW5kaXJdXQotCQlzZXQgcHJvZ3JhbV9maWxlcyBbZmlsZSBqb2luICRwcm9ncmFtX2ZpbGVzIHtQcm9ncmFtIEZpbGVzfV0KLQkJc2V0IGZpcmVmb3ggW2ZpbGUgam9pbiAkcHJvZ3JhbV9maWxlcyB7TW96aWxsYSBGaXJlZm94fSBmaXJlZm94LmV4ZV0KLQkJc2V0IGllIFtmaWxlIGpvaW4gJHByb2dyYW1fZmlsZXMge0ludGVybmV0IEV4cGxvcmVyfSBJRVhQTE9SRS5FWEVdCi0JCWlmIHtbZmlsZSBleGlzdHMgJGZpcmVmb3hdfSB7Ci0JCQlzZXQgYnJvd3NlciAkZmlyZWZveAotCQl9IGVsc2VpZiB7W2ZpbGUgZXhpc3RzICRpZV19IHsKLQkJCXNldCBicm93c2VyICRpZQotCQl9Ci0JCXVuc2V0IHByb2dyYW1fZmlsZXMgZmlyZWZveCBpZQotCX0KLX0KLQogaWYge1tmaWxlIGlzZmlsZSAkZG9jX3BhdGhdfSB7CiAJc2V0IGRvY191cmwgImZpbGU6JGRvY19wYXRoIgogfSBlbHNlIHsKIAlzZXQgZG9jX3VybCB7aHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9zY20vZ2l0L2RvY3MvfQogfQogCi1pZiB7JGJyb3dzZXIgbmUge319IHsKLQkubWJhci5oZWxwIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIk9ubGluZSBEb2N1bWVudGF0aW9uIl0gXAotCQktY29tbWFuZCBbbGlzdCBleGVjICRicm93c2VyICRkb2NfdXJsICZdCitwcm9jIHN0YXJ0X2Jyb3dzZXIge3VybH0geworCWdpdCAid2ViLS1icm93c2UiICR1cmwKIH0KLXVuc2V0IGJyb3dzZXIgZG9jX3BhdGggZG9jX3VybAorCisubWJhci5oZWxwIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIk9ubGluZSBEb2N1bWVudGF0aW9uIl0gXAorCS1jb21tYW5kIFtsaXN0IHN0YXJ0X2Jyb3dzZXIgJGRvY191cmxdCisKKy5tYmFyLmhlbHAgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiU2hvdyBTU0ggS2V5Il0gXAorCS1jb21tYW5kIGRvX3NzaF9rZXkKKwordW5zZXQgZG9jX3BhdGggZG9jX3VybAogCiAjIC0tIFN0YW5kYXJkIGJpbmRpbmdzCiAjCkBAIC0yMjc2LDIwICsyNjMwLDM5IEBACiAJZXhpdCAxCiB9CiAKK3Byb2Mgbm9ybWFsaXplX3JlbHBhdGgge3BhdGh9IHsKKwlzZXQgZWxlbWVudHMge30KKwlmb3JlYWNoIGl0ZW0gW2ZpbGUgc3BsaXQgJHBhdGhdIHsKKwkJaWYgeyRpdGVtIGVxIHsufX0gY29udGludWUKKwkJaWYgeyRpdGVtIGVxIHsuLn0gJiYgW2xsZW5ndGggJGVsZW1lbnRzXSA+IDAKKwkJICAgICYmIFtsaW5kZXggJGVsZW1lbnRzIGVuZF0gbmUgey4ufX0geworCQkJc2V0IGVsZW1lbnRzIFtscmFuZ2UgJGVsZW1lbnRzIDAgZW5kLTFdCisJCQljb250aW51ZQorCQl9CisJCWxhcHBlbmQgZWxlbWVudHMgJGl0ZW0KKwl9CisJcmV0dXJuIFtldmFsIGZpbGUgam9pbiAkZWxlbWVudHNdCit9CisKICMgLS0gTm90IGEgbm9ybWFsIGNvbW1pdCB0eXBlIGludm9jYXRpb24/ICBEbyB0aGF0IGluc3RlYWQhCiAjCiBzd2l0Y2ggLS0gJHN1YmNvbW1hbmQgewogYnJvd3NlciAtCiBibGFtZSB7Ci0Jc2V0IHN1YmNvbW1hbmRfYXJncyB7cmV2PyBwYXRofQorCWlmIHskc3ViY29tbWFuZCBlcSAiYmxhbWUifSB7CisJCXNldCBzdWJjb21tYW5kX2FyZ3Mge1stLWxpbmU9PG51bT5dIHJldj8gcGF0aH0KKwl9IGVsc2UgeworCQlzZXQgc3ViY29tbWFuZF9hcmdzIHtyZXY/IHBhdGh9CisJfQogCWlmIHskYXJndiBlcSB7fX0gdXNhZ2UKIAlzZXQgaGVhZCB7fQogCXNldCBwYXRoIHt9CisJc2V0IGp1bXBfc3BlYyB7fQogCXNldCBpc19wYXRoIDAKIAlmb3JlYWNoIGEgJGFyZ3YgewogCQlpZiB7JGlzX3BhdGggfHwgW2ZpbGUgZXhpc3RzICRfcHJlZml4JGFdfSB7CiAJCQlpZiB7JHBhdGggbmUge319IHVzYWdlCi0JCQlzZXQgcGF0aCAkX3ByZWZpeCRhCisJCQlzZXQgcGF0aCBbbm9ybWFsaXplX3JlbHBhdGggJF9wcmVmaXgkYV0KIAkJCWJyZWFrCiAJCX0gZWxzZWlmIHskYSBlcSB7LS19fSB7CiAJCQlpZiB7JHBhdGggbmUge319IHsKQEAgLTIyOTgsNiArMjY3MSw5IEBACiAJCQkJc2V0IHBhdGgge30KIAkJCX0KIAkJCXNldCBpc19wYXRoIDEKKwkJfSBlbHNlaWYge1tyZWdleHAge14tLWxpbmU9KFxkKykkfSAkYSBhIGxudW1dfSB7CisJCQlpZiB7JGp1bXBfc3BlYyBuZSB7fSB8fCAkaGVhZCBuZSB7fX0gdXNhZ2UKKwkJCXNldCBqdW1wX3NwZWMgW2xpc3QgJGxudW1dCiAJCX0gZWxzZWlmIHskaGVhZCBlcSB7fX0gewogCQkJaWYgeyRoZWFkIG5lIHt9fSB1c2FnZQogCQkJc2V0IGhlYWQgJGEKQEAgLTIzMDksNyArMjY4NSw3IEBACiAJdW5zZXQgaXNfcGF0aAogCiAJaWYgeyRoZWFkIG5lIHt9ICYmICRwYXRoIGVxIHt9fSB7Ci0JCXNldCBwYXRoICRfcHJlZml4JGhlYWQKKwkJc2V0IHBhdGggW25vcm1hbGl6ZV9yZWxwYXRoICRfcHJlZml4JGhlYWRdCiAJCXNldCBoZWFkIHt9CiAJfQogCkBAIC0yMzI5LDYgKzI3MDUsNyBAQAogCiAJc3dpdGNoIC0tICRzdWJjb21tYW5kIHsKIAlicm93c2VyIHsKKwkJaWYgeyRqdW1wX3NwZWMgbmUge319IHVzYWdlCiAJCWlmIHskaGVhZCBlcSB7fX0gewogCQkJaWYgeyRwYXRoIG5lIHt9ICYmIFtmaWxlIGlzZGlyZWN0b3J5ICRwYXRoXX0gewogCQkJCXNldCBoZWFkICRjdXJyZW50X2JyYW5jaApAQCAtMjM0NCw3ICsyNzIxLDcgQEAKIAkJCXB1dHMgc3RkZXJyIFttYyAiZmF0YWw6IGNhbm5vdCBzdGF0IHBhdGggJXM6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiICRwYXRoXQogCQkJZXhpdCAxCiAJCX0KLQkJYmxhbWU6Om5ldyAkaGVhZCAkcGF0aAorCQlibGFtZTo6bmV3ICRoZWFkICRwYXRoICRqdW1wX3NwZWMKIAl9CiAJfQogCXJldHVybgpAQCAtMjQ2MCw3ICsyODM3LDcgQEAKIHBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMgLXNpZGUgbGVmdCAtZmlsbCB5CiAKIGJ1dHRvbiAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5yZXNjYW4gLXRleHQgW21jIFJlc2Nhbl0gXAotCS1jb21tYW5kIGRvX3Jlc2NhbgorCS1jb21tYW5kIHVpX2RvX3Jlc2NhbgogcGFjayAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5yZXNjYW4gLXNpZGUgdG9wIC1maWxsIHgKIGxhcHBlbmQgZGlzYWJsZV9vbl9sb2NrIFwKIAl7LnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMucmVzY2FuIGNvbmYgLXN0YXRlfQpAQCAtMjQ3MSwxOSArMjg0OCwyMyBAQAogbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXAogCXsudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5pbmNhbGwgY29uZiAtc3RhdGV9CiAKLWJ1dHRvbiAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5zaWdub2ZmIC10ZXh0IFttYyAiU2lnbiBPZmYiXSBcCi0JLWNvbW1hbmQgZG9fc2lnbm9mZgotcGFjayAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5zaWdub2ZmIC1zaWRlIHRvcCAtZmlsbCB4CitpZiB7IVtpc19lbmFibGVkIG5vY29tbWl0bXNnXX0geworCWJ1dHRvbiAudnBhbmUubG93ZXIuY29tbWFyZWEuYnV0dG9ucy5zaWdub2ZmIC10ZXh0IFttYyAiU2lnbiBPZmYiXSBcCisJCS1jb21tYW5kIGRvX3NpZ25vZmYKKwlwYWNrIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLnNpZ25vZmYgLXNpZGUgdG9wIC1maWxsIHgKK30KIAotYnV0dG9uIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLmNvbW1pdCAtdGV4dCBbbWMgQ29tbWl0QEB2ZXJiXSBcCitidXR0b24gLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMuY29tbWl0IC10ZXh0IFtjb21taXRfYnRuX2NhcHRpb25dIFwKIAktY29tbWFuZCBkb19jb21taXQKIHBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMuY29tbWl0IC1zaWRlIHRvcCAtZmlsbCB4CiBsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCiAJey52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLmNvbW1pdCBjb25mIC1zdGF0ZX0KIAotYnV0dG9uIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLnB1c2ggLXRleHQgW21jIFB1c2hdIFwKLQktY29tbWFuZCBkb19wdXNoX2FueXdoZXJlCi1wYWNrIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLnB1c2ggLXNpZGUgdG9wIC1maWxsIHgKK2lmIHshW2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJYnV0dG9uIC52cGFuZS5sb3dlci5jb21tYXJlYS5idXR0b25zLnB1c2ggLXRleHQgW21jIFB1c2hdIFwKKwkJLWNvbW1hbmQgZG9fcHVzaF9hbnl3aGVyZQorCXBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1dHRvbnMucHVzaCAtc2lkZSB0b3AgLWZpbGwgeAorfQogCiAjIC0tIENvbW1pdCBNZXNzYWdlIEJ1ZmZlcgogIwpAQCAtMjQ5MSwyMCArMjg3MiwyNCBAQAogZnJhbWUgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIKIHNldCB1aV9jb21tIC52cGFuZS5sb3dlci5jb21tYXJlYS5idWZmZXIudAogc2V0IHVpX2NvbWwgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubAotcmFkaW9idXR0b24gLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubmV3IFwKLQktdGV4dCBbbWMgIk5ldyBDb21taXQiXSBcCi0JLWNvbW1hbmQgZG9fc2VsZWN0X2NvbW1pdF90eXBlIFwKLQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAotCS12YWx1ZSBuZXcKLWxhcHBlbmQgZGlzYWJsZV9vbl9sb2NrIFwKLQlbbGlzdCAudnBhbmUubG93ZXIuY29tbWFyZWEuYnVmZmVyLmhlYWRlci5uZXcgY29uZiAtc3RhdGVdCi1yYWRpb2J1dHRvbiAudnBhbmUubG93ZXIuY29tbWFyZWEuYnVmZmVyLmhlYWRlci5hbWVuZCBcCi0JLXRleHQgW21jICJBbWVuZCBMYXN0IENvbW1pdCJdIFwKLQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAotCS12YXJpYWJsZSBzZWxlY3RlZF9jb21taXRfdHlwZSBcCi0JLXZhbHVlIGFtZW5kCi1sYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCi0JW2xpc3QgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIuYW1lbmQgY29uZiAtc3RhdGVdCisKK2lmIHshW2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJcmFkaW9idXR0b24gLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubmV3IFwKKwkJLXRleHQgW21jICJOZXcgQ29tbWl0Il0gXAorCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAorCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAorCQktdmFsdWUgbmV3CisJbGFwcGVuZCBkaXNhYmxlX29uX2xvY2sgXAorCQlbbGlzdCAudnBhbmUubG93ZXIuY29tbWFyZWEuYnVmZmVyLmhlYWRlci5uZXcgY29uZiAtc3RhdGVdCisJcmFkaW9idXR0b24gLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIuYW1lbmQgXAorCQktdGV4dCBbbWMgIkFtZW5kIExhc3QgQ29tbWl0Il0gXAorCQktY29tbWFuZCBkb19zZWxlY3RfY29tbWl0X3R5cGUgXAorCQktdmFyaWFibGUgc2VsZWN0ZWRfY29tbWl0X3R5cGUgXAorCQktdmFsdWUgYW1lbmQKKwlsYXBwZW5kIGRpc2FibGVfb25fbG9jayBcCisJCVtsaXN0IC52cGFuZS5sb3dlci5jb21tYXJlYS5idWZmZXIuaGVhZGVyLmFtZW5kIGNvbmYgLXN0YXRlXQorfQorCiBsYWJlbCAkdWlfY29tbCBcCiAJLWFuY2hvciB3IFwKIAktanVzdGlmeSBsZWZ0CkBAIC0yNTIyLDggKzI5MDcsMTEgQEAKIH0KIHRyYWNlIGFkZCB2YXJpYWJsZSBjb21taXRfdHlwZSB3cml0ZSB0cmFjZV9jb21taXRfdHlwZQogcGFjayAkdWlfY29tbCAtc2lkZSBsZWZ0IC1maWxsIHgKLXBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIuYW1lbmQgLXNpZGUgcmlnaHQKLXBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubmV3IC1zaWRlIHJpZ2h0CisKK2lmIHshW2lzX2VuYWJsZWQgbm9jb21taXRdfSB7CisJcGFjayAudnBhbmUubG93ZXIuY29tbWFyZWEuYnVmZmVyLmhlYWRlci5hbWVuZCAtc2lkZSByaWdodAorCXBhY2sgLnZwYW5lLmxvd2VyLmNvbW1hcmVhLmJ1ZmZlci5oZWFkZXIubmV3IC1zaWRlIHJpZ2h0Cit9CiAKIHRleHQgJHVpX2NvbW0gLWJhY2tncm91bmQgd2hpdGUgLWZvcmVncm91bmQgYmxhY2sgXAogCS1ib3JkZXJ3aWR0aCAxIFwKQEAgLTI2ODksNiArMzA3Nyw1OSBAQAogCiAjIC0tIERpZmYgQm9keSBDb250ZXh0IE1lbnUKICMKKworcHJvYyBjcmVhdGVfY29tbW9uX2RpZmZfcG9wdXAge2N0eG19IHsKKwkkY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIlNob3cgTGVzcyBDb250ZXh0Il0gXAorCQktY29tbWFuZCBzaG93X2xlc3NfY29udGV4dAorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBjb21tYW5kIFwKKwkJLWxhYmVsIFttYyAiU2hvdyBNb3JlIENvbnRleHQiXSBcCisJCS1jb21tYW5kIHNob3dfbW9yZV9jb250ZXh0CisJbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCisJJGN0eG0gYWRkIHNlcGFyYXRvcgorCSRjdHhtIGFkZCBjb21tYW5kIFwKKwkJLWxhYmVsIFttYyBSZWZyZXNoXSBcCisJCS1jb21tYW5kIHJlc2hvd19kaWZmCisJbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCisJJGN0eG0gYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jIENvcHldIFwKKwkJLWNvbW1hbmQge3RrX3RleHRDb3B5ICR1aV9kaWZmfQorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBjb21tYW5kIFwKKwkJLWxhYmVsIFttYyAiU2VsZWN0IEFsbCJdIFwKKwkJLWNvbW1hbmQge2ZvY3VzICR1aV9kaWZmOyR1aV9kaWZmIHRhZyBhZGQgc2VsIDAuMCBlbmR9CisJbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCisJJGN0eG0gYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jICJDb3B5IEFsbCJdIFwKKwkJLWNvbW1hbmQgeworCQkJJHVpX2RpZmYgdGFnIGFkZCBzZWwgMC4wIGVuZAorCQkJdGtfdGV4dENvcHkgJHVpX2RpZmYKKwkJCSR1aV9kaWZmIHRhZyByZW1vdmUgc2VsIDAuMCBlbmQKKwkJfQorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBzZXBhcmF0b3IKKwkkY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIkRlY3JlYXNlIEZvbnQgU2l6ZSJdIFwKKwkJLWNvbW1hbmQge2luY3JfZm9udF9zaXplIGZvbnRfZGlmZiAtMX0KKwlsYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KKwkkY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIkluY3JlYXNlIEZvbnQgU2l6ZSJdIFwKKwkJLWNvbW1hbmQge2luY3JfZm9udF9zaXplIGZvbnRfZGlmZiAxfQorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBzZXBhcmF0b3IKKwlzZXQgZW1lbnUgJGN0eG0uZW5jCisJbWVudSAkZW1lbnUKKwlidWlsZF9lbmNvZGluZ19tZW51ICRlbWVudSBbbGlzdCBmb3JjZV9kaWZmX2VuY29kaW5nXQorCSRjdHhtIGFkZCBjYXNjYWRlIFwKKwkJLWxhYmVsIFttYyAiRW5jb2RpbmciXSBcCisJCS1tZW51ICRlbWVudQorCWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQorCSRjdHhtIGFkZCBzZXBhcmF0b3IKKwkkY3R4bSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJPcHRpb25zLi4uIl0gXAorCQktY29tbWFuZCBkb19vcHRpb25zCit9CisKIHNldCBjdHhtIC52cGFuZS5sb3dlci5kaWZmLmJvZHkuY3R4bQogbWVudSAkY3R4bSAtdGVhcm9mZiAwCiAkY3R4bSBhZGQgY29tbWFuZCBcCkBAIC0yNzAyLDcxICszMTQzLDY1IEBACiBzZXQgdWlfZGlmZl9hcHBseWxpbmUgWyRjdHhtIGluZGV4IGxhc3RdCiBsYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgJHVpX2RpZmZfYXBwbHlsaW5lIC1zdGF0ZV0KICRjdHhtIGFkZCBzZXBhcmF0b3IKLSRjdHhtIGFkZCBjb21tYW5kIFwKLQktbGFiZWwgW21jICJTaG93IExlc3MgQ29udGV4dCJdIFwKLQktY29tbWFuZCBzaG93X2xlc3NfY29udGV4dAotbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCi0kY3R4bSBhZGQgY29tbWFuZCBcCi0JLWxhYmVsIFttYyAiU2hvdyBNb3JlIENvbnRleHQiXSBcCi0JLWNvbW1hbmQgc2hvd19tb3JlX2NvbnRleHQKLWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQotJGN0eG0gYWRkIHNlcGFyYXRvcgotJGN0eG0gYWRkIGNvbW1hbmQgXAotCS1sYWJlbCBbbWMgUmVmcmVzaF0gXAotCS1jb21tYW5kIHJlc2hvd19kaWZmCi1sYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KLSRjdHhtIGFkZCBjb21tYW5kIFwKLQktbGFiZWwgW21jIENvcHldIFwKLQktY29tbWFuZCB7dGtfdGV4dENvcHkgJHVpX2RpZmZ9Ci1sYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KLSRjdHhtIGFkZCBjb21tYW5kIFwKLQktbGFiZWwgW21jICJTZWxlY3QgQWxsIl0gXAotCS1jb21tYW5kIHtmb2N1cyAkdWlfZGlmZjskdWlfZGlmZiB0YWcgYWRkIHNlbCAwLjAgZW5kfQotbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG0gZW50cnljb25mIFskY3R4bSBpbmRleCBsYXN0XSAtc3RhdGVdCi0kY3R4bSBhZGQgY29tbWFuZCBcCi0JLWxhYmVsIFttYyAiQ29weSBBbGwiXSBcCi0JLWNvbW1hbmQgewotCQkkdWlfZGlmZiB0YWcgYWRkIHNlbCAwLjAgZW5kCi0JCXRrX3RleHRDb3B5ICR1aV9kaWZmCi0JCSR1aV9kaWZmIHRhZyByZW1vdmUgc2VsIDAuMCBlbmQKLQl9Ci1sYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KLSRjdHhtIGFkZCBzZXBhcmF0b3IKLSRjdHhtIGFkZCBjb21tYW5kIFwKLQktbGFiZWwgW21jICJEZWNyZWFzZSBGb250IFNpemUiXSBcCi0JLWNvbW1hbmQge2luY3JfZm9udF9zaXplIGZvbnRfZGlmZiAtMX0KLWxhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtIGVudHJ5Y29uZiBbJGN0eG0gaW5kZXggbGFzdF0gLXN0YXRlXQotJGN0eG0gYWRkIGNvbW1hbmQgXAotCS1sYWJlbCBbbWMgIkluY3JlYXNlIEZvbnQgU2l6ZSJdIFwKLQktY29tbWFuZCB7aW5jcl9mb250X3NpemUgZm9udF9kaWZmIDF9Ci1sYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bSBlbnRyeWNvbmYgWyRjdHhtIGluZGV4IGxhc3RdIC1zdGF0ZV0KLSRjdHhtIGFkZCBzZXBhcmF0b3IKLSRjdHhtIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIk9wdGlvbnMuLi4iXSBcCi0JLWNvbW1hbmQgZG9fb3B0aW9ucwotcHJvYyBwb3B1cF9kaWZmX21lbnUge2N0eG0geCB5IFggWX0geworY3JlYXRlX2NvbW1vbl9kaWZmX3BvcHVwICRjdHhtCisKK3NldCBjdHhtbWcgLnZwYW5lLmxvd2VyLmRpZmYuYm9keS5jdHhtbWcKK21lbnUgJGN0eG1tZyAtdGVhcm9mZiAwCiskY3R4bW1nIGFkZCBjb21tYW5kIFwKKwktbGFiZWwgW21jICJSdW4gTWVyZ2UgVG9vbCJdIFwKKwktY29tbWFuZCB7bWVyZ2VfcmVzb2x2ZV90b29sfQorbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG1tZyBlbnRyeWNvbmYgWyRjdHhtbWcgaW5kZXggbGFzdF0gLXN0YXRlXQorJGN0eG1tZyBhZGQgc2VwYXJhdG9yCiskY3R4bW1nIGFkZCBjb21tYW5kIFwKKwktbGFiZWwgW21jICJVc2UgUmVtb3RlIFZlcnNpb24iXSBcCisJLWNvbW1hbmQge21lcmdlX3Jlc29sdmVfb25lIDN9CitsYXBwZW5kIGRpZmZfYWN0aW9ucyBbbGlzdCAkY3R4bW1nIGVudHJ5Y29uZiBbJGN0eG1tZyBpbmRleCBsYXN0XSAtc3RhdGVdCiskY3R4bW1nIGFkZCBjb21tYW5kIFwKKwktbGFiZWwgW21jICJVc2UgTG9jYWwgVmVyc2lvbiJdIFwKKwktY29tbWFuZCB7bWVyZ2VfcmVzb2x2ZV9vbmUgMn0KK2xhcHBlbmQgZGlmZl9hY3Rpb25zIFtsaXN0ICRjdHhtbWcgZW50cnljb25mIFskY3R4bW1nIGluZGV4IGxhc3RdIC1zdGF0ZV0KKyRjdHhtbWcgYWRkIGNvbW1hbmQgXAorCS1sYWJlbCBbbWMgIlJldmVydCBUbyBCYXNlIl0gXAorCS1jb21tYW5kIHttZXJnZV9yZXNvbHZlX29uZSAxfQorbGFwcGVuZCBkaWZmX2FjdGlvbnMgW2xpc3QgJGN0eG1tZyBlbnRyeWNvbmYgWyRjdHhtbWcgaW5kZXggbGFzdF0gLXN0YXRlXQorJGN0eG1tZyBhZGQgc2VwYXJhdG9yCitjcmVhdGVfY29tbW9uX2RpZmZfcG9wdXAgJGN0eG1tZworCitwcm9jIHBvcHVwX2RpZmZfbWVudSB7Y3R4bSBjdHhtbWcgeCB5IFggWX0gewogCWdsb2JhbCBjdXJyZW50X2RpZmZfcGF0aCBmaWxlX3N0YXRlcwogCXNldCA6OmN1cnNvclggJHgKIAlzZXQgOjpjdXJzb3JZICR5Ci0JaWYgeyQ6OnVpX2luZGV4IGVxICQ6OmN1cnJlbnRfZGlmZl9zaWRlfSB7Ci0JCXNldCBsIFttYyAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0Il0KLQkJc2V0IHQgW21jICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiXQorCWlmIHtbaW5mbyBleGlzdHMgZmlsZV9zdGF0ZXMoJGN1cnJlbnRfZGlmZl9wYXRoKV19IHsKKwkJc2V0IHN0YXRlIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRjdXJyZW50X2RpZmZfcGF0aCkgMF0KIAl9IGVsc2UgewotCQlzZXQgbCBbbWMgIlN0YWdlIEh1bmsgRm9yIENvbW1pdCJdCi0JCXNldCB0IFttYyAiU3RhZ2UgTGluZSBGb3IgQ29tbWl0Il0KKwkJc2V0IHN0YXRlIHtfX30KIAl9Ci0JaWYgeyQ6OmlzXzN3YXlfZGlmZgotCQl8fCAkY3VycmVudF9kaWZmX3BhdGggZXEge30KLQkJfHwgIVtpbmZvIGV4aXN0cyBmaWxlX3N0YXRlcygkY3VycmVudF9kaWZmX3BhdGgpXQotCQl8fCB7X099IGVxIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRjdXJyZW50X2RpZmZfcGF0aCkgMF19IHsKLQkJc2V0IHMgZGlzYWJsZWQKKwlpZiB7W3N0cmluZyBmaXJzdCB7VX0gJHN0YXRlXSA+PSAwfSB7CisJCXRrX3BvcHVwICRjdHhtbWcgJFggJFkKIAl9IGVsc2UgewotCQlzZXQgcyBub3JtYWwKKwkJaWYgeyQ6OnVpX2luZGV4IGVxICQ6OmN1cnJlbnRfZGlmZl9zaWRlfSB7CisJCQlzZXQgbCBbbWMgIlVuc3RhZ2UgSHVuayBGcm9tIENvbW1pdCJdCisJCQlzZXQgdCBbbWMgIlVuc3RhZ2UgTGluZSBGcm9tIENvbW1pdCJdCisJCX0gZWxzZSB7CisJCQlzZXQgbCBbbWMgIlN0YWdlIEh1bmsgRm9yIENvbW1pdCJdCisJCQlzZXQgdCBbbWMgIlN0YWdlIExpbmUgRm9yIENvbW1pdCJdCisJCX0KKwkJaWYgeyQ6OmlzXzN3YXlfZGlmZgorCQkJfHwgJGN1cnJlbnRfZGlmZl9wYXRoIGVxIHt9CisJCQl8fCB7X199IGVxICRzdGF0ZQorCQkJfHwge19PfSBlcSAkc3RhdGUKKwkJCXx8IHtfVH0gZXEgJHN0YXRlCisJCQl8fCB7VF99IGVxICRzdGF0ZX0geworCQkJc2V0IHMgZGlzYWJsZWQKKwkJfSBlbHNlIHsKKwkJCXNldCBzIG5vcm1hbAorCQl9CisJCSRjdHhtIGVudHJ5Y29uZiAkOjp1aV9kaWZmX2FwcGx5aHVuayAtc3RhdGUgJHMgLWxhYmVsICRsCisJCSRjdHhtIGVudHJ5Y29uZiAkOjp1aV9kaWZmX2FwcGx5bGluZSAtc3RhdGUgJHMgLWxhYmVsICR0CisJCXRrX3BvcHVwICRjdHhtICRYICRZCiAJfQotCSRjdHhtIGVudHJ5Y29uZiAkOjp1aV9kaWZmX2FwcGx5aHVuayAtc3RhdGUgJHMgLWxhYmVsICRsCi0JJGN0eG0gZW50cnljb25mICQ6OnVpX2RpZmZfYXBwbHlsaW5lIC1zdGF0ZSAkcyAtbGFiZWwgJHQKLQl0a19wb3B1cCAkY3R4bSAkWCAkWQogfQotYmluZF9idXR0b24zICR1aV9kaWZmIFtsaXN0IHBvcHVwX2RpZmZfbWVudSAkY3R4bSAleCAleSAlWCAlWV0KK2JpbmRfYnV0dG9uMyAkdWlfZGlmZiBbbGlzdCBwb3B1cF9kaWZmX21lbnUgJGN0eG0gJGN0eG1tZyAleCAleSAlWCAlWV0KIAogIyAtLSBTdGF0dXMgQmFyCiAjCkBAIC0yODQyLDkgKzMyNzcsOSBAQAogCWJpbmQgLiA8JE0xQi1LZXktUD4gZG9fcHVzaF9hbnl3aGVyZQogfQogCi1iaW5kIC4gICA8S2V5LUY1PiAgICAgZG9fcmVzY2FuCi1iaW5kIC4gICA8JE0xQi1LZXktcj4gZG9fcmVzY2FuCi1iaW5kIC4gICA8JE0xQi1LZXktUj4gZG9fcmVzY2FuCitiaW5kIC4gICA8S2V5LUY1PiAgICAgdWlfZG9fcmVzY2FuCitiaW5kIC4gICA8JE0xQi1LZXktcj4gdWlfZG9fcmVzY2FuCitiaW5kIC4gICA8JE0xQi1LZXktUj4gdWlfZG9fcmVzY2FuCiBiaW5kIC4gICA8JE0xQi1LZXktcz4gZG9fc2lnbm9mZgogYmluZCAuICAgPCRNMUItS2V5LVM+IGRvX3NpZ25vZmYKIGJpbmQgLiAgIDwkTTFCLUtleS10PiBkb19hZGRfc2VsZWN0aW9uCkBAIC0yODk0LDcgKzMzMjksNiBAQAogCQl7XkdJVF9QQUdFUiR9IC0KIAkJe15HSVRfVFJBQ0UkfSAtCiAJCXteR0lUX0NPTkZJRyR9IC0KLQkJe15HSVRfQ09ORklHX0xPQ0FMJH0gLQogCQl7XkdJVF8oQVVUSE9SfENPTU1JVFRFUilfREFURSR9IHsKIAkJCWFwcGVuZCBtc2cgIiAtICRuYW1lXG4iCiAJCQlpbmNyIGlnbm9yZWRfZW52CkBAIC0yOTMxLDggKzMzNjUsNyBAQAogCWxvYWRfYWxsX3JlbW90ZXMKIAogCXNldCBuIFsubWJhci5yZW1vdGUgaW5kZXggZW5kXQotCXBvcHVsYXRlX3B1c2hfbWVudQotCXBvcHVsYXRlX2ZldGNoX21lbnUKKwlwb3B1bGF0ZV9yZW1vdGVzX21lbnUKIAlzZXQgbiBbZXhwciB7Wy5tYmFyLnJlbW90ZSBpbmRleCBlbmRdIC0gJG59XQogCWlmIHskbiA+IDB9IHsKIAkJaWYge1subWJhci5yZW1vdGUgdHlwZSAwXSBlcSAidGVhcm9mZiJ9IHsgaW5jciBuIH0KQEAgLTMwMjIsNyArMzQ1NSwyMyBAQAogaWYgeyFbd2luZm8gaXNtYXBwZWQgLl19IHsKIAl3bSBkZWljb25pZnkgLgogfQotYWZ0ZXIgMSBkb19yZXNjYW4KK2FmdGVyIDEgeworCWlmIHtbaXNfZW5hYmxlZCBpbml0aWFsYW1lbmRdfSB7CisJCWZvcmNlX2FtZW5kCisJfSBlbHNlIHsKKwkJZG9fcmVzY2FuCisJfQorCisJaWYge1tpc19lbmFibGVkIG5vY29tbWl0bXNnXX0geworCQkkdWlfY29tbSBjb25maWd1cmUgLXN0YXRlIGRpc2FibGVkIC1iYWNrZ3JvdW5kIGdyYXkKKwl9Cit9CiBpZiB7W2lzX2VuYWJsZWQgbXVsdGljb21taXRdfSB7CiAJYWZ0ZXIgMTAwMCBoaW50X2djCiB9CitpZiB7W2lzX2VuYWJsZWQgcmV0Y29kZV19IHsKKwliaW5kIC4gPERlc3Ryb3k+IHsrdGVybWluYXRlX21lICVXfQorfQoraWYgeyRwaWNrZWQgJiYgW2lzX2NvbmZpZ190cnVlIGd1aS5hdXRvZXhwbG9yZV19IHsKKwlkb19leHBsb3JlCit9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9ibGFtZS50Y2wgYi9naXQtZ3VpL2xpYi9ibGFtZS50Y2wKaW5kZXggYjZlNDJjYi4uMWYzYjA4ZiAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvYmxhbWUudGNsCisrKyBiL2dpdC1ndWkvbGliL2JsYW1lLnRjbApAQCAtMjEsOSArMjEsMTEgQEAKIGZpZWxkIHdfYXNpbSAgICAgOyAjIHRleHQgY29sdW1uOiBhbm5vdGF0aW9ucyAoc2ltcGxlIGNvbXB1dGF0aW9uKQogZmllbGQgd19maWxlICAgICA7ICMgdGV4dCBjb2x1bW46IGFjdHVhbCBmaWxlIGRhdGEKIGZpZWxkIHdfY3ZpZXdlciAgOyAjIHBhbmUgc2hvd2luZyBjb21taXQgbWVzc2FnZQorZmllbGQgZmluZGVyICAgICA7ICMgZmluZCBtaW5pLWRpYWxvZyBmcmFtZQogZmllbGQgc3RhdHVzICAgICA7ICMgc3RhdHVzIG1lZ2Etd2lkZ2V0IGluc3RhbmNlCiBmaWVsZCBvbGRfaGVpZ2h0IDsgIyBsYXN0IGtub3duIGhlaWdodCBvZiAkdy5maWxlX3BhbmUKIAorCiAjIFRrIFVJIGNvbG9ycwogIwogdmFyaWFibGUgYWN0aXZlX2NvbG9yICNjMGVkYzUKQEAgLTU4LDggKzYwLDggQEAKIGZpZWxkIHRvb2x0aXBfdGltZXIgICAgIHt9IDsgIyBDdXJyZW50IHRpbWVyIGV2ZW50IGZvciBvdXIgdG9vbHRpcAogZmllbGQgdG9vbHRpcF9jb21taXQgICAge30gOyAjIENvbW1pdChzKSBpbiB0b29sdGlwCiAKLWNvbnN0cnVjdG9yIG5ldyB7aV9jb21taXQgaV9wYXRofSB7Ci0JZ2xvYmFsIGN1cnNvcl9wdHIKK2NvbnN0cnVjdG9yIG5ldyB7aV9jb21taXQgaV9wYXRoIGlfanVtcH0geworCWdsb2JhbCBjdXJzb3JfcHRyIE0xQiBNMVQgaGF2ZV90azg1CiAJdmFyaWFibGUgYWN0aXZlX2NvbG9yCiAJdmFyaWFibGUgZ3JvdXBfY29sb3JzCiAKQEAgLTY5LDYgKzcxLDggQEAKIAltYWtlX3RvcGxldmVsIHRvcCB3CiAJd20gdGl0bGUgJHRvcCBbYXBwZW5kICJbYXBwbmFtZV0gKFtyZXBvbmFtZV0pOiAiIFttYyAiRmlsZSBWaWV3ZXIiXV0KIAorCXNldCBmb250X3cgW2ZvbnQgbWVhc3VyZSBmb250X2RpZmYgIjAiXQorCiAJZnJhbWUgJHcuaGVhZGVyIC1iYWNrZ3JvdW5kIGdvbGQKIAlsYWJlbCAkdy5oZWFkZXIuY29tbWl0X2wgXAogCQktdGV4dCBbbWMgIkNvbW1pdDoiXSBcCkBAIC0xMTQsOSArMTE4LDkgQEAKIAlwYWNrICR3X3BhdGggLWZpbGwgeCAtc2lkZSByaWdodAogCXBhY2sgJHcuaGVhZGVyLnBhdGhfbCAtc2lkZSByaWdodAogCi0JcGFuZWR3aW5kb3cgJHcuZmlsZV9wYW5lIC1vcmllbnQgdmVydGljYWwKLQlmcmFtZSAkdy5maWxlX3BhbmUub3V0Ci0JZnJhbWUgJHcuZmlsZV9wYW5lLmNtCisJcGFuZWR3aW5kb3cgJHcuZmlsZV9wYW5lIC1vcmllbnQgdmVydGljYWwgLWJvcmRlcndpZHRoIDAgLXNhc2h3aWR0aCAzCisJZnJhbWUgJHcuZmlsZV9wYW5lLm91dCAtcmVsaWVmIGZsYXQgLWJvcmRlcndpZHRoIDEKKwlmcmFtZSAkdy5maWxlX3BhbmUuY20gLXJlbGllZiBzdW5rZW4gLWJvcmRlcndpZHRoIDEKIAkkdy5maWxlX3BhbmUgYWRkICR3LmZpbGVfcGFuZS5vdXQgXAogCQktc3RpY2t5IG5zZXcgXAogCQktbWluc2l6ZSAxMDAgXApAQCAtMTk3LDYgKzIwMSwxMSBAQAogCQktd2lkdGggODAgXAogCQkteHNjcm9sbGNvbW1hbmQgW2xpc3QgJHcuZmlsZV9wYW5lLm91dC5zYnggc2V0XSBcCiAJCS1mb250IGZvbnRfZGlmZgorCWlmIHskaGF2ZV90azg1fSB7CisJCSR3X2ZpbGUgY29uZmlndXJlIC1pbmFjdGl2ZXNlbGVjdGJhY2tncm91bmQgZGFya2JsdWUKKwl9CisJJHdfZmlsZSB0YWcgY29uZiBmb3VuZCBcCisJCS1iYWNrZ3JvdW5kIHllbGxvdwogCiAJc2V0IHdfY29sdW1ucyBbbGlzdCAkd19hbW92ICR3X2FzaW0gJHdfbGluZSAkd19maWxlXQogCkBAIC0yMTcsNiArMjI2LDExIEBACiAJCS13ZWlnaHQgMQogCWdyaWQgcm93Y29uZmlndXJlICR3LmZpbGVfcGFuZS5vdXQgMCAtd2VpZ2h0IDEKIAorCXNldCBmaW5kZXIgWzo6c2VhcmNoYmFyOjpuZXcgXAorCQkkdy5maWxlX3BhbmUub3V0LmZmICR3X2ZpbGUgXAorCQktY29sdW1uIFtleHByIHtbbGxlbmd0aCAkd19jb2x1bW5zXSAtIDF9XSBcCisJCV0KKwogCXNldCB3X2N2aWV3ZXIgJHcuZmlsZV9wYW5lLmNtLnQKIAl0ZXh0ICR3X2N2aWV3ZXIgXAogCQktYmFja2dyb3VuZCB3aGl0ZSBcCkBAIC0yNTYsMTggKzI3MCw0MSBAQAogCSR3LmN0eG0gYWRkIGNvbW1hbmQgXAogCQktbGFiZWwgW21jICJDb3B5IENvbW1pdCJdIFwKIAkJLWNvbW1hbmQgW2NiIF9jb3B5Y29tbWl0XQorCSR3LmN0eG0gYWRkIHNlcGFyYXRvcgorCSR3LmN0eG0gYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jICJGaW5kIFRleHQuLi4iXSBcCisJCS1hY2NlbGVyYXRvciBGNyBcCisJCS1jb21tYW5kIFtsaXN0IHNlYXJjaGJhcjo6c2hvdyAkZmluZGVyXQorCW1lbnUgJHcuY3R4bS5lbmMKKwlidWlsZF9lbmNvZGluZ19tZW51ICR3LmN0eG0uZW5jIFtjYiBfc2V0ZW5jb2RpbmddCisJJHcuY3R4bSBhZGQgY2FzY2FkZSBcCisJCS1sYWJlbCBbbWMgIkVuY29kaW5nIl0gXAorCQktbWVudSAkdy5jdHhtLmVuYwogCSR3LmN0eG0gYWRkIGNvbW1hbmQgXAogCQktbGFiZWwgW21jICJEbyBGdWxsIENvcHkgRGV0ZWN0aW9uIl0gXAogCQktY29tbWFuZCBbY2IgX2Z1bGxjb3B5YmxhbWVdCisJJHcuY3R4bSBhZGQgc2VwYXJhdG9yCisJJHcuY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIlNob3cgSGlzdG9yeSBDb250ZXh0Il0gXAorCQktY29tbWFuZCBbY2IgX2dpdGtjb21taXRdCisJJHcuY3R4bSBhZGQgY29tbWFuZCBcCisJCS1sYWJlbCBbbWMgIkJsYW1lIFBhcmVudCBDb21taXQiXSBcCisJCS1jb21tYW5kIFtjYiBfYmxhbWVwYXJlbnRdCiAKIAlmb3JlYWNoIGkgJHdfY29sdW1ucyB7CiAJCWZvciB7c2V0IGcgMH0geyRnIDwgW2xsZW5ndGggJGdyb3VwX2NvbG9yc119IHtpbmNyIGd9IHsKIAkJCSRpIHRhZyBjb25mIGNvbG9yJGcgLWJhY2tncm91bmQgW2xpbmRleCAkZ3JvdXBfY29sb3JzICRnXQogCQl9CiAKKwkJaWYgeyRpIGVxICR3X2ZpbGV9IHsKKwkJCSR3X2ZpbGUgdGFnIHJhaXNlIGZvdW5kCisJCX0KKwkJJGkgdGFnIHJhaXNlIHNlbAorCiAJCSRpIGNvbmYgLWN1cnNvciAkY3Vyc29yX3B0cgotCQkkaSBjb25mIC15c2Nyb2xsY29tbWFuZCBbbGlzdCBtYW55MnNjcm9sbGJhciBcCi0JCQkkd19jb2x1bW5zIHl2aWV3ICR3LmZpbGVfcGFuZS5vdXQuc2J5XQorCQkkaSBjb25mIC15c2Nyb2xsY29tbWFuZCBcCisJCQkiW2xpc3QgOjpzZWFyY2hiYXI6OnNjcm9sbGVkICRmaW5kZXJdCisJCQkgW2xpc3QgbWFueTJzY3JvbGxiYXIgJHdfY29sdW1ucyB5dmlldyAkdy5maWxlX3BhbmUub3V0LnNieV0iCiAJCWJpbmQgJGkgPEJ1dHRvbi0xPiAiCiAJCQlbY2IgX2hpZGVfdG9vbHRpcF0KIAkJCVtjYiBfY2xpY2sgJGkgQCV4LCV5XQpAQCAtMjg0LDcgKzMyMSw3IEBACiAJCQl0a19wb3B1cCAkdy5jdHhtICVYICVZCiAJCSIKIAkJYmluZCAkaSA8U2hpZnQtVGFiPiAiW2xpc3QgZm9jdXMgJHdfY3ZpZXdlcl07YnJlYWsiCi0JCWJpbmQgJGkgPFRhYj4gICAgICAgIltsaXN0IGZvY3VzICR3X2N2aWV3ZXJdO2JyZWFrIgorCQliaW5kICRpIDxUYWI+ICAgICAgICJbY2IgX2ZvY3VzX3NlYXJjaCAkd19jdmlld2VyXTticmVhayIKIAl9CiAKIAlmb3JlYWNoIGkgW2NvbmNhdCAkd19jb2x1bW5zICR3X2N2aWV3ZXJdIHsKQEAgLTMwMCwxMCArMzM3LDE1IEBACiAJCWJpbmQgJGkgPENvbnRyb2wtS2V5LWY+IHtjYXRjaCB7JVcgeXZpZXcgc2Nyb2xsICAxIHBhZ2VzfTticmVha30KIAl9CiAKLQliaW5kICR3X2N2aWV3ZXIgPFNoaWZ0LVRhYj4gIltsaXN0IGZvY3VzICR3X2ZpbGVdO2JyZWFrIgorCWJpbmQgJHdfY3ZpZXdlciA8U2hpZnQtVGFiPiAiW2NiIF9mb2N1c19zZWFyY2ggJHdfZmlsZV07YnJlYWsiCiAJYmluZCAkd19jdmlld2VyIDxUYWI+ICAgICAgICJbbGlzdCBmb2N1cyAkd19maWxlXTticmVhayIKLQliaW5kICR3X2N2aWV3ZXIgPEJ1dHRvbi0xPiBbbGlzdCBmb2N1cyAkd19jdmlld2VyXQotCWJpbmQgJHdfZmlsZSAgICA8VmlzaWJpbGl0eT4gW2xpc3QgZm9jdXMgJHdfZmlsZV0KKwliaW5kICR3X2N2aWV3ZXIgPEJ1dHRvbi0xPiAgIFtsaXN0IGZvY3VzICR3X2N2aWV3ZXJdCisJYmluZCAkd19maWxlICAgIDxWaXNpYmlsaXR5PiBbY2IgX2ZvY3VzX3NlYXJjaCAkd19maWxlXQorCWJpbmQgJHRvcCAgICAgICA8Rjc+ICAgICAgICAgW2xpc3Qgc2VhcmNoYmFyOjpzaG93ICRmaW5kZXJdCisJYmluZCAkdG9wICAgICAgIDxFc2NhcGU+ICAgICBbbGlzdCBzZWFyY2hiYXI6OmhpZGUgJGZpbmRlcl0KKwliaW5kICR0b3AgICAgICAgPEYzPiAgICAgICAgIFtsaXN0IHNlYXJjaGJhcjo6ZmluZF9uZXh0ICRmaW5kZXJdCisJYmluZCAkdG9wICAgICAgIDxTaGlmdC1GMz4gICBbbGlzdCBzZWFyY2hiYXI6OmZpbmRfcHJldiAkZmluZGVyXQorCWNhdGNoIHsgYmluZCAkdG9wIDxTaGlmdC1LZXktWEY4Nl9Td2l0Y2hfVlRfMz4gW2xpc3Qgc2VhcmNoYmFyOjpmaW5kX3ByZXYgJGZpbmRlcl0gfQogCiAJZ3JpZCBjb25maWd1cmUgJHcuaGVhZGVyIC1zdGlja3kgZXcKIAlncmlkIGNvbmZpZ3VyZSAkdy5maWxlX3BhbmUgLXN0aWNreSBuc2V3CkBAIC0zMTUsOSArMzU3LDE0IEBACiAKIAlzZXQgcmVxX3cgW3dpbmZvIHJlcXdpZHRoICAkdG9wXQogCXNldCByZXFfaCBbd2luZm8gcmVxaGVpZ2h0ICR0b3BdCi0Jc2V0IHNjcl9oIFtleHByIHtbd2luZm8gc2NyZWVuaGVpZ2h0ICR0b3BdIC0gMTAwfV0KLQlpZiB7JHJlcV93IDwgNjAwfSB7c2V0IHJlcV93IDYwMH0KKwlzZXQgc2NyX3cgW2V4cHIge1t3aW5mbyBzY3JlZW53aWR0aCAkdG9wXSAtIDQwfV0KKwlzZXQgc2NyX2ggW2V4cHIge1t3aW5mbyBzY3JlZW5oZWlnaHQgJHRvcF0gLSAxMjB9XQorCXNldCBvcHRfdyBbZXhwciB7JGZvbnRfdyAqICg4MCArIDUqMyArIDMpfV0KKwlpZiB7JHJlcV93IDwgJG9wdF93fSB7c2V0IHJlcV93ICRvcHRfd30KKwlpZiB7JHJlcV93ID4gJHNjcl93fSB7c2V0IHJlcV93ICRzY3Jfd30KKwlzZXQgb3B0X2ggW2V4cHIgeyRyZXFfdyo0LzN9XQogCWlmIHskcmVxX2ggPCAkc2NyX2h9IHtzZXQgcmVxX2ggJHNjcl9ofQorCWlmIHskcmVxX2ggPiAkb3B0X2h9IHtzZXQgcmVxX2ggJG9wdF9ofQogCXNldCBnICIke3JlcV93fXgke3JlcV9ofSIKIAl3bSBnZW9tZXRyeSAkdG9wICRnCiAJdXBkYXRlCkBAIC0zMjUsMTQgKzM3MiwyOSBAQAogCXNldCBvbGRfaGVpZ2h0IFt3aW5mbyBoZWlnaHQgJHcuZmlsZV9wYW5lXQogCSR3LmZpbGVfcGFuZSBzYXNoIHBsYWNlIDAgXAogCQlbbGluZGV4IFskdy5maWxlX3BhbmUgc2FzaCBjb29yZCAwXSAwXSBcCi0JCVtleHByIHtpbnQoJG9sZF9oZWlnaHQgKiAwLjcwKX1dCisJCVtleHByIHtpbnQoJG9sZF9oZWlnaHQgKiAwLjgwKX1dCiAJYmluZCAkdy5maWxlX3BhbmUgPENvbmZpZ3VyZT4gXAogCSJpZiB7eyR3LmZpbGVfcGFuZX0gZXEgeyVXfX0ge1tjYiBfcmVzaXplICVoXX0iCiAKIAl3bSBwcm90b2NvbCAkdG9wIFdNX0RFTEVURV9XSU5ET1cgImRlc3Ryb3kgJHRvcCIKLQliaW5kICR0b3AgPERlc3Ryb3k+IFtjYiBfa2lsbF0KKwliaW5kICR0b3AgPERlc3Ryb3k+IFtjYiBfaGFuZGxlX2Rlc3Ryb3kgJVddCiAKLQlfbG9hZCAkdGhpcyB7fQorCV9sb2FkICR0aGlzICRpX2p1bXAKK30KKworbWV0aG9kIF9mb2N1c19zZWFyY2gge3dpbn0geworCWlmIHtbc2VhcmNoYmFyOjp2aXNpYmxlICRmaW5kZXJdfSB7CisJCWZvY3VzIFtzZWFyY2hiYXI6OmVkaXRvciAkZmluZGVyXQorCX0gZWxzZSB7CisJCWZvY3VzICR3aW4KKwl9Cit9CisKK21ldGhvZCBfaGFuZGxlX2Rlc3Ryb3kge3dpbn0geworCWlmIHskd2luIGVxICR3fSB7CisJCV9raWxsICR0aGlzCisJCWRlbGV0ZV90aGlzCisJfQogfQogCiBtZXRob2QgX2tpbGwge30gewpAQCAtMzkzLDcgKzQ1NSwxMCBAQAogCX0gZWxzZSB7CiAJCXNldCBmZCBbZ2l0X3JlYWQgY2F0LWZpbGUgYmxvYiAiJGNvbW1pdDokcGF0aCJdCiAJfQotCWZjb25maWd1cmUgJGZkIC1ibG9ja2luZyAwIC10cmFuc2xhdGlvbiBsZiAtZW5jb2RpbmcgYmluYXJ5CisJZmNvbmZpZ3VyZSAkZmQgXAorCQktYmxvY2tpbmcgMCBcCisJCS10cmFuc2xhdGlvbiBsZiBcCisJCS1lbmNvZGluZyBbZ2V0X3BhdGhfZW5jb2RpbmcgJHBhdGhdCiAJZmlsZWV2ZW50ICRmZCByZWFkYWJsZSBbY2IgX3JlYWRfZmlsZSAkZmQgJGp1bXBdCiAJc2V0IGN1cnJlbnRfZmQgJGZkCiB9CkBAIC00OTQsNyArNTU5LDcgQEAKIH0gaWZkZWxldGVkIHsgY2F0Y2gge2Nsb3NlICRmZH0gfQogCiBtZXRob2QgX2V4ZWNfYmxhbWUge2N1cl93IGN1cl9kIG9wdGlvbnMgY3VyX3N9IHsKLQlsYXBwZW5kIG9wdGlvbnMgLS1pbmNyZW1lbnRhbAorCWxhcHBlbmQgb3B0aW9ucyAtLWluY3JlbWVudGFsIC0tZW5jb2Rpbmc9dXRmLTgKIAlpZiB7JGNvbW1pdCBlcSB7fX0gewogCQlsYXBwZW5kIG9wdGlvbnMgLS1jb250ZW50cyAkcGF0aAogCX0gZWxzZSB7CkBAIC01MDIsNyArNTY3LDcgQEAKIAl9CiAJbGFwcGVuZCBvcHRpb25zIC0tICRwYXRoCiAJc2V0IGZkIFtldmFsIGdpdF9yZWFkIC0tbmljZSBibGFtZSAkb3B0aW9uc10KLQlmY29uZmlndXJlICRmZCAtYmxvY2tpbmcgMCAtdHJhbnNsYXRpb24gbGYgLWVuY29kaW5nIGJpbmFyeQorCWZjb25maWd1cmUgJGZkIC1ibG9ja2luZyAwIC10cmFuc2xhdGlvbiBsZiAtZW5jb2RpbmcgdXRmLTgKIAlmaWxlZXZlbnQgJGZkIHJlYWRhYmxlIFtjYiBfcmVhZF9ibGFtZSAkZmQgJGN1cl93ICRjdXJfZF0KIAlzZXQgY3VycmVudF9mZCAkZmQKIAlzZXQgYmxhbWVfbGluZXMgMApAQCAtNzgyLDI0ICs4NDcsNDIgQEAKIAlfc2hvd2NvbW1pdCAkdGhpcyAkY3VyX3cgJGxubwogfQogCittZXRob2QgX3NldGVuY29kaW5nIHtlbmN9IHsKKwlmb3JjZV9wYXRoX2VuY29kaW5nICRwYXRoICRlbmMKKwlfbG9hZCAkdGhpcyBbbGlzdCBcCisJCSRoaWdobGlnaHRfY29sdW1uIFwKKwkJJGhpZ2hsaWdodF9saW5lIFwKKwkJW2xpbmRleCBbJHdfZmlsZSB4dmlld10gMF0gXAorCQlbbGluZGV4IFskd19maWxlIHl2aWV3XSAwXSBcCisJCV0KK30KKwogbWV0aG9kIF9sb2FkX2NvbW1pdCB7Y3VyX3cgY3VyX2QgcG9zfSB7CiAJdXB2YXIgIzAgJGN1cl9kIGxpbmVfZGF0YQogCXNldCBsbm8gW2xpbmRleCBbc3BsaXQgWyRjdXJfdyBpbmRleCAkcG9zXSAuXSAwXQogCXNldCBkYXQgW2xpbmRleCAkbGluZV9kYXRhICRsbm9dCiAJaWYgeyRkYXQgbmUge319IHsKLQkJbGFwcGVuZCBoaXN0b3J5IFtsaXN0IFwKLQkJCSRjb21taXQgJHBhdGggXAotCQkJJGhpZ2hsaWdodF9jb2x1bW4gXAotCQkJJGhpZ2hsaWdodF9saW5lIFwKLQkJCVtsaW5kZXggWyR3X2ZpbGUgeHZpZXddIDBdIFwKLQkJCVtsaW5kZXggWyR3X2ZpbGUgeXZpZXddIDBdIFwKLQkJCV0KLQkJc2V0IGNvbW1pdCBbbGluZGV4ICRkYXQgMF0KLQkJc2V0IHBhdGggICBbbGluZGV4ICRkYXQgMV0KLQkJX2xvYWQgJHRoaXMgW2xpc3QgW2xpbmRleCAkZGF0IDJdXQorCQlfbG9hZF9uZXdfY29tbWl0ICR0aGlzICBcCisJCQlbbGluZGV4ICRkYXQgMF0gXAorCQkJW2xpbmRleCAkZGF0IDFdIFwKKwkJCVtsaXN0IFtsaW5kZXggJGRhdCAyXV0KIAl9CiB9CiAKK21ldGhvZCBfbG9hZF9uZXdfY29tbWl0IHtuZXdfY29tbWl0IG5ld19wYXRoIGp1bXB9IHsKKwlsYXBwZW5kIGhpc3RvcnkgW2xpc3QgXAorCQkkY29tbWl0ICRwYXRoIFwKKwkJJGhpZ2hsaWdodF9jb2x1bW4gXAorCQkkaGlnaGxpZ2h0X2xpbmUgXAorCQlbbGluZGV4IFskd19maWxlIHh2aWV3XSAwXSBcCisJCVtsaW5kZXggWyR3X2ZpbGUgeXZpZXddIDBdIFwKKwkJXQorCisJc2V0IGNvbW1pdCAkbmV3X2NvbW1pdAorCXNldCBwYXRoICAgJG5ld19wYXRoCisJX2xvYWQgJHRoaXMgJGp1bXAKK30KKwogbWV0aG9kIF9zaG93Y29tbWl0IHtjdXJfdyBsbm99IHsKIAlnbG9iYWwgcmVwb19jb25maWcKIAl2YXJpYWJsZSBhY3RpdmVfY29sb3IKQEAgLTgzMiw2ICs5MTUsMTAgQEAKIAkJZm9yZWFjaCBpICR3X2NvbHVtbnMgewogCQkJJGkgdGFnIGNvbmYgZyRjbWl0IC1iYWNrZ3JvdW5kICRhY3RpdmVfY29sb3IKIAkJCSRpIHRhZyByYWlzZSBnJGNtaXQKKwkJCWlmIHskaSBlcSAkd19maWxlfSB7CisJCQkJJHdfZmlsZSB0YWcgcmFpc2UgZm91bmQKKwkJCX0KKwkJCSRpIHRhZyByYWlzZSBzZWwKIAkJfQogCiAJCXNldCBhdXRob3JfbmFtZSB7fQpAQCAtODUzLDkgKzk0MCw4IEBACiAJCQljYXRjaCB7CiAJCQkJc2V0IGZkIFtnaXRfcmVhZCBjYXQtZmlsZSBjb21taXQgJGNtaXRdCiAJCQkJZmNvbmZpZ3VyZSAkZmQgLWVuY29kaW5nIGJpbmFyeSAtdHJhbnNsYXRpb24gbGYKLQkJCQlpZiB7W2NhdGNoIHtzZXQgZW5jICRyZXBvX2NvbmZpZyhpMThuLmNvbW1pdGVuY29kaW5nKX1dfSB7Ci0JCQkJCXNldCBlbmMgdXRmLTgKLQkJCQl9CisJCQkJIyBCeSBkZWZhdWx0IGNvbW1pdHMgYXJlIGFzc3VtZWQgdG8gYmUgaW4gdXRmLTgKKwkJCQlzZXQgZW5jIHV0Zi04CiAJCQkJd2hpbGUge1tnZXRzICRmZCBsaW5lXSA+IDB9IHsKIAkJCQkJaWYge1tzdHJpbmcgbWF0Y2gge2VuY29kaW5nICp9ICRsaW5lXX0gewogCQkJCQkJc2V0IGVuYyBbc3RyaW5nIHRvbG93ZXIgW3N0cmluZyByYW5nZSAkbGluZSA5IGVuZF1dCkBAIC04NjcsMTIgKzk1Myw2IEBACiAJCQkJc2V0IGVuYyBbdGNsX2VuY29kaW5nICRlbmNdCiAJCQkJaWYgeyRlbmMgbmUge319IHsKIAkJCQkJc2V0IG1zZyBbZW5jb2RpbmcgY29udmVydGZyb20gJGVuYyAkbXNnXQotCQkJCQlzZXQgYXV0aG9yX25hbWUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRlbmMgJGF1dGhvcl9uYW1lXQotCQkJCQlzZXQgY29tbWl0dGVyX25hbWUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRlbmMgJGNvbW1pdHRlcl9uYW1lXQotCQkJCQlzZXQgaGVhZGVyKCRjbWl0LGF1dGhvcikgJGF1dGhvcl9uYW1lCi0JCQkJCXNldCBoZWFkZXIoJGNtaXQsY29tbWl0dGVyKSAkY29tbWl0dGVyX25hbWUKLQkJCQkJc2V0IGhlYWRlcigkY21pdCxzdW1tYXJ5KSBcCi0JCQkJCVtlbmNvZGluZyBjb252ZXJ0ZnJvbSAkZW5jICRoZWFkZXIoJGNtaXQsc3VtbWFyeSldCiAJCQkJfQogCQkJCXNldCBtc2cgW3N0cmluZyB0cmltICRtc2ddCiAJCQl9CkBAIC05MDUsMTAgKzk4NSwxNCBAQAogCX0KIH0KIAotbWV0aG9kIF9jb3B5Y29tbWl0IHt9IHsKK21ldGhvZCBfZ2V0X2NsaWNrX2Ftb3ZfaW5mbyB7fSB7CiAJc2V0IHBvcyBAJDo6Y3Vyc29yWCwkOjpjdXJzb3JZCiAJc2V0IGxubyBbbGluZGV4IFtzcGxpdCBbJDo6Y3Vyc29yVyBpbmRleCAkcG9zXSAuXSAwXQotCXNldCBkYXQgW2xpbmRleCAkYW1vdl9kYXRhICRsbm9dCisJcmV0dXJuIFtsaW5kZXggJGFtb3ZfZGF0YSAkbG5vXQorfQorCittZXRob2QgX2NvcHljb21taXQge30geworCXNldCBkYXQgW19nZXRfY2xpY2tfYW1vdl9pbmZvICR0aGlzXQogCWlmIHskZGF0IG5lIHt9fSB7CiAJCWNsaXBib2FyZCBjbGVhcgogCQljbGlwYm9hcmQgYXBwZW5kIFwKQEAgLTkxOCw2ICsxMDAyLDE0NyBAQAogCX0KIH0KIAorbWV0aG9kIF9mb3JtYXRfb2Zmc2V0X2RhdGUge2Jhc2Ugb2Zmc2V0fSB7CisJc2V0IGV4dmFsIFtleHByIHskYmFzZSArICRvZmZzZXQqMjQqNjAqNjB9XQorCXJldHVybiBbY2xvY2sgZm9ybWF0ICRleHZhbCAtZm9ybWF0IHslWS0lbS0lZH1dCit9CisKK21ldGhvZCBfZ2l0a2NvbW1pdCB7fSB7CisJZ2xvYmFsIG51bGxpZAorCisJc2V0IGRhdCBbX2dldF9jbGlja19hbW92X2luZm8gJHRoaXNdCisJaWYgeyRkYXQgbmUge319IHsKKwkJc2V0IGNtaXQgW2xpbmRleCAkZGF0IDBdCisKKwkJIyBJZiB0aGUgbGluZSBiZWxvbmdzIHRvIHRoZSB3b3JraW5nIGNvcHksIHVzZSBIRUFEIGluc3RlYWQKKwkJaWYgeyRjbWl0IGVxICRudWxsaWR9IHsKKwkJCWlmIHtbY2F0Y2gge3NldCBjbWl0IFtnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQURdfSBlcnJdfSB7CisJCQkJZXJyb3JfcG9wdXAgW3N0cmNhdCBbbWMgIkNhbm5vdCBmaW5kIEhFQUQgY29tbWl0OiJdICJcblxuJGVyciJdCisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJc2V0IHJhZGl1cyBbZ2V0X2NvbmZpZyBndWkuYmxhbWVoaXN0b3J5Y3R4XQorCQlzZXQgY21kbGluZSBbbGlzdCAtLXNlbGVjdC1jb21taXQ9JGNtaXRdCisKKyAgICAgICAgICAgICAgICBpZiB7JHJhZGl1cyA+IDB9IHsKKwkJCXNldCBhdXRob3JfdGltZSB7fQorCQkJc2V0IGNvbW1pdHRlcl90aW1lIHt9CisKKwkJCWNhdGNoIHtzZXQgYXV0aG9yX3RpbWUgJGhlYWRlcigkY21pdCxhdXRob3ItdGltZSl9CisJCQljYXRjaCB7c2V0IGNvbW1pdHRlcl90aW1lICRoZWFkZXIoJGNtaXQsY29tbWl0dGVyLXRpbWUpfQorCisJCQlpZiB7JGNvbW1pdHRlcl90aW1lIGVxIHt9fSB7CisJCQkJc2V0IGNvbW1pdHRlcl90aW1lICRhdXRob3JfdGltZQorCQkJfQorCisJCQlzZXQgYWZ0ZXJfdGltZSBbX2Zvcm1hdF9vZmZzZXRfZGF0ZSAkdGhpcyAkY29tbWl0dGVyX3RpbWUgW2V4cHIgey0kcmFkaXVzfV1dCisJCQlzZXQgYmVmb3JlX3RpbWUgW19mb3JtYXRfb2Zmc2V0X2RhdGUgJHRoaXMgJGNvbW1pdHRlcl90aW1lICRyYWRpdXNdCisKKwkJCWxhcHBlbmQgY21kbGluZSAtLWFmdGVyPSRhZnRlcl90aW1lIC0tYmVmb3JlPSRiZWZvcmVfdGltZQorCQl9CisKKwkJbGFwcGVuZCBjbWRsaW5lICRjbWl0CisKKwkJc2V0IGJhc2VfcmV2ICJIRUFEIgorCQlpZiB7JGNvbW1pdCBuZSB7fX0geworCQkJc2V0IGJhc2VfcmV2ICRjb21taXQKKwkJfQorCisJCWlmIHskYmFzZV9yZXYgbmUgJGNtaXR9IHsKKwkJCWxhcHBlbmQgY21kbGluZSAkYmFzZV9yZXYKKwkJfQorCisJCWRvX2dpdGsgJGNtZGxpbmUKKwl9Cit9CisKK21ldGhvZCBfYmxhbWVwYXJlbnQge30geworCWdsb2JhbCBudWxsaWQKKworCXNldCBkYXQgW19nZXRfY2xpY2tfYW1vdl9pbmZvICR0aGlzXQorCWlmIHskZGF0IG5lIHt9fSB7CisJCXNldCBjbWl0IFtsaW5kZXggJGRhdCAwXQorCQlzZXQgbmV3X3BhdGggW2xpbmRleCAkZGF0IDFdCisKKwkJIyBBbGxvdyB1c2luZyBCbGFtZSBQYXJlbnQgb24gbGluZXMgbW9kaWZpZWQgaW4gdGhlIHdvcmtpbmcgY29weQorCQlpZiB7JGNtaXQgZXEgJG51bGxpZH0geworCQkJc2V0IHBhcmVudF9yZWYgIkhFQUQiCisJCX0gZWxzZSB7CisJCQlzZXQgcGFyZW50X3JlZiAiJGNtaXReIgorCQl9CisJCWlmIHtbY2F0Y2gge3NldCBjcGFyZW50IFtnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICRwYXJlbnRfcmVmXX0gZXJyXX0geworCQkJZXJyb3JfcG9wdXAgW3N0cmNhdCBbbWMgIkNhbm5vdCBmaW5kIHBhcmVudCBjb21taXQ6Il0gIlxuXG4kZXJyIl0KKwkJCXJldHVybjsKKwkJfQorCisJCV9raWxsICR0aGlzCisKKwkJIyBHZW5lcmF0ZSBhIGRpZmYgYmV0d2VlbiB0aGUgY29tbWl0IGFuZCBpdHMgcGFyZW50LAorCQkjIGFuZCB1c2UgdGhlIGh1bmtzIHRvIHVwZGF0ZSB0aGUgbGluZSBudW1iZXIuCisJCSMgUmVxdWVzdCB6ZXJvIGNvbnRleHQgdG8gc2ltcGxpZnkgY2FsY3VsYXRpb25zLgorCQlpZiB7JGNtaXQgZXEgJG51bGxpZH0geworCQkJc2V0IGRpZmZjbWQgW2xpc3QgZGlmZi1pbmRleCAtLXVuaWZpZWQ9MCAkY3BhcmVudCAtLSAkbmV3X3BhdGhdCisJCX0gZWxzZSB7CisJCQlzZXQgZGlmZmNtZCBbbGlzdCBkaWZmLXRyZWUgLS11bmlmaWVkPTAgJGNwYXJlbnQgJGNtaXQgLS0gJG5ld19wYXRoXQorCQl9CisJCWlmIHtbY2F0Y2gge3NldCBmZCBbZXZhbCBnaXRfcmVhZCAkZGlmZmNtZF19IGVycl19IHsKKwkJCSRzdGF0dXMgc3RvcCBbbWMgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCJdCisJCQllcnJvcl9wb3B1cCBbc3RyY2F0IFttYyAiRXJyb3IgbG9hZGluZyBkaWZmOiJdICJcblxuJGVyciJdCisJCQlyZXR1cm4KKwkJfQorCisJCXNldCByX29yaWdfbGluZSBbbGluZGV4ICRkYXQgMl0KKworCQlmY29uZmlndXJlICRmZCBcCisJCQktYmxvY2tpbmcgMCBcCisJCQktZW5jb2RpbmcgYmluYXJ5IFwKKwkJCS10cmFuc2xhdGlvbiBiaW5hcnkKKwkJZmlsZWV2ZW50ICRmZCByZWFkYWJsZSBbY2IgX3JlYWRfZGlmZl9sb2FkX2NvbW1pdCBcCisJCQkkZmQgJGNwYXJlbnQgJG5ld19wYXRoICRyX29yaWdfbGluZV0KKwkJc2V0IGN1cnJlbnRfZmQgJGZkCisJfQorfQorCittZXRob2QgX3JlYWRfZGlmZl9sb2FkX2NvbW1pdCB7ZmQgY3BhcmVudCBuZXdfcGF0aCB0bGluZX0geworCWlmIHskZmQgbmUgJGN1cnJlbnRfZmR9IHsKKwkJY2F0Y2gge2Nsb3NlICRmZH0KKwkJcmV0dXJuCisJfQorCisJd2hpbGUge1tnZXRzICRmZCBsaW5lXSA+PSAwfSB7CisJCWlmIHtbcmVnZXhwIHteQEAgLShcZCspKCwoXGQrKSk/IFwrKFxkKykoLChcZCspKT8gQEB9ICRsaW5lIGxpbmUgXAorCQkJb2xkX2xpbmUgb3N6IG9sZF9zaXplIG5ld19saW5lIG5zeiBuZXdfc2l6ZV19IHsKKworCQkJaWYgeyRvc3ogZXEge319IHsgc2V0IG9sZF9zaXplIDEgfQorCQkJaWYgeyRuc3ogZXEge319IHsgc2V0IG5ld19zaXplIDEgfQorCisJCQlpZiB7JG5ld19saW5lIDw9ICR0bGluZX0geworCQkJCWlmIHtbZXhwciB7JG5ld19saW5lICsgJG5ld19zaXplfV0gPiAkdGxpbmV9IHsKKwkJCQkJIyBUYXJnZXQgbGluZSB3aXRoaW4gdGhlIGh1bmsKKwkJCQkJc2V0IGxpbmVfc2hpZnQgW2V4cHIgeworCQkJCQkJKCRuZXdfc2l6ZS0kb2xkX3NpemUpKigkdGxpbmUtJG5ld19saW5lKS8kbmV3X3NpemUKKwkJCQkJCX1dCisJCQkJfSBlbHNlIHsKKwkJCQkJc2V0IGxpbmVfc2hpZnQgW2V4cHIgeyRuZXdfc2l6ZS0kb2xkX3NpemV9XQorCQkJCX0KKworCQkJCXNldCByX29yaWdfbGluZSBbZXhwciB7JHJfb3JpZ19saW5lIC0gJGxpbmVfc2hpZnR9XQorCQkJfQorCQl9CisJfQorCisJaWYge1tlb2YgJGZkXX0geworCQljbG9zZSAkZmQ7CisJCXNldCBjdXJyZW50X2ZkIHt9CisKKwkJX2xvYWRfbmV3X2NvbW1pdCAkdGhpcyAgXAorCQkJJGNwYXJlbnQgICAgICAgIFwKKwkJCSRuZXdfcGF0aCAgICAgICBcCisJCQlbbGlzdCAkcl9vcmlnX2xpbmVdCisJfQorfSBpZmRlbGV0ZWQgeyBjYXRjaCB7Y2xvc2UgJGZkfSB9CisKIG1ldGhvZCBfc2hvd190b29sdGlwIHtjdXJfdyBwb3N9IHsKIAlpZiB7JHRvb2x0aXBfd20gbmUge319IHsKIAkJX29wZW5fdG9vbHRpcCAkdGhpcyAkY3VyX3cKZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL2Jyb3dzZXIudGNsIGIvZ2l0LWd1aS9saWIvYnJvd3Nlci50Y2wKaW5kZXggYWI0NzBkMS4uMDQxMGNjNiAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvYnJvd3Nlci50Y2wKKysrIGIvZ2l0LWd1aS9saWIvYnJvd3Nlci50Y2wKQEAgLTE1MSw3ICsxNTEsNyBAQAogCQkJCWFwcGVuZCBwIFtsaW5kZXggJG4gMV0KIAkJCX0KIAkJCWFwcGVuZCBwICRuYW1lCi0JCQlibGFtZTo6bmV3ICRicm93c2VyX2NvbW1pdCAkcAorCQkJYmxhbWU6Om5ldyAkYnJvd3Nlcl9jb21taXQgJHAge30KIAkJfQogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsIGIvZ2l0LWd1aS9saWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsCmluZGV4IDMxODA3ODYuLmY5ZmY2MmEgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbAorKysgYi9naXQtZ3VpL2xpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2wKQEAgLTQzLDEyICs0MywxOCBAQAogCQkJJHcubWJhci5hcHBsZSBhZGQgY29tbWFuZCBcCiAJCQkJLWxhYmVsIFttYyAiQWJvdXQgJXMiIFthcHBuYW1lXV0gXAogCQkJCS1jb21tYW5kIGRvX2Fib3V0CisJCQkkdy5tYmFyLmFwcGxlIGFkZCBjb21tYW5kIFwKKwkJCQktbGFiZWwgW21jICJTaG93IFNTSCBLZXkiXSBcCisJCQkJLWNvbW1hbmQgZG9fc3NoX2tleQogCQl9IGVsc2UgewogCQkJJHcubWJhciBhZGQgY2FzY2FkZSAtbGFiZWwgW21jIEhlbHBdIC1tZW51ICR3Lm1iYXIuaGVscAogCQkJbWVudSAkdy5tYmFyLmhlbHAKIAkJCSR3Lm1iYXIuaGVscCBhZGQgY29tbWFuZCBcCiAJCQkJLWxhYmVsIFttYyAiQWJvdXQgJXMiIFthcHBuYW1lXV0gXAogCQkJCS1jb21tYW5kIGRvX2Fib3V0CisJCQkkdy5tYmFyLmhlbHAgYWRkIGNvbW1hbmQgXAorCQkJCS1sYWJlbCBbbWMgIlNob3cgU1NIIEtleSJdIFwKKwkJCQktY29tbWFuZCBkb19zc2hfa2V5CiAJCX0KIAogCQl3bSBwcm90b2NvbCAkdG9wIFdNX0RFTEVURV9XSU5ET1cgZXhpdApAQCAtMzgxLDcgKzM4Nyw4IEBACiAJbGFiZWwgJHdfYm9keS53aGVyZS5sIC10ZXh0IFttYyAiRGlyZWN0b3J5OiJdCiAJZW50cnkgJHdfYm9keS53aGVyZS50IFwKIAkJLXRleHR2YXJpYWJsZSBAbG9jYWxfcGF0aCBcCi0JCS1mb250IGZvbnRfZGlmZiBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAogCQktd2lkdGggNTAKIAlidXR0b24gJHdfYm9keS53aGVyZS5iIFwKIAkJLXRleHQgW21jICJCcm93c2UiXSBcCkBAIC00NjMsMjAgKzQ3MCwyMiBAQAogCWZyYW1lICR3X2JvZHkuYXJncwogCXBhY2sgJGFyZ3MgLWZpbGwgYm90aAogCi0JbGFiZWwgJGFyZ3Mub3JpZ2luX2wgLXRleHQgW21jICJVUkw6Il0KKwlsYWJlbCAkYXJncy5vcmlnaW5fbCAtdGV4dCBbbWMgIlNvdXJjZSBMb2NhdGlvbjoiXQogCWVudHJ5ICRhcmdzLm9yaWdpbl90IFwKIAkJLXRleHR2YXJpYWJsZSBAb3JpZ2luX3VybCBcCi0JCS1mb250IGZvbnRfZGlmZiBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAogCQktd2lkdGggNTAKIAlidXR0b24gJGFyZ3Mub3JpZ2luX2IgXAogCQktdGV4dCBbbWMgIkJyb3dzZSJdIFwKIAkJLWNvbW1hbmQgW2NiIF9vcGVuX29yaWdpbl0KIAlncmlkICRhcmdzLm9yaWdpbl9sICRhcmdzLm9yaWdpbl90ICRhcmdzLm9yaWdpbl9iIC1zdGlja3kgZXcKIAotCWxhYmVsICRhcmdzLndoZXJlX2wgLXRleHQgW21jICJEaXJlY3Rvcnk6Il0KKwlsYWJlbCAkYXJncy53aGVyZV9sIC10ZXh0IFttYyAiVGFyZ2V0IERpcmVjdG9yeToiXQogCWVudHJ5ICRhcmdzLndoZXJlX3QgXAogCQktdGV4dHZhcmlhYmxlIEBsb2NhbF9wYXRoIFwKLQkJLWZvbnQgZm9udF9kaWZmIFwKKwkJLWJvcmRlcndpZHRoIDEgXAorCQktcmVsaWVmIHN1bmtlbiBcCiAJCS13aWR0aCA1MAogCWJ1dHRvbiAkYXJncy53aGVyZV9iIFwKIAkJLXRleHQgW21jICJCcm93c2UiXSBcCkBAIC05NzksNyArOTg4LDggQEAKIAlsYWJlbCAkd19ib2R5LndoZXJlLmwgLXRleHQgW21jICJSZXBvc2l0b3J5OiJdCiAJZW50cnkgJHdfYm9keS53aGVyZS50IFwKIAkJLXRleHR2YXJpYWJsZSBAbG9jYWxfcGF0aCBcCi0JCS1mb250IGZvbnRfZGlmZiBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAogCQktd2lkdGggNTAKIAlidXR0b24gJHdfYm9keS53aGVyZS5iIFwKIAkJLXRleHQgW21jICJCcm93c2UiXSBcCmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9jb21taXQudGNsIGIvZ2l0LWd1aS9saWIvY29tbWl0LnRjbAppbmRleCA0MGE3MTAzLi45Y2M4NDEwIDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9jb21taXQudGNsCisrKyBiL2dpdC1ndWkvbGliL2NvbW1pdC50Y2wKQEAgLTI3LDkgKzI3LDggQEAKIAlpZiB7W2NhdGNoIHsKIAkJCXNldCBmZCBbZ2l0X3JlYWQgY2F0LWZpbGUgY29tbWl0ICRjdXJIRUFEXQogCQkJZmNvbmZpZ3VyZSAkZmQgLWVuY29kaW5nIGJpbmFyeSAtdHJhbnNsYXRpb24gbGYKLQkJCWlmIHtbY2F0Y2gge3NldCBlbmMgJHJlcG9fY29uZmlnKGkxOG4uY29tbWl0ZW5jb2RpbmcpfV19IHsKLQkJCQlzZXQgZW5jIHV0Zi04Ci0JCQl9CisJCQkjIEJ5IGRlZmF1bHQgY29tbWl0cyBhcmUgYXNzdW1lZCB0byBiZSBpbiB1dGYtOAorCQkJc2V0IGVuYyB1dGYtOAogCQkJd2hpbGUge1tnZXRzICRmZCBsaW5lXSA+IDB9IHsKIAkJCQlpZiB7W3N0cmluZyBtYXRjaCB7cGFyZW50ICp9ICRsaW5lXX0gewogCQkJCQlsYXBwZW5kIHBhcmVudHMgW3N0cmluZyByYW5nZSAkbGluZSA3IGVuZF0KQEAgLTE0OSw3ICsxNDgsOSBAQAogCQlfPyB7Y29udGludWV9CiAJCUE/IC0KIAkJRD8gLQorCQlUXyAtCiAJCU0/IHtzZXQgZmlsZXNfcmVhZHkgMX0KKwkJX1UgLQogCQlVPyB7CiAJCQllcnJvcl9wb3B1cCBbbWMgIlVubWVyZ2VkIGZpbGVzIGNhbm5vdCBiZSBjb21taXR0ZWQuCiAKQEAgLTE2Niw3ICsxNjcsNyBAQAogCQl9CiAJCX0KIAl9Ci0JaWYgeyEkZmlsZXNfcmVhZHkgJiYgIVtzdHJpbmcgbWF0Y2ggKm1lcmdlICRjdXJUeXBlXX0geworCWlmIHshJGZpbGVzX3JlYWR5ICYmICFbc3RyaW5nIG1hdGNoICptZXJnZSAkY3VyVHlwZV0gJiYgIVtpc19lbmFibGVkIG5vY29tbWl0XX0gewogCQlpbmZvX3BvcHVwIFttYyAiTm8gY2hhbmdlcyB0byBjb21taXQuCiAKIFlvdSBtdXN0IHN0YWdlIGF0IGxlYXN0IDEgZmlsZSBiZWZvcmUgeW91IGNhbiBjb21taXQuCkBAIC0xNzUsNiArMTc2LDggQEAKIAkJcmV0dXJuCiAJfQogCisJaWYge1tpc19lbmFibGVkIG5vY29tbWl0bXNnXX0geyBkb19xdWl0IDAgfQorCiAJIyAtLSBBIG1lc3NhZ2UgaXMgcmVxdWlyZWQuCiAJIwogCXNldCBtc2cgW3N0cmluZyB0cmltIFskdWlfY29tbSBnZXQgMS4wIGVuZF1dCkBAIC0yMDQsMTIgKzIwNywxNCBAQAogCWlmIHskdXNlX2VuYyBuZSB7fX0gewogCQlmY29uZmlndXJlICRtc2dfd3QgLWVuY29kaW5nICR1c2VfZW5jCiAJfSBlbHNlIHsKLQkJcHV0cyBzdGRlcnIgW21jICJ3YXJuaW5nOiBUY2wgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGluZyAnJXMnLiIgJGVuY10KKwkJZXJyb3JfcG9wdXAgW21jICJ3YXJuaW5nOiBUY2wgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGluZyAnJXMnLiIgJGVuY10KIAkJZmNvbmZpZ3VyZSAkbXNnX3d0IC1lbmNvZGluZyB1dGYtOAogCX0KIAlwdXRzICRtc2dfd3QgJG1zZwogCWNsb3NlICRtc2dfd3QKIAorCWlmIHtbaXNfZW5hYmxlZCBub2NvbW1pdF19IHsgZG9fcXVpdCAwIH0KKwogCSMgLS0gUnVuIHRoZSBwcmUtY29tbWl0IGhvb2suCiAJIwogCXNldCBmZF9waCBbZ2l0aG9va19yZWFkIHByZS1jb21taXRdCkBAIC00MDgsNyArNDEzLDcgQEAKIAkJc2V0IDo6R0lUR1VJX0JDS19leGlzdHMgMAogCX0KIAotCWlmIHtbaXNfZW5hYmxlZCBzaW5nbGVjb21taXRdfSBkb19xdWl0CisJaWYge1tpc19lbmFibGVkIHNpbmdsZWNvbW1pdF19IHsgZG9fcXVpdCAwIH0KIAogCSMgLS0gVXBkYXRlIGluIG1lbW9yeSBzdGF0dXMKIAkjCkBAIC00MjgsNiArNDMzLDcgQEAKIAkJX18gLQogCQlBXyAtCiAJCU1fIC0KKwkJVF8gLQogCQlEXyB7CiAJCQl1bnNldCBmaWxlX3N0YXRlcygkcGF0aCkKIAkJCWNhdGNoIHt1bnNldCBzZWxlY3RlZF9wYXRocygkcGF0aCl9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9kaWZmLnRjbCBiL2dpdC1ndWkvbGliL2RpZmYudGNsCmluZGV4IDE5NzBiNjAuLmJiYmYxNWMgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvbGliL2RpZmYudGNsCisrKyBiL2dpdC1ndWkvbGliL2RpZmYudGNsCkBAIC0xNiw3ICsxNiw3IEBACiAJJHVpX3dvcmtkaXIgdGFnIHJlbW92ZSBpbl9kaWZmIDAuMCBlbmQKIH0KIAotcHJvYyByZXNob3dfZGlmZiB7fSB7Citwcm9jIHJlc2hvd19kaWZmIHt7YWZ0ZXIge319fSB7CiAJZ2xvYmFsIGZpbGVfc3RhdGVzIGZpbGVfbGlzdHMKIAlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUKIAlnbG9iYWwgdWlfZGlmZgpAQCAtMjQsMTMgKzI0LDI4IEBACiAJc2V0IHAgJGN1cnJlbnRfZGlmZl9wYXRoCiAJaWYgeyRwIGVxIHt9fSB7CiAJCSMgTm8gZGlmZiBpcyBiZWluZyBzaG93bi4KLQl9IGVsc2VpZiB7JGN1cnJlbnRfZGlmZl9zaWRlIGVxIHt9Ci0JCXx8IFtjYXRjaCB7c2V0IHMgJGZpbGVfc3RhdGVzKCRwKX1dCi0JCXx8IFtsc2VhcmNoIC1zb3J0ZWQgLWV4YWN0ICRmaWxlX2xpc3RzKCRjdXJyZW50X2RpZmZfc2lkZSkgJHBdID09IC0xfSB7CisJfSBlbHNlaWYgeyRjdXJyZW50X2RpZmZfc2lkZSBlcSB7fX0gewogCQljbGVhcl9kaWZmCisJfSBlbHNlaWYge1tjYXRjaCB7c2V0IHMgJGZpbGVfc3RhdGVzKCRwKX1dCisJCXx8IFtsc2VhcmNoIC1zb3J0ZWQgLWV4YWN0ICRmaWxlX2xpc3RzKCRjdXJyZW50X2RpZmZfc2lkZSkgJHBdID09IC0xfSB7CisKKwkJaWYge1tmaW5kX25leHRfZGlmZiAkY3VycmVudF9kaWZmX3NpZGUgJHAge30ge1teT119XX0geworCQkJbmV4dF9kaWZmICRhZnRlcgorCQl9IGVsc2UgeworCQkJY2xlYXJfZGlmZgorCQl9CiAJfSBlbHNlIHsKIAkJc2V0IHNhdmVfcG9zIFtsaW5kZXggWyR1aV9kaWZmIHl2aWV3XSAwXQotCQlzaG93X2RpZmYgJHAgJGN1cnJlbnRfZGlmZl9zaWRlIHt9ICRzYXZlX3BvcworCQlzaG93X2RpZmYgJHAgJGN1cnJlbnRfZGlmZl9zaWRlIHt9ICRzYXZlX3BvcyAkYWZ0ZXIKKwl9Cit9CisKK3Byb2MgZm9yY2VfZGlmZl9lbmNvZGluZyB7ZW5jfSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoCisJCisJaWYgeyRjdXJyZW50X2RpZmZfcGF0aCBuZSB7fX0geworCQlmb3JjZV9wYXRoX2VuY29kaW5nICRjdXJyZW50X2RpZmZfcGF0aCAkZW5jCisJCXJlc2hvd19kaWZmCiAJfQogfQogCkBAIC01NCwxMSArNjksMTIgQEAKIAlyZXNjYW4gdWlfcmVhZHkgMAogfQogCi1wcm9jIHNob3dfZGlmZiB7cGF0aCB3IHtsbm8ge319IHtzY3JvbGxfcG9zIHt9fX0geworcHJvYyBzaG93X2RpZmYge3BhdGggdyB7bG5vIHt9fSB7c2Nyb2xsX3BvcyB7fX0ge2NhbGxiYWNrIHt9fX0gewogCWdsb2JhbCBmaWxlX3N0YXRlcyBmaWxlX2xpc3RzCi0JZ2xvYmFsIGlzXzN3YXlfZGlmZiBkaWZmX2FjdGl2ZSByZXBvX2NvbmZpZworCWdsb2JhbCBpc18zd2F5X2RpZmYgaXNfY29uZmxpY3RfZGlmZiBkaWZmX2FjdGl2ZSByZXBvX2NvbmZpZwogCWdsb2JhbCB1aV9kaWZmIHVpX2luZGV4IHVpX3dvcmtkaXIKIAlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUgY3VycmVudF9kaWZmX2hlYWRlcgorCWdsb2JhbCBjdXJyZW50X2RpZmZfcXVldWUKIAogCWlmIHskZGlmZl9hY3RpdmUgfHwgIVtsb2NrX2luZGV4IHJlYWRdfSByZXR1cm4KIApAQCAtNzEsMjEgKzg3LDg0IEBACiAJfQogCWlmIHskbG5vID49IDF9IHsKIAkJJHcgdGFnIGFkZCBpbl9kaWZmICRsbm8uMCBbZXhwciB7JGxubyArIDF9XS4wCisJCSR3IHNlZSAkbG5vLjAKIAl9CiAKIAlzZXQgcyAkZmlsZV9zdGF0ZXMoJHBhdGgpCiAJc2V0IG0gW2xpbmRleCAkcyAwXQotCXNldCBpc18zd2F5X2RpZmYgMAotCXNldCBkaWZmX2FjdGl2ZSAxCisJc2V0IGlzX2NvbmZsaWN0X2RpZmYgMAogCXNldCBjdXJyZW50X2RpZmZfcGF0aCAkcGF0aAogCXNldCBjdXJyZW50X2RpZmZfc2lkZSAkdwotCXNldCBjdXJyZW50X2RpZmZfaGVhZGVyIHt9CisJc2V0IGN1cnJlbnRfZGlmZl9xdWV1ZSB7fQogCXVpX3N0YXR1cyBbbWMgIkxvYWRpbmcgZGlmZiBvZiAlcy4uLiIgW2VzY2FwZV9wYXRoICRwYXRoXV0KIAorCXNldCBjb250X2luZm8gW2xpc3QgJHNjcm9sbF9wb3MgJGNhbGxiYWNrXQorCisJaWYge1tzdHJpbmcgZmlyc3Qge1V9ICRtXSA+PSAwfSB7CisJCW1lcmdlX2xvYWRfc3RhZ2VzICRwYXRoIFtsaXN0IHNob3dfdW5tZXJnZWRfZGlmZiAkY29udF9pbmZvXQorCX0gZWxzZWlmIHskbSBlcSB7X099fSB7CisJCXNob3dfb3RoZXJfZGlmZiAkcGF0aCAkdyAkbSAkY29udF9pbmZvCisJfSBlbHNlIHsKKwkJc3RhcnRfc2hvd19kaWZmICRjb250X2luZm8KKwl9Cit9CisKK3Byb2Mgc2hvd191bm1lcmdlZF9kaWZmIHtjb250X2luZm99IHsKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUKKwlnbG9iYWwgbWVyZ2Vfc3RhZ2VzIHVpX2RpZmYgaXNfY29uZmxpY3RfZGlmZgorCWdsb2JhbCBjdXJyZW50X2RpZmZfcXVldWUKKworCWlmIHskbWVyZ2Vfc3RhZ2VzKDIpIGVxIHt9fSB7CisJCXNldCBpc19jb25mbGljdF9kaWZmIDEKKwkJbGFwcGVuZCBjdXJyZW50X2RpZmZfcXVldWUgXAorCQkJW2xpc3QgW21jICJMT0NBTDogZGVsZXRlZFxuUkVNT1RFOlxuIl0gZD09PT09PT0gXAorCQkJICAgIFtsaXN0ICI6MTokY3VycmVudF9kaWZmX3BhdGgiICI6MzokY3VycmVudF9kaWZmX3BhdGgiXV0KKwl9IGVsc2VpZiB7JG1lcmdlX3N0YWdlcygzKSBlcSB7fX0geworCQlzZXQgaXNfY29uZmxpY3RfZGlmZiAxCisJCWxhcHBlbmQgY3VycmVudF9kaWZmX3F1ZXVlIFwKKwkJCVtsaXN0IFttYyAiUkVNT1RFOiBkZWxldGVkXG5MT0NBTDpcbiJdIGQ9PT09PT09IFwKKwkJCSAgICBbbGlzdCAiOjE6JGN1cnJlbnRfZGlmZl9wYXRoIiAiOjI6JGN1cnJlbnRfZGlmZl9wYXRoIl1dCisJfSBlbHNlaWYge1tsaW5kZXggJG1lcmdlX3N0YWdlcygxKSAwXSBlcSB7MTIwMDAwfQorCQl8fCBbbGluZGV4ICRtZXJnZV9zdGFnZXMoMikgMF0gZXEgezEyMDAwMH0KKwkJfHwgW2xpbmRleCAkbWVyZ2Vfc3RhZ2VzKDMpIDBdIGVxIHsxMjAwMDB9fSB7CisJCXNldCBpc19jb25mbGljdF9kaWZmIDEKKwkJbGFwcGVuZCBjdXJyZW50X2RpZmZfcXVldWUgXAorCQkJW2xpc3QgW21jICJMT0NBTDpcbiJdIGQ9PT09PT09IFwKKwkJCSAgICBbbGlzdCAiOjE6JGN1cnJlbnRfZGlmZl9wYXRoIiAiOjI6JGN1cnJlbnRfZGlmZl9wYXRoIl1dCisJCWxhcHBlbmQgY3VycmVudF9kaWZmX3F1ZXVlIFwKKwkJCVtsaXN0IFttYyAiUkVNT1RFOlxuIl0gZD09PT09PT0gXAorCQkJICAgIFtsaXN0ICI6MTokY3VycmVudF9kaWZmX3BhdGgiICI6MzokY3VycmVudF9kaWZmX3BhdGgiXV0KKwl9IGVsc2UgeworCQlzdGFydF9zaG93X2RpZmYgJGNvbnRfaW5mbworCQlyZXR1cm4KKwl9CisKKwlhZHZhbmNlX2RpZmZfcXVldWUgJGNvbnRfaW5mbworfQorCitwcm9jIGFkdmFuY2VfZGlmZl9xdWV1ZSB7Y29udF9pbmZvfSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9xdWV1ZSB1aV9kaWZmCisKKwlzZXQgaXRlbSBbbGluZGV4ICRjdXJyZW50X2RpZmZfcXVldWUgMF0KKwlzZXQgY3VycmVudF9kaWZmX3F1ZXVlIFtscmFuZ2UgJGN1cnJlbnRfZGlmZl9xdWV1ZSAxIGVuZF0KKworCSR1aV9kaWZmIGNvbmYgLXN0YXRlIG5vcm1hbAorCSR1aV9kaWZmIGluc2VydCBlbmQgW2xpbmRleCAkaXRlbSAwXSBbbGluZGV4ICRpdGVtIDFdCisJJHVpX2RpZmYgY29uZiAtc3RhdGUgZGlzYWJsZWQKKworCXN0YXJ0X3Nob3dfZGlmZiAkY29udF9pbmZvIFtsaW5kZXggJGl0ZW0gMl0KK30KKworcHJvYyBzaG93X290aGVyX2RpZmYge3BhdGggdyBtIGNvbnRfaW5mb30geworCWdsb2JhbCBmaWxlX3N0YXRlcyBmaWxlX2xpc3RzCisJZ2xvYmFsIGlzXzN3YXlfZGlmZiBkaWZmX2FjdGl2ZSByZXBvX2NvbmZpZworCWdsb2JhbCB1aV9kaWZmIHVpX2luZGV4IHVpX3dvcmtkaXIKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUgY3VycmVudF9kaWZmX2hlYWRlcgorCiAJIyAtIEdpdCB3b24ndCBnaXZlIHVzIHRoZSBkaWZmLCB0aGVyZSdzIG5vdGhpbmcgdG8gY29tcGFyZSB0byEKIAkjCiAJaWYgeyRtIGVxIHtfT319IHsKLQkJc2V0IG1heF9zeiBbZXhwciB7MTI4ICogMTAyNH1dCisJCXNldCBtYXhfc3ogMTAwMDAwCiAJCXNldCB0eXBlIHVua25vd24KIAkJaWYge1tjYXRjaCB7CiAJCQkJc2V0IHR5cGUgW2ZpbGUgdHlwZSAkcGF0aF0KQEAgLTEwMSw3ICsxODAsOSBAQAogCQkJCX0KIAkJCQlmaWxlIHsKIAkJCQkJc2V0IGZkIFtvcGVuICRwYXRoIHJdCi0JCQkJCWZjb25maWd1cmUgJGZkIC1lb2ZjaGFyIHt9CisJCQkJCWZjb25maWd1cmUgJGZkIFwKKwkJCQkJCS1lb2ZjaGFyIHt9IFwKKwkJCQkJCS1lbmNvZGluZyBbZ2V0X3BhdGhfZW5jb2RpbmcgJHBhdGhdCiAJCQkJCXNldCBjb250ZW50IFtyZWFkICRmZCAkbWF4X3N6XQogCQkJCQljbG9zZSAkZmQKIAkJCQkJc2V0IHN6IFtmaWxlIHNpemUgJHBhdGhdCkBAIC0xMzcsMzYgKzIxOCw1NyBAQAogCQkJCWRfQAogCQl9IGVsc2UgewogCQkJaWYgeyRzeiA+ICRtYXhfc3p9IHsKLQkJCQkkdWlfZGlmZiBpbnNlcnQgZW5kIFwKLSIqIFVudHJhY2tlZCBmaWxlIGlzICRzeiBieXRlcy4KLSogU2hvd2luZyBvbmx5IGZpcnN0ICRtYXhfc3ogYnl0ZXMuCi0iIGRfQAorCQkJCSR1aV9kaWZmIGluc2VydCBlbmQgW21jIFwKKyIqIFVudHJhY2tlZCBmaWxlIGlzICVkIGJ5dGVzLgorKiBTaG93aW5nIG9ubHkgZmlyc3QgJWQgYnl0ZXMuCisiICRzeiAkbWF4X3N6XSBkX0AKIAkJCX0KIAkJCSR1aV9kaWZmIGluc2VydCBlbmQgJGNvbnRlbnQKIAkJCWlmIHskc3ogPiAkbWF4X3N6fSB7Ci0JCQkJJHVpX2RpZmYgaW5zZXJ0IGVuZCAiCi0qIFVudHJhY2tlZCBmaWxlIGNsaXBwZWQgaGVyZSBieSBbYXBwbmFtZV0uCisJCQkJJHVpX2RpZmYgaW5zZXJ0IGVuZCBbbWMgIgorKiBVbnRyYWNrZWQgZmlsZSBjbGlwcGVkIGhlcmUgYnkgJXMuCiAqIFRvIHNlZSB0aGUgZW50aXJlIGZpbGUsIHVzZSBhbiBleHRlcm5hbCBlZGl0b3IuCi0iIGRfQAorIiBbYXBwbmFtZV1dIGRfQAogCQkJfQogCQl9CiAJCSR1aV9kaWZmIGNvbmYgLXN0YXRlIGRpc2FibGVkCiAJCXNldCBkaWZmX2FjdGl2ZSAwCiAJCXVubG9ja19pbmRleAorCQlzZXQgc2Nyb2xsX3BvcyBbbGluZGV4ICRjb250X2luZm8gMF0KIAkJaWYgeyRzY3JvbGxfcG9zIG5lIHt9fSB7CiAJCQl1cGRhdGUKIAkJCSR1aV9kaWZmIHl2aWV3IG1vdmV0byAkc2Nyb2xsX3BvcwogCQl9CiAJCXVpX3JlYWR5CisJCXNldCBjYWxsYmFjayBbbGluZGV4ICRjb250X2luZm8gMV0KKwkJaWYgeyRjYWxsYmFjayBuZSB7fX0geworCQkJZXZhbCAkY2FsbGJhY2sKKwkJfQogCQlyZXR1cm4KIAl9Cit9CisKK3Byb2Mgc3RhcnRfc2hvd19kaWZmIHtjb250X2luZm8ge2FkZF9vcHRzIHt9fX0geworCWdsb2JhbCBmaWxlX3N0YXRlcyBmaWxlX2xpc3RzCisJZ2xvYmFsIGlzXzN3YXlfZGlmZiBkaWZmX2FjdGl2ZSByZXBvX2NvbmZpZworCWdsb2JhbCB1aV9kaWZmIHVpX2luZGV4IHVpX3dvcmtkaXIKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggY3VycmVudF9kaWZmX3NpZGUgY3VycmVudF9kaWZmX2hlYWRlcgorCisJc2V0IHBhdGggJGN1cnJlbnRfZGlmZl9wYXRoCisJc2V0IHcgJGN1cnJlbnRfZGlmZl9zaWRlCisKKwlzZXQgcyAkZmlsZV9zdGF0ZXMoJHBhdGgpCisJc2V0IG0gW2xpbmRleCAkcyAwXQorCXNldCBpc18zd2F5X2RpZmYgMAorCXNldCBkaWZmX2FjdGl2ZSAxCisJc2V0IGN1cnJlbnRfZGlmZl9oZWFkZXIge30KIAogCXNldCBjbWQgW2xpc3RdCiAJaWYgeyR3IGVxICR1aV9pbmRleH0gewogCQlsYXBwZW5kIGNtZCBkaWZmLWluZGV4CiAJCWxhcHBlbmQgY21kIC0tY2FjaGVkCiAJfSBlbHNlaWYgeyR3IGVxICR1aV93b3JrZGlyfSB7Ci0JCWlmIHtbc3RyaW5nIGluZGV4ICRtIDBdIGVxIHtVfX0geworCQlpZiB7W3N0cmluZyBmaXJzdCB7VX0gJG1dID49IDB9IHsKIAkJCWxhcHBlbmQgY21kIGRpZmYKIAkJfSBlbHNlIHsKIAkJCWxhcHBlbmQgY21kIGRpZmYtZmlsZXMKQEAgLTE4MSw4ICsyODMsMTIgQEAKIAlpZiB7JHcgZXEgJHVpX2luZGV4fSB7CiAJCWxhcHBlbmQgY21kIFtQQVJFTlRdCiAJfQotCWxhcHBlbmQgY21kIC0tCi0JbGFwcGVuZCBjbWQgJHBhdGgKKwlpZiB7JGFkZF9vcHRzIG5lIHt9fSB7CisJCWV2YWwgbGFwcGVuZCBjbWQgJGFkZF9vcHRzCisJfSBlbHNlIHsKKwkJbGFwcGVuZCBjbWQgLS0KKwkJbGFwcGVuZCBjbWQgJHBhdGgKKwl9CiAKIAlpZiB7W2NhdGNoIHtzZXQgZmQgW2V2YWwgZ2l0X3JlYWQgLS1uaWNlICRjbWRdfSBlcnJdfSB7CiAJCXNldCBkaWZmX2FjdGl2ZSAwCkBAIC0xOTUsMTQgKzMwMSwxNSBAQAogCXNldCA6OmN1cnJlbnRfZGlmZl9pbmhlYWRlciAxCiAJZmNvbmZpZ3VyZSAkZmQgXAogCQktYmxvY2tpbmcgMCBcCi0JCS1lbmNvZGluZyBiaW5hcnkgXAotCQktdHJhbnNsYXRpb24gYmluYXJ5Ci0JZmlsZWV2ZW50ICRmZCByZWFkYWJsZSBbbGlzdCByZWFkX2RpZmYgJGZkICRzY3JvbGxfcG9zXQorCQktZW5jb2RpbmcgW2dldF9wYXRoX2VuY29kaW5nICRwYXRoXSBcCisJCS10cmFuc2xhdGlvbiBsZgorCWZpbGVldmVudCAkZmQgcmVhZGFibGUgW2xpc3QgcmVhZF9kaWZmICRmZCAkY29udF9pbmZvXQogfQogCi1wcm9jIHJlYWRfZGlmZiB7ZmQgc2Nyb2xsX3Bvc30geworcHJvYyByZWFkX2RpZmYge2ZkIGNvbnRfaW5mb30gewogCWdsb2JhbCB1aV9kaWZmIGRpZmZfYWN0aXZlCi0JZ2xvYmFsIGlzXzN3YXlfZGlmZiBjdXJyZW50X2RpZmZfaGVhZGVyCisJZ2xvYmFsIGlzXzN3YXlfZGlmZiBpc19jb25mbGljdF9kaWZmIGN1cnJlbnRfZGlmZl9oZWFkZXIKKwlnbG9iYWwgY3VycmVudF9kaWZmX3F1ZXVlCiAKIAkkdWlfZGlmZiBjb25mIC1zdGF0ZSBub3JtYWwKIAl3aGlsZSB7W2dldHMgJGZkIGxpbmVdID49IDB9IHsKQEAgLTI0OSw2ICszNTYsNyBAQAogCQkJey0tfSB7c2V0IHRhZ3MgZF8tLX0KIAkJCXsrK30gewogCQkJCWlmIHtbcmVnZXhwIHteXCtcKyhbPD5dezd9IHw9ezd9KX0gJGxpbmUgX2cgb3BdfSB7CisJCQkJCXNldCBpc19jb25mbGljdF9kaWZmIDEKIAkJCQkJc2V0IGxpbmUgW3N0cmluZyByZXBsYWNlICRsaW5lIDAgMSB7ICB9XQogCQkJCQlzZXQgdGFncyBkJG9wCiAJCQkJfSBlbHNlIHsKQEAgLTI2OCw3ICszNzYsNyBAQAogCQkJey19IHtzZXQgdGFncyBkXy19CiAJCQl7K30gewogCQkJCWlmIHtbcmVnZXhwIHteXCsoWzw+XXs3fSB8PXs3fSl9ICRsaW5lIF9nIG9wXX0gewotCQkJCQlzZXQgbGluZSBbc3RyaW5nIHJlcGxhY2UgJGxpbmUgMCAwIHsgfV0KKwkJCQkJc2V0IGlzX2NvbmZsaWN0X2RpZmYgMQogCQkJCQlzZXQgdGFncyBkJG9wCiAJCQkJfSBlbHNlIHsKIAkJCQkJc2V0IHRhZ3MgZF8rCkBAIC0yOTAsOCArMzk4LDE1IEBACiAKIAlpZiB7W2VvZiAkZmRdfSB7CiAJCWNsb3NlICRmZAorCisJCWlmIHskY3VycmVudF9kaWZmX3F1ZXVlIG5lIHt9fSB7CisJCQlhZHZhbmNlX2RpZmZfcXVldWUgJGNvbnRfaW5mbworCQkJcmV0dXJuCisJCX0KKwogCQlzZXQgZGlmZl9hY3RpdmUgMAogCQl1bmxvY2tfaW5kZXgKKwkJc2V0IHNjcm9sbF9wb3MgW2xpbmRleCAkY29udF9pbmZvIDBdCiAJCWlmIHskc2Nyb2xsX3BvcyBuZSB7fX0gewogCQkJdXBkYXRlCiAJCQkkdWlfZGlmZiB5dmlldyBtb3ZldG8gJHNjcm9sbF9wb3MKQEAgLTMwMSw2ICs0MTYsMTAgQEAKIAkJaWYge1skdWlfZGlmZiBpbmRleCBlbmRdIGVxIHsyLjB9fSB7CiAJCQloYW5kbGVfZW1wdHlfZGlmZgogCQl9CisJCXNldCBjYWxsYmFjayBbbGluZGV4ICRjb250X2luZm8gMV0KKwkJaWYgeyRjYWxsYmFjayBuZSB7fX0geworCQkJZXZhbCAkY2FsbGJhY2sKKwkJfQogCX0KIH0KIApAQCAtMzQxLDggKzQ2MCw5IEBACiAJfQogCiAJaWYge1tjYXRjaCB7CisJCXNldCBlbmMgW2dldF9wYXRoX2VuY29kaW5nICRjdXJyZW50X2RpZmZfcGF0aF0KIAkJc2V0IHAgW2V2YWwgZ2l0X3dyaXRlICRhcHBseV9jbWRdCi0JCWZjb25maWd1cmUgJHAgLXRyYW5zbGF0aW9uIGJpbmFyeSAtZW5jb2RpbmcgYmluYXJ5CisJCWZjb25maWd1cmUgJHAgLXRyYW5zbGF0aW9uIGJpbmFyeSAtZW5jb2RpbmcgJGVuYwogCQlwdXRzIC1ub25ld2xpbmUgJHAgJGN1cnJlbnRfZGlmZl9oZWFkZXIKIAkJcHV0cyAtbm9uZXdsaW5lICRwIFskdWlfZGlmZiBnZXQgJHNfbG5vICRlX2xub10KIAkJY2xvc2UgJHB9IGVycl19IHsKQEAgLTM3MCwxMCArNDkwLDkgQEAKIAl9CiAJdW5sb2NrX2luZGV4CiAJZGlzcGxheV9maWxlICRjdXJyZW50X2RpZmZfcGF0aCAkbWkKKwkjIFRoaXMgc2hvdWxkIHRyaWdnZXIgc2hpZnQgdG8gdGhlIG5leHQgY2hhbmdlZCBmaWxlCiAJaWYgeyRvIGVxIHtffX0gewotCQljbGVhcl9kaWZmCi0JfSBlbHNlIHsKLQkJc2V0IGN1cnJlbnRfZGlmZl9wYXRoICRjdXJyZW50X2RpZmZfcGF0aAorCQlyZXNob3dfZGlmZgogCX0KIH0KIApAQCAtNTExLDggKzYzMCw5IEBACiAJc2V0IHBhdGNoICJAQCAtJGhsbiwkbiArJGhsbixbZXZhbCBleHByICRuICRzaWduIDFdIEBAXG4kcGF0Y2giCiAKIAlpZiB7W2NhdGNoIHsKKwkJc2V0IGVuYyBbZ2V0X3BhdGhfZW5jb2RpbmcgJGN1cnJlbnRfZGlmZl9wYXRoXQogCQlzZXQgcCBbZXZhbCBnaXRfd3JpdGUgJGFwcGx5X2NtZF0KLQkJZmNvbmZpZ3VyZSAkcCAtdHJhbnNsYXRpb24gYmluYXJ5IC1lbmNvZGluZyBiaW5hcnkKKwkJZmNvbmZpZ3VyZSAkcCAtdHJhbnNsYXRpb24gYmluYXJ5IC1lbmNvZGluZyAkZW5jCiAJCXB1dHMgLW5vbmV3bGluZSAkcCAkY3VycmVudF9kaWZmX2hlYWRlcgogCQlwdXRzIC1ub25ld2xpbmUgJHAgJHBhdGNoCiAJCWNsb3NlICRwfSBlcnJdfSB7CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9lbmNvZGluZy50Y2wgYi9naXQtZ3VpL2xpYi9lbmNvZGluZy50Y2wKaW5kZXggN2YwNmIwZC4uMzI2NjhmYyAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvZW5jb2RpbmcudGNsCisrKyBiL2dpdC1ndWkvbGliL2VuY29kaW5nLnRjbApAQCAtMjA2LDcgKzIwNiw3IEBACiAgICAgeyBJU08tODg1OS0xNiBpc28taXItMjI2IElTT184ODU5LTE2OjIwMDEgSVNPXzg4NTktMTYgbGF0aW4xMCBsMTAgfQogICAgIHsgR0JLIENQOTM2IE1TOTM2IHdpbmRvd3MtOTM2IH0KICAgICB7IEpJU19FbmNvZGluZyBjc0pJU0VuY29kaW5nIH0KLSAgICB7IFNoaWZ0X0pJUyBNU19LYW5qaSBjc1NoaWZ0SklTIH0KKyAgICB7IFNoaWZ0X0pJUyBNU19LYW5qaSBjc1NoaWZ0SklTIFNoaWZ0SklTIFNoaWZ0LUpJUyB9CiAgICAgeyBFeHRlbmRlZF9VTklYX0NvZGVfUGFja2VkX0Zvcm1hdF9mb3JfSmFwYW5lc2UgY3NFVUNQa2RGbXRKYXBhbmVzZQogICAgICAgRVVDLUpQIH0KICAgICB7IEV4dGVuZGVkX1VOSVhfQ29kZV9GaXhlZF9XaWR0aF9mb3JfSmFwYW5lc2UgY3NFVUNGaXhXaWRKYXBhbmVzZSB9CkBAIC0yNDAsMzcgKzI0MCwyMjcgQEAKICAgICB7IEJpZzUgY3NCaWc1IH0KIH0KIAotcHJvYyB0Y2xfZW5jb2Rpbmcge2VuY30gewotICAgIGdsb2JhbCBlbmNvZGluZ19hbGlhc2VzCi0gICAgc2V0IG5hbWVzIFtlbmNvZGluZyBuYW1lc10KLSAgICBzZXQgbGNuYW1lcyBbc3RyaW5nIHRvbG93ZXIgJG5hbWVzXQotICAgIHNldCBlbmMgW3N0cmluZyB0b2xvd2VyICRlbmNdCi0gICAgc2V0IGkgW2xzZWFyY2ggLWV4YWN0ICRsY25hbWVzICRlbmNdCi0gICAgaWYgeyRpIDwgMH0gewotCSMgbG9vayBmb3IgImlzb25ubiIgaW5zdGVhZCBvZiAiaXNvLW5ubiIgb3IgImlzb19ubm4iCi0JaWYge1tyZWdzdWIge15pc29bLV9dfSAkZW5jIGlzbyBlbmN4XX0gewotCSAgICBzZXQgaSBbbHNlYXJjaCAtZXhhY3QgJGxjbmFtZXMgJGVuY3hdCitzZXQgZW5jb2RpbmdfZ3JvdXBzIHsKKyAgICB7IiIgIiIKKwl7IlVuaWNvZGUiIFVURi04fQorCXsiV2VzdGVybiIgSVNPLTg4NTktMX19CisgICAge3dlICJXZXN0IEV1cm9wZWFuIgorCXsiV2VzdGVybiIgSVNPLTg4NTktMTUgQ1AtNDM3IENQLTg1MCBNYWNSb21hbiBDUC0xMjUyIFdpbmRvd3MtMTI1Mn0KKwl7IkNlbHRpYyIgSVNPLTg4NTktMTR9CisJeyJHcmVlayIgSVNPLTg4NTktMTQgSVNPLTg4NTktNyBDUC03MzcgQ1AtODY5IE1hY0dyZWVrIENQLTEyNTMgV2luZG93cy0xMjUzfQorCXsiSWNlbGFuZGljIiBNYWNJY2VsYW5kIE1hY0ljZWxhbmRpYyBDUC04NjF9CisJeyJOb3JkaWMiIElTTy04ODU5LTEwIENQLTg2NX0KKwl7IlBvcnR1Z3Vlc2UiIENQLTg2MH0KKwl7IlNvdXRoIEV1cm9wZWFuIiBJU08tODg1OS0zfX0KKyAgICB7ZWUgIkVhc3QgRXVyb3BlYW4iCisJeyJCYWx0aWMiIENQLTc3NSBJU08tODg1OS00IElTTy04ODU5LTEzIENQLTEyNTcgV2luZG93cy0xMjU3fQorCXsiQ2VudHJhbCBFdXJvcGVhbiIgQ1AtODUyIElTTy04ODU5LTIgTWFjQ0UgQ1AtMTI1MCBXaW5kb3dzLTEyNTB9CisJeyJDcm9hdGlhbiIgTWFjQ3JvYXRpYW59CisJeyJDeXJpbGxpYyIgQ1AtODU1IElTTy04ODU5LTUgSVNPLUlSLTExMSBLT0k4LVIgTWFjQ3lyaWxsaWMgQ1AtMTI1MSBXaW5kb3dzLTEyNTF9CisJeyJSdXNzaWFuIiBDUC04NjZ9CisJeyJVa3JhaW5pYW4iIEtPSTgtVSBNYWNVa3JhaW5lIE1hY1VrcmFpbmlhbn0KKwl7IlJvbWFuaWFuIiBJU08tODg1OS0xNiBNYWNSb21hbmlhIE1hY1JvbWFuaWFufX0KKyAgICB7ZWEgIkVhc3QgQXNpYW4iCisJeyJHZW5lcmljIiBJU08tMjAyMn0KKwl7IkNoaW5lc2UgU2ltcGxpZmllZCIgR0IyMzEyIEdCMTk4OCBHQjEyMzQ1IEdCMjMxMi1SQVcgR0JLIEVVQy1DTiBHQjE4MDMwIEhaIElTTy0yMDIyLUNOfQorCXsiQ2hpbmVzZSBUcmFkaXRpb25hbCIgQmlnNSBCaWc1LUhLU0NTIEVVQy1UVyBDUC05NTB9CisJeyJKYXBhbmVzZSIgRVVDLUpQIElTTy0yMDIyLUpQIFNoaWZ0LUpJUyBKSVMtMDIxMiBKSVMtMDIwOCBKSVMtMDIwMSBDUC05MzIgTWFjSmFwYW59CisJeyJLb3JlYW4iIEVVQy1LUiBVSEMgSk9IQUIgSVNPLTIwMjItS1IgQ1AtOTQ5IEtTQzU2MDF9fQorICAgIHtzYSAiU0UgJiBTVyBBc2lhbiIKKwl7IkFybWVuaWFuIiBBUk1TQ0lJLTh9CisJeyJHZW9yZ2lhbiIgR0VPU1REOH0KKwl7IlRoYWkiIFRJUy02MjAgSVNPLTg4NTktMTEgQ1AtODc0IFdpbmRvd3MtODc0IE1hY1RoYWl9CisJeyJUdXJraXNoIiBDUC04NTcgQ1A4NTcgSVNPLTg4NTktOSBNYWNUdXJraXNoIENQLTEyNTQgV2luZG93cy0xMjU0fQorCXsiVmlldG5hbWVzZSIgVENWTiBWSVNDSUkgVlBTIENQLTEyNTggV2luZG93cy0xMjU4fQorCXsiSGluZGkiIE1hY0RldmFuYWdhcml9CisJeyJHdWphcmF0aSIgTWFjR3VqYXJhdGl9CisJeyJHdXJtdWtoaSIgTWFjR3VybXVraGl9fQorICAgIHttZSAiTWlkZGxlIEVhc3Rlcm4iCisJeyJBcmFiaWMiIElTTy04ODU5LTYgV2luZG93cy0xMjU2IENQLTEyNTYgQ1AtODY0IE1hY0FyYWJpY30KKwl7IkZhcnNpIiBNYWNGYXJzaX0KKwl7IkhlYnJldyIgSVNPLTg4NTktOC1JIFdpbmRvd3MtMTI1NSBDUC0xMjU1IElTTy04ODU5LTggQ1AtODYyIE1hY0hlYnJld319CisgICAge21pICJNaXNjIgorCXsiNy1iaXQiIEFTQ0lJfQorCXsiMTYtYml0IiBVbmljb2RlfQorCXsiTGVnYWN5IiBDUC04NjMgRUJDRElDfQorCXsiU3ltYm9sIiBTeW1ib2wgRGluZ2JhdHMgTWFjRGluZ2JhdHMgTWFjQ2VudEV1cm99fQorfQorCitwcm9jIGJ1aWxkX2VuY29kaW5nX3RhYmxlIHt9IHsKKwlnbG9iYWwgZW5jb2RpbmdfYWxpYXNlcyBlbmNvZGluZ19sb29rdXBfdGFibGUKKworCSMgUHJlcGFyZSB0aGUgbG9va3VwIGxpc3Q7IGNhbm5vdCB1c2UgbHNvcnQgLW5vY2FzZSBiZWNhdXNlCisJIyBvZiBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG9sZGVyIFRjbCAoZS5nLiBpbiBtc3lzZ2l0KQorCXNldCBuYW1lcyBbbGlzdF0KKwlmb3JlYWNoIGl0ZW0gW2VuY29kaW5nIG5hbWVzXSB7CisJCWxhcHBlbmQgbmFtZXMgW2xpc3QgW3N0cmluZyB0b2xvd2VyICRpdGVtXSAkaXRlbV0KIAl9Ci0gICAgfQotICAgIGlmIHskaSA8IDB9IHsKLQlmb3JlYWNoIGwgJGVuY29kaW5nX2FsaWFzZXMgewotCSAgICBzZXQgbGwgW3N0cmluZyB0b2xvd2VyICRsXQotCSAgICBpZiB7W2xzZWFyY2ggLWV4YWN0ICRsbCAkZW5jXSA8IDB9IGNvbnRpbnVlCi0JICAgICMgbG9vayB0aHJvdWdoIHRoZSBhbGlhc2VzIGZvciBvbmUgdGhhdCB0Y2wga25vd3MgYWJvdXQKLQkgICAgZm9yZWFjaCBlICRsbCB7Ci0JCXNldCBpIFtsc2VhcmNoIC1leGFjdCAkbGNuYW1lcyAkZV0KLQkJaWYgeyRpIDwgMH0gewotCQkgICAgaWYge1tyZWdzdWIge15pc29bLV9dfSAkZSBpc28gZXhdfSB7Ci0JCQlzZXQgaSBbbHNlYXJjaCAtZXhhY3QgJGxjbmFtZXMgJGV4XQotCQkgICAgfQorCXNldCBuYW1lcyBbbHNvcnQgLWFzY2lpIC1pbmRleCAwICRuYW1lc10KKwkjIG5laXRoZXIgY2FuIHdlIHVzZSBsc2VhcmNoIC1pbmRleAorCXNldCBsbmFtZXMgW2xpc3RdCisJZm9yZWFjaCBpdGVtICRuYW1lcyB7CisJCWxhcHBlbmQgbG5hbWVzIFtsaW5kZXggJGl0ZW0gMF0KKwl9CisKKwlmb3JlYWNoIGdycCAkZW5jb2RpbmdfYWxpYXNlcyB7CisJCXNldCB0YXJnZXQge30KKwkJZm9yZWFjaCBpdGVtICRncnAgeworCQkJc2V0IGkgW2xzZWFyY2ggLXNvcnRlZCAtYXNjaWkgJGxuYW1lcyBcCisJCQkJCVtzdHJpbmcgdG9sb3dlciAkaXRlbV1dCisJCQlpZiB7JGkgPj0gMH0geworCQkJCXNldCB0YXJnZXQgW2xpbmRleCAkbmFtZXMgJGkgMV0KKwkJCQlicmVhaworCQkJfQogCQl9Ci0JCWlmIHskaSA+PSAwfSBicmVhawotCSAgICB9Ci0JICAgIGJyZWFrCisJCWlmIHskdGFyZ2V0IGVxIHt9fSBjb250aW51ZQorCQlmb3JlYWNoIGl0ZW0gJGdycCB7CisJCQlzZXQgZW5jb2RpbmdfbG9va3VwX3RhYmxlKFtzdHJpbmcgdG9sb3dlciAkaXRlbV0pICR0YXJnZXQKKwkJfQogCX0KLSAgICB9Ci0gICAgaWYgeyRpID49IDB9IHsKLQlyZXR1cm4gW2xpbmRleCAkbmFtZXMgJGldCi0gICAgfQotICAgIHJldHVybiB7fQorCisJZm9yZWFjaCBpdGVtICRuYW1lcyB7CisJCXNldCBlbmNvZGluZ19sb29rdXBfdGFibGUoW2xpbmRleCAkaXRlbSAwXSkgW2xpbmRleCAkaXRlbSAxXQorCX0KK30KKworcHJvYyB0Y2xfZW5jb2Rpbmcge2VuY30geworCWdsb2JhbCBlbmNvZGluZ19sb29rdXBfdGFibGUKKwlpZiB7JGVuYyBlcSB7fX0geworCQlyZXR1cm4ge30KKwl9CisJaWYgeyFbaW5mbyBleGlzdHMgZW5jb2RpbmdfbG9va3VwX3RhYmxlXX0geworCQlidWlsZF9lbmNvZGluZ190YWJsZQorCX0KKwlzZXQgZW5jIFtzdHJpbmcgdG9sb3dlciAkZW5jXQorCWlmIHshW2luZm8gZXhpc3RzIGVuY29kaW5nX2xvb2t1cF90YWJsZSgkZW5jKV19IHsKKwkJIyBsb29rIGZvciAiaXNvbm5uIiBpbnN0ZWFkIG9mICJpc28tbm5uIiBvciAiaXNvX25ubiIKKwkJaWYge1tyZWdzdWIge14oaXNvfGNwfGlibXxqaXMpWy1fXX0gJGVuYyB7XDF9IGVuY3hdfSB7CisJCQlzZXQgZW5jICRlbmN4CisJCX0KKwl9CisJaWYge1tpbmZvIGV4aXN0cyBlbmNvZGluZ19sb29rdXBfdGFibGUoJGVuYyldfSB7CisJCXJldHVybiAkZW5jb2RpbmdfbG9va3VwX3RhYmxlKCRlbmMpCisJfSBlbHNlIHsKKwkJcmV0dXJuIHt9CisJfQorfQorCitwcm9jIGZvcmNlX3BhdGhfZW5jb2Rpbmcge3BhdGggZW5jfSB7CisJZ2xvYmFsIHBhdGhfZW5jb2Rpbmdfb3ZlcnJpZGVzIGxhc3RfZW5jb2Rpbmdfb3ZlcnJpZGUKKworCXNldCBlbmMgW3RjbF9lbmNvZGluZyAkZW5jXQorCWlmIHskZW5jIGVxIHt9fSB7CisJCWNhdGNoIHsgdW5zZXQgbGFzdF9lbmNvZGluZ19vdmVycmlkZSB9CisJCWNhdGNoIHsgdW5zZXQgcGF0aF9lbmNvZGluZ19vdmVycmlkZXMoJHBhdGgpIH0KKwl9IGVsc2UgeworCQlzZXQgbGFzdF9lbmNvZGluZ19vdmVycmlkZSAkZW5jCisJCWlmIHskcGF0aCBuZSB7fX0geworCQkJc2V0IHBhdGhfZW5jb2Rpbmdfb3ZlcnJpZGVzKCRwYXRoKSAkZW5jCisJCX0KKwl9Cit9CisKK3Byb2MgZ2V0X3BhdGhfZW5jb2Rpbmcge3BhdGh9IHsKKwlnbG9iYWwgcGF0aF9lbmNvZGluZ19vdmVycmlkZXMgbGFzdF9lbmNvZGluZ19vdmVycmlkZQorCisJaWYge1tpbmZvIGV4aXN0cyBsYXN0X2VuY29kaW5nX292ZXJyaWRlXX0geworCQlzZXQgdGNsX2VuYyAkbGFzdF9lbmNvZGluZ19vdmVycmlkZQorCX0gZWxzZSB7CisJCXNldCB0Y2xfZW5jIFt0Y2xfZW5jb2RpbmcgW2dldF9jb25maWcgZ3VpLmVuY29kaW5nXV0KKwl9CisJaWYgeyR0Y2xfZW5jIGVxIHt9fSB7CisJCXNldCB0Y2xfZW5jIFtlbmNvZGluZyBzeXN0ZW1dCisJfQorCWlmIHskcGF0aCBuZSB7fX0geworCQlpZiB7W2luZm8gZXhpc3RzIHBhdGhfZW5jb2Rpbmdfb3ZlcnJpZGVzKCRwYXRoKV19IHsKKwkJCXNldCBlbmMyICRwYXRoX2VuY29kaW5nX292ZXJyaWRlcygkcGF0aCkKKwkJfSBlbHNlIHsKKwkJCXNldCBlbmMyIFt0Y2xfZW5jb2RpbmcgW2dpdGF0dHIgJHBhdGggZW5jb2RpbmcgJHRjbF9lbmNdXQorCQl9CisJCWlmIHskZW5jMiBuZSB7fX0geworCQkJc2V0IHRjbF9lbmMgJGVuYzIKKwkJfQorCX0KKwlyZXR1cm4gJHRjbF9lbmMKK30KKworcHJvYyBidWlsZF9lbmNvZGluZ19zdWJtZW51IHtwYXJlbnQgZ3JwIGNtZH0geworCWdsb2JhbCB1c2VkX2VuY29kaW5ncworCisJc2V0IG1pZCBbbGluZGV4ICRncnAgMF0KKwlzZXQgZ25hbWUgW21jIFtsaW5kZXggJGdycCAxXV0KKworCXNldCBzbWVudSB7fQorCWZvcmVhY2ggc3Vic2V0IFtscmFuZ2UgJGdycCAyIGVuZF0geworCQlzZXQgbmFtZSBbbWMgW2xpbmRleCAkc3Vic2V0IDBdXQorCisJCWZvcmVhY2ggZW5jIFtscmFuZ2UgJHN1YnNldCAxIGVuZF0geworCQkJc2V0IHRjbF9lbmMgW3RjbF9lbmNvZGluZyAkZW5jXQorCQkJaWYgeyR0Y2xfZW5jIGVxIHt9fSBjb250aW51ZQorCisJCQlpZiB7JHNtZW51IGVxIHt9fSB7CisJCQkJaWYgeyRtaWQgZXEge319IHsKKwkJCQkJc2V0IHNtZW51ICRwYXJlbnQKKwkJCQl9IGVsc2UgeworCQkJCQlzZXQgc21lbnUgIiRwYXJlbnQuJG1pZCIKKwkJCQkJbWVudSAkc21lbnUKKwkJCQkJJHBhcmVudCBhZGQgY2FzY2FkZSBcCisJCQkJCQktbGFiZWwgJGduYW1lIFwKKwkJCQkJCS1tZW51ICRzbWVudQorCQkJCX0KKwkJCX0KKworCQkJaWYgeyRuYW1lIG5lIHt9fSB7CisJCQkJc2V0IGxibCAiJG5hbWUgKCRlbmMpIgorCQkJfSBlbHNlIHsKKwkJCQlzZXQgbGJsICRlbmMKKwkJCX0KKwkJCSRzbWVudSBhZGQgY29tbWFuZCBcCisJCQkJLWxhYmVsICRsYmwgXAorCQkJCS1jb21tYW5kIFtjb25jYXQgJGNtZCBbbGlzdCAkdGNsX2VuY11dCisKKwkJCWxhcHBlbmQgdXNlZF9lbmNvZGluZ3MgJHRjbF9lbmMKKwkJfQorCX0KK30KKworcHJvYyBwb3B1cF9idG5fbWVudSB7bSBifSB7CisJdGtfcG9wdXAgJG0gW3dpbmZvIHBvaW50ZXJ4ICRiXSBbd2luZm8gcG9pbnRlcnkgJGJdCit9CisKK3Byb2MgYnVpbGRfZW5jb2RpbmdfbWVudSB7ZW1lbnUgY21kIHtub2RlZiAwfX0geworCSRlbWVudSBjb25maWd1cmUgLXBvc3Rjb21tYW5kIFwKKwkJW2xpc3QgZG9fYnVpbGRfZW5jb2RpbmdfbWVudSAkZW1lbnUgJGNtZCAkbm9kZWZdCit9CisKK3Byb2MgZG9fYnVpbGRfZW5jb2RpbmdfbWVudSB7ZW1lbnUgY21kIHtub2RlZiAwfX0geworCWdsb2JhbCB1c2VkX2VuY29kaW5ncyBlbmNvZGluZ19ncm91cHMKKworCSRlbWVudSBjb25maWd1cmUgLXBvc3Rjb21tYW5kIHt9CisKKwlpZiB7ISRub2RlZn0geworCQkkZW1lbnUgYWRkIGNvbW1hbmQgXAorCQkJLWxhYmVsIFttYyAiRGVmYXVsdCJdIFwKKwkJCS1jb21tYW5kIFtjb25jYXQgJGNtZCBbbGlzdCB7fV1dCisJfQorCXNldCBzeXNlbmMgW2VuY29kaW5nIHN5c3RlbV0KKwkkZW1lbnUgYWRkIGNvbW1hbmQgXAorCQktbGFiZWwgW21jICJTeXN0ZW0gKCVzKSIgJHN5c2VuY10gXAorCQktY29tbWFuZCBbY29uY2F0ICRjbWQgW2xpc3QgJHN5c2VuY11dCisKKwkjIE1haW4gZW5jb2RpbmcgdHJlZQorCXNldCB1c2VkX2VuY29kaW5ncyBbbGlzdCBpZGVudGl0eV0KKwkkZW1lbnUgYWRkIHNlcGFyYXRvcgorCWZvcmVhY2ggZ3JwICRlbmNvZGluZ19ncm91cHMgeworCQlidWlsZF9lbmNvZGluZ19zdWJtZW51ICRlbWVudSAkZ3JwICRjbWQKKwl9CisKKwkjIEFkZCB1bmNsYXNzaWZpZWQgZW5jb2RpbmdzCisJc2V0IHVudXNlZF9ncnAgW2xpc3QgW21jIE90aGVyXV0KKwlmb3JlYWNoIGVuYyBbZW5jb2RpbmcgbmFtZXNdIHsKKwkJaWYge1tsc2VhcmNoIC1leGFjdCAkdXNlZF9lbmNvZGluZ3MgJGVuY10gPCAwfSB7CisJCQlsYXBwZW5kIHVudXNlZF9ncnAgJGVuYworCQl9CisJfQorCWJ1aWxkX2VuY29kaW5nX3N1Ym1lbnUgJGVtZW51IFtsaXN0IG90aGVyIFttYyBPdGhlcl0gJHVudXNlZF9ncnBdICRjbWQKIH0KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL2luZGV4LnRjbCBiL2dpdC1ndWkvbGliL2luZGV4LnRjbAppbmRleCAzYzFmY2U3Li5kMzM4OTZhIDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9pbmRleC50Y2wKKysrIGIvZ2l0LWd1aS9saWIvaW5kZXgudGNsCkBAIC05OSw2ICs5OSw3IEBACiAJCXN3aXRjaCAtZ2xvYiAtLSBbbGluZGV4ICRzIDBdIHsKIAkJQT8ge3NldCBuZXcgX099CiAJCU0/IHtzZXQgbmV3IF9NfQorCQlUXyB7c2V0IG5ldyBfVH0KIAkJRF8ge3NldCBuZXcgX0R9CiAJCUQ/IHtzZXQgbmV3IF8/fQogCQk/PyB7Y29udGludWV9CkBAIC0xNjIsNiArMTYzLDggQEAKIAkJP0Qge3NldCBuZXcgRF99CiAJCV9PIC0KIAkJQU0ge3NldCBuZXcgQV99CisJCV9UIHtzZXQgbmV3IFRffQorCQlfVSAtCiAJCVU/IHsKIAkJCWlmIHtbZmlsZSBleGlzdHMgJHBhdGhdfSB7CiAJCQkJc2V0IG5ldyBNXwpAQCAtMjMxLDYgKzIzNCw3IEBACiAJCXN3aXRjaCAtZ2xvYiAtLSBbbGluZGV4ICRmaWxlX3N0YXRlcygkcGF0aCkgMF0gewogCQlVPyB7Y29udGludWV9CiAJCT9NIC0KKwkJP1QgLQogCQk/RCB7CiAJCQlwdXRzIC1ub25ld2xpbmUgJGZkICJbZW5jb2RpbmcgY29udmVydHRvICRwYXRoXVwwIgogCQkJZGlzcGxheV9maWxlICRwYXRoID9fCkBAIC0yNTIsNiArMjU2LDcgQEAKIAkJc3dpdGNoIC1nbG9iIC0tIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRwYXRoKSAwXSB7CiAJCUE/IC0KIAkJTT8gLQorCQlUXyAtCiAJCUQ/IHsKIAkJCWxhcHBlbmQgcGF0aExpc3QgJHBhdGgKIAkJCWlmIHskcGF0aCBlcSAkY3VycmVudF9kaWZmX3BhdGh9IHsKQEAgLTI5MywxMCArMjk4LDE4IEBACiAJc2V0IGFmdGVyIHt9CiAJZm9yZWFjaCBwYXRoICRwYXRocyB7CiAJCXN3aXRjaCAtZ2xvYiAtLSBbbGluZGV4ICRmaWxlX3N0YXRlcygkcGF0aCkgMF0geworCQlfVSAtCisJCVU/IHsKKwkJCWlmIHskcGF0aCBlcSAkY3VycmVudF9kaWZmX3BhdGh9IHsKKwkJCQl1bmxvY2tfaW5kZXgKKwkJCQltZXJnZV9zdGFnZV93b3JrZGlyICRwYXRoCisJCQkJcmV0dXJuCisJCQl9CisJCX0KIAkJX08gLQogCQk/TSAtCiAJCT9EIC0KLQkJVT8geworCQk/VCB7CiAJCQlsYXBwZW5kIHBhdGhMaXN0ICRwYXRoCiAJCQlpZiB7JHBhdGggZXEgJGN1cnJlbnRfZGlmZl9wYXRofSB7CiAJCQkJc2V0IGFmdGVyIHtyZXNob3dfZGlmZjt9CkBAIC0zMzYsNiArMzQ5LDcgQEAKIAkJc3dpdGNoIC1nbG9iIC0tIFtsaW5kZXggJGZpbGVfc3RhdGVzKCRwYXRoKSAwXSB7CiAJCVU/IHtjb250aW51ZX0KIAkJP00gLQorCQk/VCAtCiAJCT9EIHtsYXBwZW5kIHBhdGhzICRwYXRofQogCQl9CiAJfQpAQCAtMzUzLDYgKzM2Nyw3IEBACiAJCXN3aXRjaCAtZ2xvYiAtLSBbbGluZGV4ICRmaWxlX3N0YXRlcygkcGF0aCkgMF0gewogCQlVPyB7Y29udGludWV9CiAJCT9NIC0KKwkJP1QgLQogCQk/RCB7CiAJCQlsYXBwZW5kIHBhdGhMaXN0ICRwYXRoCiAJCQlpZiB7JHBhdGggZXEgJGN1cnJlbnRfZGlmZl9wYXRofSB7CkBAIC00MDksMTEgKzQyNCwxMSBAQAogCiAJaWYge1thcnJheSBzaXplIHNlbGVjdGVkX3BhdGhzXSA+IDB9IHsKIAkJcmV2ZXJ0X2hlbHBlciBcCi0JCQl7UmV2ZXJ0aW5nIHNlbGVjdGVkIGZpbGVzfSBcCisJCQlbbWMgIlJldmVydGluZyBzZWxlY3RlZCBmaWxlcyJdIFwKIAkJCVthcnJheSBuYW1lcyBzZWxlY3RlZF9wYXRoc10KIAl9IGVsc2VpZiB7JGN1cnJlbnRfZGlmZl9wYXRoIG5lIHt9fSB7CiAJCXJldmVydF9oZWxwZXIgXAotCQkJIlJldmVydGluZyBbc2hvcnRfcGF0aCAkY3VycmVudF9kaWZmX3BhdGhdIiBcCisJCQlbbWMgIlJldmVydGluZyAlcyIgW3Nob3J0X3BhdGggJGN1cnJlbnRfZGlmZl9wYXRoXV0gXAogCQkJW2xpc3QgJGN1cnJlbnRfZGlmZl9wYXRoXQogCX0KIH0KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL21lcmdlLnRjbCBiL2dpdC1ndWkvbGliL21lcmdlLnRjbAppbmRleCA1YzAxODc1Li4yODNlNDkxIDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9tZXJnZS50Y2wKKysrIGIvZ2l0LWd1aS9saWIvbWVyZ2UudGNsCkBAIC00MCw2ICs0MCw3IEBACiAJCV9PIHsKIAkJCWNvbnRpbnVlOyAjIGFuZCBwcmF5IGl0IHdvcmtzIQogCQl9CisJCV9VIC0KIAkJVT8gewogCQkJZXJyb3JfcG9wdXAgW21jICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb25mbGljdGVkIG1lcmdlLgogCmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9tZXJnZXRvb2wudGNsIGIvZ2l0LWd1aS9saWIvbWVyZ2V0b29sLnRjbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjJiNGI1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2l0LWd1aS9saWIvbWVyZ2V0b29sLnRjbApAQCAtMCwwICsxLDM5MyBAQAorIyBnaXQtZ3VpIG1lcmdlIGNvbmZsaWN0IHJlc29sdXRpb24KKyMgcGFydHMgYmFzZWQgb24gZ2l0LW1lcmdldG9vbCAoYykgMjAwNiBUaGVvZG9yZSBZLiBUcydvCisKK3Byb2MgbWVyZ2VfcmVzb2x2ZV9vbmUge3N0YWdlfSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoCisKKwlzd2l0Y2ggLS0gJHN0YWdlIHsKKwkJMSB7IHNldCB0YXJnZXRxdWVzdGlvbiBbbWMgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIGJhc2UgdmVyc2lvbj8iXSB9CisJCTIgeyBzZXQgdGFyZ2V0cXVlc3Rpb24gW21jICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoaXMgYnJhbmNoPyJdIH0KKwkJMyB7IHNldCB0YXJnZXRxdWVzdGlvbiBbbWMgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIG90aGVyIGJyYW5jaD8iXSB9CisJfQorCisJc2V0IG9wX3F1ZXN0aW9uIFtzdHJjYXQgJHRhcmdldHF1ZXN0aW9uICJcbiIgXAorW21jICJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLgorCislcyB3aWxsIGJlIG92ZXJ3cml0dGVuLgorCitUaGlzIG9wZXJhdGlvbiBjYW4gYmUgdW5kb25lIG9ubHkgYnkgcmVzdGFydGluZyB0aGUgbWVyZ2UuIiBcCisJCVtzaG9ydF9wYXRoICRjdXJyZW50X2RpZmZfcGF0aF1dXQorCisJaWYge1thc2tfcG9wdXAgJG9wX3F1ZXN0aW9uXSBlcSB7eWVzfX0geworCQltZXJnZV9sb2FkX3N0YWdlcyAkY3VycmVudF9kaWZmX3BhdGggW2xpc3QgbWVyZ2VfZm9yY2Vfc3RhZ2UgJHN0YWdlXQorCX0KK30KKworcHJvYyBtZXJnZV9zdGFnZV93b3JrZGlyIHtwYXRoIHtsbm8ge319fSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoIGRpZmZfYWN0aXZlCisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9zaWRlIHVpX3dvcmtkaXIKKworCWlmIHskZGlmZl9hY3RpdmV9IHJldHVybgorCisJaWYgeyRwYXRoIG5lICRjdXJyZW50X2RpZmZfcGF0aCB8fCAkdWlfd29ya2RpciBuZSAkY3VycmVudF9kaWZmX3NpZGV9IHsKKwkJc2hvd19kaWZmICRwYXRoICR1aV93b3JrZGlyICRsbm8ge30gW2xpc3QgZG9fbWVyZ2Vfc3RhZ2Vfd29ya2RpciAkcGF0aF0KKwl9IGVsc2UgeworCQlkb19tZXJnZV9zdGFnZV93b3JrZGlyICRwYXRoCisJfQorfQorCitwcm9jIGRvX21lcmdlX3N0YWdlX3dvcmtkaXIge3BhdGh9IHsKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggaXNfY29uZmxpY3RfZGlmZgorCisJaWYgeyRwYXRoIG5lICRjdXJyZW50X2RpZmZfcGF0aH0gcmV0dXJuOworCisJaWYgeyRpc19jb25mbGljdF9kaWZmfSB7CisJCWlmIHtbYXNrX3BvcHVwIFttYyAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iIFwKKwkJCQlbc2hvcnRfcGF0aCAkcGF0aF1dXSBuZSB7eWVzfX0geworCQkJcmV0dXJuCisJCX0KKwl9CisKKwltZXJnZV9hZGRfcmVzb2x1dGlvbiAkcGF0aAorfQorCitwcm9jIG1lcmdlX2FkZF9yZXNvbHV0aW9uIHtwYXRofSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoIHVpX3dvcmtkaXIKKworCXNldCBhZnRlciBbbmV4dF9kaWZmX2FmdGVyX2FjdGlvbiAkdWlfd29ya2RpciAkcGF0aCB7fSB7Xl8/VX1dCisKKwl1cGRhdGVfaW5kZXggXAorCQlbbWMgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIgW3Nob3J0X3BhdGggJHBhdGhdXSBcCisJCVtsaXN0ICRwYXRoXSBcCisJCVtjb25jYXQgJGFmdGVyIFtsaXN0IHVpX3JlYWR5XV0KK30KKworcHJvYyBtZXJnZV9mb3JjZV9zdGFnZSB7c3RhZ2V9IHsKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggbWVyZ2Vfc3RhZ2VzCisKKwlpZiB7JG1lcmdlX3N0YWdlcygkc3RhZ2UpIG5lIHt9fSB7CisJCWdpdCBjaGVja291dC1pbmRleCAtZiAtLXN0YWdlPSRzdGFnZSAtLSAkY3VycmVudF9kaWZmX3BhdGgKKwl9IGVsc2UgeworCQlmaWxlIGRlbGV0ZSAtLSAkY3VycmVudF9kaWZmX3BhdGgKKwl9CisKKwltZXJnZV9hZGRfcmVzb2x1dGlvbiAkY3VycmVudF9kaWZmX3BhdGgKK30KKworcHJvYyBtZXJnZV9sb2FkX3N0YWdlcyB7cGF0aCBjb250fSB7CisJZ2xvYmFsIG1lcmdlX3N0YWdlc19mZCBtZXJnZV9zdGFnZXMgbWVyZ2Vfc3RhZ2VzX2J1ZgorCisJaWYge1tpbmZvIGV4aXN0cyBtZXJnZV9zdGFnZXNfZmRdfSB7CisJCWNhdGNoIHsga2lsbF9maWxlX3Byb2Nlc3MgJG1lcmdlX3N0YWdlc19mZCB9CisJCWNhdGNoIHsgY2xvc2UgJG1lcmdlX3N0YWdlc19mZCB9CisJfQorCisJc2V0IG1lcmdlX3N0YWdlcygwKSB7fQorCXNldCBtZXJnZV9zdGFnZXMoMSkge30KKwlzZXQgbWVyZ2Vfc3RhZ2VzKDIpIHt9CisJc2V0IG1lcmdlX3N0YWdlcygzKSB7fQorCXNldCBtZXJnZV9zdGFnZXNfYnVmIHt9CisKKwlzZXQgbWVyZ2Vfc3RhZ2VzX2ZkIFtldmFsIGdpdF9yZWFkIGxzLWZpbGVzIC11IC16IC0tICRwYXRoXQorCisJZmNvbmZpZ3VyZSAkbWVyZ2Vfc3RhZ2VzX2ZkIC1ibG9ja2luZyAwIC10cmFuc2xhdGlvbiBiaW5hcnkgLWVuY29kaW5nIGJpbmFyeQorCWZpbGVldmVudCAkbWVyZ2Vfc3RhZ2VzX2ZkIHJlYWRhYmxlIFtsaXN0IHJlYWRfbWVyZ2Vfc3RhZ2VzICRtZXJnZV9zdGFnZXNfZmQgJGNvbnRdCit9CisKK3Byb2MgcmVhZF9tZXJnZV9zdGFnZXMge2ZkIGNvbnR9IHsKKwlnbG9iYWwgbWVyZ2Vfc3RhZ2VzX2J1ZiBtZXJnZV9zdGFnZXNfZmQgbWVyZ2Vfc3RhZ2VzCisKKwlhcHBlbmQgbWVyZ2Vfc3RhZ2VzX2J1ZiBbcmVhZCAkZmRdCisJc2V0IHBjayBbc3BsaXQgJG1lcmdlX3N0YWdlc19idWYgIlwwIl0KKwlzZXQgbWVyZ2Vfc3RhZ2VzX2J1ZiBbbGluZGV4ICRwY2sgZW5kXQorCisJaWYge1tlb2YgJGZkXSAmJiAkbWVyZ2Vfc3RhZ2VzX2J1ZiBuZSB7fX0geworCQlsYXBwZW5kIHBjayB7fQorCQlzZXQgbWVyZ2Vfc3RhZ2VzX2J1ZiB7fQorCX0KKworCWZvcmVhY2ggcCBbbHJhbmdlICRwY2sgMCBlbmQtMV0geworCQlzZXQgZmNvbHMgW3NwbGl0ICRwICJcdCJdCisJCXNldCBjb2xzICBbc3BsaXQgW2xpbmRleCAkZmNvbHMgMF0gIiAiXQorCQlzZXQgc3RhZ2UgW2xpbmRleCAkY29scyAyXQorCQkKKwkJc2V0IG1lcmdlX3N0YWdlcygkc3RhZ2UpIFtscmFuZ2UgJGNvbHMgMCAxXQorCX0KKworCWlmIHtbZW9mICRmZF19IHsKKwkJY2xvc2UgJGZkCisJCXVuc2V0IG1lcmdlX3N0YWdlc19mZAorCQlldmFsICRjb250CisJfQorfQorCitwcm9jIG1lcmdlX3Jlc29sdmVfdG9vbCB7fSB7CisJZ2xvYmFsIGN1cnJlbnRfZGlmZl9wYXRoCisKKwltZXJnZV9sb2FkX3N0YWdlcyAkY3VycmVudF9kaWZmX3BhdGggW2xpc3QgbWVyZ2VfcmVzb2x2ZV90b29sMl0KK30KKworcHJvYyBtZXJnZV9yZXNvbHZlX3Rvb2wyIHt9IHsKKwlnbG9iYWwgY3VycmVudF9kaWZmX3BhdGggbWVyZ2Vfc3RhZ2VzCisKKwkjIFZhbGlkYXRlIHRoZSBzdGFnZXMKKwlpZiB7JG1lcmdlX3N0YWdlcygyKSBlcSB7fSB8fAorCSAgICBbbGluZGV4ICRtZXJnZV9zdGFnZXMoMikgMF0gZXEgezEyMDAwMH0gfHwKKwkgICAgW2xpbmRleCAkbWVyZ2Vfc3RhZ2VzKDIpIDBdIGVxIHsxNjAwMDB9IHx8CisJICAgICRtZXJnZV9zdGFnZXMoMykgZXEge30gfHwKKwkgICAgW2xpbmRleCAkbWVyZ2Vfc3RhZ2VzKDMpIDBdIGVxIHsxMjAwMDB9IHx8CisJICAgIFtsaW5kZXggJG1lcmdlX3N0YWdlcygzKSAwXSBlcSB7MTYwMDAwfQorCX0geworCQllcnJvcl9wb3B1cCBbbWMgIkNhbm5vdCByZXNvbHZlIGRlbGV0aW9uIG9yIGxpbmsgY29uZmxpY3RzIHVzaW5nIGEgdG9vbCJdCisJCXJldHVybgorCX0KKworCWlmIHshW2ZpbGUgZXhpc3RzICRjdXJyZW50X2RpZmZfcGF0aF19IHsKKwkJZXJyb3JfcG9wdXAgW21jICJDb25mbGljdCBmaWxlIGRvZXMgbm90IGV4aXN0Il0KKwkJcmV0dXJuCisJfQorCisJIyBEZXRlcm1pbmUgdGhlIHRvb2wgdG8gdXNlCisJc2V0IHRvb2wgW2dldF9jb25maWcgbWVyZ2UudG9vbF0KKwlpZiB7JHRvb2wgZXEge319IHsgc2V0IHRvb2wgbWVsZCB9CisKKwlzZXQgbWVyZ2VfdG9vbF9wYXRoIFtnZXRfY29uZmlnICJtZXJnZXRvb2wuJHRvb2wucGF0aCJdCisJaWYgeyRtZXJnZV90b29sX3BhdGggZXEge319IHsKKwkJc3dpdGNoIC0tICR0b29sIHsKKwkJZW1lcmdlIHsgc2V0IG1lcmdlX3Rvb2xfcGF0aCAiZW1hY3MiIH0KKwkJYXJheGlzIHsgc2V0IG1lcmdlX3Rvb2xfcGF0aCAiY29tcGFyZSIgfQorCQlkZWZhdWx0IHsgc2V0IG1lcmdlX3Rvb2xfcGF0aCAkdG9vbCB9CisJCX0KKwl9CisKKwkjIE1ha2UgZmlsZSBuYW1lcworCXNldCBmaWxlYmFzZSBbZmlsZSByb290bmFtZSAkY3VycmVudF9kaWZmX3BhdGhdCisJc2V0IGZpbGVleHQgIFtmaWxlIGV4dGVuc2lvbiAkY3VycmVudF9kaWZmX3BhdGhdCisJc2V0IGJhc2VuYW1lIFtsaW5kZXggW2ZpbGUgc3BsaXQgJGN1cnJlbnRfZGlmZl9wYXRoXSBlbmRdCisKKwlzZXQgTUVSR0VEICAgJGN1cnJlbnRfZGlmZl9wYXRoCisJc2V0IEJBU0UgICAgICIuLyRNRVJHRUQuQkFTRSRmaWxlZXh0IgorCXNldCBMT0NBTCAgICAiLi8kTUVSR0VELkxPQ0FMJGZpbGVleHQiCisJc2V0IFJFTU9URSAgICIuLyRNRVJHRUQuUkVNT1RFJGZpbGVleHQiCisJc2V0IEJBQ0tVUCAgICIuLyRNRVJHRUQuQkFDS1VQJGZpbGVleHQiCisKKwlzZXQgYmFzZV9zdGFnZSAkbWVyZ2Vfc3RhZ2VzKDEpCisKKwkjIEJ1aWxkIHRoZSBjb21tYW5kIGxpbmUKKwlzd2l0Y2ggLS0gJHRvb2wgeworCWtkaWZmMyB7CisJCWlmIHskYmFzZV9zdGFnZSBuZSB7fX0geworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiIC0tYXV0byAtLUwxICIkTUVSR0VEIChCYXNlKSIgXAorCQkJCS0tTDIgIiRNRVJHRUQgKExvY2FsKSIgLS1MMyAiJE1FUkdFRCAoUmVtb3RlKSIgLW8gIiRNRVJHRUQiICIkQkFTRSIgIiRMT0NBTCIgIiRSRU1PVEUiXQorCQl9IGVsc2UgeworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiIC0tYXV0byAtLUwxICIkTUVSR0VEIChMb2NhbCkiIFwKKwkJCQktLUwyICIkTUVSR0VEIChSZW1vdGUpIiAtbyAiJE1FUkdFRCIgIiRMT0NBTCIgIiRSRU1PVEUiXQorCQl9CisJfQorCXRrZGlmZiB7CisJCWlmIHskYmFzZV9zdGFnZSBuZSB7fX0geworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiIC1hICIkQkFTRSIgLW8gIiRNRVJHRUQiICIkTE9DQUwiICIkUkVNT1RFIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtbyAiJE1FUkdFRCIgIiRMT0NBTCIgIiRSRU1PVEUiXQorCQl9CisJfQorCW1lbGQgeworCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgIiRMT0NBTCIgIiRNRVJHRUQiICIkUkVNT1RFIl0KKwl9CisJZ3ZpbWRpZmYgeworCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgLWYgIiRMT0NBTCIgIiRNRVJHRUQiICIkUkVNT1RFIl0KKwl9CisJeHhkaWZmIHsKKwkJaWYgeyRiYXNlX3N0YWdlIG5lIHt9fSB7CisJCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgLVggLS1zaG93LW1lcmdlZC1wYW5lIFwKKwkJCQkJICAgIC1SIHtBY2NlbC5TYXZlQXNNZXJnZWQ6ICJDdHJsLVMifSBcCisJCQkJCSAgICAtUiB7QWNjZWwuU2VhcmNoOiAiQ3RybCtGIn0gXAorCQkJCQkgICAgLVIge0FjY2VsLlNlYXJjaEZvcndhcmQ6ICJDdHJsLUcifSBcCisJCQkJCSAgICAtLW1lcmdlZC1maWxlICIkTUVSR0VEIiAiJExPQ0FMIiAiJEJBU0UiICIkUkVNT1RFIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtWCAtLXNob3ctbWVyZ2VkLXBhbmUgXAorCQkJCQkgICAgLVIge0FjY2VsLlNhdmVBc01lcmdlZDogIkN0cmwtUyJ9IFwKKwkJCQkJICAgIC1SIHtBY2NlbC5TZWFyY2g6ICJDdHJsK0YifSBcCisJCQkJCSAgICAtUiB7QWNjZWwuU2VhcmNoRm9yd2FyZDogIkN0cmwtRyJ9IFwKKwkJCQkJICAgIC0tbWVyZ2VkLWZpbGUgIiRNRVJHRUQiICIkTE9DQUwiICIkUkVNT1RFIl0KKwkJfQorCX0KKwlvcGVuZGlmZiB7CisJCWlmIHskYmFzZV9zdGFnZSBuZSB7fX0geworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiICIkTE9DQUwiICIkUkVNT1RFIiAtYW5jZXN0b3IgIiRCQVNFIiAtbWVyZ2UgIiRNRVJHRUQiXQorCQl9IGVsc2UgeworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiICIkTE9DQUwiICIkUkVNT1RFIiAtbWVyZ2UgIiRNRVJHRUQiXQorCQl9CisJfQorCWVjbWVyZ2UgeworCQlpZiB7JGJhc2Vfc3RhZ2UgbmUge319IHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAiJEJBU0UiICIkTE9DQUwiICIkUkVNT1RFIiAtLWRlZmF1bHQgLS1tb2RlPW1lcmdlMyAtLXRvPSIkTUVSR0VEIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAiJExPQ0FMIiAiJFJFTU9URSIgLS1kZWZhdWx0IC0tbW9kZT1tZXJnZTIgLS10bz0iJE1FUkdFRCJdCisJCX0KKwl9CisJZW1lcmdlIHsKKwkJaWYgeyRiYXNlX3N0YWdlIG5lIHt9fSB7CisJCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgLWYgZW1lcmdlLWZpbGVzLXdpdGgtYW5jZXN0b3ItY29tbWFuZCBcCisJCQkJCSIkTE9DQUwiICIkUkVNT1RFIiAiJEJBU0UiICIkYmFzZW5hbWUiXQorCQl9IGVsc2UgeworCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiIC1mIGVtZXJnZS1maWxlcy1jb21tYW5kIFwKKwkJCQkJIiRMT0NBTCIgIiRSRU1PVEUiICIkYmFzZW5hbWUiXQorCQl9CisJfQorCXdpbm1lcmdlIHsKKwkJaWYgeyRiYXNlX3N0YWdlIG5lIHt9fSB7CisJCQkjIFRoaXMgdG9vbCBkb2VzIG5vdCBzdXBwb3J0IDMtd2F5IG1lcmdlcy4KKwkJCSMgVXNlIHRoZSAnY29uZmxpY3QgZmlsZScgcmVzb2x1dGlvbiBmZWF0dXJlIGluc3RlYWQuCisJCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgLWUgLXViICIkTUVSR0VEIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtZSAtdWIgLXdsIFwKKwkJCQktZGwgIlRoZWlycyBGaWxlIiAtZHIgIk1pbmUgRmlsZSIgIiRSRU1PVEUiICIkTE9DQUwiICIkTUVSR0VEIl0KKwkJfQorCX0KKwlhcmF4aXMgeworCQlpZiB7JGJhc2Vfc3RhZ2UgbmUge319IHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtd2FpdCAtbWVyZ2UgLTMgLWExIFwKKwkJCQktdGl0bGUxOiInJE1FUkdFRCAoQmFzZSknIiAtdGl0bGUyOiInJE1FUkdFRCAoTG9jYWwpJyIgXAorCQkJCS10aXRsZTM6IickTUVSR0VEIChSZW1vdGUpJyIgXAorCQkJCSIkQkFTRSIgIiRMT0NBTCIgIiRSRU1PVEUiICIkTUVSR0VEIl0KKwkJfSBlbHNlIHsKKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAtd2FpdCAtMiBcCisJCQkJIC10aXRsZTE6IickTUVSR0VEIChMb2NhbCknIiAtdGl0bGUyOiInJE1FUkdFRCAoUmVtb3RlKSciIFwKKwkJCQkgIiRMT0NBTCIgIiRSRU1PVEUiICIkTUVSR0VEIl0KKwkJfQorCX0KKwlwNG1lcmdlIHsKKwkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiICIkQkFTRSIgIiRSRU1PVEUiICIkTE9DQUwiICIkTUVSR0VEIl0KKwl9CisJdmltZGlmZiB7CisJCWVycm9yX3BvcHVwIFttYyAiTm90IGEgR1VJIG1lcmdlIHRvb2w6ICclcyciICR0b29sXQorCQlyZXR1cm4KKwl9CisJZGVmYXVsdCB7CisJCWVycm9yX3BvcHVwIFttYyAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIiAkdG9vbF0KKwkJcmV0dXJuCisJfQorCX0KKworCW1lcmdlX3Rvb2xfc3RhcnQgJGNtZGxpbmUgJE1FUkdFRCAkQkFDS1VQIFtsaXN0ICRCQVNFICRMT0NBTCAkUkVNT1RFXQorfQorCitwcm9jIGRlbGV0ZV90ZW1wX2ZpbGVzIHtmaWxlc30geworCWZvcmVhY2ggZm5hbWUgJGZpbGVzIHsKKwkJZmlsZSBkZWxldGUgJGZuYW1lCisJfQorfQorCitwcm9jIG1lcmdlX3Rvb2xfZ2V0X3N0YWdlcyB7dGFyZ2V0IHN0YWdlc30geworCWdsb2JhbCBtZXJnZV9zdGFnZXMKKworCXNldCBpIDEKKwlmb3JlYWNoIGZuYW1lICRzdGFnZXMgeworCQlpZiB7JG1lcmdlX3N0YWdlcygkaSkgZXEge319IHsKKwkJCWZpbGUgZGVsZXRlICRmbmFtZQorCQkJY2F0Y2ggeyBjbG9zZSBbb3BlbiAkZm5hbWUgd10gfQorCQl9IGVsc2UgeworCQkJIyBBIGhhY2sgdG8gc3VwcG9ydCBhdXRvY3JsZiBwcm9wZXJseQorCQkJZ2l0IGNoZWNrb3V0LWluZGV4IC1mIC0tc3RhZ2U9JGkgLS0gJHRhcmdldAorCQkJZmlsZSByZW5hbWUgLWZvcmNlIC0tICR0YXJnZXQgJGZuYW1lCisJCX0KKwkJaW5jciBpCisJfQorfQorCitwcm9jIG1lcmdlX3Rvb2xfc3RhcnQge2NtZGxpbmUgdGFyZ2V0IGJhY2t1cCBzdGFnZXN9IHsKKwlnbG9iYWwgbWVyZ2Vfc3RhZ2VzIG10b29sX3RhcmdldCBtdG9vbF90bXBmaWxlcyBtdG9vbF9mZCBtdG9vbF9tdGltZQorCisJaWYge1tpbmZvIGV4aXN0cyBtdG9vbF9mZF19IHsKKwkJaWYge1thc2tfcG9wdXAgW21jICJNZXJnZSB0b29sIGlzIGFscmVhZHkgcnVubmluZywgdGVybWluYXRlIGl0PyJdXSBlcSB7eWVzfX0geworCQkJY2F0Y2ggeyBraWxsX2ZpbGVfcHJvY2VzcyAkbXRvb2xfZmQgfQorCQkJY2F0Y2ggeyBjbG9zZSAkbXRvb2xfZmQgfQorCQkJdW5zZXQgbXRvb2xfZmQKKworCQkJc2V0IG9sZF9iYWNrdXAgW2xpbmRleCAkbXRvb2xfdG1wZmlsZXMgZW5kXQorCQkJZmlsZSByZW5hbWUgLWZvcmNlIC0tICRvbGRfYmFja3VwICRtdG9vbF90YXJnZXQKKwkJCWRlbGV0ZV90ZW1wX2ZpbGVzICRtdG9vbF90bXBmaWxlcworCQl9IGVsc2UgeworCQkJcmV0dXJuCisJCX0KKwl9CisKKwkjIFNhdmUgdGhlIG9yaWdpbmFsIGZpbGUKKwlmaWxlIHJlbmFtZSAtZm9yY2UgLS0gJHRhcmdldCAkYmFja3VwCisKKwkjIEdldCB0aGUgYmxvYnM7IGl0IGRlc3Ryb3lzICR0YXJnZXQKKwlpZiB7W2NhdGNoIHttZXJnZV90b29sX2dldF9zdGFnZXMgJHRhcmdldCAkc3RhZ2VzfSBlcnJdfSB7CisJCWZpbGUgcmVuYW1lIC1mb3JjZSAtLSAkYmFja3VwICR0YXJnZXQKKwkJZGVsZXRlX3RlbXBfZmlsZXMgJHN0YWdlcworCQllcnJvcl9wb3B1cCBbbWMgIkVycm9yIHJldHJpZXZpbmcgdmVyc2lvbnM6XG4lcyIgJGVycl0KKwkJcmV0dXJuCisJfQorCisJIyBSZXN0b3JlIHRoZSBjb25mbGljdCBmaWxlCisJZmlsZSBjb3B5IC1mb3JjZSAtLSAkYmFja3VwICR0YXJnZXQKKworCSMgSW5pdGlhbGl6ZSBnbG9iYWwgc3RhdGUKKwlzZXQgbXRvb2xfdGFyZ2V0ICR0YXJnZXQKKwlzZXQgbXRvb2xfbXRpbWUgW2ZpbGUgbXRpbWUgJHRhcmdldF0KKwlzZXQgbXRvb2xfdG1wZmlsZXMgJHN0YWdlcworCisJbGFwcGVuZCBtdG9vbF90bXBmaWxlcyAkYmFja3VwCisKKwkjIEZvcmNlIHJlZGlyZWN0aW9uIHRvIGF2b2lkIGludGVycHJldGluZyBvdXRwdXQgb24gc3RkZXJyCisJIyBhcyBhbiBlcnJvciwgYW5kIGxhdW5jaCB0aGUgdG9vbAorCWxhcHBlbmQgY21kbGluZSB7Mj5AMX0KKworCWlmIHtbY2F0Y2ggeyBzZXQgbXRvb2xfZmQgW19vcGVuX3N0ZG91dF9zdGRlcnIgJGNtZGxpbmVdIH0gZXJyXX0geworCQlkZWxldGVfdGVtcF9maWxlcyAkbXRvb2xfdG1wZmlsZXMKKwkJZXJyb3JfcG9wdXAgW21jICJDb3VsZCBub3Qgc3RhcnQgdGhlIG1lcmdlIHRvb2w6XG5cbiVzIiAkZXJyXQorCQlyZXR1cm4KKwl9CisKKwl1aV9zdGF0dXMgW21jICJSdW5uaW5nIG1lcmdlIHRvb2wuLi4iXQorCisJZmNvbmZpZ3VyZSAkbXRvb2xfZmQgLWJsb2NraW5nIDAgLXRyYW5zbGF0aW9uIGJpbmFyeSAtZW5jb2RpbmcgYmluYXJ5CisJZmlsZWV2ZW50ICRtdG9vbF9mZCByZWFkYWJsZSBbbGlzdCByZWFkX210b29sX291dHB1dCAkbXRvb2xfZmRdCit9CisKK3Byb2MgcmVhZF9tdG9vbF9vdXRwdXQge2ZkfSB7CisJZ2xvYmFsIG10b29sX2ZkIG10b29sX3RtcGZpbGVzCisKKwlyZWFkICRmZAorCWlmIHtbZW9mICRmZF19IHsKKwkJdW5zZXQgbXRvb2xfZmQKKworCQlmY29uZmlndXJlICRmZCAtYmxvY2tpbmcgMQorCQltZXJnZV90b29sX2ZpbmlzaCAkZmQKKwl9Cit9CisKK3Byb2MgbWVyZ2VfdG9vbF9maW5pc2gge2ZkfSB7CisJZ2xvYmFsIG10b29sX3RtcGZpbGVzIG10b29sX3RhcmdldCBtdG9vbF9tdGltZQorCisJc2V0IGJhY2t1cCBbbGluZGV4ICRtdG9vbF90bXBmaWxlcyBlbmRdCisJc2V0IGZhaWxlZCAwCisKKwkjIENoZWNrIHRoZSByZXR1cm4gY29kZQorCWlmIHtbY2F0Y2gge2Nsb3NlICRmZH0gZXJyXX0geworCQlzZXQgZmFpbGVkIDEKKwkJaWYgeyRlcnIgbmUge2NoaWxkIHByb2Nlc3MgZXhpdGVkIGFibm9ybWFsbHl9fSB7CisJCQllcnJvcl9wb3B1cCBbc3RyY2F0IFttYyAiTWVyZ2UgdG9vbCBmYWlsZWQuIl0gIlxuXG4kZXJyIl0KKwkJfQorCX0KKworCSMgRmluaXNoCisJaWYgeyRmYWlsZWR9IHsKKwkJZmlsZSByZW5hbWUgLWZvcmNlIC0tICRiYWNrdXAgJG10b29sX3RhcmdldAorCQlkZWxldGVfdGVtcF9maWxlcyAkbXRvb2xfdG1wZmlsZXMKKwkJdWlfc3RhdHVzIFttYyAiTWVyZ2UgdG9vbCBmYWlsZWQuIl0KKwl9IGVsc2UgeworCQlpZiB7W2lzX2NvbmZpZ190cnVlIG1lcmdlLmtlZXBiYWNrdXBdfSB7CisJCQlmaWxlIHJlbmFtZSAtZm9yY2UgLS0gJGJhY2t1cCAiJG10b29sX3RhcmdldC5vcmlnIgorCQl9CisKKwkJZGVsZXRlX3RlbXBfZmlsZXMgJG10b29sX3RtcGZpbGVzCisKKwkJcmVzaG93X2RpZmYKKwl9Cit9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9vcHRpb24udGNsIGIvZ2l0LWd1aS9saWIvb3B0aW9uLnRjbAppbmRleCA1ZTEzNDZlLi4xZDU1YjQ5IDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9vcHRpb24udGNsCisrKyBiL2dpdC1ndWkvbGliL29wdGlvbi50Y2wKQEAgLTEsOSArMSwzMSBAQAogIyBnaXQtZ3VpIG9wdGlvbnMgZWRpdG9yCiAjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBTaGF3biBQZWFyY2UKIAorcHJvYyBjb25maWdfY2hlY2tfZW5jb2RpbmdzIHt9IHsKKwlnbG9iYWwgcmVwb19jb25maWdfbmV3IGdsb2JhbF9jb25maWdfbmV3CisKKwlzZXQgZW5jICRnbG9iYWxfY29uZmlnX25ldyhndWkuZW5jb2RpbmcpCisJaWYgeyRlbmMgZXEge319IHsKKwkJc2V0IGdsb2JhbF9jb25maWdfbmV3KGd1aS5lbmNvZGluZykgW2VuY29kaW5nIHN5c3RlbV0KKwl9IGVsc2VpZiB7W3RjbF9lbmNvZGluZyAkZW5jXSBlcSB7fX0geworCQllcnJvcl9wb3B1cCBbbWMgIkludmFsaWQgZ2xvYmFsIGVuY29kaW5nICclcyciICRlbmNdCisJCXJldHVybiAwCisJfQorCisJc2V0IGVuYyAkcmVwb19jb25maWdfbmV3KGd1aS5lbmNvZGluZykKKwlpZiB7JGVuYyBlcSB7fX0geworCQlzZXQgcmVwb19jb25maWdfbmV3KGd1aS5lbmNvZGluZykgW2VuY29kaW5nIHN5c3RlbV0KKwl9IGVsc2VpZiB7W3RjbF9lbmNvZGluZyAkZW5jXSBlcSB7fX0geworCQllcnJvcl9wb3B1cCBbbWMgIkludmFsaWQgcmVwbyBlbmNvZGluZyAnJXMnIiAkZW5jXQorCQlyZXR1cm4gMAorCX0KKworCXJldHVybiAxCit9CisKIHByb2Mgc2F2ZV9jb25maWcge30gewogCWdsb2JhbCBkZWZhdWx0X2NvbmZpZyBmb250X2Rlc2NzCi0JZ2xvYmFsIHJlcG9fY29uZmlnIGdsb2JhbF9jb25maWcKKwlnbG9iYWwgcmVwb19jb25maWcgZ2xvYmFsX2NvbmZpZyBzeXN0ZW1fY29uZmlnCiAJZ2xvYmFsIHJlcG9fY29uZmlnX25ldyBnbG9iYWxfY29uZmlnX25ldwogCWdsb2JhbCB1aV9jb21tX3NwZWxsCiAKQEAgLTI3LDcgKzQ5LDcgQEAKIAlmb3JlYWNoIG5hbWUgW2FycmF5IG5hbWVzIGRlZmF1bHRfY29uZmlnXSB7CiAJCXNldCB2YWx1ZSAkZ2xvYmFsX2NvbmZpZ19uZXcoJG5hbWUpCiAJCWlmIHskdmFsdWUgbmUgJGdsb2JhbF9jb25maWcoJG5hbWUpfSB7Ci0JCQlpZiB7JHZhbHVlIGVxICRkZWZhdWx0X2NvbmZpZygkbmFtZSl9IHsKKwkJCWlmIHskdmFsdWUgZXEgJHN5c3RlbV9jb25maWcoJG5hbWUpfSB7CiAJCQkJY2F0Y2gge2dpdCBjb25maWcgLS1nbG9iYWwgLS11bnNldCAkbmFtZX0KIAkJCX0gZWxzZSB7CiAJCQkJcmVnc3ViIC1hbGwgIlxbe31cXSIgJHZhbHVlIHsifSB2YWx1ZQpAQCAtMTE5LDE1ICsxNDEsMTggQEAKIAkJe2IgbWVyZ2Uuc3VtbWFyeSB7bWMgIlN1bW1hcml6ZSBNZXJnZSBDb21taXRzIn19CiAJCXtpLTEuLjUgbWVyZ2UudmVyYm9zaXR5IHttYyAiTWVyZ2UgVmVyYm9zaXR5In19CiAJCXtiIG1lcmdlLmRpZmZzdGF0IHttYyAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSJ9fQorCQl7dCBtZXJnZS50b29sIHttYyAiVXNlIE1lcmdlIFRvb2wifX0KIAogCQl7YiBndWkudHJ1c3RtdGltZSAge21jICJUcnVzdCBGaWxlIE1vZGlmaWNhdGlvbiBUaW1lc3RhbXBzIn19CiAJCXtiIGd1aS5wcnVuZWR1cmluZ2ZldGNoIHttYyAiUHJ1bmUgVHJhY2tpbmcgQnJhbmNoZXMgRHVyaW5nIEZldGNoIn19CiAJCXtiIGd1aS5tYXRjaHRyYWNraW5nYnJhbmNoIHttYyAiTWF0Y2ggVHJhY2tpbmcgQnJhbmNoZXMifX0KIAkJe2IgZ3VpLmZhc3Rjb3B5YmxhbWUge21jICJCbGFtZSBDb3B5IE9ubHkgT24gQ2hhbmdlZCBGaWxlcyJ9fQogCQl7aS0yMC4uMjAwIGd1aS5jb3B5YmxhbWV0aHJlc2hvbGQge21jICJNaW5pbXVtIExldHRlcnMgVG8gQmxhbWUgQ29weSBPbiJ9fQorCQl7aS0wLi4zMDAgZ3VpLmJsYW1laGlzdG9yeWN0eCB7bWMgIkJsYW1lIEhpc3RvcnkgQ29udGV4dCBSYWRpdXMgKGRheXMpIn19CiAJCXtpLTEuLjk5IGd1aS5kaWZmY29udGV4dCB7bWMgIk51bWJlciBvZiBEaWZmIENvbnRleHQgTGluZXMifX0KIAkJe2ktMC4uOTkgZ3VpLmNvbW1pdG1zZ3dpZHRoIHttYyAiQ29tbWl0IE1lc3NhZ2UgVGV4dCBXaWR0aCJ9fQogCQl7dCBndWkubmV3YnJhbmNodGVtcGxhdGUge21jICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUifX0KKwkJe2MgZ3VpLmVuY29kaW5nIHttYyAiRGVmYXVsdCBGaWxlIENvbnRlbnRzIEVuY29kaW5nIn19CiAJCX0gewogCQlzZXQgdHlwZSBbbGluZGV4ICRvcHRpb24gMF0KIAkJc2V0IG5hbWUgW2xpbmRleCAkb3B0aW9uIDFdCkBAIC0xNTcsNiArMTgyLDcgQEAKIAkJCQlwYWNrICR3LiRmLiRvcHRpZC52IC1zaWRlIHJpZ2h0IC1hbmNob3IgZSAtcGFkeCA1CiAJCQkJcGFjayAkdy4kZi4kb3B0aWQgLXNpZGUgdG9wIC1hbmNob3IgdyAtZmlsbCB4CiAJCQl9CisJCQljIC0KIAkJCXQgewogCQkJCWZyYW1lICR3LiRmLiRvcHRpZAogCQkJCWxhYmVsICR3LiRmLiRvcHRpZC5sIC10ZXh0ICIkdGV4dDoiCkBAIC0xNjksNiArMTk1LDE2IEBACiAJCQkJcGFjayAkdy4kZi4kb3B0aWQudiAtc2lkZSBsZWZ0IC1hbmNob3IgdyBcCiAJCQkJCS1maWxsIHggLWV4cGFuZCAxIFwKIAkJCQkJLXBhZHggNQorCQkJCWlmIHskdHlwZSBlcSB7Y319IHsKKwkJCQkJbWVudSAkdy4kZi4kb3B0aWQubQorCQkJCQlidWlsZF9lbmNvZGluZ19tZW51ICR3LiRmLiRvcHRpZC5tIFwKKwkJCQkJCVtsaXN0IHNldCAke2Z9X2NvbmZpZ19uZXcoJG5hbWUpXSAxCisJCQkJCWJ1dHRvbiAkdy4kZi4kb3B0aWQuYiBcCisJCQkJCQktdGV4dCBbbWMgIkNoYW5nZSJdIFwKKwkJCQkJCS1jb21tYW5kIFtsaXN0IHBvcHVwX2J0bl9tZW51IFwKKwkJCQkJCQkkdy4kZi4kb3B0aWQubSAkdy4kZi4kb3B0aWQuYl0KKwkJCQkJcGFjayAkdy4kZi4kb3B0aWQuYiAtc2lkZSBsZWZ0IC1hbmNob3IgdworCQkJCX0KIAkJCQlwYWNrICR3LiRmLiRvcHRpZCAtc2lkZSB0b3AgLWFuY2hvciB3IC1maWxsIHgKIAkJCX0KIAkJCX0KQEAgLTI0OCwxNyArMjg0LDE3IEBACiB9CiAKIHByb2MgZG9fcmVzdG9yZV9kZWZhdWx0cyB7fSB7Ci0JZ2xvYmFsIGZvbnRfZGVzY3MgZGVmYXVsdF9jb25maWcgcmVwb19jb25maWcKKwlnbG9iYWwgZm9udF9kZXNjcyBkZWZhdWx0X2NvbmZpZyByZXBvX2NvbmZpZyBzeXN0ZW1fY29uZmlnCiAJZ2xvYmFsIHJlcG9fY29uZmlnX25ldyBnbG9iYWxfY29uZmlnX25ldwogCiAJZm9yZWFjaCBuYW1lIFthcnJheSBuYW1lcyBkZWZhdWx0X2NvbmZpZ10gewotCQlzZXQgcmVwb19jb25maWdfbmV3KCRuYW1lKSAkZGVmYXVsdF9jb25maWcoJG5hbWUpCi0JCXNldCBnbG9iYWxfY29uZmlnX25ldygkbmFtZSkgJGRlZmF1bHRfY29uZmlnKCRuYW1lKQorCQlzZXQgcmVwb19jb25maWdfbmV3KCRuYW1lKSAkc3lzdGVtX2NvbmZpZygkbmFtZSkKKwkJc2V0IGdsb2JhbF9jb25maWdfbmV3KCRuYW1lKSAkc3lzdGVtX2NvbmZpZygkbmFtZSkKIAl9CiAKIAlmb3JlYWNoIG9wdGlvbiAkZm9udF9kZXNjcyB7CiAJCXNldCBuYW1lIFtsaW5kZXggJG9wdGlvbiAwXQotCQlzZXQgcmVwb19jb25maWcoZ3VpLiRuYW1lKSAkZGVmYXVsdF9jb25maWcoZ3VpLiRuYW1lKQorCQlzZXQgcmVwb19jb25maWcoZ3VpLiRuYW1lKSAkc3lzdGVtX2NvbmZpZyhndWkuJG5hbWUpCiAJfQogCWFwcGx5X2NvbmZpZwogCkBAIC0yNzMsNiArMzA5LDcgQEAKIH0KIAogcHJvYyBkb19zYXZlX2NvbmZpZyB7d30geworCWlmIHshW2NvbmZpZ19jaGVja19lbmNvZGluZ3NdfSByZXR1cm4KIAlpZiB7W2NhdGNoIHtzYXZlX2NvbmZpZ30gZXJyXX0gewogCQllcnJvcl9wb3B1cCBbc3RyY2F0IFttYyAiRmFpbGVkIHRvIGNvbXBsZXRlbHkgc2F2ZSBvcHRpb25zOiJdICJcblxuJGVyciJdCiAJfQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvcmVtb3RlLnRjbCBiL2dpdC1ndWkvbGliL3JlbW90ZS50Y2wKaW5kZXggMGU4NmRkYS4uYjkyYjQyOSAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvcmVtb3RlLnRjbAorKysgYi9naXQtZ3VpL2xpYi9yZW1vdGUudGNsCkBAIC0xMzIsOTEgKzEzMiwxNDUgQEAKIAlzZXQgYWxsX3JlbW90ZXMgW2xzb3J0IC11bmlxdWUgJGFsbF9yZW1vdGVzXQogfQogCi1wcm9jIHBvcHVsYXRlX2ZldGNoX21lbnUge30gewotCWdsb2JhbCBhbGxfcmVtb3RlcyByZXBvX2NvbmZpZwotCitwcm9jIGFkZF9mZXRjaF9lbnRyeSB7cn0geworCWdsb2JhbCByZXBvX2NvbmZpZwogCXNldCByZW1vdGVfbSAubWJhci5yZW1vdGUKIAlzZXQgZmV0Y2hfbSAkcmVtb3RlX20uZmV0Y2gKIAlzZXQgcHJ1bmVfbSAkcmVtb3RlX20ucHJ1bmUKLQotCWZvcmVhY2ggciAkYWxsX3JlbW90ZXMgewotCQlzZXQgZW5hYmxlIDAKLQkJaWYgeyFbY2F0Y2gge3NldCBhICRyZXBvX2NvbmZpZyhyZW1vdGUuJHIudXJsKX1dfSB7Ci0JCQlpZiB7IVtjYXRjaCB7c2V0IGEgJHJlcG9fY29uZmlnKHJlbW90ZS4kci5mZXRjaCl9XX0gewotCQkJCXNldCBlbmFibGUgMQotCQkJfQotCQl9IGVsc2UgewotCQkJY2F0Y2ggewotCQkJCXNldCBmZCBbb3BlbiBbZ2l0ZGlyIHJlbW90ZXMgJHJdIHJdCi0JCQkJd2hpbGUge1tnZXRzICRmZCBuXSA+PSAwfSB7Ci0JCQkJCWlmIHtbcmVnZXhwIHteUHVsbDpbIFx0XSooW146XSspOn0gJG5dfSB7Ci0JCQkJCQlzZXQgZW5hYmxlIDEKLQkJCQkJCWJyZWFrCi0JCQkJCX0KKwlzZXQgcmVtb3ZlX20gJHJlbW90ZV9tLnJlbW92ZQorCXNldCBlbmFibGUgMAorCWlmIHshW2NhdGNoIHtzZXQgYSAkcmVwb19jb25maWcocmVtb3RlLiRyLnVybCl9XX0geworCQlpZiB7IVtjYXRjaCB7c2V0IGEgJHJlcG9fY29uZmlnKHJlbW90ZS4kci5mZXRjaCl9XX0geworCQkJc2V0IGVuYWJsZSAxCisJCX0KKwl9IGVsc2UgeworCQljYXRjaCB7CisJCQlzZXQgZmQgW29wZW4gW2dpdGRpciByZW1vdGVzICRyXSByXQorCQkJd2hpbGUge1tnZXRzICRmZCBuXSA+PSAwfSB7CisJCQkJaWYge1tyZWdleHAge15QdWxsOlsgXHRdKihbXjpdKyk6fSAkbl19IHsKKwkJCQkJc2V0IGVuYWJsZSAxCisJCQkJCWJyZWFrCiAJCQkJfQotCQkJCWNsb3NlICRmZAogCQkJfQorCQkJY2xvc2UgJGZkCisJCX0KKwl9CisKKwlpZiB7JGVuYWJsZX0geworCQlpZiB7IVt3aW5mbyBleGlzdHMgJGZldGNoX21dfSB7CisJCQltZW51ICRyZW1vdmVfbQorCQkJJHJlbW90ZV9tIGluc2VydCAwIGNhc2NhZGUgXAorCQkJCS1sYWJlbCBbbWMgIlJlbW92ZSBSZW1vdGUiXSBcCisJCQkJLW1lbnUgJHJlbW92ZV9tCisKKwkJCW1lbnUgJHBydW5lX20KKwkJCSRyZW1vdGVfbSBpbnNlcnQgMCBjYXNjYWRlIFwKKwkJCQktbGFiZWwgW21jICJQcnVuZSBmcm9tIl0gXAorCQkJCS1tZW51ICRwcnVuZV9tCisKKwkJCW1lbnUgJGZldGNoX20KKwkJCSRyZW1vdGVfbSBpbnNlcnQgMCBjYXNjYWRlIFwKKwkJCQktbGFiZWwgW21jICJGZXRjaCBmcm9tIl0gXAorCQkJCS1tZW51ICRmZXRjaF9tCiAJCX0KIAotCQlpZiB7JGVuYWJsZX0gewotCQkJaWYgeyFbd2luZm8gZXhpc3RzICRmZXRjaF9tXX0gewotCQkJCW1lbnUgJHBydW5lX20KLQkJCQkkcmVtb3RlX20gaW5zZXJ0IDAgY2FzY2FkZSBcCi0JCQkJCS1sYWJlbCBbbWMgIlBydW5lIGZyb20iXSBcCi0JCQkJCS1tZW51ICRwcnVuZV9tCi0KLQkJCQltZW51ICRmZXRjaF9tCi0JCQkJJHJlbW90ZV9tIGluc2VydCAwIGNhc2NhZGUgXAotCQkJCQktbGFiZWwgW21jICJGZXRjaCBmcm9tIl0gXAotCQkJCQktbWVudSAkZmV0Y2hfbQotCQkJfQotCi0JCQkkZmV0Y2hfbSBhZGQgY29tbWFuZCBcCi0JCQkJLWxhYmVsICRyIFwKLQkJCQktY29tbWFuZCBbbGlzdCBmZXRjaF9mcm9tICRyXQotCQkJJHBydW5lX20gYWRkIGNvbW1hbmQgXAotCQkJCS1sYWJlbCAkciBcCi0JCQkJLWNvbW1hbmQgW2xpc3QgcHJ1bmVfZnJvbSAkcl0KLQkJfQorCQkkZmV0Y2hfbSBhZGQgY29tbWFuZCBcCisJCQktbGFiZWwgJHIgXAorCQkJLWNvbW1hbmQgW2xpc3QgZmV0Y2hfZnJvbSAkcl0KKwkJJHBydW5lX20gYWRkIGNvbW1hbmQgXAorCQkJLWxhYmVsICRyIFwKKwkJCS1jb21tYW5kIFtsaXN0IHBydW5lX2Zyb20gJHJdCisJCSRyZW1vdmVfbSBhZGQgY29tbWFuZCBcCisJCQktbGFiZWwgJHIgXAorCQkJLWNvbW1hbmQgW2xpc3QgcmVtb3ZlX3JlbW90ZSAkcl0KIAl9CiB9CiAKLXByb2MgcG9wdWxhdGVfcHVzaF9tZW51IHt9IHsKLQlnbG9iYWwgYWxsX3JlbW90ZXMgcmVwb19jb25maWcKLQorcHJvYyBhZGRfcHVzaF9lbnRyeSB7cn0geworCWdsb2JhbCByZXBvX2NvbmZpZwogCXNldCByZW1vdGVfbSAubWJhci5yZW1vdGUKIAlzZXQgcHVzaF9tICRyZW1vdGVfbS5wdXNoCi0KLQlmb3JlYWNoIHIgJGFsbF9yZW1vdGVzIHsKLQkJc2V0IGVuYWJsZSAwCi0JCWlmIHshW2NhdGNoIHtzZXQgYSAkcmVwb19jb25maWcocmVtb3RlLiRyLnVybCl9XX0gewotCQkJaWYgeyFbY2F0Y2gge3NldCBhICRyZXBvX2NvbmZpZyhyZW1vdGUuJHIucHVzaCl9XX0gewotCQkJCXNldCBlbmFibGUgMQotCQkJfQotCQl9IGVsc2UgewotCQkJY2F0Y2ggewotCQkJCXNldCBmZCBbb3BlbiBbZ2l0ZGlyIHJlbW90ZXMgJHJdIHJdCi0JCQkJd2hpbGUge1tnZXRzICRmZCBuXSA+PSAwfSB7Ci0JCQkJCWlmIHtbcmVnZXhwIHteUHVzaDpbIFx0XSooW146XSspOn0gJG5dfSB7Ci0JCQkJCQlzZXQgZW5hYmxlIDEKLQkJCQkJCWJyZWFrCi0JCQkJCX0KLQkJCQl9Ci0JCQkJY2xvc2UgJGZkCi0JCQl9CisJc2V0IGVuYWJsZSAwCisJaWYgeyFbY2F0Y2gge3NldCBhICRyZXBvX2NvbmZpZyhyZW1vdGUuJHIudXJsKX1dfSB7CisJCWlmIHshW2NhdGNoIHtzZXQgYSAkcmVwb19jb25maWcocmVtb3RlLiRyLnB1c2gpfV19IHsKKwkJCXNldCBlbmFibGUgMQogCQl9Ci0KLQkJaWYgeyRlbmFibGV9IHsKLQkJCWlmIHshW3dpbmZvIGV4aXN0cyAkcHVzaF9tXX0gewotCQkJCW1lbnUgJHB1c2hfbQotCQkJCSRyZW1vdGVfbSBpbnNlcnQgMCBjYXNjYWRlIFwKLQkJCQkJLWxhYmVsIFttYyAiUHVzaCB0byJdIFwKLQkJCQkJLW1lbnUgJHB1c2hfbQorCX0gZWxzZSB7CisJCWNhdGNoIHsKKwkJCXNldCBmZCBbb3BlbiBbZ2l0ZGlyIHJlbW90ZXMgJHJdIHJdCisJCQl3aGlsZSB7W2dldHMgJGZkIG5dID49IDB9IHsKKwkJCQlpZiB7W3JlZ2V4cCB7XlB1c2g6WyBcdF0qKFteOl0rKTp9ICRuXX0geworCQkJCQlzZXQgZW5hYmxlIDEKKwkJCQkJYnJlYWsKKwkJCQl9CiAJCQl9Ci0KLQkJCSRwdXNoX20gYWRkIGNvbW1hbmQgXAotCQkJCS1sYWJlbCAkciBcCi0JCQkJLWNvbW1hbmQgW2xpc3QgcHVzaF90byAkcl0KKwkJCWNsb3NlICRmZAogCQl9CiAJfQorCisJaWYgeyRlbmFibGV9IHsKKwkJaWYgeyFbd2luZm8gZXhpc3RzICRwdXNoX21dfSB7CisJCQltZW51ICRwdXNoX20KKwkJCSRyZW1vdGVfbSBpbnNlcnQgMCBjYXNjYWRlIFwKKwkJCQktbGFiZWwgW21jICJQdXNoIHRvIl0gXAorCQkJCS1tZW51ICRwdXNoX20KKwkJfQorCisJCSRwdXNoX20gYWRkIGNvbW1hbmQgXAorCQkJLWxhYmVsICRyIFwKKwkJCS1jb21tYW5kIFtsaXN0IHB1c2hfdG8gJHJdCisJfQorfQorCitwcm9jIHBvcHVsYXRlX3JlbW90ZXNfbWVudSB7fSB7CisJZ2xvYmFsIGFsbF9yZW1vdGVzCisKKwlmb3JlYWNoIHIgJGFsbF9yZW1vdGVzIHsKKwkJYWRkX2ZldGNoX2VudHJ5ICRyCisJCWFkZF9wdXNoX2VudHJ5ICRyCisJfQorfQorCitwcm9jIGFkZF9zaW5nbGVfcmVtb3RlIHtuYW1lIGxvY2F0aW9ufSB7CisJZ2xvYmFsIGFsbF9yZW1vdGVzIHJlcG9fY29uZmlnCisJbGFwcGVuZCBhbGxfcmVtb3RlcyAkbmFtZQorCisJZ2l0IHJlbW90ZSBhZGQgJG5hbWUgJGxvY2F0aW9uCisKKwkjIFhYWDogQmV0dGVyIHJlLXJlYWQgdGhlIGNvbmZpZyBzbyB0aGF0IHdlIHdpbGwgbmV2ZXIgZ2V0IG91dAorCSMgb2Ygc3luYyB3aXRoIGdpdCByZW1vdGUgaW1wbGVtZW50YXRpb24/CisJc2V0IHJlcG9fY29uZmlnKHJlbW90ZS4kbmFtZS51cmwpICRsb2NhdGlvbgorCXNldCByZXBvX2NvbmZpZyhyZW1vdGUuJG5hbWUuZmV0Y2gpICIrcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy8kbmFtZS8qIgorCisJYWRkX2ZldGNoX2VudHJ5ICRuYW1lCisJYWRkX3B1c2hfZW50cnkgJG5hbWUKK30KKworcHJvYyBkZWxldGVfZnJvbV9tZW51IHttZW51IG5hbWV9IHsKKwlpZiB7W3dpbmZvIGV4aXN0cyAkbWVudV19IHsKKwkJJG1lbnUgZGVsZXRlICRuYW1lCisJfQorfQorCitwcm9jIHJlbW92ZV9yZW1vdGUge25hbWV9IHsKKwlnbG9iYWwgYWxsX3JlbW90ZXMgcmVwb19jb25maWcKKworCWdpdCByZW1vdGUgcm0gJG5hbWUKKworCWNhdGNoIHsKKwkJIyBNaXNzaW5nIHZhbHVlcyBhcmUgb2sKKwkJdW5zZXQgcmVwb19jb25maWcocmVtb3RlLiRuYW1lLnVybCkKKwkJdW5zZXQgcmVwb19jb25maWcocmVtb3RlLiRuYW1lLmZldGNoKQorCQl1bnNldCByZXBvX2NvbmZpZyhyZW1vdGUuJG5hbWUucHVzaCkKKwl9CisKKwlzZXQgaSBbbHNlYXJjaCAtZXhhY3QgYWxsX3JlbW90ZXMgJG5hbWVdCisJbHJlcGxhY2UgYWxsX3JlbW90ZXMgJGkgJGkKKworCXNldCByZW1vdGVfbSAubWJhci5yZW1vdGUKKwlkZWxldGVfZnJvbV9tZW51ICRyZW1vdGVfbS5mZXRjaCAkbmFtZQorCWRlbGV0ZV9mcm9tX21lbnUgJHJlbW90ZV9tLnBydW5lICRuYW1lCisJZGVsZXRlX2Zyb21fbWVudSAkcmVtb3RlX20ucmVtb3ZlICRuYW1lCisJIyBOb3QgYWxsIHJlbW90ZXMgYXJlIGluIHRoZSBwdXNoIG1lbnUKKwljYXRjaCB7IGRlbGV0ZV9mcm9tX21lbnUgJHJlbW90ZV9tLnB1c2ggJG5hbWUgfQogfQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvcmVtb3RlX2FkZC50Y2wgYi9naXQtZ3VpL2xpYi9yZW1vdGVfYWRkLnRjbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjI5NDIyCi0tLSAvZGV2L251bGwKKysrIGIvZ2l0LWd1aS9saWIvcmVtb3RlX2FkZC50Y2wKQEAgLTAsMCArMSwxOTEgQEAKKyMgZ2l0LWd1aSByZW1vdGUgYWRkaW5nIHN1cHBvcnQKKyMgQ29weXJpZ2h0IChDKSAyMDA4IFBldHIgQmF1ZGlzCisKK2NsYXNzIHJlbW90ZV9hZGQgeworCitmaWVsZCB3ICAgICAgICAgICAgICA7ICMgd2lkZ2V0IHBhdGgKK2ZpZWxkIHdfbmFtZSAgICAgICAgIDsgIyBuZXcgcmVtb3RlIG5hbWUgd2lkZ2V0CitmaWVsZCB3X2xvYyAgICAgICAgICA7ICMgbmV3IHJlbW90ZSBsb2NhdGlvbiB3aWRnZXQKKworZmllbGQgbmFtZSAgICAgICAgIHt9OyAjIG5hbWUgb2YgdGhlIHJlbW90ZSB0aGUgdXNlciBoYXMgY2hvc2VuCitmaWVsZCBsb2NhdGlvbiAgICAge307ICMgbG9jYXRpb24gb2YgdGhlIHJlbW90ZSB0aGUgdXNlciBoYXMgY2hvc2VuCisKK2ZpZWxkIG9wdF9hY3Rpb24gZmV0Y2g7ICMgYWN0aW9uIHRvIGRvIGFmdGVyIHJlZ2lzdGVyaW5nIHRoZSByZW1vdGUgbG9jYWxseQorCitjb25zdHJ1Y3RvciBkaWFsb2cge30geworCWdsb2JhbCByZXBvX2NvbmZpZworCisJbWFrZV90b3BsZXZlbCB0b3AgdworCXdtIHRpdGxlICR0b3AgW2FwcGVuZCAiW2FwcG5hbWVdIChbcmVwb25hbWVdKTogIiBbbWMgIkFkZCBSZW1vdGUiXV0KKwlpZiB7JHRvcCBuZSB7Ln19IHsKKwkJd20gZ2VvbWV0cnkgJHRvcCAiK1t3aW5mbyByb290eCAuXStbd2luZm8gcm9vdHkgLl0iCisJfQorCisJbGFiZWwgJHcuaGVhZGVyIC10ZXh0IFttYyAiQWRkIE5ldyBSZW1vdGUiXSAtZm9udCBmb250X3VpYm9sZAorCXBhY2sgJHcuaGVhZGVyIC1zaWRlIHRvcCAtZmlsbCB4CisKKwlmcmFtZSAkdy5idXR0b25zCisJYnV0dG9uICR3LmJ1dHRvbnMuY3JlYXRlIC10ZXh0IFttYyBBZGRdIFwKKwkJLWRlZmF1bHQgYWN0aXZlIFwKKwkJLWNvbW1hbmQgW2NiIF9hZGRdCisJcGFjayAkdy5idXR0b25zLmNyZWF0ZSAtc2lkZSByaWdodAorCWJ1dHRvbiAkdy5idXR0b25zLmNhbmNlbCAtdGV4dCBbbWMgQ2FuY2VsXSBcCisJCS1jb21tYW5kIFtsaXN0IGRlc3Ryb3kgJHddCisJcGFjayAkdy5idXR0b25zLmNhbmNlbCAtc2lkZSByaWdodCAtcGFkeCA1CisJcGFjayAkdy5idXR0b25zIC1zaWRlIGJvdHRvbSAtZmlsbCB4IC1wYWR5IDEwIC1wYWR4IDEwCisKKwlsYWJlbGZyYW1lICR3LmRlc2MgLXRleHQgW21jICJSZW1vdGUgRGV0YWlscyJdCisKKwlsYWJlbCAkdy5kZXNjLm5hbWVfbCAtdGV4dCBbbWMgIk5hbWU6Il0KKwlzZXQgd19uYW1lICR3LmRlc2MubmFtZV90CisJZW50cnkgJHdfbmFtZSBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAorCQktd2lkdGggNDAgXAorCQktdGV4dHZhcmlhYmxlIEBuYW1lIFwKKwkJLXZhbGlkYXRlIGtleSBcCisJCS12YWxpZGF0ZWNvbW1hbmQgW2NiIF92YWxpZGF0ZV9uYW1lICVkICVTXQorCWdyaWQgJHcuZGVzYy5uYW1lX2wgJHdfbmFtZSAtc3RpY2t5IHdlIC1wYWR4IHswIDV9CisKKwlsYWJlbCAkdy5kZXNjLmxvY19sIC10ZXh0IFttYyAiTG9jYXRpb246Il0KKwlzZXQgd19sb2MgJHcuZGVzYy5sb2NfdAorCWVudHJ5ICR3X2xvYyBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAorCQktd2lkdGggNDAgXAorCQktdGV4dHZhcmlhYmxlIEBsb2NhdGlvbgorCWdyaWQgJHcuZGVzYy5sb2NfbCAkd19sb2MgLXN0aWNreSB3ZSAtcGFkeCB7MCA1fQorCisJZ3JpZCBjb2x1bW5jb25maWd1cmUgJHcuZGVzYyAxIC13ZWlnaHQgMQorCXBhY2sgJHcuZGVzYyAtYW5jaG9yIG53IC1maWxsIHggLXBhZHkgNSAtcGFkeCA1CisKKwlsYWJlbGZyYW1lICR3LmFjdGlvbiAtdGV4dCBbbWMgIkZ1cnRoZXIgQWN0aW9uIl0KKworCXJhZGlvYnV0dG9uICR3LmFjdGlvbi5mZXRjaCBcCisJCS10ZXh0IFttYyAiRmV0Y2ggSW1tZWRpYXRlbHkiXSBcCisJCS12YWx1ZSBmZXRjaCBcCisJCS12YXJpYWJsZSBAb3B0X2FjdGlvbgorCXBhY2sgJHcuYWN0aW9uLmZldGNoIC1hbmNob3IgbncKKworCXJhZGlvYnV0dG9uICR3LmFjdGlvbi5wdXNoIFwKKwkJLXRleHQgW21jICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIl0gXAorCQktdmFsdWUgcHVzaCBcCisJCS12YXJpYWJsZSBAb3B0X2FjdGlvbgorCXBhY2sgJHcuYWN0aW9uLnB1c2ggLWFuY2hvciBudworCisJcmFkaW9idXR0b24gJHcuYWN0aW9uLm5vbmUgXAorCQktdGV4dCBbbWMgIkRvIE5vdGhpbmcgRWxzZSBOb3ciXSBcCisJCS12YWx1ZSBub25lIFwKKwkJLXZhcmlhYmxlIEBvcHRfYWN0aW9uCisJcGFjayAkdy5hY3Rpb24ubm9uZSAtYW5jaG9yIG53CisKKwlncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdy5hY3Rpb24gMSAtd2VpZ2h0IDEKKwlwYWNrICR3LmFjdGlvbiAtYW5jaG9yIG53IC1maWxsIHggLXBhZHkgNSAtcGFkeCA1CisKKwliaW5kICR3IDxWaXNpYmlsaXR5PiBbY2IgX3Zpc2libGVdCisJYmluZCAkdyA8S2V5LUVzY2FwZT4gW2xpc3QgZGVzdHJveSAkd10KKwliaW5kICR3IDxLZXktUmV0dXJuPiBbY2IgX2FkZF1cO2JyZWFrCisJdGt3YWl0IHdpbmRvdyAkdworfQorCittZXRob2QgX2FkZCB7fSB7CisJZ2xvYmFsIHJlcG9fY29uZmlnIGVudgorCWdsb2JhbCBNMUIKKworCWlmIHskbmFtZSBlcSB7fX0geworCQl0a19tZXNzYWdlQm94IFwKKwkJCS1pY29uIGVycm9yIFwKKwkJCS10eXBlIG9rIFwKKwkJCS10aXRsZSBbd20gdGl0bGUgJHddIFwKKwkJCS1wYXJlbnQgJHcgXAorCQkJLW1lc3NhZ2UgW21jICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIl0KKwkJZm9jdXMgJHdfbmFtZQorCQlyZXR1cm4KKwl9CisKKwkjIFhYWDogV2UgYWJ1c2UgY2hlY2stcmVmLWZvcm1hdCBoZXJlLCBidXQKKwkjIHRoYXQgc2hvdWxkIGJlIG9rLgorCWlmIHtbY2F0Y2gge2dpdCBjaGVjay1yZWYtZm9ybWF0ICJyZW1vdGVzLyRuYW1lIn1dfSB7CisJCXRrX21lc3NhZ2VCb3ggXAorCQkJLWljb24gZXJyb3IgXAorCQkJLXR5cGUgb2sgXAorCQkJLXRpdGxlIFt3bSB0aXRsZSAkd10gXAorCQkJLXBhcmVudCAkdyBcCisJCQktbWVzc2FnZSBbbWMgIiclcycgaXMgbm90IGFuIGFjY2VwdGFibGUgcmVtb3RlIG5hbWUuIiAkbmFtZV0KKwkJZm9jdXMgJHdfbmFtZQorCQlyZXR1cm4KKwl9CisKKwlpZiB7W2NhdGNoIHthZGRfc2luZ2xlX3JlbW90ZSAkbmFtZSAkbG9jYXRpb259XX0geworCQl0a19tZXNzYWdlQm94IFwKKwkJCS1pY29uIGVycm9yIFwKKwkJCS10eXBlIG9rIFwKKwkJCS10aXRsZSBbd20gdGl0bGUgJHddIFwKKwkJCS1wYXJlbnQgJHcgXAorCQkJLW1lc3NhZ2UgW21jICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIiAkbmFtZSAkbG9jYXRpb25dCisJCWZvY3VzICR3X25hbWUKKwkJcmV0dXJuCisJfQorCisJc3dpdGNoIC0tICRvcHRfYWN0aW9uIHsKKwlmZXRjaCB7CisJCXNldCBjIFtjb25zb2xlOjpuZXcgXAorCQkJW21jICJmZXRjaCAlcyIgJG5hbWVdIFwKKwkJCVttYyAiRmV0Y2hpbmcgdGhlICVzIiAkbmFtZV1dCisJCWNvbnNvbGU6OmV4ZWMgJGMgW2xpc3QgZ2l0IGZldGNoICRuYW1lXQorCX0KKwlwdXNoIHsKKwkJc2V0IGNtZHMgW2xpc3RdCisKKwkJIyBQYXJzZSB0aGUgbG9jYXRpb24KKwkJaWYgeyBbcmVnZXhwIHsoPzpnaXRcKyk/c3NoOi8vKFteL10rKSgvLispfSAkbG9jYXRpb24geHggaG9zdCBwYXRoXQorCQkgICAgIHx8IFtyZWdleHAgeyhbXjpdW146XSspOiguKyl9ICRsb2NhdGlvbiB4eCBob3N0IHBhdGhdfSB7CisJCQlzZXQgc3NoIHNzaAorCQkJaWYge1tpbmZvIGV4aXN0cyBlbnYoR0lUX1NTSCldfSB7CisJCQkJc2V0IHNzaCAkZW52KEdJVF9TU0gpCisJCQl9CisJCQlsYXBwZW5kIGNtZHMgW2xpc3QgZXhlYyAkc3NoICRob3N0IG1rZGlyIC1wICRsb2NhdGlvbiAmJiBnaXQgLS1naXQtZGlyPSRwYXRoIGluaXQgLS1iYXJlXQorCQl9IGVsc2VpZiB7ICEgW3JlZ2V4cCB7Oi8vfSAkbG9jYXRpb24geHhdIH0geworCQkJbGFwcGVuZCBjbWRzIFtsaXN0IGV4ZWMgbWtkaXIgLXAgJGxvY2F0aW9uXQorCQkJbGFwcGVuZCBjbWRzIFtsaXN0IGV4ZWMgZ2l0IC0tZ2l0LWRpcj0kbG9jYXRpb24gaW5pdCAtLWJhcmVdCisJCX0gZWxzZSB7CisJCQl0a19tZXNzYWdlQm94IFwKKwkJCQktaWNvbiBlcnJvciBcCisJCQkJLXR5cGUgb2sgXAorCQkJCS10aXRsZSBbd20gdGl0bGUgJHddIFwKKwkJCQktcGFyZW50ICR3IFwKKwkJCQktbWVzc2FnZSBbbWMgIkRvIG5vdCBrbm93IGhvdyB0byBpbml0aWFsaXplIHJlcG9zaXRvcnkgYXQgbG9jYXRpb24gJyVzJy4iICRsb2NhdGlvbl0KKwkJCWRlc3Ryb3kgJHcKKwkJCXJldHVybgorCQl9CisKKwkJc2V0IGMgW2NvbnNvbGU6Om5ldyBcCisJCQlbbWMgInB1c2ggJXMiICRuYW1lXSBcCisJCQlbbWMgIlNldHRpbmcgdXAgdGhlICVzIChhdCAlcykiICRuYW1lICRsb2NhdGlvbl1dCisKKwkJbGFwcGVuZCBjbWRzIFtsaXN0IGV4ZWMgZ2l0IHB1c2ggLXYgLS1hbGwgJG5hbWVdCisJCWNvbnNvbGU6OmNoYWluICRjICRjbWRzCisJfQorCW5vbmUgeworCX0KKwl9CisKKwlkZXN0cm95ICR3Cit9CisKK21ldGhvZCBfdmFsaWRhdGVfbmFtZSB7ZCBTfSB7CisJaWYgeyRkID09IDF9IHsKKwkJaWYge1tyZWdleHAge1t+Xjo/KlxbXDAtIF19ICRTXX0geworCQkJcmV0dXJuIDAKKwkJfQorCX0KKwlyZXR1cm4gMQorfQorCittZXRob2QgX3Zpc2libGUge30geworCWdyYWIgJHcKKwkkd19uYW1lIGljdXJzb3IgZW5kCisJZm9jdXMgJHdfbmFtZQorfQorCit9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2wgYi9naXQtZ3VpL2xpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2wKaW5kZXggYzdiODE0OC4uODllYjBmNyAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsCisrKyBiL2dpdC1ndWkvbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbApAQCAtMjYsMTIgKzI2LDEyIEBACiAJZ2xvYmFsIGFsbF9yZW1vdGVzIE0xQgogCiAJbWFrZV90b3BsZXZlbCB0b3AgdwotCXdtIHRpdGxlICR0b3AgW2FwcGVuZCAiW2FwcG5hbWVdIChbcmVwb25hbWVdKTogIiBbbWMgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIl1dCisJd20gdGl0bGUgJHRvcCBbYXBwZW5kICJbYXBwbmFtZV0gKFtyZXBvbmFtZV0pOiAiIFttYyAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSJdXQogCWlmIHskdG9wIG5lIHsufX0gewogCQl3bSBnZW9tZXRyeSAkdG9wICIrW3dpbmZvIHJvb3R4IC5dK1t3aW5mbyByb290eSAuXSIKIAl9CiAKLQlsYWJlbCAkdy5oZWFkZXIgLXRleHQgW21jICJEZWxldGUgUmVtb3RlIEJyYW5jaCJdIC1mb250IGZvbnRfdWlib2xkCisJbGFiZWwgJHcuaGVhZGVyIC10ZXh0IFttYyAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSJdIC1mb250IGZvbnRfdWlib2xkCiAJcGFjayAkdy5oZWFkZXIgLXNpZGUgdG9wIC1maWxsIHgKIAogCWZyYW1lICR3LmJ1dHRvbnMKQEAgLTYzLDcgKzYzLDcgQEAKIAkJc2V0IHVybHR5cGUgdXJsCiAJfQogCXJhZGlvYnV0dG9uICR3LmRlc3QudXJsX3IgXAotCQktdGV4dCBbbWMgIkFyYml0cmFyeSBVUkw6Il0gXAorCQktdGV4dCBbbWMgIkFyYml0cmFyeSBMb2NhdGlvbjoiXSBcCiAJCS12YWx1ZSB1cmwgXAogCQktdmFyaWFibGUgQHVybHR5cGUKIAllbnRyeSAkdy5kZXN0LnVybF90IFwKZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3NlYXJjaC50Y2wgYi9naXQtZ3VpL2xpYi9zZWFyY2gudGNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNzFlOWEKLS0tIC9kZXYvbnVsbAorKysgYi9naXQtZ3VpL2xpYi9zZWFyY2gudGNsCkBAIC0wLDAgKzEsMTk4IEBACisjIGluY3JlbWVudGFsIHNlYXJjaCBwYW5lbAorIyBiYXNlZCBvbiBjb2RlIGZyb20gZ2l0aywgQ29weXJpZ2h0IChDKSBQYXVsIE1hY2tlcnJhcworCitjbGFzcyBzZWFyY2hiYXIgeworCitmaWVsZCB3CitmaWVsZCBjdGV4dAorCitmaWVsZCBzZWFyY2hzdHJpbmcgICB7fQorZmllbGQgY2FzZXNlbnNpdGl2ZSAgMQorZmllbGQgc2VhcmNoZGlybiAgICAgLWZvcndhcmRzCisKK2ZpZWxkIHNtYXJrdG9wCitmaWVsZCBzbWFya2JvdAorCitjb25zdHJ1Y3RvciBuZXcge2lfdyBpX3RleHQgYXJnc30geworCXNldCB3ICAgICAgJGlfdworCXNldCBjdGV4dCAgJGlfdGV4dAorCisJZnJhbWUgICR3CisJbGFiZWwgICR3LmwgICAgICAgLXRleHQgW21jIEZpbmQ6XQorCWVudHJ5ICAkdy5lbnQgLXRleHR2YXJpYWJsZSAke19fdGhpc306OnNlYXJjaHN0cmluZyAtYmFja2dyb3VuZCBsaWdodGdyZWVuCisJYnV0dG9uICR3LmJuICAgICAgLXRleHQgW21jIE5leHRdIC1jb21tYW5kIFtjYiBmaW5kX25leHRdCisJYnV0dG9uICR3LmJwICAgICAgLXRleHQgW21jIFByZXZdIC1jb21tYW5kIFtjYiBmaW5kX3ByZXZdCisJY2hlY2tidXR0b24gJHcuY3MgLXRleHQgW21jIENhc2UtU2Vuc2l0aXZlXSBcCisJCS12YXJpYWJsZSAke19fdGhpc306OmNhc2VzZW5zaXRpdmUgLWNvbW1hbmQgW2NiIF9pbmNyc2VhcmNoXQorCXBhY2sgICAkdy5sICAgLXNpZGUgbGVmdAorCXBhY2sgICAkdy5jcyAgLXNpZGUgcmlnaHQKKwlwYWNrICAgJHcuYnAgIC1zaWRlIHJpZ2h0CisJcGFjayAgICR3LmJuICAtc2lkZSByaWdodAorCXBhY2sgICAkdy5lbnQgLXNpZGUgbGVmdCAtZXhwYW5kIDEgLWZpbGwgeAorCisJZXZhbCBncmlkIGNvbmYgJHcgLXN0aWNreSB3ZSAkYXJncworCWdyaWQgcmVtb3ZlICR3CisKKwl0cmFjZSBhZGQgdmFyaWFibGUgc2VhcmNoc3RyaW5nIHdyaXRlIFtjYiBfaW5jcnNlYXJjaF9jYl0KKwkKKwliaW5kICR3IDxEZXN0cm95PiBbbGlzdCBkZWxldGVfdGhpcyAkdGhpc10KKwlyZXR1cm4gJHRoaXMKK30KKworbWV0aG9kIHNob3cge30geworCWlmIHshW3Zpc2libGUgJHRoaXNdfSB7CisJCWdyaWQgJHcKKwl9CisJZm9jdXMgLWZvcmNlICR3LmVudAorfQorCittZXRob2QgaGlkZSB7fSB7CisJaWYge1t2aXNpYmxlICR0aGlzXX0geworCQlmb2N1cyAkY3RleHQKKwkJZ3JpZCByZW1vdmUgJHcKKwl9Cit9CisKK21ldGhvZCB2aXNpYmxlIHt9IHsKKwlyZXR1cm4gW3dpbmZvIGlzbWFwcGVkICR3XQorfQorCittZXRob2QgZWRpdG9yIHt9IHsKKwlyZXR1cm4gJHcuZW50Cit9CisKK21ldGhvZCBfZ2V0X25ld19hbmNob3Ige30geworCSMgdXNlIHN0YXJ0IG9mIHNlbGVjdGlvbiBpZiBpdCBpcyB2aXNpYmxlLAorCSMgb3IgdGhlIGJvdW5kcyBvZiB0aGUgdmlzaWJsZSBhcmVhCisJc2V0IHRvcCAgICBbJGN0ZXh0IGluZGV4IEAwLDBdCisJc2V0IGJvdHRvbSBbJGN0ZXh0IGluZGV4IEAwLFt3aW5mbyBoZWlnaHQgJGN0ZXh0XV0KKwlzZXQgc2VsICAgIFskY3RleHQgdGFnIHJhbmdlcyBzZWxdCisJaWYgeyRzZWwgbmUge319IHsKKwkJc2V0IHNwb3MgW2xpbmRleCAkc2VsIDBdCisJCWlmIHtbbGluZGV4ICRzcG9zIDBdID49IFtsaW5kZXggJHRvcCAwXSAmJgorCQkgICAgW2xpbmRleCAkc3BvcyAwXSA8PSBbbGluZGV4ICRib3R0b20gMF19IHsKKwkJCXJldHVybiAkc3BvcworCQl9CisJfQorCWlmIHskc2VhcmNoZGlybiBlcSAiLWZvcndhcmRzIn0geworCQlyZXR1cm4gJHRvcAorCX0gZWxzZSB7CisJCXJldHVybiAkYm90dG9tCisJfQorfQorCittZXRob2QgX2dldF93cmFwX2FuY2hvciB7ZGlyfSB7CisJaWYgeyRkaXIgZXEgIi1mb3J3YXJkcyJ9IHsKKwkJcmV0dXJuIDEuMAorCX0gZWxzZSB7CisJCXJldHVybiBlbmQKKwl9Cit9CisKK21ldGhvZCBfZG9fc2VhcmNoIHtzdGFydCB7bWxlbnZhciB7fX0ge2RpciB7fX0ge2VuZGJvdW5kIHt9fX0geworCXNldCBjbWQgW2xpc3QgJGN0ZXh0IHNlYXJjaF0KKwlpZiB7JG1sZW52YXIgbmUge319IHsKKwkJdXB2YXIgJG1sZW52YXIgbWxlbgorCQlsYXBwZW5kIGNtZCAtY291bnQgbWxlbgorCX0KKwlpZiB7ISRjYXNlc2Vuc2l0aXZlfSB7CisJCWxhcHBlbmQgY21kIC1ub2Nhc2UKKwl9CisJaWYgeyRkaXIgZXEge319IHsKKwkJc2V0IGRpciAkc2VhcmNoZGlybgorCX0KKwlsYXBwZW5kIGNtZCAkZGlyIC0tICRzZWFyY2hzdHJpbmcKKwlpZiB7JGVuZGJvdW5kIG5lIHt9fSB7CisJCXNldCBoZXJlIFtldmFsICRjbWQgW2xpc3QgJHN0YXJ0XSBbbGlzdCAkZW5kYm91bmRdXQorCX0gZWxzZSB7CisJCXNldCBoZXJlIFtldmFsICRjbWQgW2xpc3QgJHN0YXJ0XV0KKwkJaWYgeyRoZXJlIGVxIHt9fSB7CisJCQlzZXQgaGVyZSBbZXZhbCAkY21kIFtfZ2V0X3dyYXBfYW5jaG9yICR0aGlzICRkaXJdXQorCQl9CisJfQorCXJldHVybiAkaGVyZQorfQorCittZXRob2QgX2luY3JzZWFyY2hfY2Ige25hbWUgaXggb3B9IHsKKwlhZnRlciBpZGxlIFtjYiBfaW5jcnNlYXJjaF0KK30KKworbWV0aG9kIF9pbmNyc2VhcmNoIHt9IHsKKwkkY3RleHQgdGFnIHJlbW92ZSBmb3VuZCAxLjAgZW5kCisJaWYge1tjYXRjaCB7JGN0ZXh0IGluZGV4IGFuY2hvcn1dfSB7CisJCSRjdGV4dCBtYXJrIHNldCBhbmNob3IgW19nZXRfbmV3X2FuY2hvciAkdGhpc10KKwl9CisJaWYgeyRzZWFyY2hzdHJpbmcgbmUge319IHsKKwkJc2V0IGhlcmUgW19kb19zZWFyY2ggJHRoaXMgYW5jaG9yIG1sZW5dCisJCWlmIHskaGVyZSBuZSB7fX0geworCQkJJGN0ZXh0IHNlZSAkaGVyZQorCQkJJGN0ZXh0IHRhZyByZW1vdmUgc2VsIDEuMCBlbmQKKwkJCSRjdGV4dCB0YWcgYWRkIHNlbCAkaGVyZSAiJGhlcmUgKyAkbWxlbiBjIgorCQkJJHcuZW50IGNvbmZpZ3VyZSAtYmFja2dyb3VuZCBsaWdodGdyZWVuCisJCQlfc2V0X21hcmtzICR0aGlzIDEKKwkJfSBlbHNlIHsKKwkJCSR3LmVudCBjb25maWd1cmUgLWJhY2tncm91bmQgbGlnaHRwaW5rCisJCX0KKwl9Cit9CisKK21ldGhvZCBmaW5kX3ByZXYge30geworCWZpbmRfbmV4dCAkdGhpcyAtYmFja3dhcmRzCit9CisKK21ldGhvZCBmaW5kX25leHQge3tkaXIgLWZvcndhcmRzfX0geworCWZvY3VzICR3LmVudAorCSR3LmVudCBpY3Vyc29yIGVuZAorCXNldCBzZWFyY2hkaXJuICRkaXIKKwkkY3RleHQgbWFyayB1bnNldCBhbmNob3IKKwlpZiB7JHNlYXJjaHN0cmluZyBuZSB7fX0geworCQlzZXQgc3RhcnQgW19nZXRfbmV3X2FuY2hvciAkdGhpc10KKwkJaWYgeyRkaXIgZXEgIi1mb3J3YXJkcyJ9IHsKKwkJCXNldCBzdGFydCAiJHN0YXJ0ICsgMWMiCisJCX0KKwkJc2V0IG1hdGNoIFtfZG9fc2VhcmNoICR0aGlzICRzdGFydCBtbGVuXQorCQkkY3RleHQgdGFnIHJlbW92ZSBzZWwgMS4wIGVuZAorCQlpZiB7JG1hdGNoIG5lIHt9fSB7CisJCQkkY3RleHQgc2VlICRtYXRjaAorCQkJJGN0ZXh0IHRhZyBhZGQgc2VsICRtYXRjaCAiJG1hdGNoICsgJG1sZW4gYyIKKwkJfQorCX0KK30KKworbWV0aG9kIF9tYXJrX3JhbmdlIHtmaXJzdCBsYXN0fSB7CisJc2V0IG1lbmQgJGZpcnN0LjAKKwl3aGlsZSB7MX0geworCQlzZXQgbWF0Y2ggW19kb19zZWFyY2ggJHRoaXMgJG1lbmQgbWxlbiAtZm9yd2FyZHMgJGxhc3QuZW5kXQorCQlpZiB7JG1hdGNoIGVxIHt9fSBicmVhaworCQlzZXQgbWVuZCAiJG1hdGNoICsgJG1sZW4gYyIKKwkJJGN0ZXh0IHRhZyBhZGQgZm91bmQgJG1hdGNoICRtZW5kCisJfQorfQorCittZXRob2QgX3NldF9tYXJrcyB7ZG9hbGx9IHsKKwlzZXQgdG9wbGluZSBbbGluZGV4IFtzcGxpdCBbJGN0ZXh0IGluZGV4IEAwLDBdIC5dIDBdCisJc2V0IGJvdGxpbmUgW2xpbmRleCBbc3BsaXQgWyRjdGV4dCBpbmRleCBAMCxbd2luZm8gaGVpZ2h0ICRjdGV4dF1dIC5dIDBdCisJaWYgeyRkb2FsbCB8fCAkYm90bGluZSA8ICRzbWFya3RvcCB8fCAkdG9wbGluZSA+ICRzbWFya2JvdH0geworCQkjIG5vIG92ZXJsYXAgd2l0aCBwcmV2aW91cworCQlfbWFya19yYW5nZSAkdGhpcyAkdG9wbGluZSAkYm90bGluZQorCQlzZXQgc21hcmt0b3AgJHRvcGxpbmUKKwkJc2V0IHNtYXJrYm90ICRib3RsaW5lCisJfSBlbHNlIHsKKwkJaWYgeyR0b3BsaW5lIDwgJHNtYXJrdG9wfSB7CisJCQlfbWFya19yYW5nZSAkdGhpcyAkdG9wbGluZSBbZXhwciB7JHNtYXJrdG9wLTF9XQorCQkJc2V0IHNtYXJrdG9wICR0b3BsaW5lCisJCX0KKwkJaWYgeyRib3RsaW5lID4gJHNtYXJrYm90fSB7CisJCQlfbWFya19yYW5nZSAkdGhpcyBbZXhwciB7JHNtYXJrYm90KzF9XSAkYm90bGluZQorCQkJc2V0IHNtYXJrYm90ICRib3RsaW5lCisJCX0KKwl9Cit9CisKK21ldGhvZCBzY3JvbGxlZCB7fSB7CisJaWYgeyRzZWFyY2hzdHJpbmcgbmUge319IHsKKwkJYWZ0ZXIgaWRsZSBbY2IgX3NldF9tYXJrcyAwXQorCX0KK30KKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3NwZWxsY2hlY2sudGNsIGIvZ2l0LWd1aS9saWIvc3BlbGxjaGVjay50Y2wKaW5kZXggYTQ3OWIyZi4uZTYxMjAzMCAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvc3BlbGxjaGVjay50Y2wKKysrIGIvZ2l0LWd1aS9saWIvc3BlbGxjaGVjay50Y2wKQEAgLTMxNCw2ICszMTQsNyBAQAogbWV0aG9kIF9yZWFkIHt9IHsKIAl3aGlsZSB7W2dldHMgJHNfZmQgbGluZV0gPj0gMH0gewogCQlzZXQgbGluZW5vIFtsaW5kZXggJHNfcGVuZGluZyAwIDBdCisJCXNldCBsaW5lIFtzdHJpbmcgdHJpbSAkbGluZV0KIAogCQlpZiB7JHNfY2xlYXJ9IHsKIAkJCSR3X3RleHQgdGFnIHJlbW92ZSBtaXNzcGVsbGVkICIkbGluZW5vLjAiICIkbGluZW5vLmVuZCIKZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3NzaGtleS50Y2wgYi9naXQtZ3VpL2xpYi9zc2hrZXkudGNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYTFhODAKLS0tIC9kZXYvbnVsbAorKysgYi9naXQtZ3VpL2xpYi9zc2hrZXkudGNsCkBAIC0wLDAgKzEsMTI2IEBACisjIGdpdC1ndWkgYWJvdXQgZ2l0LWd1aSBkaWFsb2cKKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IFNoYXduIFBlYXJjZQorCitwcm9jIGZpbmRfc3NoX2tleSB7fSB7CisJZm9yZWFjaCBuYW1lIHt+Ly5zc2gvaWRfZHNhLnB1YiB+Ly5zc2gvaWRfcnNhLnB1YiB+Ly5zc2gvaWRlbnRpdHkucHVifSB7CisJCWlmIHtbZmlsZSBleGlzdHMgJG5hbWVdfSB7CisJCQlzZXQgZmggICAgW29wZW4gJG5hbWUgcl0KKwkJCXNldCBjb250ICBbcmVhZCAkZmhdCisJCQljbG9zZSAkZmgKKwkJCXJldHVybiBbbGlzdCAkbmFtZSAkY29udF0KKwkJfQorCX0KKworCXJldHVybiB7fQorfQorCitwcm9jIGRvX3NzaF9rZXkge30geworCWdsb2JhbCBzc2hrZXlfdGl0bGUgaGF2ZV90azg1IHNzaGtleV9mZAorCisJc2V0IHcgLnNzaGtleV9kaWFsb2cKKwlpZiB7W3dpbmZvIGV4aXN0cyAkd119IHsKKwkJcmFpc2UgJHcKKwkJcmV0dXJuCisJfQorCisJdG9wbGV2ZWwgJHcKKwl3bSB0cmFuc2llbnQgJHcgLgorCisJc2V0IGZpbmZvIFtmaW5kX3NzaF9rZXldCisJaWYgeyRmaW5mbyBlcSB7fX0geworCQlzZXQgc3Noa2V5X3RpdGxlIFttYyAiTm8ga2V5cyBmb3VuZC4iXQorCQlzZXQgZ2VuX3N0YXRlICAgbm9ybWFsCisJfSBlbHNlIHsKKwkJc2V0IHNzaGtleV90aXRsZSBbbWMgIkZvdW5kIGEgcHVibGljIGtleSBpbjogJXMiIFtsaW5kZXggJGZpbmZvIDBdXQorCQlzZXQgZ2VuX3N0YXRlICAgZGlzYWJsZWQKKwl9CisKKwlmcmFtZSAkdy5oZWFkZXIgLXJlbGllZiBmbGF0CisJbGFiZWwgJHcuaGVhZGVyLmxibCAtdGV4dHZhcmlhYmxlIHNzaGtleV90aXRsZSAtYW5jaG9yIHcKKwlidXR0b24gJHcuaGVhZGVyLmdlbiAtdGV4dCBbbWMgIkdlbmVyYXRlIEtleSJdIFwKKwkJLWNvbW1hbmQgW2xpc3QgbWFrZV9zc2hfa2V5ICR3XSAtc3RhdGUgJGdlbl9zdGF0ZQorCXBhY2sgJHcuaGVhZGVyLmxibCAtc2lkZSBsZWZ0IC1leHBhbmQgMSAtZmlsbCB4CisJcGFjayAkdy5oZWFkZXIuZ2VuIC1zaWRlIHJpZ2h0CisJcGFjayAkdy5oZWFkZXIgLWZpbGwgeCAtcGFkeSA1IC1wYWR4IDUKKworCXRleHQgJHcuY29udGVudHMgLXdpZHRoIDYwIC1oZWlnaHQgMTAgLXdyYXAgY2hhciAtcmVsaWVmIHN1bmtlbgorCXBhY2sgJHcuY29udGVudHMgLWZpbGwgYm90aCAtZXhwYW5kIDEKKwlpZiB7JGhhdmVfdGs4NX0geworCQkkdy5jb250ZW50cyBjb25maWd1cmUgLWluYWN0aXZlc2VsZWN0YmFja2dyb3VuZCBkYXJrYmx1ZQorCX0KKworCWZyYW1lICR3LmJ1dHRvbnMKKwlidXR0b24gJHcuYnV0dG9ucy5jbG9zZSAtdGV4dCBbbWMgQ2xvc2VdIFwKKwkJLWRlZmF1bHQgYWN0aXZlIC1jb21tYW5kIFtsaXN0IGRlc3Ryb3kgJHddCisJcGFjayAkdy5idXR0b25zLmNsb3NlIC1zaWRlIHJpZ2h0CisJYnV0dG9uICR3LmJ1dHRvbnMuY29weSAtdGV4dCBbbWMgIkNvcHkgVG8gQ2xpcGJvYXJkIl0gXAorCQktY29tbWFuZCBbbGlzdCB0a190ZXh0Q29weSAkdy5jb250ZW50c10KKwlwYWNrICR3LmJ1dHRvbnMuY29weSAtc2lkZSBsZWZ0CisJcGFjayAkdy5idXR0b25zIC1zaWRlIGJvdHRvbSAtZmlsbCB4IC1wYWR5IDUgLXBhZHggNQorCisJaWYgeyRmaW5mbyBuZSB7fX0geworCQkkdy5jb250ZW50cyBpbnNlcnQgZW5kIFtsaW5kZXggJGZpbmZvIDFdIHNlbAorCX0KKwkkdy5jb250ZW50cyBjb25maWd1cmUgLXN0YXRlIGRpc2FibGVkCisKKwliaW5kICR3IDxWaXNpYmlsaXR5PiAiZ3JhYiAkdzsgZm9jdXMgJHcuYnV0dG9ucy5jbG9zZSIKKwliaW5kICR3IDxLZXktRXNjYXBlPiAiZGVzdHJveSAkdyIKKwliaW5kICR3IDxLZXktUmV0dXJuPiAiZGVzdHJveSAkdyIKKwliaW5kICR3IDxEZXN0cm95PiBraWxsX3NzaGtleQorCXdtIHRpdGxlICR3IFttYyAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiXQorCXRrOjpQbGFjZVdpbmRvdyAkdyB3aWRnZXQgLgorCXRrd2FpdCB3aW5kb3cgJHcKK30KKworcHJvYyBtYWtlX3NzaF9rZXkge3d9IHsKKwlnbG9iYWwgc3Noa2V5X3RpdGxlIHNzaGtleV9vdXRwdXQgc3Noa2V5X2ZkCisKKwlzZXQgc3Noa2V5X3RpdGxlIFttYyAiR2VuZXJhdGluZy4uLiJdCisJJHcuaGVhZGVyLmdlbiBjb25maWd1cmUgLXN0YXRlIGRpc2FibGVkCisKKwlzZXQgY21kbGluZSBbbGlzdCBzaCAtYyB7ZWNobyB8IHNzaC1rZXlnZW4gLXEgLXQgcnNhIC1mIH4vLnNzaC9pZF9yc2EgMj4mMX1dCisKKwlpZiB7W2NhdGNoIHsgc2V0IHNzaGtleV9mZCBbX29wZW5fc3Rkb3V0X3N0ZGVyciAkY21kbGluZV0gfSBlcnJdfSB7CisJCWVycm9yX3BvcHVwIFttYyAiQ291bGQgbm90IHN0YXJ0IHNzaC1rZXlnZW46XG5cbiVzIiAkZXJyXQorCQlyZXR1cm4KKwl9CisKKwlzZXQgc3Noa2V5X291dHB1dCB7fQorCWZjb25maWd1cmUgJHNzaGtleV9mZCAtYmxvY2tpbmcgMAorCWZpbGVldmVudCAkc3Noa2V5X2ZkIHJlYWRhYmxlIFtsaXN0IHJlYWRfc3Noa2V5X291dHB1dCAkc3Noa2V5X2ZkICR3XQorfQorCitwcm9jIGtpbGxfc3Noa2V5IHt9IHsKKwlnbG9iYWwgc3Noa2V5X2ZkCisJaWYgeyFbaW5mbyBleGlzdHMgc3Noa2V5X2ZkXX0gcmV0dXJuCisJY2F0Y2ggeyBraWxsX2ZpbGVfcHJvY2VzcyAkc3Noa2V5X2ZkIH0KKwljYXRjaCB7IGNsb3NlICRzc2hrZXlfZmQgfQorfQorCitwcm9jIHJlYWRfc3Noa2V5X291dHB1dCB7ZmQgd30geworCWdsb2JhbCBzc2hrZXlfZmQgc3Noa2V5X291dHB1dCBzc2hrZXlfdGl0bGUKKworCXNldCBzc2hrZXlfb3V0cHV0ICIkc3Noa2V5X291dHB1dFtyZWFkICRmZF0iCisJaWYgeyFbZW9mICRmZF19IHJldHVybgorCisJZmNvbmZpZ3VyZSAkZmQgLWJsb2NraW5nIDEKKwl1bnNldCBzc2hrZXlfZmQKKworCSR3LmNvbnRlbnRzIGNvbmZpZ3VyZSAtc3RhdGUgbm9ybWFsCisJaWYge1tjYXRjaCB7Y2xvc2UgJGZkfSBlcnJdfSB7CisJCXNldCBzc2hrZXlfdGl0bGUgW21jICJHZW5lcmF0aW9uIGZhaWxlZC4iXQorCQkkdy5jb250ZW50cyBpbnNlcnQgZW5kICRlcnIKKwkJJHcuY29udGVudHMgaW5zZXJ0IGVuZCAiXG4iCisJCSR3LmNvbnRlbnRzIGluc2VydCBlbmQgJHNzaGtleV9vdXRwdXQKKwl9IGVsc2UgeworCQlzZXQgZmluZm8gW2ZpbmRfc3NoX2tleV0KKwkJaWYgeyRmaW5mbyBlcSB7fX0geworCQkJc2V0IHNzaGtleV90aXRsZSBbbWMgIkdlbmVyYXRpb24gc3VjY2VkZWQsIGJ1dCBubyBrZXlzIGZvdW5kLiJdCisJCQkkdy5jb250ZW50cyBpbnNlcnQgZW5kICRzc2hrZXlfb3V0cHV0CisJCX0gZWxzZSB7CisJCQlzZXQgc3Noa2V5X3RpdGxlIFttYyAiWW91ciBrZXkgaXMgaW46ICVzIiBbbGluZGV4ICRmaW5mbyAwXV0KKwkJCSR3LmNvbnRlbnRzIGluc2VydCBlbmQgW2xpbmRleCAkZmluZm8gMV0gc2VsCisJCX0KKwl9CisJJHcuY29udGVudHMgY29uZmlndXJlIC1zdGF0ZSBkaXNhYmxlCit9CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi90b29scy50Y2wgYi9naXQtZ3VpL2xpYi90b29scy50Y2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFlNjNiNgotLS0gL2Rldi9udWxsCisrKyBiL2dpdC1ndWkvbGliL3Rvb2xzLnRjbApAQCAtMCwwICsxLDE1OSBAQAorIyBnaXQtZ3VpIFRvb2xzIG1lbnUgaW1wbGVtZW50YXRpb24KKworcHJvYyB0b29sc19saXN0IHt9IHsKKwlnbG9iYWwgcmVwb19jb25maWcKKworCXNldCBuYW1lcyB7fQorCWZvcmVhY2ggaXRlbSBbYXJyYXkgbmFtZXMgcmVwb19jb25maWcgZ3VpdG9vbC4qLmNtZF0geworCQlsYXBwZW5kIG5hbWVzIFtzdHJpbmcgcmFuZ2UgJGl0ZW0gOCBlbmQtNF0KKwl9CisJcmV0dXJuIFtsc29ydCAkbmFtZXNdCit9CisKK3Byb2MgdG9vbHNfcG9wdWxhdGVfYWxsIHt9IHsKKwlnbG9iYWwgdG9vbHNfbWVudWJhciB0b29sc19tZW51dGJsCisJZ2xvYmFsIHRvb2xzX3RhaWxjbnQKKworCXNldCBtYmFyX2VuZCBbJHRvb2xzX21lbnViYXIgaW5kZXggZW5kXQorCXNldCBtYmFyX2Jhc2UgW2V4cHIgeyRtYmFyX2VuZCAtICR0b29sc190YWlsY250fV0KKwlpZiB7JG1iYXJfYmFzZSA+PSAwfSB7CisJCSR0b29sc19tZW51YmFyIGRlbGV0ZSAwICRtYmFyX2Jhc2UKKwl9CisKKwlhcnJheSB1bnNldCB0b29sc19tZW51dGJsCisKKwlmb3JlYWNoIGZ1bGxuYW1lIFt0b29sc19saXN0XSB7CisJCXRvb2xzX3BvcHVsYXRlX29uZSAkZnVsbG5hbWUKKwl9Cit9CisKK3Byb2MgdG9vbHNfY3JlYXRlX2l0ZW0ge3BhcmVudCBhcmdzfSB7CisJZ2xvYmFsIHRvb2xzX21lbnViYXIgdG9vbHNfdGFpbGNudAorCWlmIHskcGFyZW50IGVxICR0b29sc19tZW51YmFyfSB7CisJCXNldCBwb3MgW2V4cHIge1skcGFyZW50IGluZGV4IGVuZF0tJHRvb2xzX3RhaWxjbnQrMX1dCisJCWV2YWwgW2xpc3QgJHBhcmVudCBpbnNlcnQgJHBvc10gJGFyZ3MKKwl9IGVsc2UgeworCQlldmFsIFtsaXN0ICRwYXJlbnQgYWRkXSAkYXJncworCX0KK30KKworcHJvYyB0b29sc19wb3B1bGF0ZV9vbmUge2Z1bGxuYW1lfSB7CisJZ2xvYmFsIHRvb2xzX21lbnViYXIgdG9vbHNfbWVudXRibCB0b29sc19pZAorCisJaWYgeyFbaW5mbyBleGlzdHMgdG9vbHNfaWRdfSB7CisJCXNldCB0b29sc19pZCAwCisJfQorCisJc2V0IG5hbWVzIFtzcGxpdCAkZnVsbG5hbWUgJy8nXQorCXNldCBwYXJlbnQgJHRvb2xzX21lbnViYXIKKwlmb3Ige3NldCBpIDB9IHskaSA8IFtsbGVuZ3RoICRuYW1lc10tMX0ge2luY3IgaX0geworCQlzZXQgc3VibmFtZSBbam9pbiBbbHJhbmdlICRuYW1lcyAwICRpXSAnLyddCisJCWlmIHtbaW5mbyBleGlzdHMgdG9vbHNfbWVudXRibCgkc3VibmFtZSldfSB7CisJCQlzZXQgcGFyZW50ICR0b29sc19tZW51dGJsKCRzdWJuYW1lKQorCQl9IGVsc2UgeworCQkJc2V0IHN1YmlkICRwYXJlbnQudCR0b29sc19pZAorCQkJdG9vbHNfY3JlYXRlX2l0ZW0gJHBhcmVudCBjYXNjYWRlIFwKKwkJCQkJLWxhYmVsIFtsaW5kZXggJG5hbWVzICRpXSAtbWVudSAkc3ViaWQKKwkJCW1lbnUgJHN1YmlkCisJCQlzZXQgdG9vbHNfbWVudXRibCgkc3VibmFtZSkgJHN1YmlkCisJCQlzZXQgcGFyZW50ICRzdWJpZAorCQkJaW5jciB0b29sc19pZAorCQl9CisJfQorCisJdG9vbHNfY3JlYXRlX2l0ZW0gJHBhcmVudCBjb21tYW5kIFwKKwkJLWxhYmVsIFtsaW5kZXggJG5hbWVzIGVuZF0gXAorCQktY29tbWFuZCBbbGlzdCB0b29sc19leGVjICRmdWxsbmFtZV0KK30KKworcHJvYyB0b29sc19leGVjIHtmdWxsbmFtZX0geworCWdsb2JhbCByZXBvX2NvbmZpZyBlbnYgY3VycmVudF9kaWZmX3BhdGgKKwlnbG9iYWwgY3VycmVudF9icmFuY2ggaXNfZGV0YWNoZWQKKworCWlmIHtbaXNfY29uZmlnX3RydWUgImd1aXRvb2wuJGZ1bGxuYW1lLm5lZWRzZmlsZSJdfSB7CisJCWlmIHskY3VycmVudF9kaWZmX3BhdGggZXEge319IHsKKwkJCWVycm9yX3BvcHVwIFttYyAiUnVubmluZyAlcyByZXF1aXJlcyBhIHNlbGVjdGVkIGZpbGUuIiAkZnVsbG5hbWVdCisJCQlyZXR1cm4KKwkJfQorCX0KKworCWNhdGNoIHsgdW5zZXQgZW52KEFSR1MpIH0KKwljYXRjaCB7IHVuc2V0IGVudihSRVZJU0lPTikgfQorCisJaWYge1tnZXRfY29uZmlnICJndWl0b29sLiRmdWxsbmFtZS5yZXZwcm9tcHQiXSBuZSB7fSB8fAorCSAgICBbZ2V0X2NvbmZpZyAiZ3VpdG9vbC4kZnVsbG5hbWUuYXJncHJvbXB0Il0gbmUge319IHsKKwkJc2V0IGRsZyBbdG9vbHNfYXNrZGxnOjpkaWFsb2cgJGZ1bGxuYW1lXQorCQlpZiB7IVt0b29sc19hc2tkbGc6OmV4ZWN1dGUgJGRsZ119IHsKKwkJCXJldHVybgorCQl9CisJfSBlbHNlaWYge1tpc19jb25maWdfdHJ1ZSAiZ3VpdG9vbC4kZnVsbG5hbWUuY29uZmlybSJdfSB7CisJCWlmIHtbYXNrX3BvcHVwIFttYyAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJ1biAlcz8iICRmdWxsbmFtZV1dIG5lIHt5ZXN9fSB7CisJCQlyZXR1cm4KKwkJfQorCX0KKworCXNldCBlbnYoR0lUX0dVSVRPT0wpICRmdWxsbmFtZQorCXNldCBlbnYoRklMRU5BTUUpICRjdXJyZW50X2RpZmZfcGF0aAorCWlmIHskaXNfZGV0YWNoZWR9IHsKKwkJc2V0IGVudihDVVJfQlJBTkNIKSAiIgorCX0gZWxzZSB7CisJCXNldCBlbnYoQ1VSX0JSQU5DSCkgJGN1cnJlbnRfYnJhbmNoCisJfQorCisJc2V0IGNtZGxpbmUgJHJlcG9fY29uZmlnKGd1aXRvb2wuJGZ1bGxuYW1lLmNtZCkKKwlpZiB7W2lzX2NvbmZpZ190cnVlICJndWl0b29sLiRmdWxsbmFtZS5ub2NvbnNvbGUiXX0geworCQl0b29sc19ydW5fc2lsZW50IFtsaXN0IHNoIC1jICRjbWRsaW5lXSBcCisJCQkJIFtsaXN0IHRvb2xzX2NvbXBsZXRlICRmdWxsbmFtZSB7fV0KKwl9IGVsc2UgeworCQlyZWdzdWIgey99ICRmdWxsbmFtZSB7IC8gfSB0aXRsZQorCQlzZXQgdyBbY29uc29sZTo6bmV3IFwKKwkJCVttYyAiVG9vbDogJXMiICR0aXRsZV0gXAorCQkJW21jICJSdW5uaW5nOiAlcyIgJGNtZGxpbmVdXQorCQljb25zb2xlOjpleGVjICR3IFtsaXN0IHNoIC1jICRjbWRsaW5lXSBcCisJCQkJIFtsaXN0IHRvb2xzX2NvbXBsZXRlICRmdWxsbmFtZSAkd10KKwl9CisKKwl1bnNldCBlbnYoR0lUX0dVSVRPT0wpCisJdW5zZXQgZW52KEZJTEVOQU1FKQorCXVuc2V0IGVudihDVVJfQlJBTkNIKQorCWNhdGNoIHsgdW5zZXQgZW52KEFSR1MpIH0KKwljYXRjaCB7IHVuc2V0IGVudihSRVZJU0lPTikgfQorfQorCitwcm9jIHRvb2xzX3J1bl9zaWxlbnQge2NtZCBhZnRlcn0geworCWxhcHBlbmQgY21kIDI+QDEKKwlzZXQgZmQgW19vcGVuX3N0ZG91dF9zdGRlcnIgJGNtZF0KKworCWZjb25maWd1cmUgJGZkIC1ibG9ja2luZyAwIC10cmFuc2xhdGlvbiBiaW5hcnkKKwlmaWxlZXZlbnQgJGZkIHJlYWRhYmxlIFtsaXN0IHRvb2xzX2NvbnN1bWVfaW5wdXQgJGZkICRhZnRlcl0KK30KKworcHJvYyB0b29sc19jb25zdW1lX2lucHV0IHtmZCBhZnRlcn0geworCXJlYWQgJGZkCisJaWYge1tlb2YgJGZkXX0geworCQlmY29uZmlndXJlICRmZCAtYmxvY2tpbmcgMQorCQlpZiB7W2NhdGNoIHtjbG9zZSAkZmR9XX0geworCQkJdXBsZXZlbCAjMCAkYWZ0ZXIgMAorCQl9IGVsc2UgeworCQkJdXBsZXZlbCAjMCAkYWZ0ZXIgMQorCQl9CisJfQorfQorCitwcm9jIHRvb2xzX2NvbXBsZXRlIHtmdWxsbmFtZSB3IHtvayAxfX0geworCWlmIHskdyBuZSB7fX0geworCQljb25zb2xlOjpkb25lICR3ICRvaworCX0KKworCWlmIHskb2t9IHsKKwkJc2V0IG1zZyBbbWMgIlRvb2wgY29tcGxldGVkIHN1Y2Nlc2Z1bGx5OiAlcyIgJGZ1bGxuYW1lXQorCX0gZWxzZSB7CisJCXNldCBtc2cgW21jICJUb29sIGZhaWxlZDogJXMiICRmdWxsbmFtZV0KKwl9CisKKwlpZiB7W2lzX2NvbmZpZ190cnVlICJndWl0b29sLiRmdWxsbmFtZS5ub3Jlc2NhbiJdfSB7CisJCXVpX3N0YXR1cyAkbXNnCisJfSBlbHNlIHsKKwkJcmVzY2FuIFtsaXN0IHVpX3N0YXR1cyAkbXNnXQorCX0KK30KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3Rvb2xzX2RsZy50Y2wgYi9naXQtZ3VpL2xpYi90b29sc19kbGcudGNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmN2YwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9naXQtZ3VpL2xpYi90b29sc19kbGcudGNsCkBAIC0wLDAgKzEsNDIxIEBACisjIGdpdC1ndWkgVG9vbHMgbWVudSBkaWFsb2dzCisKK2NsYXNzIHRvb2xzX2FkZCB7CisKK2ZpZWxkIHcgICAgICAgICAgICAgIDsgIyB3aWRnZXQgcGF0aAorZmllbGQgd19uYW1lICAgICAgICAgOyAjIG5ldyByZW1vdGUgbmFtZSB3aWRnZXQKK2ZpZWxkIHdfY21kICAgICAgICAgIDsgIyBuZXcgcmVtb3RlIGxvY2F0aW9uIHdpZGdldAorCitmaWVsZCBuYW1lICAgICAgICAge307ICMgbmFtZSBvZiB0aGUgdG9vbAorZmllbGQgY29tbWFuZCAgICAgIHt9OyAjIGNvbW1hbmQgdG8gZXhlY3V0ZQorZmllbGQgYWRkX2dsb2JhbCAgICAwOyAjIGFkZCB0byB0aGUgLS1nbG9iYWwgY29uZmlnCitmaWVsZCBub19jb25zb2xlICAgIDA7ICMgZGlzYWJsZSB1c2luZyB0aGUgY29uc29sZQorZmllbGQgbmVlZHNfZmlsZSAgICAwOyAjIGVuc3VyZSBmaWxlbmFtZSBpcyBzZXQKK2ZpZWxkIGNvbmZpcm0gICAgICAgMDsgIyBhc2sgZm9yIGNvbmZpcm1hdGlvbgorZmllbGQgYXNrX2JyYW5jaCAgICAwOyAjIGFzayBmb3IgYSByZXZpc2lvbgorZmllbGQgYXNrX2FyZ3MgICAgICAwOyAjIGFzayBmb3IgYWRkaXRpb25hbCBhcmdzCisKK2NvbnN0cnVjdG9yIGRpYWxvZyB7fSB7CisJZ2xvYmFsIHJlcG9fY29uZmlnCisKKwltYWtlX3RvcGxldmVsIHRvcCB3CisJd20gdGl0bGUgJHRvcCBbYXBwZW5kICJbYXBwbmFtZV0gKFtyZXBvbmFtZV0pOiAiIFttYyAiQWRkIFRvb2wiXV0KKwlpZiB7JHRvcCBuZSB7Ln19IHsKKwkJd20gZ2VvbWV0cnkgJHRvcCAiK1t3aW5mbyByb290eCAuXStbd2luZm8gcm9vdHkgLl0iCisJCXdtIHRyYW5zaWVudCAkdG9wIC4KKwl9CisKKwlsYWJlbCAkdy5oZWFkZXIgLXRleHQgW21jICJBZGQgTmV3IFRvb2wgQ29tbWFuZCJdIC1mb250IGZvbnRfdWlib2xkCisJcGFjayAkdy5oZWFkZXIgLXNpZGUgdG9wIC1maWxsIHgKKworCWZyYW1lICR3LmJ1dHRvbnMKKwljaGVja2J1dHRvbiAkdy5idXR0b25zLmdsb2JhbCBcCisJCS10ZXh0IFttYyAiQWRkIGdsb2JhbGx5Il0gXAorCQktdmFyaWFibGUgQGFkZF9nbG9iYWwKKwlwYWNrICR3LmJ1dHRvbnMuZ2xvYmFsIC1zaWRlIGxlZnQgLXBhZHggNQorCWJ1dHRvbiAkdy5idXR0b25zLmNyZWF0ZSAtdGV4dCBbbWMgQWRkXSBcCisJCS1kZWZhdWx0IGFjdGl2ZSBcCisJCS1jb21tYW5kIFtjYiBfYWRkXQorCXBhY2sgJHcuYnV0dG9ucy5jcmVhdGUgLXNpZGUgcmlnaHQKKwlidXR0b24gJHcuYnV0dG9ucy5jYW5jZWwgLXRleHQgW21jIENhbmNlbF0gXAorCQktY29tbWFuZCBbbGlzdCBkZXN0cm95ICR3XQorCXBhY2sgJHcuYnV0dG9ucy5jYW5jZWwgLXNpZGUgcmlnaHQgLXBhZHggNQorCXBhY2sgJHcuYnV0dG9ucyAtc2lkZSBib3R0b20gLWZpbGwgeCAtcGFkeSAxMCAtcGFkeCAxMAorCisJbGFiZWxmcmFtZSAkdy5kZXNjIC10ZXh0IFttYyAiVG9vbCBEZXRhaWxzIl0KKworCWxhYmVsICR3LmRlc2MubmFtZV9jbW50IC1hbmNob3Igd1wKKwkJLXRleHQgW21jICJVc2UgJy8nIHNlcGFyYXRvcnMgdG8gY3JlYXRlIGEgc3VibWVudSB0cmVlOiJdCisJZ3JpZCB4ICR3LmRlc2MubmFtZV9jbW50IC1zdGlja3kgd2UgLXBhZHggezAgNX0gLXBhZHkgezAgMn0KKwlsYWJlbCAkdy5kZXNjLm5hbWVfbCAtdGV4dCBbbWMgIk5hbWU6Il0KKwlzZXQgd19uYW1lICR3LmRlc2MubmFtZV90CisJZW50cnkgJHdfbmFtZSBcCisJCS1ib3JkZXJ3aWR0aCAxIFwKKwkJLXJlbGllZiBzdW5rZW4gXAorCQktd2lkdGggNDAgXAorCQktdGV4dHZhcmlhYmxlIEBuYW1lIFwKKwkJLXZhbGlkYXRlIGtleSBcCisJCS12YWxpZGF0ZWNvbW1hbmQgW2NiIF92YWxpZGF0ZV9uYW1lICVkICVTXQorCWdyaWQgJHcuZGVzYy5uYW1lX2wgJHdfbmFtZSAtc3RpY2t5IHdlIC1wYWR4IHswIDV9CisKKwlsYWJlbCAkdy5kZXNjLmNtZF9sIC10ZXh0IFttYyAiQ29tbWFuZDoiXQorCXNldCB3X2NtZCAkdy5kZXNjLmNtZF90CisJZW50cnkgJHdfY21kIFwKKwkJLWJvcmRlcndpZHRoIDEgXAorCQktcmVsaWVmIHN1bmtlbiBcCisJCS13aWR0aCA0MCBcCisJCS10ZXh0dmFyaWFibGUgQGNvbW1hbmQKKwlncmlkICR3LmRlc2MuY21kX2wgJHdfY21kIC1zdGlja3kgd2UgLXBhZHggezAgNX0gLXBhZHkgezAgM30KKworCWdyaWQgY29sdW1uY29uZmlndXJlICR3LmRlc2MgMSAtd2VpZ2h0IDEKKwlwYWNrICR3LmRlc2MgLWFuY2hvciBudyAtZmlsbCB4IC1wYWR5IDUgLXBhZHggNQorCisJY2hlY2tidXR0b24gJHcuY29uZmlybSBcCisJCS10ZXh0IFttYyAiU2hvdyBhIGRpYWxvZyBiZWZvcmUgcnVubmluZyJdIFwKKwkJLXZhcmlhYmxlIEBjb25maXJtIC1jb21tYW5kIFtjYiBfY2hlY2tfZW5hYmxlX2RsZ10KKworCWxhYmVsZnJhbWUgJHcuZGxnIC1sYWJlbHdpZGdldCAkdy5jb25maXJtCisKKwljaGVja2J1dHRvbiAkdy5kbGcuYXNrYnJhbmNoIFwKKwkJLXRleHQgW21jICJBc2sgdGhlIHVzZXIgdG8gc2VsZWN0IGEgcmV2aXNpb24gKHNldHMgXCRSRVZJU0lPTikiXSBcCisJCS12YXJpYWJsZSBAYXNrX2JyYW5jaCAtc3RhdGUgZGlzYWJsZWQKKwlwYWNrICR3LmRsZy5hc2ticmFuY2ggLWFuY2hvciB3IC1wYWR4IDE1CisKKwljaGVja2J1dHRvbiAkdy5kbGcuYXNrYXJncyBcCisJCS10ZXh0IFttYyAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyBcJEFSR1MpIl0gXAorCQktdmFyaWFibGUgQGFza19hcmdzIC1zdGF0ZSBkaXNhYmxlZAorCXBhY2sgJHcuZGxnLmFza2FyZ3MgLWFuY2hvciB3IC1wYWR4IDE1CisKKwlwYWNrICR3LmRsZyAtYW5jaG9yIG53IC1maWxsIHggLXBhZHkgezAgOH0gLXBhZHggNQorCisJY2hlY2tidXR0b24gJHcubm9jb25zb2xlIFwKKwkJLXRleHQgW21jICJEb24ndCBzaG93IHRoZSBjb21tYW5kIG91dHB1dCB3aW5kb3ciXSBcCisJCS12YXJpYWJsZSBAbm9fY29uc29sZQorCXBhY2sgJHcubm9jb25zb2xlIC1hbmNob3IgdyAtcGFkeCA1CisKKwljaGVja2J1dHRvbiAkdy5uZWVkc2ZpbGUgXAorCQktdGV4dCBbbWMgIlJ1biBvbmx5IGlmIGEgZGlmZiBpcyBzZWxlY3RlZCAoXCRGSUxFTkFNRSBub3QgZW1wdHkpIl0gXAorCQktdmFyaWFibGUgQG5lZWRzX2ZpbGUKKwlwYWNrICR3Lm5lZWRzZmlsZSAtYW5jaG9yIHcgLXBhZHggNQorCisJYmluZCAkdyA8VmlzaWJpbGl0eT4gW2NiIF92aXNpYmxlXQorCWJpbmQgJHcgPEtleS1Fc2NhcGU+IFtsaXN0IGRlc3Ryb3kgJHddCisJYmluZCAkdyA8S2V5LVJldHVybj4gW2NiIF9hZGRdXDticmVhaworCXRrd2FpdCB3aW5kb3cgJHcKK30KKworbWV0aG9kIF9jaGVja19lbmFibGVfZGxnIHt9IHsKKwlpZiB7JGNvbmZpcm19IHsKKwkJJHcuZGxnLmFza2JyYW5jaCBjb25maWd1cmUgLXN0YXRlIG5vcm1hbAorCQkkdy5kbGcuYXNrYXJncyBjb25maWd1cmUgLXN0YXRlIG5vcm1hbAorCX0gZWxzZSB7CisJCSR3LmRsZy5hc2ticmFuY2ggY29uZmlndXJlIC1zdGF0ZSBkaXNhYmxlZAorCQkkdy5kbGcuYXNrYXJncyBjb25maWd1cmUgLXN0YXRlIGRpc2FibGVkCisJfQorfQorCittZXRob2QgX2FkZCB7fSB7CisJZ2xvYmFsIHJlcG9fY29uZmlnCisKKwlpZiB7JG5hbWUgZXEge319IHsKKwkJZXJyb3JfcG9wdXAgW21jICJQbGVhc2Ugc3VwcGx5IGEgbmFtZSBmb3IgdGhlIHRvb2wuIl0KKwkJZm9jdXMgJHdfbmFtZQorCQlyZXR1cm4KKwl9CisKKwlzZXQgaXRlbSAiZ3VpdG9vbC4kbmFtZS5jbWQiCisKKwlpZiB7W2luZm8gZXhpc3RzIHJlcG9fY29uZmlnKCRpdGVtKV19IHsKKwkJZXJyb3JfcG9wdXAgW21jICJUb29sICclcycgYWxyZWFkeSBleGlzdHMuIiAkbmFtZV0KKwkJZm9jdXMgJHdfbmFtZQorCQlyZXR1cm4KKwl9CisKKwlzZXQgY21kIFtsaXN0IGdpdCBjb25maWddCisJaWYgeyRhZGRfZ2xvYmFsfSB7IGxhcHBlbmQgY21kIC0tZ2xvYmFsIH0KKwlzZXQgaXRlbXMge30KKwlpZiB7JG5vX2NvbnNvbGV9IHsgbGFwcGVuZCBpdGVtcyAiZ3VpdG9vbC4kbmFtZS5ub2NvbnNvbGUiIH0KKwlpZiB7JG5lZWRzX2ZpbGV9IHsgbGFwcGVuZCBpdGVtcyAiZ3VpdG9vbC4kbmFtZS5uZWVkc2ZpbGUiIH0KKwlpZiB7JGNvbmZpcm19IHsKKwkJaWYgeyRhc2tfYXJnc30gICB7IGxhcHBlbmQgaXRlbXMgImd1aXRvb2wuJG5hbWUuYXJncHJvbXB0IiB9CisJCWlmIHskYXNrX2JyYW5jaH0geyBsYXBwZW5kIGl0ZW1zICJndWl0b29sLiRuYW1lLnJldnByb21wdCIgfQorCQlpZiB7ISRhc2tfYXJncyAmJiAhJGFza19icmFuY2h9IHsKKwkJCWxhcHBlbmQgaXRlbXMgImd1aXRvb2wuJG5hbWUuY29uZmlybSIKKwkJfQorCX0KKworCWlmIHtbY2F0Y2ggeworCQlldmFsICRjbWQgW2xpc3QgJGl0ZW0gJGNvbW1hbmRdCisJCWZvcmVhY2ggY2l0ZW0gJGl0ZW1zIHsgZXZhbCAkY21kIFtsaXN0ICRjaXRlbSB5ZXNdIH0KKwkgICAgfSBlcnJdfSB7CisJCWVycm9yX3BvcHVwIFttYyAiQ291bGQgbm90IGFkZCB0b29sOlxuJXMiICRlcnJdCisJfSBlbHNlIHsKKwkJc2V0IHJlcG9fY29uZmlnKCRpdGVtKSAkY29tbWFuZAorCQlmb3JlYWNoIGNpdGVtICRpdGVtcyB7IHNldCByZXBvX2NvbmZpZygkY2l0ZW0pIHllcyB9CisKKwkJdG9vbHNfcG9wdWxhdGVfYWxsCisJfQorCisJZGVzdHJveSAkdworfQorCittZXRob2QgX3ZhbGlkYXRlX25hbWUge2QgU30geworCWlmIHskZCA9PSAxfSB7CisJCWlmIHtbcmVnZXhwIHtbfj8qJlxbXDBcIlxcXHtdfSAkU119IHsKKwkJCXJldHVybiAwCisJCX0KKwl9CisJcmV0dXJuIDEKK30KKworbWV0aG9kIF92aXNpYmxlIHt9IHsKKwlncmFiICR3CisJJHdfbmFtZSBpY3Vyc29yIGVuZAorCWZvY3VzICR3X25hbWUKK30KKworfQorCitjbGFzcyB0b29sc19yZW1vdmUgeworCitmaWVsZCB3ICAgICAgICAgICAgICA7ICMgd2lkZ2V0IHBhdGgKK2ZpZWxkIHdfbmFtZXMgICAgICAgIDsgIyBuYW1lIGxpc3QKKworY29uc3RydWN0b3IgZGlhbG9nIHt9IHsKKwlnbG9iYWwgcmVwb19jb25maWcgZ2xvYmFsX2NvbmZpZyBzeXN0ZW1fY29uZmlnCisKKwlsb2FkX2NvbmZpZyAxCisKKwltYWtlX3RvcGxldmVsIHRvcCB3CisJd20gdGl0bGUgJHRvcCBbYXBwZW5kICJbYXBwbmFtZV0gKFtyZXBvbmFtZV0pOiAiIFttYyAiUmVtb3ZlIFRvb2wiXV0KKwlpZiB7JHRvcCBuZSB7Ln19IHsKKwkJd20gZ2VvbWV0cnkgJHRvcCAiK1t3aW5mbyByb290eCAuXStbd2luZm8gcm9vdHkgLl0iCisJCXdtIHRyYW5zaWVudCAkdG9wIC4KKwl9CisKKwlsYWJlbCAkdy5oZWFkZXIgLXRleHQgW21jICJSZW1vdmUgVG9vbCBDb21tYW5kcyJdIC1mb250IGZvbnRfdWlib2xkCisJcGFjayAkdy5oZWFkZXIgLXNpZGUgdG9wIC1maWxsIHgKKworCWZyYW1lICR3LmJ1dHRvbnMKKwlidXR0b24gJHcuYnV0dG9ucy5jcmVhdGUgLXRleHQgW21jIFJlbW92ZV0gXAorCQktZGVmYXVsdCBhY3RpdmUgXAorCQktY29tbWFuZCBbY2IgX3JlbW92ZV0KKwlwYWNrICR3LmJ1dHRvbnMuY3JlYXRlIC1zaWRlIHJpZ2h0CisJYnV0dG9uICR3LmJ1dHRvbnMuY2FuY2VsIC10ZXh0IFttYyBDYW5jZWxdIFwKKwkJLWNvbW1hbmQgW2xpc3QgZGVzdHJveSAkd10KKwlwYWNrICR3LmJ1dHRvbnMuY2FuY2VsIC1zaWRlIHJpZ2h0IC1wYWR4IDUKKwlwYWNrICR3LmJ1dHRvbnMgLXNpZGUgYm90dG9tIC1maWxsIHggLXBhZHkgMTAgLXBhZHggMTAKKworCWZyYW1lICR3Lmxpc3QKKwlzZXQgd19uYW1lcyAkdy5saXN0LmwKKwlsaXN0Ym94ICR3X25hbWVzIFwKKwkJLWhlaWdodCAxMCBcCisJCS13aWR0aCAzMCBcCisJCS1zZWxlY3Rtb2RlIGV4dGVuZGVkIFwKKwkJLWV4cG9ydHNlbGVjdGlvbiBmYWxzZSBcCisJCS15c2Nyb2xsY29tbWFuZCBbbGlzdCAkdy5saXN0LnNieSBzZXRdCisJc2Nyb2xsYmFyICR3Lmxpc3Quc2J5IC1jb21tYW5kIFtsaXN0ICR3Lmxpc3QubCB5dmlld10KKwlwYWNrICR3Lmxpc3Quc2J5IC1zaWRlIHJpZ2h0IC1maWxsIHkKKwlwYWNrICR3Lmxpc3QubCAtc2lkZSBsZWZ0IC1maWxsIGJvdGggLWV4cGFuZCAxCisJcGFjayAkdy5saXN0IC1maWxsIGJvdGggLWV4cGFuZCAxIC1wYWR5IDUgLXBhZHggNQorCisJc2V0IGxvY2FsX2NudCAwCisJZm9yZWFjaCBmdWxsbmFtZSBbdG9vbHNfbGlzdF0geworCQkjIENhbm5vdCBkZWxldGUgc3lzdGVtIHRvb2xzCisJCWlmIHtbaW5mbyBleGlzdHMgc3lzdGVtX2NvbmZpZyhndWl0b29sLiRmdWxsbmFtZS5jbWQpXX0gY29udGludWUKKworCQkkd19uYW1lcyBpbnNlcnQgZW5kICRmdWxsbmFtZQorCQlpZiB7IVtpbmZvIGV4aXN0cyBnbG9iYWxfY29uZmlnKGd1aXRvb2wuJGZ1bGxuYW1lLmNtZCldfSB7CisJCQkkd19uYW1lcyBpdGVtY29uZmlndXJlIGVuZCAtZm9yZWdyb3VuZCBibHVlCisJCQlpbmNyIGxvY2FsX2NudAorCQl9CisJfQorCisJaWYgeyRsb2NhbF9jbnQgPiAwfSB7CisJCWxhYmVsICR3LmNvbG9ybGJsIC1mb3JlZ3JvdW5kIGJsdWUgXAorCQkJLXRleHQgW21jICIoQmx1ZSBkZW5vdGVzIHJlcG9zaXRvcnktbG9jYWwgdG9vbHMpIl0KKwkJcGFjayAkdy5jb2xvcmxibCAtZmlsbCB4IC1wYWR5IDUgLXBhZHggNQorCX0KKworCWJpbmQgJHcgPFZpc2liaWxpdHk+IFtjYiBfdmlzaWJsZV0KKwliaW5kICR3IDxLZXktRXNjYXBlPiBbbGlzdCBkZXN0cm95ICR3XQorCWJpbmQgJHcgPEtleS1SZXR1cm4+IFtjYiBfcmVtb3ZlXVw7YnJlYWsKKwl0a3dhaXQgd2luZG93ICR3Cit9CisKK21ldGhvZCBfcmVtb3ZlIHt9IHsKKwlmb3JlYWNoIGkgWyR3X25hbWVzIGN1cnNlbGVjdGlvbl0geworCQlzZXQgbmFtZSBbJHdfbmFtZXMgZ2V0ICRpXQorCisJCWNhdGNoIHsgZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIGd1aXRvb2wuJG5hbWUgfQorCQljYXRjaCB7IGdpdCBjb25maWcgLS1nbG9iYWwgLS1yZW1vdmUtc2VjdGlvbiBndWl0b29sLiRuYW1lIH0KKwl9CisKKwlsb2FkX2NvbmZpZyAwCisJdG9vbHNfcG9wdWxhdGVfYWxsCisKKwlkZXN0cm95ICR3Cit9CisKK21ldGhvZCBfdmlzaWJsZSB7fSB7CisJZ3JhYiAkdworCWZvY3VzICR3X25hbWVzCit9CisKK30KKworY2xhc3MgdG9vbHNfYXNrZGxnIHsKKworZmllbGQgdyAgICAgICAgICAgICAgOyAjIHdpZGdldCBwYXRoCitmaWVsZCB3X3JldiAgICAgICAge307ICMgcmV2aXNpb24gYnJvd3NlcgorZmllbGQgd19hcmdzICAgICAgIHt9OyAjIGFyZ3VtZW50cworCitmaWVsZCBpc19hc2tfYXJncyAgIDA7ICMgaGFzIGFyZ3VtZW50cyBmaWVsZAorZmllbGQgaXNfYXNrX3JldnMgICAwOyAjIGhhcyByZXZpc2lvbiBicm93c2VyCisKK2ZpZWxkIGlzX29rICAgICAgICAgMDsgIyBvayB0byBzdGFydAorZmllbGQgYXJnc3RyICAgICAgIHt9OyAjIGFyZ3VtZW50cworCitjb25zdHJ1Y3RvciBkaWFsb2cge2Z1bGxuYW1lfSB7CisJZ2xvYmFsIE0xQgorCisJc2V0IHRpdGxlIFtnZXRfY29uZmlnICJndWl0b29sLiRmdWxsbmFtZS50aXRsZSJdCisJaWYgeyR0aXRsZSBlcSB7fX0geworCQlyZWdzdWIgey99ICRmdWxsbmFtZSB7IC8gfSB0aXRsZQorCX0KKworCW1ha2VfdG9wbGV2ZWwgdG9wIHcgLWF1dG9kZWxldGUgMAorCXdtIHRpdGxlICR0b3AgW2FwcGVuZCAiW2FwcG5hbWVdIChbcmVwb25hbWVdKTogIiAkdGl0bGVdCisJaWYgeyR0b3AgbmUgey59fSB7CisJCXdtIGdlb21ldHJ5ICR0b3AgIitbd2luZm8gcm9vdHggLl0rW3dpbmZvIHJvb3R5IC5dIgorCQl3bSB0cmFuc2llbnQgJHRvcCAuCisJfQorCisJc2V0IHByb21wdCBbZ2V0X2NvbmZpZyAiZ3VpdG9vbC4kZnVsbG5hbWUucHJvbXB0Il0KKwlpZiB7JHByb21wdCBlcSB7fX0geworCQlzZXQgY29tbWFuZCBbZ2V0X2NvbmZpZyAiZ3VpdG9vbC4kZnVsbG5hbWUuY21kIl0KKwkJc2V0IHByb21wdCBbbWMgIlJ1biBDb21tYW5kOiAlcyIgJGNvbW1hbmRdCisJfQorCisJbGFiZWwgJHcuaGVhZGVyIC10ZXh0ICRwcm9tcHQgLWZvbnQgZm9udF91aWJvbGQKKwlwYWNrICR3LmhlYWRlciAtc2lkZSB0b3AgLWZpbGwgeAorCisJc2V0IGFyZ3Byb21wdCBbZ2V0X2NvbmZpZyAiZ3VpdG9vbC4kZnVsbG5hbWUuYXJncHJvbXB0Il0KKwlzZXQgcmV2cHJvbXB0IFtnZXRfY29uZmlnICJndWl0b29sLiRmdWxsbmFtZS5yZXZwcm9tcHQiXQorCisJc2V0IGlzX2Fza19hcmdzIFtleHByIHskYXJncHJvbXB0IG5lIHt9fV0KKwlzZXQgaXNfYXNrX3JldnMgW2V4cHIgeyRyZXZwcm9tcHQgbmUge319XQorCisJaWYgeyRpc19hc2tfYXJnc30geworCQlpZiB7JGFyZ3Byb21wdCBlcSB7eWVzfSB8fCAkYXJncHJvbXB0IGVxIHt0cnVlfSB8fCAkYXJncHJvbXB0IGVxIHsxfX0geworCQkJc2V0IGFyZ3Byb21wdCBbbWMgIkFyZ3VtZW50cyJdCisJCX0KKworCQlsYWJlbGZyYW1lICR3LmFyZyAtdGV4dCAkYXJncHJvbXB0CisKKwkJc2V0IHdfYXJncyAkdy5hcmcudHh0CisJCWVudHJ5ICR3X2FyZ3MgXAorCQkJLWJvcmRlcndpZHRoIDEgXAorCQkJLXJlbGllZiBzdW5rZW4gXAorCQkJLXdpZHRoIDQwIFwKKwkJCS10ZXh0dmFyaWFibGUgQGFyZ3N0cgorCQlwYWNrICR3X2FyZ3MgLXBhZHggNSAtcGFkeSA1IC1maWxsIGJvdGgKKwkJcGFjayAkdy5hcmcgLWFuY2hvciBudyAtZmlsbCBib3RoIC1wYWR5IDUgLXBhZHggNQorCX0KKworCWlmIHskaXNfYXNrX3JldnN9IHsKKwkJaWYgeyRyZXZwcm9tcHQgZXEge3llc30gfHwgJHJldnByb21wdCBlcSB7dHJ1ZX0gfHwgJHJldnByb21wdCBlcSB7MX19IHsKKwkJCXNldCByZXZwcm9tcHQgW21jICJSZXZpc2lvbiJdCisJCX0KKworCQlpZiB7W2lzX2NvbmZpZ190cnVlICJndWl0b29sLiRmdWxsbmFtZS5yZXZ1bm1lcmdlZCJdfSB7CisJCQlzZXQgd19yZXYgWzo6Y2hvb3NlX3Jldjo6bmV3X3VubWVyZ2VkICR3LnJldiAkcmV2cHJvbXB0XQorCQl9IGVsc2UgeworCQkJc2V0IHdfcmV2IFs6OmNob29zZV9yZXY6Om5ldyAkdy5yZXYgJHJldnByb21wdF0KKwkJfQorCisJCXBhY2sgJHcucmV2IC1hbmNob3IgbncgLWZpbGwgYm90aCAtZXhwYW5kIDEgLXBhZHkgNSAtcGFkeCA1CisJfQorCisJZnJhbWUgJHcuYnV0dG9ucworCWlmIHskaXNfYXNrX3JldnN9IHsKKwkJYnV0dG9uICR3LmJ1dHRvbnMudmlzdWFsaXplIFwKKwkJCS10ZXh0IFttYyBWaXN1YWxpemVdIFwKKwkJCS1jb21tYW5kIFtjYiBfdmlzdWFsaXplXQorCQlwYWNrICR3LmJ1dHRvbnMudmlzdWFsaXplIC1zaWRlIGxlZnQKKwl9CisJYnV0dG9uICR3LmJ1dHRvbnMub2sgXAorCQktdGV4dCBbbWMgT0tdIFwKKwkJLWNvbW1hbmQgW2NiIF9zdGFydF0KKwlwYWNrICR3LmJ1dHRvbnMub2sgLXNpZGUgcmlnaHQKKwlidXR0b24gJHcuYnV0dG9ucy5jYW5jZWwgXAorCQktdGV4dCBbbWMgIkNhbmNlbCJdIFwKKwkJLWNvbW1hbmQgW2NiIF9jYW5jZWxdCisJcGFjayAkdy5idXR0b25zLmNhbmNlbCAtc2lkZSByaWdodCAtcGFkeCA1CisJcGFjayAkdy5idXR0b25zIC1zaWRlIGJvdHRvbSAtZmlsbCB4IC1wYWR5IDEwIC1wYWR4IDEwCisKKwliaW5kICR3IDwkTTFCLUtleS1SZXR1cm4+IFtjYiBfc3RhcnRdCisJYmluZCAkdyA8S2V5LVJldHVybj4gW2NiIF9zdGFydF0KKwliaW5kICR3IDxLZXktRXNjYXBlPiBbY2IgX2NhbmNlbF0KKwl3bSBwcm90b2NvbCAkdyBXTV9ERUxFVEVfV0lORE9XIFtjYiBfY2FuY2VsXQorCisJYmluZCAkdyA8VmlzaWJpbGl0eT4gW2NiIF92aXNpYmxlXQorCXJldHVybiAkdGhpcworfQorCittZXRob2QgZXhlY3V0ZSB7fSB7CisJdGt3YWl0IHdpbmRvdyAkdworCXNldCBydiAkaXNfb2sKKwlkZWxldGVfdGhpcworCXJldHVybiAkcnYKK30KKworbWV0aG9kIF92aXNpYmxlIHt9IHsKKwlncmFiICR3CisJaWYgeyRpc19hc2tfYXJnc30geworCQlmb2N1cyAkd19hcmdzCisJfSBlbHNlaWYgeyRpc19hc2tfcmV2c30geworCQkkd19yZXYgZm9jdXNfZmlsdGVyCisJfQorfQorCittZXRob2QgX2NhbmNlbCB7fSB7CisJd20gcHJvdG9jb2wgJHcgV01fREVMRVRFX1dJTkRPVyB7fQorCWRlc3Ryb3kgJHcKK30KKworbWV0aG9kIF9yZXYge30geworCWlmIHtbY2F0Y2ggeyR3X3JldiBjb21taXRfb3JfZGllfV19IHsKKwkJcmV0dXJuIHt9CisJfQorCXJldHVybiBbJHdfcmV2IGdldF0KK30KKworbWV0aG9kIF92aXN1YWxpemUge30geworCWdsb2JhbCBjdXJyZW50X2JyYW5jaAorCXNldCByZXYgW19yZXYgJHRoaXNdCisJaWYgeyRyZXYgbmUge319IHsKKwkJZG9fZ2l0ayBbbGlzdCAtLWxlZnQtcmlnaHQgIiRjdXJyZW50X2JyYW5jaC4uLiRyZXYiXQorCX0KK30KKworbWV0aG9kIF9zdGFydCB7fSB7CisJZ2xvYmFsIGVudgorCisJaWYgeyRpc19hc2tfcmV2c30geworCQlzZXQgbmFtZSBbX3JldiAkdGhpc10KKwkJaWYgeyRuYW1lIGVxIHt9fSB7CisJCQlyZXR1cm4KKwkJfQorCQlzZXQgZW52KFJFVklTSU9OKSAkbmFtZQorCX0KKworCWlmIHskaXNfYXNrX2FyZ3N9IHsKKwkJc2V0IGVudihBUkdTKSAkYXJnc3RyCisJfQorCisJc2V0IGlzX29rIDEKKwlfY2FuY2VsICR0aGlzCit9CisKK30KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL3RyYW5zcG9ydC50Y2wgYi9naXQtZ3VpL2xpYi90cmFuc3BvcnQudGNsCmluZGV4IDhlNmE5ZDAuLmIxOGQ5YzcgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvbGliL3RyYW5zcG9ydC50Y2wKKysrIGIvZ2l0LWd1aS9saWIvdHJhbnNwb3J0LnRjbApAQCAtMzMsMTAgKzMzLDE1IEBACiBwcm9jIHN0YXJ0X3B1c2hfYW55d2hlcmVfYWN0aW9uIHt3fSB7CiAJZ2xvYmFsIHB1c2hfdXJsdHlwZSBwdXNoX3JlbW90ZSBwdXNoX3VybCBwdXNoX3RoaW4gcHVzaF90YWdzCiAJZ2xvYmFsIHB1c2hfZm9yY2UKKwlnbG9iYWwgcmVwb19jb25maWcKIAorCXNldCBpc19taXJyb3IgMAogCXNldCByX3VybCB7fQogCXN3aXRjaCAtLSAkcHVzaF91cmx0eXBlIHsKLQlyZW1vdGUge3NldCByX3VybCAkcHVzaF9yZW1vdGV9CisJcmVtb3RlIHsKKwkJc2V0IHJfdXJsICRwdXNoX3JlbW90ZQorCQljYXRjaCB7c2V0IGlzX21pcnJvciAkcmVwb19jb25maWcocmVtb3RlLiRwdXNoX3JlbW90ZS5taXJyb3IpfQorCX0KIAl1cmwge3NldCByX3VybCAkcHVzaF91cmx9CiAJfQogCWlmIHskcl91cmwgZXEge319IHJldHVybgpAQCAtNTMsMjMgKzU4LDI5IEBACiAJCWxhcHBlbmQgY21kIC0tdGFncwogCX0KIAlsYXBwZW5kIGNtZCAkcl91cmwKLQlzZXQgY250IDAKLQlmb3JlYWNoIGkgWyR3LnNvdXJjZS5sIGN1cnNlbGVjdGlvbl0gewotCQlzZXQgYiBbJHcuc291cmNlLmwgZ2V0ICRpXQotCQlsYXBwZW5kIGNtZCAicmVmcy9oZWFkcy8kYjpyZWZzL2hlYWRzLyRiIgotCQlpbmNyIGNudAotCX0KLQlpZiB7JGNudCA9PSAwfSB7Ci0JCXJldHVybgotCX0gZWxzZWlmIHskY250ID09IDF9IHsKLQkJc2V0IHVuaXQgYnJhbmNoCisJaWYgeyRpc19taXJyb3J9IHsKKwkJc2V0IGNvbnMgW2NvbnNvbGU6Om5ldyBcCisJCQlbbWMgInB1c2ggJXMiICRyX3VybF0gXAorCQkJW21jICJNaXJyb3JpbmcgdG8gJXMiICRyX3VybF1dCiAJfSBlbHNlIHsKLQkJc2V0IHVuaXQgYnJhbmNoZXMKLQl9CisJCXNldCBjbnQgMAorCQlmb3JlYWNoIGkgWyR3LnNvdXJjZS5sIGN1cnNlbGVjdGlvbl0geworCQkJc2V0IGIgWyR3LnNvdXJjZS5sIGdldCAkaV0KKwkJCWxhcHBlbmQgY21kICJyZWZzL2hlYWRzLyRiOnJlZnMvaGVhZHMvJGIiCisJCQlpbmNyIGNudAorCQl9CisJCWlmIHskY250ID09IDB9IHsKKwkJCXJldHVybgorCQl9IGVsc2VpZiB7JGNudCA9PSAxfSB7CisJCQlzZXQgdW5pdCBicmFuY2gKKwkJfSBlbHNlIHsKKwkJCXNldCB1bml0IGJyYW5jaGVzCisJCX0KIAotCXNldCBjb25zIFtjb25zb2xlOjpuZXcgXAotCQlbbWMgInB1c2ggJXMiICRyX3VybF0gXAotCQlbbWMgIlB1c2hpbmcgJXMgJXMgdG8gJXMiICRjbnQgJHVuaXQgJHJfdXJsXV0KKwkJc2V0IGNvbnMgW2NvbnNvbGU6Om5ldyBcCisJCQlbbWMgInB1c2ggJXMiICRyX3VybF0gXAorCQkJW21jICJQdXNoaW5nICVzICVzIHRvICVzIiAkY250ICR1bml0ICRyX3VybF1dCisJfQogCWNvbnNvbGU6OmV4ZWMgJGNvbnMgJGNtZAogCWRlc3Ryb3kgJHcKIH0KQEAgLTEzNSw3ICsxNDYsNyBAQAogCQlzZXQgcHVzaF91cmx0eXBlIHVybAogCX0KIAlyYWRpb2J1dHRvbiAkdy5kZXN0LnVybF9yIFwKLQkJLXRleHQgW21jICJBcmJpdHJhcnkgVVJMOiJdIFwKKwkJLXRleHQgW21jICJBcmJpdHJhcnkgTG9jYXRpb246Il0gXAogCQktdmFsdWUgdXJsIFwKIAkJLXZhcmlhYmxlIHB1c2hfdXJsdHlwZQogCWVudHJ5ICR3LmRlc3QudXJsX3QgXApkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9kZS5wbyBiL2dpdC1ndWkvcG8vZGUucG8KaW5kZXggZmE0Mzk0Ny4uYTZmNzMwYiAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9wby9kZS5wbworKysgYi9naXQtZ3VpL3BvL2RlLnBvCkBAIC03LDggKzcsOCBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnaXQtZ3VpXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTA4LTAyIDA4OjU4KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTA4LTAyIDA5OjA5KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0xMi0wNiAyMDo1MSswMTAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0xMi0wNiAyMToyMiswMTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBDaHJpc3RpYW4gU3RpbW1pbmcgPHN0aW1taW5nQHR1aGguZGU+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogR2VybWFuXG4iCiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKQEAgLTg2LDcgKzg2LDE1IEBACiBtc2dpZCAiU2Nhbm5pbmcgZm9yIG1vZGlmaWVkIGZpbGVzIC4uLiIKIG1zZ3N0ciAiTmFjaCBnZcOkbmRlcnRlbiBEYXRlaWVuIHN1Y2hlbi4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMzI0IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIkF1ZnJ1ZmVuIGRlciBFaW50cmFnZW4tVm9yYmVyZWl0ZW4tS29udHJvbGxlLi4uIgorCisjOiBnaXQtZ3VpLnNoOjEzODQKK21zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suIgorbXNnc3RyICJFaW50cmFnZW4gYWJnZWxlaG50IGR1cmNoIEVpbnRyYWdlbi1Wb3JiZXJlaXRlbi1Lb250cm9sbGUgKMK7cHJlcGFyZS1jb21taXQgaG9va8KrKS4iCisKKyM6IGdpdC1ndWkuc2g6MTU0MiBsaWIvYnJvd3Nlci50Y2w6MjQ2CiBtc2dpZCAiUmVhZHkuIgogbXNnc3RyICJCZXJlaXQuIgogCkBAIC0xMTAsNyArMTE4LDE1IEBACiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQsIG1pc3NpbmciCiBtc2dzdHIgIkJlcmVpdGdlc3RlbGx0IHp1bSBFaW50cmFnZW4sIGZlaGxlbmQiCiAKLSM6IGdpdC1ndWkuc2g6MTU5NworIzogZ2l0LWd1aS5zaDoxNjU4Cittc2dpZCAiRmlsZSB0eXBlIGNoYW5nZWQsIG5vdCBzdGFnZWQiCittc2dzdHIgIkRhdGVpdHlwIGdlw6RuZGVydCwgbmljaHQgYmVyZWl0Z2VzdGVsbHQiCisKKyM6IGdpdC1ndWkuc2g6MTY1OQorbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQiCittc2dzdHIgIkRhdGVpdHlwIGdlw6RuZGVydCwgYmVyZWl0Z2VzdGVsbHQiCisKKyM6IGdpdC1ndWkuc2g6MTY2MQogbXNnaWQgIlVudHJhY2tlZCwgbm90IHN0YWdlZCIKIG1zZ3N0ciAiTmljaHQgdW50ZXIgVmVyc2lvbnNrb250cm9sbGUsIG5pY2h0IGJlcmVpdGdlc3RlbGx0IgogCkBAIC0xNjIsNyArMTc4LDE1IEBACiBtc2dpZCAiUmVtb3RlIgogbXNnc3RyICJBbmRlcmUgQXJjaGl2ZSIKIAotIzogZ2l0LWd1aS5zaDoxODc5CisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiV2Vya3pldWdlIgorCisjOiBnaXQtZ3VpLnNoOjIzMDIKK21zZ2lkICJFeHBsb3JlIFdvcmtpbmcgQ29weSIKK21zZ3N0ciAiQXJiZWl0c2tvcGllIGltIERhdGVpbWFuYWdlciIKKworIzogZ2l0LWd1aS5zaDoyMjQ3CiBtc2dpZCAiQnJvd3NlIEN1cnJlbnQgQnJhbmNoJ3MgRmlsZXMiCiBtc2dzdHIgIkFrdHVlbGxlbiBad2VpZyBkdXJjaGJsw6R0dGVybiIKIApAQCAtMjU5LDcgKzI4MywxNSBAQAogbXNnaWQgIlJlc2V0Li4uIgogbXNnc3RyICJadXLDvGNrc2V0emVuLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwMDIgZ2l0LWd1aS5zaDoyMzg5CisjOiBnaXQtZ3VpLnNoOjIzNzIKK21zZ2lkICJEb25lIgorbXNnc3RyICJGZXJ0aWciCisKKyM6IGdpdC1ndWkuc2g6MjM3NAorbXNnaWQgIkNvbW1pdEBAdmVyYiIKK21zZ3N0ciAiRWludHJhZ2VuIgorCisjOiBnaXQtZ3VpLnNoOjIzODMgZ2l0LWd1aS5zaDoyNzg2CiBtc2dpZCAiTmV3IENvbW1pdCIKIG1zZ3N0ciAiTmV1ZSBWZXJzaW9uIgogCkBAIC0yOTksMTEgKzMzMSw3IEBACiBtc2dpZCAiU2lnbiBPZmYiCiBtc2dzdHIgIkFiemVpY2huZW4iCiAKLSM6IGdpdC1ndWkuc2g6MjA1MyBnaXQtZ3VpLnNoOjIzNzIKLW1zZ2lkICJDb21taXRAQHZlcmIiCi1tc2dzdHIgIkVpbnRyYWdlbiIKLQotIzogZ2l0LWd1aS5zaDoyMDY0CisjOiBnaXQtZ3VpLnNoOjI0NTgKIG1zZ2lkICJMb2NhbCBNZXJnZS4uLiIKIG1zZ3N0ciAiTG9rYWxlcyBadXNhbW1lbmbDvGhyZW4uLi4iCiAKQEAgLTMxMSwxMSArMzM5LDE5IEBACiBtc2dpZCAiQWJvcnQgTWVyZ2UuLi4iCiBtc2dzdHIgIlp1c2FtbWVuZsO8aHJlbiBhYmJyZWNoZW4uLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA4MQorIzogZ2l0LWd1aS5zaDoyNDc1Cittc2dpZCAiQWRkLi4uIgorbXNnc3RyICJIaW56dWbDvGdlbi4uLiIKKworIzogZ2l0LWd1aS5zaDoyNDc5CiBtc2dpZCAiUHVzaC4uLiIKIG1zZ3N0ciAiVmVyc2VuZGVuLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxOTcgZ2l0LWd1aS5zaDoyMjE5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGdpdC1ndWkuc2g6MjQ4MworbXNnaWQgIkRlbGV0ZSBCcmFuY2guLi4iCittc2dzdHIgIlp3ZWlnIGzDtnNjaGVuLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI0OTMgZ2l0LWd1aS5zaDoyNTE1IGxpYi9hYm91dC50Y2w6MTQKICM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgpAQCAtMzI5LDcgKzM2NSwxMSBAQAogbXNnaWQgIk9wdGlvbnMuLi4iCiBtc2dzdHIgIk9wdGlvbmVuLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxMTMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NworIzogZ2l0LWd1aS5zaDoyNTc2Cittc2dpZCAiUmVtb3ZlLi4uIgorbXNnc3RyICJFbnRmZXJuZW4uLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCiBtc2dpZCAiSGVscCIKIG1zZ3N0ciAiSGlsZmUiCiAKQEAgLTMzNyw3ICszNzcsMTEgQEAKIG1zZ2lkICJPbmxpbmUgRG9jdW1lbnRhdGlvbiIKIG1zZ3N0ciAiT25saW5lLURva3VtZW50YXRpb24iCiAKLSM6IGdpdC1ndWkuc2g6MjIzOAorIzogZ2l0LWd1aS5zaDoyNjE0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NgorbXNnaWQgIlNob3cgU1NIIEtleSIKK21zZ3N0ciAiU1NILVNjaGzDvHNzZWwgYW56ZWlnZW4iCisKKyM6IGdpdC1ndWkuc2g6MjcwNwogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBjYW5ub3Qgc3RhdCBwYXRoICVzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgogbXNnc3RyICIiCkBAIC0zOTYsMTUgKzQ0MCw3IEBACiBtc2dpZCAiRmlsZToiCiBtc2dzdHIgIkRhdGVpOiIKIAotIzogZ2l0LWd1aS5zaDoyNTg5Ci1tc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgotbXNnc3RyICJLb250ZXh0IGFud2VuZGVuL3Vta2VocmVuIgotCi0jOiBnaXQtZ3VpLnNoOjI2OTYKLW1zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCi1tc2dzdHIgIlplaWxlIGFud2VuZGVuL3Vta2VocmVuIgotCi0jOiBnaXQtZ3VpLnNoOjI3MTEKKyM6IGdpdC1ndWkuc2g6MjgzNAogbXNnaWQgIlJlZnJlc2giCiBtc2dzdHIgIkFrdHVhbGlzaWVyZW4iCiAKQEAgLTQxNiw3ICs0NTIsMzUgQEAKIG1zZ2lkICJJbmNyZWFzZSBGb250IFNpemUiCiBtc2dzdHIgIlNjaHJpZnRncsO2w59lIHZlcmdyw7bDn2VybiIKIAotIzogZ2l0LWd1aS5zaDoyNjQ2CisjOiBnaXQtZ3VpLnNoOjMwMzMgbGliL2JsYW1lLnRjbDoyODEKK21zZ2lkICJFbmNvZGluZyIKK21zZ3N0ciAiWmVpY2hlbmtvZGllcnVuZyIKKworIzogZ2l0LWd1aS5zaDozMDQ0Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICJLb250ZXh0IGFud2VuZGVuL3Vta2VocmVuIgorCisjOiBnaXQtZ3VpLnNoOjI4NzUKK21zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCittc2dzdHIgIlplaWxlIGFud2VuZGVuL3Vta2VocmVuIgorCisjOiBnaXQtZ3VpLnNoOjI4ODUKK21zZ2lkICJSdW4gTWVyZ2UgVG9vbCIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1ZyIKKworIzogZ2l0LWd1aS5zaDoyODkwCittc2dpZCAiVXNlIFJlbW90ZSBWZXJzaW9uIgorbXNnc3RyICJFbnRmZXJudGUgVmVyc2lvbiBiZW51dHplbiIKKworIzogZ2l0LWd1aS5zaDoyODk0Cittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIkxva2FsZSBWZXJzaW9uIGJlbnV0emVuIgorCisjOiBnaXQtZ3VpLnNoOjI4OTgKK21zZ2lkICJSZXZlcnQgVG8gQmFzZSIKK21zZ3N0ciAiVXJzcHLDvG5nbGljaGUgVmVyc2lvbiBiZW51dHplbiIKKworIzogZ2l0LWd1aS5zaDozMDkxCiBtc2dpZCAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0IgogbXNnc3RyICJLb250ZXh0IGF1cyBCZXJlaXRzdGVsbHVuZyBoZXJhdXNuZWhtZW4iCiAKQEAgLTQ5NCwxMSArNTU4LDIzIEBACiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIlZlcnNpb24ga29waWVyZW4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6MjYwCisjOiBsaWIvYmxhbWUudGNsOjI3NQorbXNnaWQgIkZpbmQgVGV4dC4uLiIKK21zZ3N0ciAiVGV4dCBzdWNoZW4uLi4iCisKKyM6IGxpYi9ibGFtZS50Y2w6Mjg0CiBtc2dpZCAiRG8gRnVsbCBDb3B5IERldGVjdGlvbiIKIG1zZ3N0ciAiVm9sbGUgS29waWUtRXJrZW5udW5nIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyNjMKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiSGlzdG9yaWVuLUtvbnRleHQgYW56ZWlnZW4iCisKKyM6IGxpYi9ibGFtZS50Y2w6MjY2Cittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiRWx0ZXJudmVyc2lvbiBhbm5vdGllcmVuIgorCisjOiBsaWIvYmxhbWUudGNsOjM5NAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlYWRpbmcgJXMuLi4iCiBtc2dzdHIgIiVzIGxlc2VuLi4uIgpAQCAtNTQ3LDcgKzYyMywyMyBAQAogbXNnaWQgIk9yaWdpbmFsIEZpbGU6IgogbXNnc3RyICJVcnNwcsO8bmdsaWNoZSBEYXRlaToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6OTI1CisjOiBsaWIvYmxhbWUudGNsOjEwMjEKK21zZ2lkICJDYW5ub3QgZmluZCBIRUFEIGNvbW1pdDoiCittc2dzdHIgIlp3ZWlnc3BpdHplICjCu0hFQUTCqykga2FubiBuaWNodCBnZWZ1bmRlbiB3ZXJkZW46IgorCisjOiBsaWIvYmxhbWUudGNsOjEwNzYKK21zZ2lkICJDYW5ub3QgZmluZCBwYXJlbnQgY29tbWl0OiIKK21zZ3N0ciAiRWx0ZXJudmVyc2lvbiBrYW5uIG5pY2h0IGdlZnVuZGVuIHdlcmRlbjoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTAwMQorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCIKK21zZ3N0ciAiRWx0ZXJudmVyc2lvbiBrYW5uIG5pY2h0IGFuZ2V6ZWlndCB3ZXJkZW4iCisKKyM6IGxpYi9ibGFtZS50Y2w6MTAwMiBsaWIvZGlmZi50Y2w6MTkxCittc2dpZCAiRXJyb3IgbG9hZGluZyBkaWZmOiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gTGFkZW4gZGVzIFZlcmdsZWljaHM6IgorCisjOiBsaWIvYmxhbWUudGNsOjExNDIKIG1zZ2lkICJPcmlnaW5hbGx5IEJ5OiIKIG1zZ3N0ciAiVXJzcHLDvG5nbGljaCB2b246IgogCkBAIC05NzAsNyArMTA2Miw3IEBACiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiUHJvamVrdGFyY2hpdiDCuyVzwqsga29ubnRlIG5pY2h0IGVyc3RlbGx0IHdlcmRlbjoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDc4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4NwogbXNnaWQgIkRpcmVjdG9yeToiCiBtc2dzdHIgIlZlcnplaWNobmlzOiIKIApAQCAtOTc5LDEyICsxMDcxLDEyIEBACiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkdpdCBQcm9qZWt0YXJjaGl2IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQzNworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJEaXJlY3RvcnkgJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJWZXJ6ZWljaG5pcyDCuyVzwqsgZXhpc3RpZXJ0IGJlcmVpdHMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGaWxlICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiRGF0ZWkgwrslc8KrIGV4aXN0aWVydCBiZXJlaXRzLiIKQEAgLTk5MywxMSArMTA4NSwxNSBAQAogbXNnaWQgIkNsb25lIgogbXNnc3RyICJLbG9uZW4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY4Ci1tc2dpZCAiVVJMOiIKLW1zZ3N0ciAiVVJMOiIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDczCittc2dpZCAiU291cmNlIExvY2F0aW9uOiIKK21zZ3N0ciAiSGVya3VuZnQ6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODQKK21zZ2lkICJUYXJnZXQgRGlyZWN0b3J5OiIKK21zZ3N0ciAiWmllbHZlcnplaWNobmlzOiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTAKIG1zZ2lkICJDbG9uZSBUeXBlOiIKIG1zZ3N0ciAiQXJ0IGRlcyBLbG9uZW5zOiIKIApAQCAtMTQ3Nyw3ICsxNTczLDMxIEBACiBtc2dpZCAiTG9hZGluZyBkaWZmIG9mICVzLi4uIgogbXNnc3RyICJWZXJnbGVpY2ggdm9uIMK7JXPCqyBsYWRlbi4uLiIKIAotIzogbGliL2RpZmYudGNsOjExNCBsaWIvZGlmZi50Y2w6MTg0CisjOiBsaWIvZGlmZi50Y2w6MTIwCittc2dpZCAiIgorIkxPQ0FMOiBkZWxldGVkXG4iCisiUkVNT1RFOlxuIgorbXNnc3RyICIiCisiTE9LQUw6IGdlbMO2c2NodFxuIgorIkFOREVSRVM6XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxMjUKK21zZ2lkICIiCisiUkVNT1RFOiBkZWxldGVkXG4iCisiTE9DQUw6XG4iCittc2dzdHIgIiIKKyJBTkRFUkVTOiBnZWzDtnNjaHRcbiIKKyJMT0tBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzMgorbXNnaWQgIkxPQ0FMOlxuIgorbXNnc3RyICJMT0tBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzNQorbXNnaWQgIlJFTU9URTpcbiIKK21zZ3N0ciAiQU5ERVJFUzpcbiIKKworIzogbGliL2RpZmYudGNsOjE5NyBsaWIvZGlmZi50Y2w6Mjk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgJXMiCiBtc2dzdHIgIkRhdGVpIMK7JXPCqyBrYW5uIG5pY2h0IGFuZ2V6ZWlndCB3ZXJkZW4iCkBAIC0xNDk0LDExICsxNjE0LDI3IEBACiBtc2dpZCAiKiBCaW5hcnkgZmlsZSAobm90IHNob3dpbmcgY29udGVudCkuIgogbXNnc3RyICIqIEJpbsOkcmRhdGVpIChJbmhhbHQgd2lyZCBuaWNodCBhbmdlemVpZ3QpIgogCi0jOiBsaWIvZGlmZi50Y2w6MTg1Ci1tc2dpZCAiRXJyb3IgbG9hZGluZyBkaWZmOiIKLW1zZ3N0ciAiRmVobGVyIGJlaW0gTGFkZW4gZGVzIFZlcmdsZWljaHM6IgorIzogbGliL2RpZmYudGNsOjIyMgorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyIqIFVudHJhY2tlZCBmaWxlIGlzICVkIGJ5dGVzLlxuIgorIiogU2hvd2luZyBvbmx5IGZpcnN0ICVkIGJ5dGVzLlxuIgorbXNnc3RyICIiCisiKiBEYXRlaSBuaWNodCB1bnRlciBWZXJzaW9uc2tvbnRyb2xsZSwgRGF0ZWlncsO2w59lICVkIEJ5dGVzLlxuIgorIiogTnVyIGVyc3RlICVkIEJ5dGVzIHdlcmRlbiBhbmdlemVpZ3QuXG4iCiAKLSM6IGxpYi9kaWZmLnRjbDozMDMKKyM6IGxpYi9kaWZmLnRjbDoyMjgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiKiBVbnRyYWNrZWQgZmlsZSBjbGlwcGVkIGhlcmUgYnkgJXMuXG4iCisiKiBUbyBzZWUgdGhlIGVudGlyZSBmaWxlLCB1c2UgYW4gZXh0ZXJuYWwgZWRpdG9yLlxuIgorbXNnc3RyICIiCisiXG4iCisiKiBEYXRlaSBuaWNodCB1bnRlciBWZXJzaW9uc2tvbnRyb2xsZSwgaGllciBhYmdlc2Nobml0dGVuIGR1cmNoICVzLlxuIgorIiogWnVtIEFuc2VoZW4gZGVyIHZvbGxzdMOkbmRpZ2VuIERhdGVpIGV4dGVybmVuIEVkaXRvciBiZW51dHplbi5cbiIKKworIzogbGliL2RpZmYudGNsOjQzNgogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICIiCiAiRmVobGVyIGJlaW0gSGVyYXVzbmVobWVuIGRlcyBnZXfDpGhsdGVuIEtvbnRleHRzIGF1cyBkZXIgQmVyZWl0c3RlbGx1bmcuIgpAQCAtMTUxNSw2ICsxNjUxLDE5IEBACiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICJGZWhsZXIgYmVpbSBCZXJlaXRzdGVsbGVuIGRlciBnZXfDpGhsdGVuIFplaWxlLiIKIAorIzogbGliL2VuY29kaW5nLnRjbDo0NDMKK21zZ2lkICJEZWZhdWx0IgorbXNnc3RyICJWb3JlaW5zdGVsbHVuZyIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NDgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTeXN0ZW0gKCVzKSIKK21zZ3N0ciAiU3lzdGVtd2VpdCAoJXMpIgorCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ1OSBsaWIvZW5jb2RpbmcudGNsOjQ2NQorbXNnaWQgIk90aGVyIgorbXNnc3RyICJBbmRlcmUiCisKICM6IGxpYi9lcnJvci50Y2w6MjAgbGliL2Vycm9yLnRjbDoxMTQKIG1zZ2lkICJlcnJvciIKIG1zZ3N0ciAiRmVobGVyIgpAQCAtMTU4Niw2ICsxNzM1LDE1IEBACiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiTmljaHRzIHR1biIKIAorIzogbGliL2luZGV4LnRjbDo0MTkKK21zZ2lkICJSZXZlcnRpbmcgc2VsZWN0ZWQgZmlsZXMiCittc2dzdHIgIsOEbmRlcnVuZ2VuIGluIGdld8OkaGx0ZW4gRGF0ZWllbiB2ZXJ3ZXJmZW4iCisKKyM6IGxpYi9pbmRleC50Y2w6NDIzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUmV2ZXJ0aW5nICVzIgorbXNnc3RyICLDhG5kZXJ1bmdlbiBpbiAlcyB2ZXJ3ZXJmZW4iCisKICM6IGxpYi9tZXJnZS50Y2w6MTMKIG1zZ2lkICIiCiAiQ2Fubm90IG1lcmdlIHdoaWxlIGFtZW5kaW5nLlxuIgpAQCAtMTczMCw3ICsxODg4LDEwNyBAQAogbXNnaWQgIkFib3J0IGNvbXBsZXRlZC4gIFJlYWR5LiIKIG1zZ3N0ciAiQWJicnVjaCBkdXJjaGdlZsO8aHJ0LiBCZXJlaXQuIgogCi0jOiBsaWIvb3B0aW9uLnRjbDo5NQorIzogbGliL21lcmdldG9vbC50Y2w6MTQKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBiYXNlIHZlcnNpb24/IgorbXNnc3RyICJLb25mbGlrdCBkdXJjaCBCYXNpc3ZlcnNpb24gZXJzZXR6ZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNQorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhpcyBicmFuY2g/IgorbXNnc3RyICJLb25mbGlrdCBkdXJjaCBkaWVzZW4gWndlaWcgZXJzZXR6ZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNgorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIG90aGVyIGJyYW5jaD8iCittc2dzdHIgIktvbmZsaWt0IGR1cmNoIGFuZGVyZW4gWndlaWcgZXJzZXR6ZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyMAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIkhpbndlaXM6IERlciBWZXJnbGVpY2ggemVpZ3QgbnVyIGtvbmZsaWt0dmVydXJzYWNoZW5kZSDDhG5kZXJ1bmdlbiBhbi5cbiIKKyJcbiIKKyLCuyVzwqsgd2lyZCDDvGJlcnNjaHJpZWJlbi5cbiIKKyJcbiIKKyJEaWVzZSBPcGVyYXRpb24ga2FubiBudXIgcsO8Y2tnw6RuZ2lnIGdlbWFjaHQgd2VyZGVuLCB3ZW5uIGRpZVxuIgorIlp1c2FtbWVuZsO8aHJ1bmcgZXJuZXV0IGdlc3RhcnRldCB3aXJkLiIKKworIzogbGliL21lcmdldG9vbC50Y2w6NDUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGaWxlICVzIHNlZW1zIHRvIGhhdmUgdW5yZXNvbHZlZCBjb25mbGljdHMsIHN0aWxsIHN0YWdlPyIKK21zZ3N0ciAiRGF0ZWkgwrslc8KrIGhhdCBuaWNodCBhdWZnZWzDtnN0ZSBLb25mbGlrdGUuIFRyb3R6ZGVtIGJlcmVpdHN0ZWxsZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo2MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIKK21zZ3N0ciAiQXVmbMO2c3VuZyBoaW56dWdlZsO8Z3QgZsO8ciAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTE5Cittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICIiCisiS29uZmxpa3RlIGR1cmNoIGdlbMO2c2NodGUgRGF0ZWllbiBvZGVyIHN5bWJvbGlzY2hlIExpbmtzIGvDtm5uZW4gbmljaHQgZHVyY2ggIgorImRhcyBadXNhbWVuZsO8aHJ1bmdzd2Vya3pldWcgZ2Vsw7ZzdCB3ZXJkZW4uIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxMjQKK21zZ2lkICJDb25mbGljdCBmaWxlIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJLb25mbGlrdC1EYXRlaSBleGlzdGllcnQgbmljaHQiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjIzNgorIywgdGNsLWZvcm1hdAorbXNnaWQgIk5vdCBhIEdVSSBtZXJnZSB0b29sOiAnJXMnIgorbXNnc3RyICJLZWluIEdVSSBadXNhbW1lbmbDvGhydW5nc3dlcmt6ZXVnOiDCuyVzwqsiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI0MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlVuc3VwcG9ydGVkIG1lcmdlIHRvb2wgJyVzJyIKK21zZ3N0ciAiVW5iZWthbm50ZXMgWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1Zzogwrslc8KrIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyNzUKK21zZ2lkICJNZXJnZSB0b29sIGlzIGFscmVhZHkgcnVubmluZywgdGVybWluYXRlIGl0PyIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1ZyBsw6R1ZnQgYmVyZWl0cy4gU29sbCBlcyBhYmdlYnJvY2hlbiB3ZXJkZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyOTUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgcmV0cmlldmluZyB2ZXJzaW9uczpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkZlaGxlciBiZWltIEFicnVmZW4gZGVyIERhdGVpdmVyc2lvbmVuOlxuIgorIiVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozMTUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHRoZSBtZXJnZSB0b29sOlxuIgorIlxuIgorIiVzIgorbXNnc3RyICIiCisiWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1ZyBrb25udGUgbmljaHQgZ2VzdGFydGV0IHdlcmRlbjpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzE5Cittc2dpZCAiUnVubmluZyBtZXJnZSB0b29sLi4uIgorbXNnc3RyICJadXNhbW1lbmbDvGhydW5nc3dlcmt6ZXVnIHN0YXJ0ZW4uLi4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0NyBsaWIvbWVyZ2V0b29sLnRjbDozNjMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIlp1c2FtbWVuZsO8aHJ1bmdzd2Vya3pldWcgZmVobGdlc2NobGFnZW4uIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZ2xvYmFsIGVuY29kaW5nICclcyciCittc2dzdHIgIlVuZ8O8bHRpZ2UgZ2xvYmFsZSBaZWljaGVua29kaWVydW5nIMK7JXPCqyIKKworIzogbGliL29wdGlvbi50Y2w6MTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlcG8gZW5jb2RpbmcgJyVzJyIKK21zZ3N0ciAiVW5nw7xsdGlnZSBBcmNoaXYtWmVpY2hlbmtvZGllcnVuZyDCuyVzwqsiCisKKyM6IGxpYi9vcHRpb24udGNsOjExNwogbXNnaWQgIlJlc3RvcmUgRGVmYXVsdHMiCiBtc2dzdHIgIlZvcmVpbnN0ZWxsdW5nZW4gd2llZGVyaGVyc3RlbGxlbiIKIApAQCAtMTc2Nyw3ICsyMDI1LDExIEBACiBtc2dpZCAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSIKIG1zZ3N0ciAiVmVyZ2xlaWNoc3N0YXRpc3RpayBuYWNoIFp1c2FtbWVuZsO8aHJlbiBhbnplaWdlbiIKIAotIzogbGliL29wdGlvbi50Y2w6MTIzCisjOiBsaWIvb3B0aW9uLnRjbDoxMjIKK21zZ2lkICJVc2UgTWVyZ2UgVG9vbCIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZ3N3ZXJremV1ZyIKKworIzogbGliL29wdGlvbi50Y2w6MTI0CiBtc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKIG1zZ3N0ciAiQXVmIERhdGVpw6RuZGVydW5nc2RhdHVtIHZlcmxhc3NlbiIKIApAQCAtMTc4OCw2ICsyMDUwLDEwIEBACiBtc2dzdHIgIk1pbmRlc3R6YWhsIFplaWNoZW4gZsO8ciBLb3BpZS1Bbm5vdGllcmVuIgogCiAjOiBsaWIvb3B0aW9uLnRjbDoxMjgKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiQW56YWhsIFRhZ2UgZsO8ciBIaXN0b3JpZW4tS29udGV4dCIKKworIzogbGliL29wdGlvbi50Y2w6MTI5CiBtc2dpZCAiTnVtYmVyIG9mIERpZmYgQ29udGV4dCBMaW5lcyIKIG1zZ3N0ciAiQW56YWhsIGRlciBLb250ZXh0emVpbGVuIGJlaW0gVmVyZ2xlaWNoIgogCkBAIC0xNzk5LDcgKzIwNjUsMTUgQEAKIG1zZ2lkICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUiCiBtc2dzdHIgIk5hbWVuc3ZvcnNjaGxhZyBmw7xyIG5ldWUgWndlaWdlIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxOTIKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlIFplaWNoZW5rb2RpZXJ1bmciCisKKyM6IGxpYi9vcHRpb24udGNsOjIwMworbXNnaWQgIkNoYW5nZSIKK21zZ3N0ciAiw4RuZGVybiIKKworIzogbGliL29wdGlvbi50Y2w6MjMwCiBtc2dpZCAiU3BlbGxpbmcgRGljdGlvbmFyeToiCiBtc2dzdHIgIlfDtnJ0ZXJidWNoIFJlY2h0c2NocmVpYnByw7xmdW5nOiIKIApAQCAtMTgyNCw5ICsyMDk4LDg2IEBACiBtc2dpZCAiRmFpbGVkIHRvIGNvbXBsZXRlbHkgc2F2ZSBvcHRpb25zOiIKIG1zZ3N0ciAiT3B0aW9uZW4ga29ubnRlbiBuaWNodCBnZXNwZWljaGVydCB3ZXJkZW46IgogCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTkKK21zZ2lkICJBZGQgUmVtb3RlIgorbXNnc3RyICJBbmRlcmVzIEFyY2hpdiBoaW56dWbDvGdlbiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI0Cittc2dpZCAiQWRkIE5ldyBSZW1vdGUiCittc2dzdHIgIk5ldWVzIGFuZGVyZXMgQXJjaGl2IGhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjgKK21zZ2lkICJBZGQiCittc2dzdHIgIkhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MzcKK21zZ2lkICJSZW1vdGUgRGV0YWlscyIKK21zZ3N0ciAiRWluemVsaGVpdGVuIGRlcyBhbmRlcmVuIEFyY2hpdnMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo1MAorbXNnaWQgIkxvY2F0aW9uOiIKK21zZ3N0ciAiQWRyZXNzZToiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo2MgorbXNnaWQgIkZ1cnRoZXIgQWN0aW9uIgorbXNnc3RyICJXZWl0ZXJlIEFrdGlvbiBqZXR6dCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjY1Cittc2dpZCAiRmV0Y2ggSW1tZWRpYXRlbHkiCittc2dzdHIgIkdsZWljaCBhbmZvcmRlcm4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3MQorbXNnaWQgIkluaXRpYWxpemUgUmVtb3RlIFJlcG9zaXRvcnkgYW5kIFB1c2giCittc2dzdHIgIkFuZGVyZXMgQXJjaGl2IGluaXRpYWxpc2llcmVuIHVuZCBkYWhpbiB2ZXJzZW5kZW4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIk5pY2h0cyB0dW4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMDEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIgorbXNnc3RyICJCaXR0ZSBnZWJlbiBTaWUgZWluZW4gTmFtZW4gZGVzIGFuZGVyZW4gQXJjaGl2cyBhbi4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIHJlbW90ZSBuYW1lLiIKK21zZ3N0ciAiwrslc8KrIGlzdCBrZWluIHp1bMOkc3NpZ2VyIE5hbWUgZWluZXMgYW5kZXJlbiBBcmNoaXZzLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEyNQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBhZGQgcmVtb3RlICclcycgb2YgbG9jYXRpb24gJyVzJy4iCittc2dzdHIgIkZlaGxlciBiZWltIEhpbnp1ZsO8Z2VuIGRlcyBhbmRlcmVuIEFyY2hpdnMgwrslc8KrIGF1cyBIZXJrdW5mdHNvcnQgwrslc8KrLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEzMyBsaWIvdHJhbnNwb3J0LnRjbDo2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiZmV0Y2ggJXMiCittc2dzdHIgIsK7JXPCqyBhbmZvcmRlcm4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIsK7JXPCqyBhbmZvcmRlcm4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJEbyBub3Qga25vdyBob3cgdG8gaW5pdGlhbGl6ZSByZXBvc2l0b3J5IGF0IGxvY2F0aW9uICclcycuIgorbXNnc3RyICIiCisiSW5pdGlhbGlzaWVyZW4gZWluZXMgYW5kZXJlbiBBcmNoaXZzIGFuIEFkcmVzc2Ugwrslc8KrIGlzdCBuaWNodCBtw7ZnbGljaC4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjMgbGliL3RyYW5zcG9ydC50Y2w6MjUgbGliL3RyYW5zcG9ydC50Y2w6NjMKKyM6IGxpYi90cmFuc3BvcnQudGNsOjgxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAicHVzaCAlcyIKK21zZ3N0ciAiwrslc8KrIHZlcnNlbmRlbi4uLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgdXAgdGhlICVzIChhdCAlcykiCittc2dzdHIgIkVpbnJpY2h0ZW4gdm9uIMK7JXPCqyBhbiDCuyVzwqsiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgotbXNnc3RyICJad2VpZyBpbiBhbmRlcmVtIFByb2pla3RhcmNoaXYgbMO2c2NoZW4iCittc2dpZCAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSIKK21zZ3N0ciAiWndlaWcgaW4gYW5kZXJlbSBBcmNoaXYgbMO2c2NoZW4iCiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDcKIG1zZ2lkICJGcm9tIFJlcG9zaXRvcnkiCkBAIC0xODM3LDggKzIxODgsOCBAQAogbXNnc3RyICJBbmRlcmVzIEFyY2hpdjoiCiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NjYgbGliL3RyYW5zcG9ydC50Y2w6MTM4Ci1tc2dpZCAiQXJiaXRyYXJ5IFVSTDoiCi1tc2dzdHIgIkFyY2hpdi1VUkw6IgorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCittc2dzdHIgIkFkcmVzc2U6IgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0CiBtc2dpZCAiQnJhbmNoZXMiCkBAIC0xOTEwLDcgKzIyNjEsMTEgQEAKIG1zZ2lkICJTY2FubmluZyAlcy4uLiIKIG1zZ3N0ciAiwrslc8KrIGxhZGVuLi4uIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNjUKKyM6IGxpYi9yZW1vdGUudGNsOjE2MworbXNnaWQgIlJlbW92ZSBSZW1vdGUiCittc2dzdHIgIkFuZGVyZXMgQXJjaGl2IGVudGZlcm5lbiIKKworIzogbGliL3JlbW90ZS50Y2w6MTY4CiBtc2dpZCAiUHJ1bmUgZnJvbSIKIG1zZ3N0ciAiQXVmcsOkdW1lbiB2b24iCiAKQEAgLTE5MjIsNiArMjI3NywyMiBAQAogbXNnaWQgIlB1c2ggdG8iCiBtc2dzdHIgIlZlcnNlbmRlbiBuYWNoIgogCisjOiBsaWIvc2VhcmNoLnRjbDoyMQorbXNnaWQgIkZpbmQ6IgorbXNnc3RyICJTdWNoZW46IgorCisjOiBsaWIvc2VhcmNoLnRjbDoyMgorbXNnaWQgIk5leHQiCittc2dzdHIgIk7DpGNoc3RlciIKKworIzogbGliL3NlYXJjaC50Y2w6MjMKK21zZ2lkICJQcmV2IgorbXNnc3RyICJWb3JpZ2VyIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyNQorbXNnaWQgIkNhc2UtU2Vuc2l0aXZlIgorbXNnc3RyICJHcm/Dny0vS2xlaW5zY2hyZWlidW5nIHVudGVyc2NoZWlkZW4iCisKICM6IGxpYi9zaG9ydGN1dC50Y2w6MjAgbGliL3Nob3J0Y3V0LnRjbDo2MQogbXNnaWQgIkNhbm5vdCB3cml0ZSBzaG9ydGN1dDoiCiBtc2dzdHIgIkZlaGxlciBiZWltIFNjaHJlaWJlbiBkZXIgVmVya27DvHBmdW5nOiIKQEAgLTE5NjcsMTUgKzIzMzgsMTgxIEBACiBtc2dpZCAiU3BlbGwgQ2hlY2tlciBGYWlsZWQiCiBtc2dzdHIgIlJlY2h0c2NocmVpYnByw7xmdW5nIGZlaGxnZXNjaGxhZ2VuIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICJLZWluZSBTY2hsw7xzc2VsIGdlZnVuZGVuLiIKKworIzogbGliL3NzaGtleS50Y2w6MzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGb3VuZCBhIHB1YmxpYyBrZXkgaW46ICVzIgorbXNnc3RyICLDlmZmZW50bGljaGVyIFNjaGzDvHNzZWwgZ2VmdW5kZW4gaW46ICVzIgorCisjOiBsaWIvc3Noa2V5LnRjbDo0MAorbXNnaWQgIkdlbmVyYXRlIEtleSIKK21zZ3N0ciAiU2NobMO8c3NlbCBlcnpldWdlbiIKKworIzogbGliL3NzaGtleS50Y2w6NTYKK21zZ2lkICJDb3B5IFRvIENsaXBib2FyZCIKK21zZ3N0ciAiSW4gWndpc2NoZW5hYmxhZ2Uga29waWVyZW4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIklociBPcGVuU1NIIMO2ZmZlbmxpY2hlciBTY2hsw7xzc2VsIgorCisjOiBsaWIvc3Noa2V5LnRjbDo3OAorbXNnaWQgIkdlbmVyYXRpbmcuLi4iCittc2dzdHIgIkVyemV1Z2VuLi4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIktvbm50ZSDCu3NzaC1rZXlnZW7CqyBuaWNodCBzdGFydGVuOlxuIgorIlxuIgorIiVzIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTEKK21zZ2lkICJHZW5lcmF0aW9uIGZhaWxlZC4iCittc2dzdHIgIlNjaGzDvHNzZWxlcnpldWd1bmcgZmVobGdlc2NobGFnZW4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIlNjaGzDvHNzZWxlcnpldWd1bmcgZXJmb2xncmVpY2gsIGFiZXIga2VpbmUgU2NobMO8c3NlbCBnZWZ1bmRlbi4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjEyMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIllvdXIga2V5IGlzIGluOiAlcyIKK21zZ3N0ciAiSWhyIFNjaGzDvHNzZWwgaXN0IGFiZ2VsZWd0IGluOiAlcyIKKwogIzogbGliL3N0YXR1c19iYXIudGNsOjgzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiJXMgLi4uICUqaSBvZiAlKmkgJXMgKCUzaSUlKSIKIG1zZ3N0ciAiJXMgLi4uICUqaSB2b24gJSppICVzICglM2klJSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjYKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIldlcmt6ZXVnIGhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyOAorbXNnaWQgIkFkZCBOZXcgVG9vbCBDb21tYW5kIgorbXNnc3RyICJOZXVlcyBLb21tYW5kbyBmw7xyIFdlcmt6ZXVnIGhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMworbXNnaWQgIkFkZCBnbG9iYWxseSIKK21zZ3N0ciAiR2xvYmFsIGhpbnp1ZsO8Z2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0NQorbXNnaWQgIlRvb2wgRGV0YWlscyIKK21zZ3N0ciAiRWluemVsaGVpdGVuIGRlcyBXZXJremV1Z3MiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ4Cittc2dpZCAiVXNlICcvJyBzZXBhcmF0b3JzIHRvIGNyZWF0ZSBhIHN1Ym1lbnUgdHJlZToiCittc2dzdHIgIkJlbnV0emVuIFNpZSBlaW5lbiBTY2hyw6Rnc3RyaWNoIMK7L8KrLCB1bSBVbnRlcm1lbsO8cyB6dSBlcnN0ZWxsZW46IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo2MQorbXNnaWQgIkNvbW1hbmQ6IgorbXNnc3RyICJLb21tYW5kbzoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjc0Cittc2dpZCAiU2hvdyBhIGRpYWxvZyBiZWZvcmUgcnVubmluZyIKK21zZ3N0ciAiQmVzdMOkdGlndW5nc2ZyYWdlIHZvciBTdGFydGVuIGFuemVpZ2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo4MAorbXNnaWQgIkFzayB0aGUgdXNlciB0byBzZWxlY3QgYSByZXZpc2lvbiAoc2V0cyAkUkVWSVNJT04pIgorbXNnc3RyICJCZW51dHplciBuYWNoIFZlcnNpb24gZnJhZ2VuIChzZXR6dCAkUkVWSVNJT04pIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo4NQorbXNnaWQgIkFzayB0aGUgdXNlciBmb3IgYWRkaXRpb25hbCBhcmd1bWVudHMgKHNldHMgJEFSR1MpIgorbXNnc3RyICJCZW51dHplciBuYWNoIHp1c8OkdHpsaWNoZW4gQXJndW1lbnRlbiBmcmFnZW4gKHNldHp0ICRBUkdTKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6OTIKK21zZ2lkICJEb24ndCBzaG93IHRoZSBjb21tYW5kIG91dHB1dCB3aW5kb3ciCittc2dzdHIgIktlaW4gQXVzZ2FiZWZlbnN0ZXIgemVpZ2VuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5NworbXNnaWQgIlJ1biBvbmx5IGlmIGEgZGlmZiBpcyBzZWxlY3RlZCAoJEZJTEVOQU1FIG5vdCBlbXB0eSkiCittc2dzdHIgIk51ciBzdGFydGVuLCB3ZW5uIGVpbiBWZXJnbGVpY2ggZ2V3w6RobHQgaXN0ICgkRklMRU5BTUUgaXN0IG5pY2h0IGxlZXIpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxMjEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgbmFtZSBmb3IgdGhlIHRvb2wuIgorbXNnc3RyICJCaXR0ZSBnZWJlbiBTaWUgZWluZW4gV2Vya3pldWduYW1lbiBhbi4iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyOQogIywgdGNsLWZvcm1hdAotbXNnaWQgImZldGNoICVzIgotbXNnc3RyICLCuyVzwqsgYW5mb3JkZXJuIgorbXNnaWQgIlRvb2wgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIldlcmt6ZXVnIMK7JXPCqyBleGlzdGllcnQgYmVyZWl0cy4iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE1MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3QgYWRkIHRvb2w6XG4iCisiJXMiCittc2dzdHIgIiIKKyJXZXJremV1ZyBrb25udGUgbmljaHQgaGluenVnZWbDvGd0IHdlcmRlbjpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTkwCittc2dpZCAiUmVtb3ZlIFRvb2wiCittc2dzdHIgIldlcmt6ZXVnIGVudGZlcm5lbiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTk2Cittc2dpZCAiUmVtb3ZlIFRvb2wgQ29tbWFuZHMiCittc2dzdHIgIldlcmt6ZXVna29tbWFuZG9zIGVudGZlcm5lbiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJFbnRmZXJuZW4iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIzNgorbXNnaWQgIihCbHVlIGRlbm90ZXMgcmVwb3NpdG9yeS1sb2NhbCB0b29scykiCittc2dzdHIgIihXZXJremV1Z2UgZsO8ciBsb2thbGVzIEFyY2hpdiB3ZXJkZW4gaW4gQmxhdSBhbmdlemVpZ3QpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyOTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSdW4gQ29tbWFuZDogJXMiCittc2dzdHIgIktvbW1hbmRvIGF1ZnJ1ZmVuOiAlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzExCittc2dpZCAiQXJndW1lbnRzIgorbXNnc3RyICJBcmd1bWVudGUiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjM0OAorbXNnaWQgIk9LIgorbXNnc3RyICJPayIKKworIzogbGliL3Rvb2xzLnRjbDo3NQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgJXMgcmVxdWlyZXMgYSBzZWxlY3RlZCBmaWxlLiIKK21zZ3N0ciAiVW0gwrslc8KrIHp1IHN0YXJ0ZW4sIG11c3MgZWluZSBEYXRlaSBhdXNnZXfDpGhsdCBzZWluLiIKKworIzogbGliL3Rvb2xzLnRjbDo5MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBydW4gJXM/IgorbXNnc3RyICJXb2xsZW4gU2llICVzIHdpcmtsaWNoIHN0YXJ0ZW4/IgorCisjOiBsaWIvdG9vbHMudGNsOjExMAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2w6ICVzIgorbXNnc3RyICJXZXJremV1ZzogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTExCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVubmluZzogJXMiCittc2dzdHIgIlN0YXJ0ZW46ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE0OQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgY29tcGxldGVkIHN1Y2Nlc2Z1bGx5OiAlcyIKK21zZ3N0ciAiV2Vya3pldWcgZXJmb2xncmVpY2ggYWJnZXNjaGxvc3NlbjogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBmYWlsZWQ6ICVzIgorbXNnc3RyICJXZXJremV1ZyBmZWhsZ2VzY2hsYWdlbjogJXMiCiAKICM6IGxpYi90cmFuc3BvcnQudGNsOjcKICMsIHRjbC1mb3JtYXQKQEAgLTE5OTIsMTcgKzI1MjksMTcgQEAKIG1zZ2lkICJQcnVuaW5nIHRyYWNraW5nIGJyYW5jaGVzIGRlbGV0ZWQgZnJvbSAlcyIKIG1zZ3N0ciAiw5xiZXJuYWhtZXp3ZWlnZSBhdWZyw6R1bWVuIHVuZCBlbnRmZXJuZW4sIGRpZSBpbiDCuyVzwqsgZ2Vsw7ZzY2h0IHd1cmRlbiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MjUgbGliL3RyYW5zcG9ydC50Y2w6NzEKLSMsIHRjbC1mb3JtYXQKLW1zZ2lkICJwdXNoICVzIgotbXNnc3RyICLCuyVzwqsgdmVyc2VuZGVuLi4uIgotCiAjOiBsaWIvdHJhbnNwb3J0LnRjbDoyNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgY2hhbmdlcyB0byAlcyIKIG1zZ3N0ciAiw4RuZGVydW5nZW4gbmFjaCDCuyVzwqsgdmVyc2VuZGVuIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo3MgorIzogbGliL3RyYW5zcG9ydC50Y2w6NjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNaXJyb3JpbmcgdG8gJXMiCittc2dzdHIgIlNwaWVnZWxuIG5hY2ggJXMiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjgyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyAlcyAlcyB0byAlcyIKIG1zZ3N0ciAiJXMgJXMgbmFjaCAlcyB2ZXJzZW5kZW4iCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2ZyLnBvIGIvZ2l0LWd1aS9wby9mci5wbwppbmRleCAyNmI4NjZmLi40NTc3M2FiIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2ZyLnBvCisrKyBiL2dpdC1ndWkvcG8vZnIucG8KQEAgLTEsNCArMSw0IEBACi0jIHRyYW5zbGF0aW9uIG9mIGZyLnBvIHRvIEZyYW7Dp2FpcworIyB0cmFuc2xhdGlvbiBvZiBmci5wbyB0byBGcmVuY2gKICMgVHJhbnNsYXRpb24gb2YgZ2l0LWd1aSB0byBGcmVuY2guCiAjIENvcHlyaWdodCAoQykgMjAwOCBTaGF3biBQZWFyY2UsIGV0IGFsLgogIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZ2l0IHBhY2thZ2UuCkBAIC05LDQzICs5LDQzIEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGZyXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTA4LTAyIDE0OjQ1LTA3MDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTA4LTExIDE3OjEyLTA0MDBcbiIKLSJMYXN0LVRyYW5zbGF0b3I6IEFsZXhhbmRyZSBCb3VyZ2V0IDxhbGV4YW5kcmUuYm91cmdldEBzYXZvaXJmYWlyZWxpbnV4LmNvbT5cbiIKLSJMYW5ndWFnZS1UZWFtOiBGcmFuw6dhaXMgPGZyQGxpLm9yZz5cbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0xMS0xNiAxMzo1Ni0wODAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0xMS0yMCAxMDoyMCswMTAwXG4iCisiTGFzdC1UcmFuc2xhdG9yOiBDaHJpc3RpYW4gQ291ZGVyIDxjaHJpc2Nvb2xAdHV4ZmFtaWx5Lm9yZz5cbiIKKyJMYW5ndWFnZS1UZWFtOiBGcmVuY2hcbiIKICJNSU1FLVZlcnNpb246IDEuMFxuIgogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKICJYLUdlbmVyYXRvcjogS0JhYmVsIDEuMTEuNFxuIgogIlBsdXJhbC1Gb3JtczogIG5wbHVyYWxzPTI7IHBsdXJhbD0obiA+IDEpO1xuIgogCi0jOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6Njg4IGdpdC1ndWkuc2g6NzAyIGdpdC1ndWkuc2g6NzE1IGdpdC1ndWkuc2g6Nzk4Ci0jOiBnaXQtZ3VpLnNoOjgxNworIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjczNyBnaXQtZ3VpLnNoOjc1MSBnaXQtZ3VpLnNoOjc2NCBnaXQtZ3VpLnNoOjg0NworIzogZ2l0LWd1aS5zaDo4NjYKIG1zZ2lkICJnaXQtZ3VpOiBmYXRhbCBlcnJvciIKIG1zZ3N0ciAiZ2l0LWd1aTogZXJyZXVyIGZhdGFsZSIKIAotIzogZ2l0LWd1aS5zaDo2NDQKKyM6IGdpdC1ndWkuc2g6Njg5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBmb250IHNwZWNpZmllZCBpbiAlczoiCiBtc2dzdHIgIlBvbGljZSBpbnZhbGlkZSBzcMOpY2lmacOpZSBkYW5zICVzIDoiCiAKLSM6IGdpdC1ndWkuc2g6Njc0CisjOiBnaXQtZ3VpLnNoOjcyMwogbXNnaWQgIk1haW4gRm9udCIKIG1zZ3N0ciAiUG9saWNlIHByaW5jaXBhbGUiCiAKLSM6IGdpdC1ndWkuc2g6Njc1CisjOiBnaXQtZ3VpLnNoOjcyNAogbXNnaWQgIkRpZmYvQ29uc29sZSBGb250IgogbXNnc3RyICJQb2xpY2UgZGlmZi9jb25zb2xlIgogCi0jOiBnaXQtZ3VpLnNoOjY4OQorIzogZ2l0LWd1aS5zaDo3MzgKIG1zZ2lkICJDYW5ub3QgZmluZCBnaXQgaW4gUEFUSC4iCiBtc2dzdHIgIkltcG9zc2libGUgZGUgdHJvdXZlciBnaXQgZGFucyBQQVRILiIKIAotIzogZ2l0LWd1aS5zaDo3MTYKKyM6IGdpdC1ndWkuc2g6NzY1CiBtc2dpZCAiQ2Fubm90IHBhcnNlIEdpdCB2ZXJzaW9uIHN0cmluZzoiCiBtc2dzdHIgIkltcG9zc2libGUgZGUgcGFyc2VyIGxhIHZlcnNpb24gZGUgR2l0IDoiCiAKLSM6IGdpdC1ndWkuc2g6NzM0CisjOiBnaXQtZ3VpLnNoOjc4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJHaXQgdmVyc2lvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiIKQEAgLTY0LDM4MSArNjQsNDQ2IEBACiAiXG4iCiAiUGV1dCdvbiBjb25zaWTDqXJlciBxdWUgJyVzJyBlc3QgZW4gdmVyc2lvbiAxLjUuMCA/XG4iCiAKLSM6IGdpdC1ndWkuc2g6OTcyCisjOiBnaXQtZ3VpLnNoOjEwNjIKIG1zZ2lkICJHaXQgZGlyZWN0b3J5IG5vdCBmb3VuZDoiCiBtc2dzdHIgIkltcG9zc2libGUgZGUgdHJvdXZlciBsZSByw6lwZXJ0b2lyZSBnaXQgOiIKIAotIzogZ2l0LWd1aS5zaDo5NzkKKyM6IGdpdC1ndWkuc2g6MTA2OQogbXNnaWQgIkNhbm5vdCBtb3ZlIHRvIHRvcCBvZiB3b3JraW5nIGRpcmVjdG9yeToiCiBtc2dzdHIgIkltcG9zc2libGUgZCdhbGxlciDDoCBsYSByYWNpbmUgZHUgcsOpcGVydG9pcmUgZGUgdHJhdmFpbCA6IgogCi0jOiBnaXQtZ3VpLnNoOjk4NgorIzogZ2l0LWd1aS5zaDoxMDc2CiBtc2dpZCAiQ2Fubm90IHVzZSBmdW5ueSAuZ2l0IGRpcmVjdG9yeToiCiBtc2dzdHIgIkltcG9zc2libGUgZCd1dGlsaXNlciBsZSByw6lwZXJ0b2lyZSAuZ2l0OiIKIAotIzogZ2l0LWd1aS5zaDo5OTEKKyM6IGdpdC1ndWkuc2g6MTA4MQogbXNnaWQgIk5vIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICJBdWN1biByw6lwZXJ0b2lyZSBkZSB0cmF2YWlsIgogCi0jOiBnaXQtZ3VpLnNoOjExMzggbGliL2NoZWNrb3V0X29wLnRjbDozMDUKKyM6IGdpdC1ndWkuc2g6MTI0NyBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQogbXNnaWQgIlJlZnJlc2hpbmcgZmlsZSBzdGF0dXMuLi4iCiBtc2dzdHIgIlJhZnJhaWNoaXNzZW1lbnQgZHUgc3RhdHVzIGRlcyBmaWNoaWVycy4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMTk0CisjOiBnaXQtZ3VpLnNoOjEzMDMKIG1zZ2lkICJTY2FubmluZyBmb3IgbW9kaWZpZWQgZmlsZXMgLi4uIgogbXNnc3RyICJSZWNoZXJjaGUgZGUgZmljaGllcnMgbW9kaWZpw6lzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjEzNjkgbGliL2Jyb3dzZXIudGNsOjI0NgorIzogZ2l0LWd1aS5zaDoxMzY3Cittc2dpZCAiQ2FsbGluZyBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4uLiIKK21zZ3N0ciAiTGFuY2VtZW50IGRlIGwnYWN0aW9uIGRlIHByw6lwYXJhdGlvbiBkdSBtZXNzYWdlIGRlIGNvbW1pdC4uLiIKKworIzogZ2l0LWd1aS5zaDoxMzg0Cittc2dpZCAiQ29tbWl0IGRlY2xpbmVkIGJ5IHByZXBhcmUtY29tbWl0LW1zZyBob29rLiIKK21zZ3N0ciAiQ29tbWl0IHJlZnVzw6kgcGFyIGwnYWN0aW9uIGRlIHByw6lwYXJhdGlvbiBkdSBtZXNzYWdlIGRlIGNvbW1pdC4iCisKKyM6IGdpdC1ndWkuc2g6MTU0MiBsaWIvYnJvd3Nlci50Y2w6MjQ2CiBtc2dpZCAiUmVhZHkuIgogbXNnc3RyICJQcsOqdC4iCiAKLSM6IGdpdC1ndWkuc2g6MTYzNQorIzogZ2l0LWd1aS5zaDoxODE5CiBtc2dpZCAiVW5tb2RpZmllZCIKIG1zZ3N0ciAiTm9uIG1vZGlmacOpIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzcKKyM6IGdpdC1ndWkuc2g6MTgyMQogbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICJNb2RpZmnDqSwgcGFzIGluZGV4w6kiCiAKLSM6IGdpdC1ndWkuc2g6MTYzOCBnaXQtZ3VpLnNoOjE2NDMKKyM6IGdpdC1ndWkuc2g6MTgyMiBnaXQtZ3VpLnNoOjE4MzAKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCIKIG1zZ3N0ciAiSW5kZXjDqSIKIAotIzogZ2l0LWd1aS5zaDoxNjM5IGdpdC1ndWkuc2g6MTY0NAorIzogZ2l0LWd1aS5zaDoxODIzIGdpdC1ndWkuc2g6MTgzMQogbXNnaWQgIlBvcnRpb25zIHN0YWdlZCBmb3IgY29tbWl0IgogbXNnc3RyICJQb3J0aW9ucyBpbmRleMOpZXMiCiAKLSM6IGdpdC1ndWkuc2g6MTY0MCBnaXQtZ3VpLnNoOjE2NDUKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKIG1zZ3N0ciAiSW5kZXjDqXMsIG1hbnF1YW50IgogCi0jOiBnaXQtZ3VpLnNoOjE2NDIKKyM6IGdpdC1ndWkuc2g6MTgyNgorbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICJMZSB0eXBlIGRlIGZpY2hpZXIgYSBjaGFuZ8OpLCBub24gaW5kZXjDqSIKKworIzogZ2l0LWd1aS5zaDoxODI3Cittc2dpZCAiRmlsZSB0eXBlIGNoYW5nZWQsIHN0YWdlZCIKK21zZ3N0ciAiTGUgdHlwZSBkZSBmaWNoaWVyIGEgY2hhbmfDqSwgaW5kZXjDqSIKKworIzogZ2l0LWd1aS5zaDoxODI5CiBtc2dpZCAiVW50cmFja2VkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICJOb24gdmVyc2lvbm7DqSwgbm9uIGluZGV4w6kiCiAKLSM6IGdpdC1ndWkuc2g6MTY0NworIzogZ2l0LWd1aS5zaDoxODM0CiBtc2dpZCAiTWlzc2luZyIKIG1zZ3N0ciAiTWFucXVhbnQiCiAKLSM6IGdpdC1ndWkuc2g6MTY0OAorIzogZ2l0LWd1aS5zaDoxODM1CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsIgogbXNnc3RyICJJbmRleMOpIHBvdXIgc3VwcHJlc3Npb24iCiAKLSM6IGdpdC1ndWkuc2g6MTY0OQorIzogZ2l0LWd1aS5zaDoxODM2CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsLCBzdGlsbCBwcmVzZW50IgogbXNnc3RyICJJbmRleMOpIHBvdXIgc3VwcHJlc3Npb24sIHRvdWpvdXJzIHByw6lzZW50IgogCi0jOiBnaXQtZ3VpLnNoOjE2NTEgZ2l0LWd1aS5zaDoxNjUyIGdpdC1ndWkuc2g6MTY1MyBnaXQtZ3VpLnNoOjE2NTQKKyM6IGdpdC1ndWkuc2g6MTgzOCBnaXQtZ3VpLnNoOjE4MzkgZ2l0LWd1aS5zaDoxODQwIGdpdC1ndWkuc2g6MTg0MQorIzogZ2l0LWd1aS5zaDoxODQyIGdpdC1ndWkuc2g6MTg0MwogbXNnaWQgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24iCiBtc2dzdHIgIk7DqWNlc3NpdGUgbGEgcsOpc29sdXRpb24gZCd1bmUgZnVzaW9uIgogCi0jOiBnaXQtZ3VpLnNoOjE2ODkKKyM6IGdpdC1ndWkuc2g6MTg3OAogbXNnaWQgIlN0YXJ0aW5nIGdpdGsuLi4gcGxlYXNlIHdhaXQuLi4iCiBtc2dzdHIgIkxhbmNlbWVudCBkZSBnaXRrLi4uIHVuIGluc3RhbnQuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MTY5OAorIzogZ2l0LWd1aS5zaDoxODg3CiBtc2dpZCAiQ291bGRuJ3QgZmluZCBnaXRrIGluIFBBVEgiCiBtc2dzdHIgIkltcG9zc2libGUgZGUgdHJvdXZlciBnaXRrIGRhbnMgUEFUSC4iCiAKLSM6IGdpdC1ndWkuc2g6MTk0OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM2CisjOiBnaXQtZ3VpLnNoOjIyODAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNgogbXNnaWQgIlJlcG9zaXRvcnkiCiBtc2dzdHIgIkTDqXDDtHQiCiAKLSM6IGdpdC1ndWkuc2g6MTk0OQorIzogZ2l0LWd1aS5zaDoyMjgxCiBtc2dpZCAiRWRpdCIKIG1zZ3N0ciAiRWRpdGlvbiIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJCcmFuY2hlIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTQgbGliL2Nob29zZV9yZXYudGNsOjU0OAorIzogZ2l0LWd1aS5zaDoyMjg2IGxpYi9jaG9vc2VfcmV2LnRjbDo1NDgKIG1zZ2lkICJDb21taXRAQG5vdW4iCiBtc2dzdHIgIkNvbW1pdCIKIAotIzogZ2l0LWd1aS5zaDoxOTU3IGxpYi9tZXJnZS50Y2w6MTIwIGxpYi9tZXJnZS50Y2w6MTQ5IGxpYi9tZXJnZS50Y2w6MTY3CisjOiBnaXQtZ3VpLnNoOjIyODkgbGliL21lcmdlLnRjbDoxMjEgbGliL21lcmdlLnRjbDoxNTAgbGliL21lcmdlLnRjbDoxNjgKIG1zZ2lkICJNZXJnZSIKIG1zZ3N0ciAiRnVzaW9ubmVyIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTggbGliL2Nob29zZV9yZXYudGNsOjU1NworIzogZ2l0LWd1aS5zaDoyMjkwIGxpYi9jaG9vc2VfcmV2LnRjbDo1NTcKIG1zZ2lkICJSZW1vdGUiCiBtc2dzdHIgIkTDqXDDtHQgZGlzdGFudCIKIAotIzogZ2l0LWd1aS5zaDoxOTY3CisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiT3V0aWxzIgorCisjOiBnaXQtZ3VpLnNoOjIzMDIKK21zZ2lkICJFeHBsb3JlIFdvcmtpbmcgQ29weSIKK21zZ3N0ciAiRXhwbG9yZXIgbGEgY29waWUgZGUgdHJhdmFpbCIKKworIzogZ2l0LWd1aS5zaDoyMzA3CiBtc2dpZCAiQnJvd3NlIEN1cnJlbnQgQnJhbmNoJ3MgRmlsZXMiCiBtc2dzdHIgIk5hdmlndWVyIGRhbnMgbGEgYnJhbmNoZSBjb3VyYW50ZSIKIAotIzogZ2l0LWd1aS5zaDoxOTcxCisjOiBnaXQtZ3VpLnNoOjIzMTEKIG1zZ2lkICJCcm93c2UgQnJhbmNoIEZpbGVzLi4uIgogbXNnc3RyICJOYXZpZ3VlciBkYW5zIGxhIGJyYW5jaGUuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MTk3NgorIzogZ2l0LWd1aS5zaDoyMzE2CiBtc2dpZCAiVmlzdWFsaXplIEN1cnJlbnQgQnJhbmNoJ3MgSGlzdG9yeSIKIG1zZ3N0ciAiVmlzdWFsaXNlciBoaXN0b3JpcXVlIGJyYW5jaGUgY291cmFudGUiCiAKLSM6IGdpdC1ndWkuc2g6MTk4MAorIzogZ2l0LWd1aS5zaDoyMzIwCiBtc2dpZCAiVmlzdWFsaXplIEFsbCBCcmFuY2ggSGlzdG9yeSIKIG1zZ3N0ciAiVm9pciBsJ2hpc3RvcmlxdWUgZGUgdG91dGVzIGxlcyBicmFuY2hlcyIKIAotIzogZ2l0LWd1aS5zaDoxOTg3CisjOiBnaXQtZ3VpLnNoOjIzMjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJCcm93c2UgJXMncyBGaWxlcyIKIG1zZ3N0ciAiTmF2aWd1ZXIgbCdhcmJvcmVzY2VuY2UgZGUgJXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk4OQorIzogZ2l0LWd1aS5zaDoyMzI5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVmlzdWFsaXplICVzJ3MgSGlzdG9yeSIKIG1zZ3N0ciAiVm9pciBsJ2hpc3RvcmlxdWUgZGUgbGEgYnJhbmNoZTogJXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk5NCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKKyM6IGdpdC1ndWkuc2g6MjMzNCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKIG1zZ2lkICJEYXRhYmFzZSBTdGF0aXN0aWNzIgogbXNnc3RyICJTdGF0aXN0aXF1ZXMgZHUgZMOpcMO0dCIKIAotIzogZ2l0LWd1aS5zaDoxOTk3IGxpYi9kYXRhYmFzZS50Y2w6MzQKKyM6IGdpdC1ndWkuc2g6MjMzNyBsaWIvZGF0YWJhc2UudGNsOjM0CiBtc2dpZCAiQ29tcHJlc3MgRGF0YWJhc2UiCiBtc2dzdHIgIkNvbXByaW1lciBsZSBkw6lww7R0IgogCi0jOiBnaXQtZ3VpLnNoOjIwMDAKKyM6IGdpdC1ndWkuc2g6MjM0MAogbXNnaWQgIlZlcmlmeSBEYXRhYmFzZSIKIG1zZ3N0ciAiVsOpcmlmaWVyIGxlIGTDqXDDtHQiCiAKLSM6IGdpdC1ndWkuc2g6MjAwNyBnaXQtZ3VpLnNoOjIwMTEgZ2l0LWd1aS5zaDoyMDE1IGxpYi9zaG9ydGN1dC50Y2w6NworIzogZ2l0LWd1aS5zaDoyMzQ3IGdpdC1ndWkuc2g6MjM1MSBnaXQtZ3VpLnNoOjIzNTUgbGliL3Nob3J0Y3V0LnRjbDo3CiAjOiBsaWIvc2hvcnRjdXQudGNsOjM5IGxpYi9zaG9ydGN1dC50Y2w6NzEKIG1zZ2lkICJDcmVhdGUgRGVza3RvcCBJY29uIgogbXNnc3RyICJDcsOpZXIgaWPDtG5lIHN1ciBidXJlYXUiCiAKLSM6IGdpdC1ndWkuc2g6MjAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE3NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4NQorIzogZ2l0LWd1aS5zaDoyMzYzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTgzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTkxCiBtc2dpZCAiUXVpdCIKIG1zZ3N0ciAiUXVpdHRlciIKIAotIzogZ2l0LWd1aS5zaDoyMDMxCisjOiBnaXQtZ3VpLnNoOjIzNzEKIG1zZ2lkICJVbmRvIgogbXNnc3RyICJEw6lmYWlyZSIKIAotIzogZ2l0LWd1aS5zaDoyMDM0CisjOiBnaXQtZ3VpLnNoOjIzNzQKIG1zZ2lkICJSZWRvIgogbXNnc3RyICJSZWZhaXJlIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzggZ2l0LWd1aS5zaDoyNTQ1CisjOiBnaXQtZ3VpLnNoOjIzNzggZ2l0LWd1aS5zaDoyOTIzCiBtc2dpZCAiQ3V0IgogbXNnc3RyICJDb3VwZXIiCiAKLSM6IGdpdC1ndWkuc2g6MjA0MSBnaXQtZ3VpLnNoOjI1NDggZ2l0LWd1aS5zaDoyNjIyIGdpdC1ndWkuc2g6MjcxNQorIzogZ2l0LWd1aS5zaDoyMzgxIGdpdC1ndWkuc2g6MjkyNiBnaXQtZ3VpLnNoOjMwMDAgZ2l0LWd1aS5zaDozMDgyCiAjOiBsaWIvY29uc29sZS50Y2w6NjkKIG1zZ2lkICJDb3B5IgogbXNnc3RyICJDb3BpZXIiCiAKLSM6IGdpdC1ndWkuc2g6MjA0NCBnaXQtZ3VpLnNoOjI1NTEKKyM6IGdpdC1ndWkuc2g6MjM4NCBnaXQtZ3VpLnNoOjI5MjkKIG1zZ2lkICJQYXN0ZSIKIG1zZ3N0ciAiQ29sbGVyIgogCi0jOiBnaXQtZ3VpLnNoOjIwNDcgZ2l0LWd1aS5zaDoyNTU0IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgorIzogZ2l0LWd1aS5zaDoyMzg3IGdpdC1ndWkuc2g6MjkzMiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MjYKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MzgKIG1zZ2lkICJEZWxldGUiCiBtc2dzdHIgIlN1cHByaW1lciIKIAotIzogZ2l0LWd1aS5zaDoyMDUxIGdpdC1ndWkuc2g6MjU1OCBnaXQtZ3VpLnNoOjI3MTkgbGliL2NvbnNvbGUudGNsOjcxCisjOiBnaXQtZ3VpLnNoOjIzOTEgZ2l0LWd1aS5zaDoyOTM2IGdpdC1ndWkuc2g6MzA4NiBsaWIvY29uc29sZS50Y2w6NzEKIG1zZ2lkICJTZWxlY3QgQWxsIgogbXNnc3RyICJUb3V0IHPDqWxlY3Rpb25uZXIiCiAKLSM6IGdpdC1ndWkuc2g6MjA2MAorIzogZ2l0LWd1aS5zaDoyNDAwCiBtc2dpZCAiQ3JlYXRlLi4uIgogbXNnc3RyICJDcsOpZXIuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA2NgorIzogZ2l0LWd1aS5zaDoyNDA2CiBtc2dpZCAiQ2hlY2tvdXQuLi4iCiBtc2dzdHIgIkNoYXJnZXIgKGNoZWNrb3V0KS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDcyCisjOiBnaXQtZ3VpLnNoOjI0MTIKIG1zZ2lkICJSZW5hbWUuLi4iCiBtc2dzdHIgIlJlbm9tbWVyLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzcgZ2l0LWd1aS5zaDoyMTg3CisjOiBnaXQtZ3VpLnNoOjI0MTcKIG1zZ2lkICJEZWxldGUuLi4iCiBtc2dzdHIgIlN1cHByaW1lci4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDgyCisjOiBnaXQtZ3VpLnNoOjI0MjIKIG1zZ2lkICJSZXNldC4uLiIKIG1zZ3N0ciAiUsOpaW5pdGlhbGlzZXIuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA5NCBnaXQtZ3VpLnNoOjI0OTEKKyM6IGdpdC1ndWkuc2g6MjQzMgorbXNnaWQgIkRvbmUiCittc2dzdHIgIkVmZmVjdHXDqSIKKworIzogZ2l0LWd1aS5zaDoyNDM0Cittc2dpZCAiQ29tbWl0QEB2ZXJiIgorbXNnc3RyICJDb21taXRlckBAdmVyYiIKKworIzogZ2l0LWd1aS5zaDoyNDQzIGdpdC1ndWkuc2g6Mjg2NAogbXNnaWQgIk5ldyBDb21taXQiCiBtc2dzdHIgIk5vdXZlYXUgY29tbWl0IgogCi0jOiBnaXQtZ3VpLnNoOjIxMDIgZ2l0LWd1aS5zaDoyNDk4CisjOiBnaXQtZ3VpLnNoOjI0NTEgZ2l0LWd1aS5zaDoyODcxCiBtc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCiBtc2dzdHIgIkNvcnJpZ2VyIGRlcm5pZXIgY29tbWl0IgogCi0jOiBnaXQtZ3VpLnNoOjIxMTEgZ2l0LWd1aS5zaDoyNDU4IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKKyM6IGdpdC1ndWkuc2g6MjQ2MSBnaXQtZ3VpLnNoOjI4MjUgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQogbXNnaWQgIlJlc2NhbiIKIG1zZ3N0ciAiUmVjaGFyZ2VyIG1vZGlmcy4iCiAKLSM6IGdpdC1ndWkuc2g6MjExNworIzogZ2l0LWd1aS5zaDoyNDY3CiBtc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgogbXNnc3RyICJJbmRleGVyIgogCi0jOiBnaXQtZ3VpLnNoOjIxMjMKKyM6IGdpdC1ndWkuc2g6MjQ3MwogbXNnaWQgIlN0YWdlIENoYW5nZWQgRmlsZXMgVG8gQ29tbWl0IgogbXNnc3RyICJJbmRleGVyIHRvdXRlcyBtb2RpZmljYXRpb25zIgogCi0jOiBnaXQtZ3VpLnNoOjIxMjkKKyM6IGdpdC1ndWkuc2g6MjQ3OQogbXNnaWQgIlVuc3RhZ2UgRnJvbSBDb21taXQiCiBtc2dzdHIgIkTDqXNpbmRleGVyIgogCi0jOiBnaXQtZ3VpLnNoOjIxMzQgbGliL2luZGV4LnRjbDozOTUKKyM6IGdpdC1ndWkuc2g6MjQ4NCBsaWIvaW5kZXgudGNsOjQxMAogbXNnaWQgIlJldmVydCBDaGFuZ2VzIgogbXNnc3RyICJBbm51bGVyIGxlcyBtb2RpZmljYXRpb25zIChyZXZlcnQpIgogCi0jOiBnaXQtZ3VpLnNoOjIxNDEgZ2l0LWd1aS5zaDoyNzAyCisjOiBnaXQtZ3VpLnNoOjI0OTEgZ2l0LWd1aS5zaDozMDY5CiBtc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCiBtc2dzdHIgIk1vbnRyZXIgbW9pbnMgZGUgY29udGV4dGUiCiAKLSM6IGdpdC1ndWkuc2g6MjE0NSBnaXQtZ3VpLnNoOjI3MDYKKyM6IGdpdC1ndWkuc2g6MjQ5NSBnaXQtZ3VpLnNoOjMwNzMKIG1zZ2lkICJTaG93IE1vcmUgQ29udGV4dCIKIG1zZ3N0ciAiTW9udHJlciBwbHVzIGRlIGNvbnRleHRlIgogCi0jOiBnaXQtZ3VpLnNoOjIxNTEgZ2l0LWd1aS5zaDoyNDcwIGdpdC1ndWkuc2g6MjU2OQorIzogZ2l0LWd1aS5zaDoyNTAyIGdpdC1ndWkuc2g6MjgzOCBnaXQtZ3VpLnNoOjI5NDcKIG1zZ2lkICJTaWduIE9mZiIKIG1zZ3N0ciAiU2lnbmVyIgogCi0jOiBnaXQtZ3VpLnNoOjIxNTUgZ2l0LWd1aS5zaDoyNDc0Ci1tc2dpZCAiQ29tbWl0QEB2ZXJiIgotbXNnc3RyICJDb21taXRlciIKLQotIzogZ2l0LWd1aS5zaDoyMTY2CisjOiBnaXQtZ3VpLnNoOjI1MTgKIG1zZ2lkICJMb2NhbCBNZXJnZS4uLiIKIG1zZ3N0ciAiRnVzaW9uIGxvY2FsZS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMTcxCisjOiBnaXQtZ3VpLnNoOjI1MjMKIG1zZ2lkICJBYm9ydCBNZXJnZS4uLiIKIG1zZ3N0ciAiQWJhbmRvbm5lciBmdXNpb24uLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjE4MworIzogZ2l0LWd1aS5zaDoyNTM1IGdpdC1ndWkuc2g6MjU3NQorbXNnaWQgIkFkZC4uLiIKK21zZ3N0ciAiQWpvdXRlci4uLiIKKworIzogZ2l0LWd1aS5zaDoyNTM5CiBtc2dpZCAiUHVzaC4uLiIKIG1zZ3N0ciAiUG91c3Nlci4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMTk3IGdpdC1ndWkuc2g6MjIxOSBsaWIvYWJvdXQudGNsOjE0Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAKKyM6IGdpdC1ndWkuc2g6MjU0MworbXNnaWQgIkRlbGV0ZSBCcmFuY2guLi4iCittc2dzdHIgIlN1cHByaW1lciBicmFuY2hlLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgogbXNnc3RyICLDgCBwcm9wb3MgZGUgJXMiCiAKLSM6IGdpdC1ndWkuc2g6MjIwMQorIzogZ2l0LWd1aS5zaDoyNTU3CiBtc2dpZCAiUHJlZmVyZW5jZXMuLi4iCiBtc2dzdHIgIlByw6lmw6lyZW5jZXMuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjIwOSBnaXQtZ3VpLnNoOjI3NDAKKyM6IGdpdC1ndWkuc2g6MjU2NSBnaXQtZ3VpLnNoOjMxMTUKIG1zZ2lkICJPcHRpb25zLi4uIgogbXNnc3RyICJPcHRpb25zLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIyMTUgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NworIzogZ2l0LWd1aS5zaDoyNTc2Cittc2dpZCAiUmVtb3ZlLi4uIgorbXNnc3RyICJTdXBwcmltZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCiBtc2dpZCAiSGVscCIKIG1zZ3N0ciAiQWlkZSIKIAotIzogZ2l0LWd1aS5zaDoyMjU2CisjOiBnaXQtZ3VpLnNoOjI2MTEKIG1zZ2lkICJPbmxpbmUgRG9jdW1lbnRhdGlvbiIKIG1zZ3N0ciAiRG9jdW1lbnRhdGlvbiBlbiBsaWduZSIKIAotIzogZ2l0LWd1aS5zaDoyMzQwCisjOiBnaXQtZ3VpLnNoOjI2MTQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU2Cittc2dpZCAiU2hvdyBTU0ggS2V5IgorbXNnc3RyICJNb250cmVyIGNsw6kgU1NIIgorCisjOiBnaXQtZ3VpLnNoOjI3MDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJmYXRhbDogY2Fubm90IHN0YXQgcGF0aCAlczogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKIG1zZ3N0ciAiIgogImVycmV1ciBmYXRhbGUgOiBwYXMgZCdpbmZvcyBzdXIgbGUgY2hlbWluICVzIDogRmljaGllciBvdSByw6lwZXJ0b2lyZSAiCiAiaW5leGlzdGFudCIKIAotIzogZ2l0LWd1aS5zaDoyMzczCisjOiBnaXQtZ3VpLnNoOjI3NDAKIG1zZ2lkICJDdXJyZW50IEJyYW5jaDoiCiBtc2dzdHIgIkJyYW5jaGUgY291cmFudGUgOiIKIAotIzogZ2l0LWd1aS5zaDoyMzk0CisjOiBnaXQtZ3VpLnNoOjI3NjEKIG1zZ2lkICJTdGFnZWQgQ2hhbmdlcyAoV2lsbCBDb21taXQpIgogbXNnc3RyICJNb2RpZnMuIGluZGV4w6llcyAocG91ciBjb21taXQpIgogCi0jOiBnaXQtZ3VpLnNoOjI0MTQKKyM6IGdpdC1ndWkuc2g6Mjc4MQogbXNnaWQgIlVuc3RhZ2VkIENoYW5nZXMiCiBtc2dzdHIgIk1vZGlmcy4gbm9uIGluZGV4w6llcyIKIAotIzogZ2l0LWd1aS5zaDoyNDY0CisjOiBnaXQtZ3VpLnNoOjI4MzEKIG1zZ2lkICJTdGFnZSBDaGFuZ2VkIgogbXNnc3RyICJJbmRleGVyIG1vZGlmcy4iCiAKLSM6IGdpdC1ndWkuc2g6MjQ4MCBsaWIvdHJhbnNwb3J0LnRjbDo5MyBsaWIvdHJhbnNwb3J0LnRjbDoxODIKKyM6IGdpdC1ndWkuc2g6Mjg1MCBsaWIvdHJhbnNwb3J0LnRjbDo5MyBsaWIvdHJhbnNwb3J0LnRjbDoxODIKIG1zZ2lkICJQdXNoIgogbXNnc3RyICJQb3Vzc2VyIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTAKKyM6IGdpdC1ndWkuc2g6Mjg4NQogbXNnaWQgIkluaXRpYWwgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJNZXNzYWdlIGRlIGNvbW1pdCBpbml0aWFsIDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMQorIzogZ2l0LWd1aS5zaDoyODg2CiBtc2dpZCAiQW1lbmRlZCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2UgZGUgY29tbWl0IGNvcnJpZ8OpIDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMgorIzogZ2l0LWd1aS5zaDoyODg3CiBtc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiTWVzc2FnZSBkZSBjb21taXQgaW5pdGlhbCBjb3JyaWfDqSA6IgogCi0jOiBnaXQtZ3VpLnNoOjI1MTMKKyM6IGdpdC1ndWkuc2g6Mjg4OAogbXNnaWQgIkFtZW5kZWQgTWVyZ2UgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJNZXNzYWdlIGRlIGNvbW1pdCBkZSBmdXNpb24gY29ycmlnw6kgOiIKIAotIzogZ2l0LWd1aS5zaDoyNTE0CisjOiBnaXQtZ3VpLnNoOjI4ODkKIG1zZ2lkICJNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2UgZGUgY29tbWl0IGRlIGZ1c2lvbiA6IgogCi0jOiBnaXQtZ3VpLnNoOjI1MTUKKyM6IGdpdC1ndWkuc2g6Mjg5MAogbXNnaWQgIkNvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiTWVzc2FnZSBkZSBjb21taXQgOiIKIAotIzogZ2l0LWd1aS5zaDoyNTYxIGdpdC1ndWkuc2g6MjcyMyBsaWIvY29uc29sZS50Y2w6NzMKKyM6IGdpdC1ndWkuc2g6MjkzOSBnaXQtZ3VpLnNoOjMwOTAgbGliL2NvbnNvbGUudGNsOjczCiBtc2dpZCAiQ29weSBBbGwiCiBtc2dzdHIgIkNvcGllciB0b3V0IgogCi0jOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2JsYW1lLnRjbDoxMDAKKyM6IGdpdC1ndWkuc2g6Mjk2MyBsaWIvYmxhbWUudGNsOjEwNAogbXNnaWQgIkZpbGU6IgogbXNnc3RyICJGaWNoaWVyIDoiCiAKLSM6IGdpdC1ndWkuc2g6MjY5MQotbXNnaWQgIkFwcGx5L1JldmVyc2UgSHVuayIKLW1zZ3N0ciAiQXBwbGlxdWVyL0ludmVyc2VyIHNlY3Rpb24iCi0KLSM6IGdpdC1ndWkuc2g6MjY5NgotbXNnaWQgIkFwcGx5L1JldmVyc2UgTGluZSIKLW1zZ3N0ciAiQXBwbGlxdWVyL0ludmVyc2VyIGxhIGxpZ25lIgotCi0jOiBnaXQtZ3VpLnNoOjI3MTEKKyM6IGdpdC1ndWkuc2g6MzA3OAogbXNnaWQgIlJlZnJlc2giCiBtc2dzdHIgIlJhZnJhaWNoaXIiCiAKLSM6IGdpdC1ndWkuc2g6MjczMgorIzogZ2l0LWd1aS5zaDozMDk5CiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJEaW1pbnVlciBsYSBwb2xpY2UiCiAKLSM6IGdpdC1ndWkuc2g6MjczNgorIzogZ2l0LWd1aS5zaDozMTAzCiBtc2dpZCAiSW5jcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJBZ3JhbmRpciBsYSBwb2xpY2UiCiAKLSM6IGdpdC1ndWkuc2g6Mjc0NworIzogZ2l0LWd1aS5zaDozMTExIGxpYi9ibGFtZS50Y2w6MjgxCittc2dpZCAiRW5jb2RpbmciCittc2dzdHIgIkVuY29kYWdlIgorCisjOiBnaXQtZ3VpLnNoOjMxMjIKK21zZ2lkICJBcHBseS9SZXZlcnNlIEh1bmsiCittc2dzdHIgIkFwcGxpcXVlci9JbnZlcnNlciBzZWN0aW9uIgorCisjOiBnaXQtZ3VpLnNoOjMxMjcKK21zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCittc2dzdHIgIkFwcGxpcXVlci9JbnZlcnNlciBsYSBsaWduZSIKKworIzogZ2l0LWd1aS5zaDozMTM3Cittc2dpZCAiUnVuIE1lcmdlIFRvb2wiCittc2dzdHIgIkxhbmNlciBvdXRpbCBkZSBtZXJnZSIKKworIzogZ2l0LWd1aS5zaDozMTQyCittc2dpZCAiVXNlIFJlbW90ZSBWZXJzaW9uIgorbXNnc3RyICJVdGlsaXNlciBsYSB2ZXJzaW9uIGRpc3RhbnRlIgorCisjOiBnaXQtZ3VpLnNoOjMxNDYKK21zZ2lkICJVc2UgTG9jYWwgVmVyc2lvbiIKK21zZ3N0ciAiVXRpbGlzZXIgbGEgdmVyc2lvbiBsb2NhbGUiCisKKyM6IGdpdC1ndWkuc2g6MzE1MAorbXNnaWQgIlJldmVydCBUbyBCYXNlIgorbXNnc3RyICJSZXZlbmlyIMOgIGxhIHZlcnNpb24gZGUgYmFzZSIKKworIzogZ2l0LWd1aS5zaDozMTY5CiBtc2dpZCAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0IgogbXNnc3RyICJEw6lzaW5kZXhlciBsYSBzZWN0aW9uIgogCi0jOiBnaXQtZ3VpLnNoOjI3NDgKKyM6IGdpdC1ndWkuc2g6MzE3MAogbXNnaWQgIlVuc3RhZ2UgTGluZSBGcm9tIENvbW1pdCIKIG1zZ3N0ciAiRMOpc2luZGV4ZXIgbGEgbGlnbmUiCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MAorIzogZ2l0LWd1aS5zaDozMTcyCiBtc2dpZCAiU3RhZ2UgSHVuayBGb3IgQ29tbWl0IgogbXNnc3RyICJJbmRleGVyIGxhIHNlY3Rpb24iCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MQorIzogZ2l0LWd1aS5zaDozMTczCiBtc2dpZCAiU3RhZ2UgTGluZSBGb3IgQ29tbWl0IgogbXNnc3RyICJJbmRleGVyIGxhIGxpZ25lIgogCi0jOiBnaXQtZ3VpLnNoOjI3NzEKKyM6IGdpdC1ndWkuc2g6MzE5NgogbXNnaWQgIkluaXRpYWxpemluZy4uLiIKIG1zZ3N0ciAiSW5pdGlhbGlzYXRpb24uLi4iCiAKLSM6IGdpdC1ndWkuc2g6Mjg3NgorIzogZ2l0LWd1aS5zaDozMzAxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlBvc3NpYmxlIGVudmlyb25tZW50IGlzc3VlcyBleGlzdC5cbiIKQEAgLTQ1NSw3ICs1MjAsNyBAQAogInNvdXMtcHJvY2Vzc3VzIGRlIEdpdCBsYW5jw6lzIHBhciAlc1xuIgogIlxuIgogCi0jOiBnaXQtZ3VpLnNoOjI5MDYKKyM6IGdpdC1ndWkuc2g6MzMzMQogbXNnaWQgIiIKICJcbiIKICJUaGlzIGlzIGR1ZSB0byBhIGtub3duIGlzc3VlIHdpdGggdGhlXG4iCkBAIC00NjUsNyArNTMwLDcgQEAKICJDZWNpIGVzdCBkdSDDoCB1biBwcm9ibMOobWUgY29ubnUgYXZlY1xuIgogImxlIGJpbmFpcmUgVGNsIGRpc3RyaWJ1w6kgcGFyIEN5Z3dpbi4iCiAKLSM6IGdpdC1ndWkuc2g6MjkxMQorIzogZ2l0LWd1aS5zaDozMzM2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtNDg2LDgwICs1NTEsMTA4IEBACiBtc2dpZCAiZ2l0LWd1aSAtIGEgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlIGZvciBHaXQuIgogbXNnc3RyICJnaXQtZ3VpIC0gdW5lIGludGVyZmFjZSBncmFwaGlxdWUgdXRpbGlzYXRldXIgcG91ciBHaXQiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzAKKyM6IGxpYi9ibGFtZS50Y2w6NzIKIG1zZ2lkICJGaWxlIFZpZXdlciIKIG1zZ3N0ciAiVmlzaW9ubmV1ciBkZSBmaWNoaWVyIgogCi0jOiBsaWIvYmxhbWUudGNsOjc0CisjOiBsaWIvYmxhbWUudGNsOjc4CiBtc2dpZCAiQ29tbWl0OiIKIG1zZ3N0ciAiQ29tbWl0IDoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MjU3CisjOiBsaWIvYmxhbWUudGNsOjI3MQogbXNnaWQgIkNvcHkgQ29tbWl0IgogbXNnc3RyICJDb3BpZXIgY29tbWl0IgogCi0jOiBsaWIvYmxhbWUudGNsOjI2MAorIzogbGliL2JsYW1lLnRjbDoyNzUKK21zZ2lkICJGaW5kIFRleHQuLi4iCittc2dzdHIgIkNoZXJjaGVyIHRleHRlLi4uIgorCisjOiBsaWIvYmxhbWUudGNsOjI4NAogbXNnaWQgIkRvIEZ1bGwgQ29weSBEZXRlY3Rpb24iCiBtc2dzdHIgIkxhbmNlciBsYSBkw6l0ZWN0aW9uIGFwcHJvZm9uZGllIGRlcyBjb3BpZXMiCiAKLSM6IGxpYi9ibGFtZS50Y2w6Mzg4CisjOiBsaWIvYmxhbWUudGNsOjI4OAorbXNnaWQgIlNob3cgSGlzdG9yeSBDb250ZXh0IgorbXNnc3RyICJNb250cmVyIGwnaGlzdG9yaXF1ZSIKKworIzogbGliL2JsYW1lLnRjbDoyOTEKK21zZ2lkICJCbGFtZSBQYXJlbnQgQ29tbWl0IgorbXNnc3RyICJCbMOibWVyIGxlIGNvbW1pdCBwYXJlbnQiCisKKyM6IGxpYi9ibGFtZS50Y2w6NDUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVhZGluZyAlcy4uLiIKIG1zZ3N0ciAiTGVjdHVyZSBkZSAlcy4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo0OTIKKyM6IGxpYi9ibGFtZS50Y2w6NTU3CiBtc2dpZCAiTG9hZGluZyBjb3B5L21vdmUgdHJhY2tpbmcgYW5ub3RhdGlvbnMuLi4iCiBtc2dzdHIgIkNoYXJnZW1lbnQgZGVzIGFubm90YXRpb25zIGRlIHN1aXZpIGRlcyBjb3BpZXMvZMOpcGxhY2VtZW50cy4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo1MTIKKyM6IGxpYi9ibGFtZS50Y2w6NTc3CiBtc2dpZCAibGluZXMgYW5ub3RhdGVkIgogbXNnc3RyICJsaWduZXMgYW5ub3TDqWVzIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwNAorIzogbGliL2JsYW1lLnRjbDo3NjkKIG1zZ2lkICJMb2FkaW5nIG9yaWdpbmFsIGxvY2F0aW9uIGFubm90YXRpb25zLi4uIgogbXNnc3RyICJDaGFyZ2VtZW50IGRlcyBhbm5vdGF0aW9ucyBkJ2VtcGxhY2VtZW50IG9yaWdpbmFsIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwNworIzogbGliL2JsYW1lLnRjbDo3NzIKIG1zZ2lkICJBbm5vdGF0aW9uIGNvbXBsZXRlLiIKIG1zZ3N0ciAiQW5ub3RhdGlvbiB0ZXJtaW7DqWUuIgogCi0jOiBsaWIvYmxhbWUudGNsOjczNworIzogbGliL2JsYW1lLnRjbDo4MDIKIG1zZ2lkICJCdXN5IgogbXNnc3RyICJPY2N1cMOpIgogCi0jOiBsaWIvYmxhbWUudGNsOjczOAorIzogbGliL2JsYW1lLnRjbDo4MDMKIG1zZ2lkICJBbm5vdGF0aW9uIHByb2Nlc3MgaXMgYWxyZWFkeSBydW5uaW5nLiIKIG1zZ3N0ciAiQW5ub3RhdGlvbiBlbiBjb3VycyBkJ2V4w6ljdXRpb24uIgogCi0jOiBsaWIvYmxhbWUudGNsOjc3NworIzogbGliL2JsYW1lLnRjbDo4NDIKIG1zZ2lkICJSdW5uaW5nIHRob3JvdWdoIGNvcHkgZGV0ZWN0aW9uLi4uIgogbXNnc3RyICJSZWNoZXJjaGUgZGUgY29waWUgYXBwcm9mb25kaWUgZW4gY291cnMuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODI3CisjOiBsaWIvYmxhbWUudGNsOjkxMAogbXNnaWQgIkxvYWRpbmcgYW5ub3RhdGlvbi4uLiIKIG1zZ3N0ciAiQ2hhcmdlbWVudCBkZXMgYW5ub3RhdGlvbnMuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODgzCisjOiBsaWIvYmxhbWUudGNsOjk2NAogbXNnaWQgIkF1dGhvcjoiCiBtc2dzdHIgIkF1dGV1ciA6IgogCi0jOiBsaWIvYmxhbWUudGNsOjg4NworIzogbGliL2JsYW1lLnRjbDo5NjgKIG1zZ2lkICJDb21taXR0ZXI6IgogbXNnc3RyICJDb21taXRldXIgOiIKIAotIzogbGliL2JsYW1lLnRjbDo4OTIKKyM6IGxpYi9ibGFtZS50Y2w6OTczCiBtc2dpZCAiT3JpZ2luYWwgRmlsZToiCiBtc2dzdHIgIkZpY2hpZXIgb3JpZ2luYWwgOiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDA2CisjOiBsaWIvYmxhbWUudGNsOjEwMjEKK21zZ2lkICJDYW5ub3QgZmluZCBIRUFEIGNvbW1pdDoiCittc2dzdHIgIkltcG9zc2libGUgZGUgdHJvdXZlciBsZSBjb21taXQgSEVBRDoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA3NgorbXNnaWQgIkNhbm5vdCBmaW5kIHBhcmVudCBjb21taXQ6IgorbXNnc3RyICJJbXBvc3NpYmxlIGRlIHRyb3V2ZXIgbGUgY29tbWl0IHBhcmVudDoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA5MQorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkJ2FmZmljaGVyIGxlIHBhcmVudCIKKworIzogbGliL2JsYW1lLnRjbDoxMDkyIGxpYi9kaWZmLnRjbDoyOTcKK21zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgorbXNnc3RyICJFcnJldXIgbG9ycyBkdSBjaGFyZ2VtZW50IGRlcyBkaWZmw6lyZW5jZXMgOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMyCiBtc2dpZCAiT3JpZ2luYWxseSBCeToiCiBtc2dzdHIgIkEgbCdvcmlnaW5lIHBhciA6IgogCi0jOiBsaWIvYmxhbWUudGNsOjEwMTIKKyM6IGxpYi9ibGFtZS50Y2w6MTIzOAogbXNnaWQgIkluIEZpbGU6IgogbXNnc3RyICJEYW5zIGxlIGZpY2hpZXIgOiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDE3CisjOiBsaWIvYmxhbWUudGNsOjEyNDMKIG1zZ2lkICJDb3BpZWQgT3IgTW92ZWQgSGVyZSBCeToiCiBtc2dzdHIgIkNvcGnDqSBvdSBkw6lwbGFjw6kgaWNpIHBhciA6IgogCkBAIC01NzMsMTYgKzY2NiwxOCBAQAogCiAjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDoyNyBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzUKICM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDozMiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MzAgbGliL2Jyb3dzZXIudGNsOjI4MgotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MQotIzogbGliL29wdGlvbi50Y2w6MTAzIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIgbGliL3RyYW5zcG9ydC50Y2w6OTcKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTQ0IGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzIKKyM6IGxpYi9vcHRpb24udGNsOjEyNSBsaWIvcmVtb3RlX2FkZC50Y2w6MzIgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MgorIzogbGliL3Rvb2xzX2RsZy50Y2w6NDAgbGliL3Rvb2xzX2RsZy50Y2w6MjA0IGxpYi90b29sc19kbGcudGNsOjM1MgorIzogbGliL3RyYW5zcG9ydC50Y2w6OTcKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIkFubnVsZXIiCiAKLSM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcgbGliL3Rvb2xzX2RsZy50Y2w6MzI4CiBtc2dpZCAiUmV2aXNpb24iCiBtc2dzdHIgIlLDqXZpc2lvbiIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzYgbGliL2JyYW5jaF9jcmVhdGUudGNsOjY5IGxpYi9vcHRpb24udGNsOjI0NAorIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzYgbGliL2JyYW5jaF9jcmVhdGUudGNsOjY5IGxpYi9vcHRpb24udGNsOjI4MAogbXNnaWQgIk9wdGlvbnMiCiBtc2dzdHIgIk9wdGlvbnMiCiAKQEAgLTYwMiw3ICs2OTcsNyBAQAogbXNnaWQgIkNyZWF0ZSBOZXcgQnJhbmNoIgogbXNnc3RyICJDcsOpZXIgbm91dmVsbGUgYnJhbmNoZSIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjMxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzcxCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzcKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIkNyw6llciIKIApAQCAtNjEwLDcgKzcwNSw3IEBACiBtc2dpZCAiQnJhbmNoIE5hbWUiCiBtc2dzdHIgIk5vbSBkZSBicmFuY2hlIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MyBsaWIvcmVtb3RlX2FkZC50Y2w6MzkgbGliL3Rvb2xzX2RsZy50Y2w6NTAKIG1zZ2lkICJOYW1lOiIKIG1zZ3N0ciAiTm9tIDoiCiAKQEAgLTc1NSw5ICs4NTAsOSBAQAogbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMiCiBtc2dzdHIgIk5hdmlndWVyIGRhbnMgbGVzIGZpY2hpZXJzIGRlIGxlIGJyYW5jaGUiCiAKLSM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgyCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4NQorIzogbGliL2Jyb3dzZXIudGNsOjI3OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM5NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTk1CiBtc2dpZCAiQnJvd3NlIgogbXNnc3RyICJOYXZpZ3VlciIKIApAQCAtNzcyLDYgKzg2Nyw3IEBACiBtc2dzdHIgImVycmV1ciBmYXRhbGUgOiBJbXBvc3NpYmxlIGRlIHLDqXNvdWRyZSAlcyIKIAogIzogbGliL2NoZWNrb3V0X29wLnRjbDoxNDUgbGliL2NvbnNvbGUudGNsOjgxIGxpYi9kYXRhYmFzZS50Y2w6MzEKKyM6IGxpYi9zc2hrZXkudGNsOjUzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIkZlcm1lciIKIApAQCAtODg0LDcgKzk4MCw3IEBACiBtc2dpZCAiUmVzZXQgJyVzJz8iCiBtc2dzdHIgIlLDqWluaXRpYWxpc2VyICclcycgPyIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MzIgbGliL21lcmdlLnRjbDoxNjMKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTMyIGxpYi9tZXJnZS50Y2w6MTY0IGxpYi90b29sc19kbGcudGNsOjM0MwogbXNnaWQgIlZpc3VhbGl6ZSIKIG1zZ3N0ciAiVmlzdWFsaXNlciIKIApAQCAtOTM0LDIyNSArMTAzMCwyMjkgQEAKIG1zZ2lkICJHaXQgR3VpIgogbXNnc3RyICJHaXQgR3VpIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzc2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgyCiBtc2dpZCAiQ3JlYXRlIE5ldyBSZXBvc2l0b3J5IgogbXNnc3RyICJDcsOpZXIgbm91dmVhdSBkw6lww7R0IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzCiBtc2dpZCAiTmV3Li4uIgogbXNnc3RyICJOb3V2ZWF1Li4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQogbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIkNsb25lciBkw6lww7R0IGV4aXN0YW50IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDYKIG1zZ2lkICJDbG9uZS4uLiIKIG1zZ3N0ciAiQ2xvbmVyLi4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODMKIG1zZ2lkICJPcGVuIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIk91dnJpciBkw6lww7R0IGV4aXN0YW50IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTkKIG1zZ2lkICJPcGVuLi4uIgogbXNnc3RyICJPdXZyaXIuLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgogbXNnaWQgIlJlY2VudCBSZXBvc2l0b3JpZXMiCiBtc2dzdHIgIkTDqXDDtHQgcsOpY2VtbWVudCB1dGlsaXPDqXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTMyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzOAogbXNnaWQgIk9wZW4gUmVjZW50IFJlcG9zaXRvcnk6IgogbXNnc3RyICJPdXZyaXIgZMOpcMO0dCByw6ljZW50IDoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mjk2IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAzCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDIgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzE2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiTGEgY3LDqWF0aW9uIGR1IGTDqXDDtHQgJXMgYSDDqWNob3XDqWUgOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NzYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3CiBtc2dpZCAiRGlyZWN0b3J5OiIKIG1zZ3N0ciAiUsOpcGVydG9pcmUgOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MzUKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAwNworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MTcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NDQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAxNwogbXNnaWQgIkdpdCBSZXBvc2l0b3J5IgogbXNnc3RyICJEw6lww7R0IEdpdCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiTGUgcsOpcGVydG9pcmUgJXMgZXhpc3RlIGTDqWrDoC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDM5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZpbGUgJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJMZSBmaWNoaWVyICVzIGV4aXN0ZSBkw6lqw6AuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjAKIG1zZ2lkICJDbG9uZSIKIG1zZ3N0ciAiQ2xvbmVyIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NgotbXNnaWQgIlVSTDoiCi1tc2dzdHIgIlVSTCA6IgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NzMKK21zZ2lkICJTb3VyY2UgTG9jYXRpb246IgorbXNnc3RyICJFbXBsYWNlbWVudCBzb3VyY2U6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODQKK21zZ2lkICJUYXJnZXQgRGlyZWN0b3J5OiIKK21zZ3N0ciAiUsOpcGVydG9pcmUgY2libGU6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICJUeXBlIGRlIGNsb25hZ2UgOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAyCiBtc2dpZCAiU3RhbmRhcmQgKEZhc3QsIFNlbWktUmVkdW5kYW50LCBIYXJkbGlua3MpIgogbXNnc3RyICJTdGFuZGFyZCAocmFwaWRlLCBzZW1pLXJlZG9uZGFudCwgbGllbnMgZHVycykiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDk5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwOAogbXNnaWQgIkZ1bGwgQ29weSAoU2xvd2VyLCBSZWR1bmRhbnQgQmFja3VwKSIKIG1zZ3N0ciAiQ29weSBjb21wbMOodGUgKHBsdXMgbGVudCwgc2F1dmVnYXJkZSByZWRvbmRhbnRlKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0CiBtc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCiBtc2dzdHIgIlBhcnRhZ8OpIChsZSBwbHVzIHJhcGlkZSwgbm9uIHJlY29tbWFuZMOpLCBwYXMgZGUgc2F1dmVnYXJkZSkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTQxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg4Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjczNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgwNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTm90IGEgR2l0IHJlcG9zaXRvcnk6ICVzIgogbXNnc3RyICInJXMnIG4nZXN0IHBhcyB1biBkw6lww7R0IEdpdC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTc3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4NgogbXNnaWQgIlN0YW5kYXJkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiU3RhbmRhcmQgbidlc3QgZGlzcG9uaWJsZSBxdWUgcG91ciB1biBkw6lww7R0IGxvY2FsLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1ODEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTkwCiBtc2dpZCAiU2hhcmVkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiUGFydGFnw6kgbidlc3QgZGlzcG9uaWJsZSBxdWUgcG91ciB1biBkw6lww7R0IGxvY2FsLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MDIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjExCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9jYXRpb24gJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJMJ2VtcGxhY2VtZW50ICVzIGV4aXN0ZSBkw6lqw6AuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjIKIG1zZ2lkICJGYWlsZWQgdG8gY29uZmlndXJlIG9yaWdpbiIKIG1zZ3N0ciAiTGEgY29uZmlndXJhdGlvbiBkZSBsJ29yaWdpbmUgYSDDqWNob3XDqWUuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYyNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MzQKIG1zZ2lkICJDb3VudGluZyBvYmplY3RzIgogbXNnc3RyICJEw6ljb21wdGUgZGVzIG9iamV0cyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM1CiBtc2dpZCAiYnVja2V0cyIKIG1zZ3N0ciAicGFuaWVycyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNvcHkgb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXM6ICVzIgogbXNnc3RyICJJbXBvc3NpYmxlIGRlIGNvcGllciAnb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMnIDogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIklsIG4neSBhIHJpZW4gw6AgY2xvbmVyIGRlcHVpcyAlcy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxNAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2OTcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIzCiBtc2dpZCAiVGhlICdtYXN0ZXInIGJyYW5jaCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQuIgogbXNnc3RyICJMYSBicmFuY2hlICdtYXN0ZXInIG4nYSBwYXMgw6l0w6kgaW5pdGlhbGlzw6llLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MDEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEwCiBtc2dpZCAiSGFyZGxpbmtzIGFyZSB1bmF2YWlsYWJsZS4gIEZhbGxpbmcgYmFjayB0byBjb3B5aW5nLiIKIG1zZ3N0ciAiTGVzIGxpZW5zIGR1cnMgbmUgc29udCBwYXMgc3VwcG9ydMOpcy4gVW5lIGNvcGllIHNlcmEgZWZmZWN0dcOpZSDDoCBsYSBwbGFjZS4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcyMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgZnJvbSAlcyIKIG1zZ3N0ciAiQ2xvbmFnZSBkZXB1aXMgJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1MwogbXNnaWQgIkNvcHlpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiQ29waWUgZGVzIG9iamV0cyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzU0CiBtc2dpZCAiS2lCIgogbXNnc3RyICJLaUIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzY5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc3OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjb3B5IG9iamVjdDogJXMiCiBtc2dzdHIgIkltcG9zc2libGUgZGUgY29waWVyIGwnb2JqZXQgOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzg4CiBtc2dpZCAiTGlua2luZyBvYmplY3RzIgogbXNnc3RyICJMaWFpc29uIGRlcyBvYmpldHMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzgwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OQogbXNnaWQgIm9iamVjdHMiCiBtc2dzdHIgIm9iamV0cyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzk3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGhhcmRsaW5rIG9iamVjdDogJXMiCiBtc2dzdHIgIkltcG9zc2libGUgY3LDqWVyIHVuIGxpZW4gZHVyIHBvdXIgbCdvYmpldCA6ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg0MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTIKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggYnJhbmNoZXMgYW5kIG9iamVjdHMuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAiSW1wb3NzaWJsZSBkZSByw6ljdXDDqXJlciBsZXMgYnJhbmNoZXMgZXQgb2JqZXRzLiBWb2lyIGxhIHNvcnRpZSBjb25zb2xlIHBvdXIgIgogInBsdXMgZGUgZMOpdGFpbHMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NjMKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggdGFncy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICJJbXBvc3NpYmxlIGRlIHLDqWN1cMOpcmVyIGxlcyBtYXJxdWVzICh0YWdzKS4gVm9pciBsYSBzb3J0aWUgY29uc29sZSBwb3VyIHBsdXMgIgogImRlIGTDqXRhaWxzLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NzgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSBIRUFELiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiSW1wb3NzaWJsZSBkZSBkw6l0ZXJtaW5lciBIRUFELiBWb2lyIGxhIHNvcnRpZSBjb25zb2xlIHBvdXIgcGx1cyBkZSBkw6l0YWlscy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjbGVhbnVwICVzIgogbXNnc3RyICJJbXBvc3NpYmxlIGRlIG5ldHRveWVyICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDIKIG1zZ2lkICJDbG9uZSBmYWlsZWQuIgogbXNnc3RyICJMZSBjbG9uYWdlIGEgw6ljaG91w6kuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDkKIG1zZ2lkICJObyBkZWZhdWx0IGJyYW5jaCBvYnRhaW5lZC4iCiBtc2dzdHIgIkF1Y3VuZSBicmFuY2hlIHBhciBkw6lmYXV0IG4nYSDDqXTDqSBvYnRlbnVlLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHJlc29sdmUgJXMgYXMgYSBjb21taXQuIgogbXNnc3RyICJJbXBvc3NpYmxlIGRlIHLDqXNvdWRyZSAlcyBjb21tZSBjb21taXQuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzIKIG1zZ2lkICJDcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiQ3LDqWF0aW9uIGR1IHLDqXBlcnRvaXJlIGRlIHRyYXZhaWwiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTI0IGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjcKLSM6IGxpYi9pbmRleC50Y2w6MTkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMyBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI4CisjOiBsaWIvaW5kZXgudGNsOjE5NgogbXNnaWQgImZpbGVzIgogbXNnc3RyICJmaWNoaWVycyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTYyCiBtc2dpZCAiSW5pdGlhbCBmaWxlIGNoZWNrb3V0IGZhaWxlZC4iCiBtc2dzdHIgIkNoYXJnZW1lbnQgaW5pdGlhbCBkdSBmaWNoaWVyIMOpY2hvdcOpLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTc4CiBtc2dpZCAiT3BlbiIKIG1zZ3N0ciAiT3V2cmlyIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODgKIG1zZ2lkICJSZXBvc2l0b3J5OiIKIG1zZ3N0ciAiRMOpcMO0dCA6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAzNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBvcGVuIHJlcG9zaXRvcnkgJXM6IgogbXNnc3RyICJJbXBvc3NpYmxlIGQnb3V2cmlyIGxlIGTDqXDDtHQgJXMgOiIKQEAgLTEyNTQsNyArMTM1NCw3IEBACiAiXG4iCiAiQ2VsYSB2YSDDqnRyZSBmYWl0IHRvdXQgZGUgc3VpdGUgYXV0b21hdGlxdWVtZW50LlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNTQKKyM6IGxpYi9jb21taXQudGNsOjE1NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbm1lcmdlZCBmaWxlcyBjYW5ub3QgYmUgY29tbWl0dGVkLlxuIgpAQCAtMTI2Nyw3ICsxMzY3LDcgQEAKICJMZSBmaWNoaWVyICVzIGEgZGVzIGNvbmZsaWN0cyBkZSBmdXNpb24uIFZvdXMgZGV2ZXogbGVzIHLDqXNvdWRyZSBldCBwcsOpLSIKICJjb21taXRlciBsZSBmaWNoaWVyIGF2YW50IGRlIHBvdXZvaXIgY29tbWl0ZXIuXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE2MgorIzogbGliL2NvbW1pdC50Y2w6MTY0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlVua25vd24gZmlsZSBzdGF0ZSAlcyBkZXRlY3RlZC5cbiIKQEAgLTEyNzgsNyArMTM3OCw3IEBACiAiXG4iCiAiTGUgZmljaGllciAlcyBuZSBwZXV0IHBhcyDDqnRyZSBjb21taXTDqSBwYXIgY2UgcHJvZ3JhbW1lLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNzAKKyM6IGxpYi9jb21taXQudGNsOjE3MgogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEyODgsNyArMTM4OCw3IEBACiAiXG4iCiAiVm91cyBkZXZleiBpbmRleGVyIGF1IG1vaW5zIDEgZmljaGllciBhdmFudCBkZSBwb3V2b2lyIGNvbW1pdGVyLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxODMKKyM6IGxpYi9jb21taXQudGNsOjE4NwogbXNnaWQgIiIKICJQbGVhc2Ugc3VwcGx5IGEgY29tbWl0IG1lc3NhZ2UuXG4iCiAiXG4iCkBAIC0xMzA2LDQ1ICsxNDA2LDQ1IEBACiAiLSBEZXV4acOobWUgbGlnbmUgOiByaWVuLlxuIgogIi0gTGlnbmVzIHN1aXZhbnRlcyA6IETDqWNyaXJlIHBvdXJxdW9pIGNlcyBtb2RpZmljYXRpb25zIHNvbnQgYm9ubmVzLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMDcKKyM6IGxpYi9jb21taXQudGNsOjIxMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIndhcm5pbmc6IFRjbCBkb2VzIG5vdCBzdXBwb3J0IGVuY29kaW5nICclcycuIgogbXNnc3RyICJhdHRlbnRpb24gOiBUY2wgbmUgc3VwcG9ydGUgcGFzIGwnZW5jb2RhZ2UgJyVzJy4iCiAKLSM6IGxpYi9jb21taXQudGNsOjIyMQorIzogbGliL2NvbW1pdC50Y2w6MjI3CiBtc2dpZCAiQ2FsbGluZyBwcmUtY29tbWl0IGhvb2suLi4iCiBtc2dzdHIgIkxhbmNlbWVudCBkZSBsJ2FjdGlvbiBkJ2F2YW50LWNvbW1pdC4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDIKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKIG1zZ3N0ciAiQ29tbWl0IHJlZnVzw6kgcGFyIGwnYWN0aW9uIGQnYXZhbnQtY29tbWl0LiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjU5CisjOiBsaWIvY29tbWl0LnRjbDoyNjUKIG1zZ2lkICJDYWxsaW5nIGNvbW1pdC1tc2cgaG9vay4uLiIKIG1zZ3N0ciAiTGFuY2VtZW50IGRlIGwnYWN0aW9uIFwibWVzc2FnZSBkZSBjb21taXRcIi4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6Mjc0CisjOiBsaWIvY29tbWl0LnRjbDoyODAKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgY29tbWl0LW1zZyBob29rLiIKIG1zZ3N0ciAiQ29tbWl0IHJlZnVzw6kgcGFyIGwnYWN0aW9uIFwibWVzc2FnZSBkZSBjb21taXRcIi4iCiAKLSM6IGxpYi9jb21taXQudGNsOjI4NworIzogbGliL2NvbW1pdC50Y2w6MjkzCiBtc2dpZCAiQ29tbWl0dGluZyBjaGFuZ2VzLi4uIgogbXNnc3RyICJDb21taXQgZGVzIG1vZGlmaWNhdGlvbnMuLi4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMwMworIzogbGliL2NvbW1pdC50Y2w6MzA5CiBtc2dpZCAid3JpdGUtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJ3cml0ZS10cmVlIGEgw6ljaG91w6kgOiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzA0IGxpYi9jb21taXQudGNsOjM0OCBsaWIvY29tbWl0LnRjbDozNjgKKyM6IGxpYi9jb21taXQudGNsOjMxMCBsaWIvY29tbWl0LnRjbDozNTQgbGliL2NvbW1pdC50Y2w6Mzc0CiBtc2dpZCAiQ29tbWl0IGZhaWxlZC4iCiBtc2dzdHIgIkxlIGNvbW1pdCBhIMOpY2hvdcOpLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzIxCisjOiBsaWIvY29tbWl0LnRjbDozMjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgYXBwZWFycyB0byBiZSBjb3JydXB0IgogbXNnc3RyICJMZSBjb21taXQgJXMgc2VtYmxlIMOqdHJlIGNvcnJvbXB1IgogCi0jOiBsaWIvY29tbWl0LnRjbDozMjYKKyM6IGxpYi9jb21taXQudGNsOjMzMgogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEzNTksMTkgKzE0NTksMTkgQEAKICJcbiIKICJVbmUgcmVzeW5jaHJvbmlzYXRpb24gdmEgw6p0cmUgbGFuY8OpZSB0b3V0IGRlIHN1aXRlIGF1dG9tYXRpcXVlbWVudC5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzMzCisjOiBsaWIvY29tbWl0LnRjbDozMzkKIG1zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCiBtc2dzdHIgIlBhcyBkZSBtb2RpZmljYXRpb25zIMOgIGNvbW1pdGVyLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzQ3CisjOiBsaWIvY29tbWl0LnRjbDozNTMKIG1zZ2lkICJjb21taXQtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJjb21taXQtdHJlZSBhIMOpY2hvdcOpIDoiCiAKLSM6IGxpYi9jb21taXQudGNsOjM2NworIzogbGliL2NvbW1pdC50Y2w6MzczCiBtc2dpZCAidXBkYXRlLXJlZiBmYWlsZWQ6IgogbXNnc3RyICJ1cGRhdGUtcmVmIGEgw6ljaG91w6kiCiAKLSM6IGxpYi9jb21taXQudGNsOjQ1NAorIzogbGliL2NvbW1pdC50Y2w6NDYxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ3JlYXRlZCBjb21taXQgJXM6ICVzIgogbXNnc3RyICJDb21taXQgY3LDqcOpICVzIDogJXMiCkBAIC0xNDQ4LDcgKzE1NDgsNyBAQAogbXNnaWQgIkludmFsaWQgZGF0ZSBmcm9tIEdpdDogJXMiCiBtc2dzdHIgIkRhdGUgaW52YWxpZGUgZGUgR2l0IDogJXMiCiAKLSM6IGxpYi9kaWZmLnRjbDo0NAorIzogbGliL2RpZmYudGNsOjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIk5vIGRpZmZlcmVuY2VzIGRldGVjdGVkLlxuIgpAQCAtMTQ3MSw0OCArMTU3MSwxMDEgQEAKICJVbmUgcmVzeW5jaHJvbmlzYXRpb24gdmEgw6p0cmUgbGFuY8OpZSBhdXRvbWF0aXF1ZW1lbnQgcG91ciB0cm91dmVyIGQnYXV0cmVzICIKICJmaWNoaWVycyBxdWkgcG91cnJhaWVudCBzZSB0cm91dmVyIGRhbnMgbGUgbcOqbWUgw6l0YXQuIgogCi0jOiBsaWIvZGlmZi50Y2w6ODMKKyM6IGxpYi9kaWZmLnRjbDo5OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkxvYWRpbmcgZGlmZiBvZiAlcy4uLiIKIG1zZ3N0ciAiQ2hhcmdlbWVudCBkZXMgZGlmZsOpcmVuY2VzIGRlICVzLi4uIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE2IGxpYi9kaWZmLnRjbDoxOTAKKyM6IGxpYi9kaWZmLnRjbDoxMjAKK21zZ2lkICIiCisiTE9DQUw6IGRlbGV0ZWRcbiIKKyJSRU1PVEU6XG4iCittc2dzdHIgIiIKKyJMT0NBTDogc3VwcHJpbcOpXG4iCisiRElTVEFOVDpcbiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiIgorIkRJU1RBTlQ6IHN1cHByaW3DqVxuIgorIkxPQ0FMOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTMyCittc2dpZCAiTE9DQUw6XG4iCittc2dzdHIgIkxPQ0FMOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTM1Cittc2dpZCAiUkVNT1RFOlxuIgorbXNnc3RyICJESVNUQU5UOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTk3IGxpYi9kaWZmLnRjbDoyOTYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gZGlzcGxheSAlcyIKIG1zZ3N0ciAiSW1wb3NzaWJsZSBkJ2FmZmljaGVyICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE3CisjOiBsaWIvZGlmZi50Y2w6MTk4CiBtc2dpZCAiRXJyb3IgbG9hZGluZyBmaWxlOiIKIG1zZ3N0ciAiRXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCBkdSBmaWNoaWVyIDoiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMjQKKyM6IGxpYi9kaWZmLnRjbDoyMDUKIG1zZ2lkICJHaXQgUmVwb3NpdG9yeSAoc3VicHJvamVjdCkiCiBtc2dzdHIgIkTDqXDDtHQgR2l0IChzb3VzIHByb2pldCkiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMzYKKyM6IGxpYi9kaWZmLnRjbDoyMTcKIG1zZ2lkICIqIEJpbmFyeSBmaWxlIChub3Qgc2hvd2luZyBjb250ZW50KS4iCiBtc2dzdHIgIiogRmljaGllciBiaW5haXJlIChwYXMgZCdhcHBlcsOndSBkdSBjb250ZW51KS4iCiAKLSM6IGxpYi9kaWZmLnRjbDoxOTEKLW1zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgotbXNnc3RyICJFcnJldXIgbG9ycyBkdSBjaGFyZ2VtZW50IGRlcyBkaWZmw6lyZW5jZXMgOiIKKyM6IGxpYi9kaWZmLnRjbDoyMjIKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiKiBVbnRyYWNrZWQgZmlsZSBpcyAlZCBieXRlcy5cbiIKKyIqIFNob3dpbmcgb25seSBmaXJzdCAlZCBieXRlcy5cbiIKK21zZ3N0ciAiIgorIiogTGUgZmljaGllciBub24gc3VpdmkgZmFpdCAlZCBvY3RldHMuXG4iCisiKiBPbiBtb250cmUgc2V1bGVtZW50IGxlcyBwcmVtaWVycyAlZCBvY3RldHMuXG4iCiAKLSM6IGxpYi9kaWZmLnRjbDozMTMKKyM6IGxpYi9kaWZmLnRjbDoyMjgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiKiBVbnRyYWNrZWQgZmlsZSBjbGlwcGVkIGhlcmUgYnkgJXMuXG4iCisiKiBUbyBzZWUgdGhlIGVudGlyZSBmaWxlLCB1c2UgYW4gZXh0ZXJuYWwgZWRpdG9yLlxuIgorbXNnc3RyICIiCisiXG4iCisiKiBGaWNoaWVyIHN1aXZpIHJhY2NvdXJjaXMgaWNpIGRlICVzLlxuIgorIiogUG91ciB2b2lyIGxlIGZpY2hpZXIgZW50aWVyLCB1dGlsaXNlciB1biDDqWRpdGV1ciBleHRlcm5lLlxuIgorCisjOiBsaWIvZGlmZi50Y2w6NDM2CiBtc2dpZCAiRmFpbGVkIHRvIHVuc3RhZ2Ugc2VsZWN0ZWQgaHVuay4iCiBtc2dzdHIgIsOJY2hlYyBsb3JzIGRlIGxhIGTDqXNpbmRleGF0aW9uIGRlIGxhIHNlY3Rpb24gc8OpbGVjdGlvbm7DqWUuIgogCi0jOiBsaWIvZGlmZi50Y2w6MzIwCisjOiBsaWIvZGlmZi50Y2w6NDQzCiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICLDiWNoZWMgbG9ycyBkZSBsJ2luZGV4YXRpb24gZGUgbGEgc2VjdGlvbi4iCiAKLSM6IGxpYi9kaWZmLnRjbDozODYKKyM6IGxpYi9kaWZmLnRjbDo1MDkKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBsaW5lLiIKIG1zZ3N0ciAiw4ljaGVjIGxvcnMgZGUgbGEgZMOpc2luZGV4YXRpb24gZGUgbGEgbGlnbmUgc8OpbGVjdGlvbm7DqWUuIgogCi0jOiBsaWIvZGlmZi50Y2w6Mzk0CisjOiBsaWIvZGlmZi50Y2w6NTE3CiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICLDiWNoZWMgbG9ycyBkZSBsJ2luZGV4YXRpb24gZGUgbGEgbGlnbmUuIgogCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0MworbXNnaWQgIkRlZmF1bHQiCittc2dzdHIgIkTDqWZhdXQiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQ4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU3lzdGVtICglcykiCittc2dzdHIgIlN5c3TDqG1lICglcykiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDU5IGxpYi9lbmNvZGluZy50Y2w6NDY1Cittc2dpZCAiT3RoZXIiCittc2dzdHIgIkF1dHJlIgorCiAjOiBsaWIvZXJyb3IudGNsOjIwIGxpYi9lcnJvci50Y2w6MTE0CiBtc2dpZCAiZXJyb3IiCiBtc2dzdHIgImVycmV1ciIKQEAgLTE1NDksNDAgKzE3MDIsNDkgQEAKIG1zZ2lkICJVbmxvY2sgSW5kZXgiCiBtc2dzdHIgIkTDqXZlcm91aWxsZXIgbCdpbmRleCIKIAotIzogbGliL2luZGV4LnRjbDoyODIKKyM6IGxpYi9pbmRleC50Y2w6Mjg3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5zdGFnaW5nICVzIGZyb20gY29tbWl0IgogbXNnc3RyICJEw6lzaW5kZXhhdGlvbiBkZTogJXMiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzEzCisjOiBsaWIvaW5kZXgudGNsOjMyNgogbXNnaWQgIlJlYWR5IHRvIGNvbW1pdC4iCiBtc2dzdHIgIlByw6p0IMOgIMOqdHJlIGNvbW1pdMOpLiIKIAotIzogbGliL2luZGV4LnRjbDozMjYKKyM6IGxpYi9pbmRleC50Y2w6MzM5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICJBam91dCBkZSAlcyIKIAotIzogbGliL2luZGV4LnRjbDozODEKKyM6IGxpYi9pbmRleC50Y2w6Mzk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gZmlsZSAlcz8iCiBtc2dzdHIgIkFubnVsZXIgbGVzIG1vZGlmaWNhdGlvbnMgZGFucyBsZSBmaWNoaWVyICVzID8gIgogCi0jOiBsaWIvaW5kZXgudGNsOjM4MworIzogbGliL2luZGV4LnRjbDozOTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiB0aGVzZSAlaSBmaWxlcz8iCiBtc2dzdHIgIkFubnVsZXIgbGVzIG1vZGlmaWNhdGlvbnMgZGFucyBjZXMgJWkgZmljaGllcnMgPyIKIAotIzogbGliL2luZGV4LnRjbDozOTEKKyM6IGxpYi9pbmRleC50Y2w6NDA2CiBtc2dpZCAiQW55IHVuc3RhZ2VkIGNoYW5nZXMgd2lsbCBiZSBwZXJtYW5lbnRseSBsb3N0IGJ5IHRoZSByZXZlcnQuIgogbXNnc3RyICIiCiAiVG91dGVzIGxlcyBtb2RpZmljYXRpb25zIG5vbi1pbmRleMOpZXMgc2Vyb250IGTDqWZpbml0aXZlbWVudCBwZXJkdWVzIHBhciAiCiAibCdhbm51bGF0aW9uLiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiTmUgcmllbiBmYWlyZSIKIAorIzogbGliL2luZGV4LnRjbDo0MjcKK21zZ2lkICJSZXZlcnRpbmcgc2VsZWN0ZWQgZmlsZXMiCittc2dzdHIgIkFubnVsZXIgbW9kaWZpY2F0aW9ucyBkYW5zIGZpY2hpZXJzIHNlbGVjdGlvbm7DqXMiCisKKyM6IGxpYi9pbmRleC50Y2w6NDMxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUmV2ZXJ0aW5nICVzIgorbXNnc3RyICJBbm51bGF0aW9uIGRlcyBtb2RpZmljYXRpb25zIGRhbnMgJXMiCisKICM6IGxpYi9tZXJnZS50Y2w6MTMKIG1zZ2lkICIiCiAiQ2Fubm90IG1lcmdlIHdoaWxlIGFtZW5kaW5nLlxuIgpAQCAtMTYxMiw3ICsxNzc0LDcgQEAKICJcbiIKICJDZWxhIHZhIMOqdHJlIGZhaXQgdG91dCBkZSBzdWl0ZSBhdXRvbWF0aXF1ZW1lbnRcbiIKIAotIzogbGliL21lcmdlLnRjbDo0NAorIzogbGliL21lcmdlLnRjbDo0NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb25mbGljdGVkIG1lcmdlLlxuIgpAQCAtMTYzMCw3ICsxNzkyLDcgQEAKICJ0ZXJtaW5lciBsYSBmdXNpb24gY291cmFudGUuIFNldWxlbWVudCDDoCBjZSBtb21lbnQgbMOgIHNlcmEtdC1pbCBwb3NzaWJsZSAiCiAiZCdlZmZlY3R1ZXIgdW5lIG5vdXZlbGxlIGZ1c2lvbi5cbiIKIAotIzogbGliL21lcmdlLnRjbDo1NAorIzogbGliL21lcmdlLnRjbDo1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGFuZ2UuXG4iCkBAIC0xNjQ4LDM0ICsxODEwLDM0IEBACiAiZmFpc2FpdCBjb21tZSBjZWxhLCB2b3VzIMOpdml0ZXJleiBkZSBkZXZvaXIgw6l2ZW50dWVsbGVtZW50IGFiYW5kb25uZXIgdW5lICIKICJmdXNpb24gYXlhbnQgw6ljaG91w6llLlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEwNgorIzogbGliL21lcmdlLnRjbDoxMDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBvZiAlcyIKIG1zZ3N0ciAiJXMgZGUgJXMiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTE5CisjOiBsaWIvbWVyZ2UudGNsOjEyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdpbmcgJXMgYW5kICVzLi4uIgogbXNnc3RyICJGdXNpb24gZGUgJXMgZXQgJXMuLi4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMwCisjOiBsaWIvbWVyZ2UudGNsOjEzMQogbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgogbXNnc3RyICJMYSBmdXNpb24gcydlc3QgZmFpdGUgYXZlYyBzdWNjw6hzLiIKIAotIzogbGliL21lcmdlLnRjbDoxMzIKKyM6IGxpYi9tZXJnZS50Y2w6MTMzCiBtc2dpZCAiTWVyZ2UgZmFpbGVkLiAgQ29uZmxpY3QgcmVzb2x1dGlvbiBpcyByZXF1aXJlZC4iCiBtc2dzdHIgIkxhIGZ1c2lvbiBhIGVjaG91w6llLiBJbCBlc3QgbsOpY2Vzc2FpcmUgZGUgcsOpc291ZHJlIGxlcyBjb25mbGljdHMuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjE1NworIzogbGliL21lcmdlLnRjbDoxNTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnZSBJbnRvICVzIgogbXNnc3RyICJGdXNpb24gZGFucyAlcyIKIAotIzogbGliL21lcmdlLnRjbDoxNzYKKyM6IGxpYi9tZXJnZS50Y2w6MTc3CiBtc2dpZCAiUmV2aXNpb24gVG8gTWVyZ2UiCiBtc2dzdHIgIlLDqXZpc2lvbiDDoCBmdXNpb25uZXIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjExCisjOiBsaWIvbWVyZ2UudGNsOjIxMgogbXNnaWQgIiIKICJDYW5ub3QgYWJvcnQgd2hpbGUgYW1lbmRpbmcuXG4iCiAiXG4iCkBAIC0xNjg1LDcgKzE4NDcsNyBAQAogIlxuIgogIlZvdXMgZGV2ZXogZmluaXIgZGUgY29ycmlnZXIgY2UgY29tbWl0LlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIyMQorIzogbGliL21lcmdlLnRjbDoyMjIKIG1zZ2lkICIiCiAiQWJvcnQgbWVyZ2U/XG4iCiAiXG4iCkBAIC0xNzAwLDcgKzE4NjIsNyBAQAogIlxuIgogIkFiYW5kb25uZXIgcXVhbmQgbcOqbWUgbGEgZnVzaW9uIGNvdXJhbnRlID8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjI3CisjOiBsaWIvbWVyZ2UudGNsOjIyOAogbXNnaWQgIiIKICJSZXNldCBjaGFuZ2VzP1xuIgogIlxuIgpAQCAtMTcxNSwxMzEgKzE4NzcsMzIzIEBACiAiXG4iCiAiUsOpaW5pdGlhbGlzZXIgcXVhbmQgbcOqbWUgbGVzIG1vZGlmaWNhdGlvbnMgY291cmFudGVzID8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjM4CisjOiBsaWIvbWVyZ2UudGNsOjIzOQogbXNnaWQgIkFib3J0aW5nIgogbXNnc3RyICJBYmFuZG9uIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAiZmljaGllcnMgcsOpaW5pdGlhbGlzw6lzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2NgorIzogbGliL21lcmdlLnRjbDoyNjcKIG1zZ2lkICJBYm9ydCBmYWlsZWQuIgogbXNnc3RyICJMJ2FiYW5kb24gYSDDqWNob3XDqS4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjY4CisjOiBsaWIvbWVyZ2UudGNsOjI2OQogbXNnaWQgIkFib3J0IGNvbXBsZXRlZC4gIFJlYWR5LiIKIG1zZ3N0ciAiQWJhbmRvbiB0ZW1pbsOpLiBQcsOqdC4iCiAKLSM6IGxpYi9vcHRpb24udGNsOjk1CisjOiBsaWIvbWVyZ2V0b29sLnRjbDo4Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgYmFzZSB2ZXJzaW9uPyIKK21zZ3N0ciAiRm9yY2VyIGxhIHLDqXNvbHV0aW9uIMOgIGxhIHZlcnNpb24gZGUgYmFzZSA/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo5Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGlzIGJyYW5jaD8iCittc2dzdHIgIkZvcmNlciBsYSByw6lzb2x1dGlvbiDDoCBjZXR0ZSBicmFuY2hlID8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjEwCittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgb3RoZXIgYnJhbmNoPyIKK21zZ3N0ciAiRm9yY2VyIGxhIHLDqXNvbHV0aW9uIMOgIGwnYXV0cmUgYnJhbmNoZSA/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIk5vdGVyIHF1ZSBsZSBkaWZmIG5lIG1vbnRyZSBxdWUgbGVzIG1vZGlmaWNhdGlvbnMgZW4gY29uZmxpY3QuXG4iCisiXG4iCisiJXMgc2VyYSDDqWNyYXPDqS5cbiIKKyJcbiIKKyJDZXR0ZSBvcMOpcmF0aW9uIG5lIHBldXQgw6p0cmUgZMOpZmFpdGUgcXUnZW4gcmVsYW7Dp2FudCBsYSBmdXNpb24uIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo0NQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZpbGUgJXMgc2VlbXMgdG8gaGF2ZSB1bnJlc29sdmVkIGNvbmZsaWN0cywgc3RpbGwgc3RhZ2U/IgorbXNnc3RyICJMZSBmaWNoaWVyICVzIHNlbWJsZSBhdm9pciBkZXMgY29uZmxpY3RzIG5vbiByw6lzb2x1cywgaW5kw6l4ZXIgcXVhbmQgbcOqbWUgPyIKKworIzogbGliL21lcmdldG9vbC50Y2w6NjAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBZGRpbmcgcmVzb2x1dGlvbiBmb3IgJXMiCittc2dzdHIgIkFqb3V0ZXIgdW5lIHLDqXNvbHV0aW9uIHBvdXIgJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0MQorbXNnaWQgIkNhbm5vdCByZXNvbHZlIGRlbGV0aW9uIG9yIGxpbmsgY29uZmxpY3RzIHVzaW5nIGEgdG9vbCIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkZSByw6lzb3VkcmUgbGEgc3VwcHJlc3Npb24gb3UgZGUgcmVsaWVyIGRlcyBjb25mbGljdHMgZW4gdXRpbGlzYW50IHVuIG91dGlsIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNDYKK21zZ2lkICJDb25mbGljdCBmaWxlIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJMZSBmaWNoaWVyIGVuIGNvbmZsaWN0IG4nZXhpc3RlIHBhcy4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk5vdCBhIEdVSSBtZXJnZSB0b29sOiAnJXMnIgorbXNnc3RyICInJXMnIG4nZXN0IHBhcyB1biBvdXRpbCBncmFwaGlxdWUgcG91ciBmdXNpb25uZXIgZGVzIGZpY2hpZXJzLiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICJPdXRpbCBkZSBmdXNpb24gJyVzJyBub24gc3VwcG9ydMOpIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozMDMKK21zZ2lkICJNZXJnZSB0b29sIGlzIGFscmVhZHkgcnVubmluZywgdGVybWluYXRlIGl0PyIKK21zZ3N0ciAiTCdvdXRpbCBkZSBmdXNpb24gdG91cm5lIGTDqWrDoCwgZmF1dC1pbCBsZSB0ZXJtaW5lciA/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozMjMKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgcmV0cmlldmluZyB2ZXJzaW9uczpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkVycmV1ciBsb3JzIGRlIGxhIHLDqWN1cMOpcmF0aW9uIGRlcyB2ZXJzaW9uczpcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBzdGFydCB0aGUgbWVyZ2UgdG9vbDpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkltcG9zc2libGUgZGUgbGFuY2VyIGwnb3V0aWwgZGUgZnVzaW9uOlxuIgorIlxuIgorIiVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozNDcKK21zZ2lkICJSdW5uaW5nIG1lcmdlIHRvb2wuLi4iCittc2dzdHIgIkxhbmNlbWVudCBkZSBsJ291dGlsIGRlIGZ1c2lvbi4uLiIKKworIzogbGliL21lcmdldG9vbC50Y2w6Mzc1IGxpYi9tZXJnZXRvb2wudGNsOjM4MworbXNnaWQgIk1lcmdlIHRvb2wgZmFpbGVkLiIKK21zZ3N0ciAiTCdvdXRpbCBkZSBmdXNpb24gYSDDqWNob3XDqS4iCisKKyM6IGxpYi9vcHRpb24udGNsOjExCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBnbG9iYWwgZW5jb2RpbmcgJyVzJyIKK21zZ3N0ciAiRW5jb2RhZ2UgZ2xvYmFsIGludmFsaWRlICclcyciCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIkVuY29kYWdlIGRlIGTDqXDDtHQgaW52YWxpZGUgJyVzJyIKKworIzogbGliL29wdGlvbi50Y2w6MTE3CiBtc2dpZCAiUmVzdG9yZSBEZWZhdWx0cyIKIG1zZ3N0ciAiUmVtZXR0cmUgbGVzIHZhbGV1cnMgcGFyIGTDqWZhdXQiCiAKLSM6IGxpYi9vcHRpb24udGNsOjk5CisjOiBsaWIvb3B0aW9uLnRjbDoxMjEKIG1zZ2lkICJTYXZlIgogbXNnc3RyICJTYXV2ZWdhcmRlciIKIAotIzogbGliL29wdGlvbi50Y2w6MTA5CisjOiBsaWIvb3B0aW9uLnRjbDoxMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBSZXBvc2l0b3J5IgogbXNnc3RyICJEw6lww7R0OiAlcyIKIAotIzogbGliL29wdGlvbi50Y2w6MTEwCisjOiBsaWIvb3B0aW9uLnRjbDoxMzIKIG1zZ2lkICJHbG9iYWwgKEFsbCBSZXBvc2l0b3JpZXMpIgogbXNnc3RyICJHbG9iYWxlcyAodG91cyBsZXMgZMOpcMO0dHMpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTYKKyM6IGxpYi9vcHRpb24udGNsOjEzOAogbXNnaWQgIlVzZXIgTmFtZSIKIG1zZ3N0ciAiTm9tIGQndXRpbGlzYXRldXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNworIzogbGliL29wdGlvbi50Y2w6MTM5CiBtc2dpZCAiRW1haWwgQWRkcmVzcyIKIG1zZ3N0ciAiQWRyZXNzZSBlbWFpbCIKIAotIzogbGliL29wdGlvbi50Y2w6MTE5CisjOiBsaWIvb3B0aW9uLnRjbDoxNDEKIG1zZ2lkICJTdW1tYXJpemUgTWVyZ2UgQ29tbWl0cyIKIG1zZ3N0ciAiUsOpc3VtZXIgbGVzIGNvbW1pdHMgZGUgZnVzaW9uIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjAKKyM6IGxpYi9vcHRpb24udGNsOjE0MgogbXNnaWQgIk1lcmdlIFZlcmJvc2l0eSIKIG1zZ3N0ciAiRnVzaW9uIGJhdmFyZGUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMQorIzogbGliL29wdGlvbi50Y2w6MTQzCiBtc2dpZCAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSIKIG1zZ3N0ciAiTW9udHJlciBzdGF0aXN0aXF1ZXMgZGUgZGlmZiBhcHLDqHMgZnVzaW9uIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjMKKyM6IGxpYi9vcHRpb24udGNsOjE0NAorbXNnaWQgIlVzZSBNZXJnZSBUb29sIgorbXNnc3RyICJVdGlsaXNlciBvdXRpbCBkZSBmdXNpb24iCisKKyM6IGxpYi9vcHRpb24udGNsOjE0NgogbXNnaWQgIlRydXN0IEZpbGUgTW9kaWZpY2F0aW9uIFRpbWVzdGFtcHMiCiBtc2dzdHIgIkZhaXJlIGNvbmZpYW5jZSBhdXggZGF0ZXMgZGUgbW9kaWZpY2F0aW9uIGRlIGZpY2hpZXJzICIKIAotIzogbGliL29wdGlvbi50Y2w6MTI0CisjOiBsaWIvb3B0aW9uLnRjbDoxNDcKIG1zZ2lkICJQcnVuZSBUcmFja2luZyBCcmFuY2hlcyBEdXJpbmcgRmV0Y2giCiBtc2dzdHIgIlB1cmdlciBsZXMgYnJhbmNoZXMgZGUgc3VpdmkgcGVuZGFudCBsYSByw6ljdXDDqXJhdGlvbiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI1CisjOiBsaWIvb3B0aW9uLnRjbDoxNDgKIG1zZ2lkICJNYXRjaCBUcmFja2luZyBCcmFuY2hlcyIKIG1zZ3N0ciAiRmFpcmUgY29ycmVzcG9uZHJlIGxlcyBicmFuY2hlcyBkZSBzdWl2aSIKIAotIzogbGliL29wdGlvbi50Y2w6MTI2CisjOiBsaWIvb3B0aW9uLnRjbDoxNDkKIG1zZ2lkICJCbGFtZSBDb3B5IE9ubHkgT24gQ2hhbmdlZCBGaWxlcyIKIG1zZ3N0ciAiQW5ub3RlciBsZXMgY29waWVzIHNldWxlbWVudCBzdXIgZmljaGllcnMgbW9kaWZpw6lzIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjcKKyM6IGxpYi9vcHRpb24udGNsOjE1MAogbXNnaWQgIk1pbmltdW0gTGV0dGVycyBUbyBCbGFtZSBDb3B5IE9uIgogbXNnc3RyICJNaW5pbXVtIGRlIGNhcmF0w6hyZXMgcG91ciBhbm5vdGVyIHVuZSBjb3BpZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTI4CisjOiBsaWIvb3B0aW9uLnRjbDoxNTEKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiRGlzdGFuY2UgZGUgYmzDom1lIGRhbnMgbCdoaXN0b3JpcXVlIChqb3VycykiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MgogbXNnaWQgIk51bWJlciBvZiBEaWZmIENvbnRleHQgTGluZXMiCiBtc2dzdHIgIk5vbWJyZSBkZSBsaWduZXMgZGUgY29udGV4dGUgZGFucyBsZXMgZGlmZnMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOQorIzogbGliL29wdGlvbi50Y2w6MTUzCiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2UgVGV4dCBXaWR0aCIKIG1zZ3N0ciAiTGFyZ2V1ciBkdSB0ZXh0ZSBkZSBtZXNzYWdlIGRlIGNvbW1pdCIKIAotIzogbGliL29wdGlvbi50Y2w6MTMwCisjOiBsaWIvb3B0aW9uLnRjbDoxNTQKIG1zZ2lkICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUiCiBtc2dzdHIgIk5vdXZlYXUgbW9kw6hsZSBkZSBub20gZGUgYnJhbmNoZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTk0CisjOiBsaWIvb3B0aW9uLnRjbDoxNTUKK21zZ2lkICJEZWZhdWx0IEZpbGUgQ29udGVudHMgRW5jb2RpbmciCittc2dzdHIgIkVuY29kYWdlIGR1IGNvbnRlbnUgZGVzIGZpY2hpZXJzIHBhciBkw6lmYXV0IgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIk1vZGlmaWVyIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMzAKIG1zZ2lkICJTcGVsbGluZyBEaWN0aW9uYXJ5OiIKIG1zZ3N0ciAiRGljdGlvbm5haXJlIGQnb3J0aG9ncmFwaGUgOiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE4CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiTW9kaWZpZXIgbGVzIHBvbGljZXMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjIyMgorIzogbGliL29wdGlvbi50Y2w6MjU4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2hvb3NlICVzIgogbXNnc3RyICJDaG9pc2lyICVzIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyMjgKKyM6IGxpYi9vcHRpb24udGNsOjI2NAogbXNnaWQgInB0LiIKIG1zZ3N0ciAicHQuIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNDIKKyM6IGxpYi9vcHRpb24udGNsOjI3OAogbXNnaWQgIlByZWZlcmVuY2VzIgogbXNnc3RyICJQcsOpZsOpcmVuY2VzIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNzcKKyM6IGxpYi9vcHRpb24udGNsOjMxNAogbXNnaWQgIkZhaWxlZCB0byBjb21wbGV0ZWx5IHNhdmUgb3B0aW9uczoiCiBtc2dzdHIgIkxhIHNhdXZlZ2FyZGUgY29tcGzDqHRlIGRlcyBvcHRpb25zIGEgw6ljaG91w6llIDoiCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE2NQorIzogbGliL3JlbW90ZS50Y2w6MTYzCittc2dpZCAiUmVtb3ZlIFJlbW90ZSIKK21zZ3N0ciAiU3VwcHJpbWVyIGTDqXDDtHQgZGlzdGFudCIKKworIzogbGliL3JlbW90ZS50Y2w6MTY4CiBtc2dpZCAiUHJ1bmUgZnJvbSIKIG1zZ3N0ciAiUHVyZ2VyIGRlIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNzAKKyM6IGxpYi9yZW1vdGUudGNsOjE3MwogbXNnaWQgIkZldGNoIGZyb20iCiBtc2dzdHIgIlLDqWN1cMOpcmVyIGRlIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoyMTMKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQogbXNnaWQgIlB1c2ggdG8iCiBtc2dzdHIgIlBvdXNzZXIgdmVycyIKIAorIzogbGliL3JlbW90ZV9hZGQudGNsOjE5Cittc2dpZCAiQWRkIFJlbW90ZSIKK21zZ3N0ciAiQWpvdXRlciBkw6lww7R0IGRpc3RhbnQiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoyNAorbXNnaWQgIkFkZCBOZXcgUmVtb3RlIgorbXNnc3RyICJBam91dGVyIG5vdXZlYXUgZMOpcMO0dCBkaXN0YW50IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjggbGliL3Rvb2xzX2RsZy50Y2w6MzYKK21zZ2lkICJBZGQiCittc2dzdHIgIkFqb3V0ZXIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDozNworbXNnaWQgIlJlbW90ZSBEZXRhaWxzIgorbXNnc3RyICJEw6l0YWlscyBkZXMgZMOpcMO0dHMgZGlzdGFudHMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo1MAorbXNnaWQgIkxvY2F0aW9uOiIKK21zZ3N0ciAiRW1wbGFjZW1lbnQ6IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjIKK21zZ2lkICJGdXJ0aGVyIEFjdGlvbiIKK21zZ3N0ciAiQWN0aW9uIHN1cHBsw6ltZW50YWlyZSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjY1Cittc2dpZCAiRmV0Y2ggSW1tZWRpYXRlbHkiCittc2dzdHIgIlLDqWN1cMOpcmVyIGltbcOpZGlhdGVtZW50IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzEKK21zZ2lkICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIgorbXNnc3RyICJJbml0aWFsaXNlciBkw6lww7R0IGRpc3RhbnQgZXQgcG91c3NlciIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjc3Cittc2dpZCAiRG8gTm90aGluZyBFbHNlIE5vdyIKK21zZ3N0ciAiTmUgcmllbiBmYWlyZSBkJ2F1dHJlIG1haW50ZW5hbnQiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMDEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIgorbXNnc3RyICJNZXJjaSBkZSBmb3VybmlyIHVuIG5vbSBkZSBkw6lww7R0IGRpc3RhbnQuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTE0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSByZW1vdGUgbmFtZS4iCittc2dzdHIgIiclcycgbidlc3QgcGFzIHVuIG5vbSBkZSBkw6lww7R0IGRpc3RhbnQgYWNjZXB0YWJsZS4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICLDiWNoZWMgZGUgbCdham91dCBkdSBkw6lww7R0IGRpc3RhbnQgJyVzJyDDoCBsJ2VtcGxhY2VtZW50ICclcycuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTMzIGxpYi90cmFuc3BvcnQudGNsOjYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJmZXRjaCAlcyIKK21zZ3N0ciAicsOpY3Vww6lyZXIgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIlLDqWN1cMOpcmF0aW9uIGRlICVzIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTU3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRG8gbm90IGtub3cgaG93IHRvIGluaXRpYWxpemUgcmVwb3NpdG9yeSBhdCBsb2NhdGlvbiAnJXMnLiIKK21zZ3N0ciAiUGFzIGRlIG3DqXRob2RlIGNvbm51ZSBwb3VyIGluaXRpYWxpc2VyIGxlIGTDqXDDtHQgw6AgbCdlbXBsYWNlbWVudCAnJXMnLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo3MQorIywgdGNsLWZvcm1hdAorbXNnaWQgInB1c2ggJXMiCittc2dzdHIgInBvdXNzZXIgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHVwIHRoZSAlcyAoYXQgJXMpIgorbXNnc3RyICJNaXNlIGVuIHBsYWNlIGRlICVzICjDoCAlcykiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgotbXNnc3RyICJTdXBwcmltZXIgYnJhbmNoZSBkaXN0YW50ZSIKK21zZ2lkICJEZWxldGUgQnJhbmNoIFJlbW90ZWx5IgorbXNnc3RyICJTdXBwcmltZXIgYnJhbmNoZSDDoCBkaXN0YW5jZSIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0NwogbXNnaWQgIkZyb20gUmVwb3NpdG9yeSIKQEAgLTE4NTAsOCArMjIwNCw4IEBACiBtc2dzdHIgIkJyYW5jaGUgZGlzdGFudGUgOiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo2NiBsaWIvdHJhbnNwb3J0LnRjbDoxMzgKLW1zZ2lkICJBcmJpdHJhcnkgVVJMOiIKLW1zZ3N0ciAiVVJMIGFyYml0cmFpcmUgOiIKK21zZ2lkICJBcmJpdHJhcnkgTG9jYXRpb246IgorbXNnc3RyICJFbXBsYWNlbWVudCBhcmJpdHJhaXJlIDoiCiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6ODQKIG1zZ2lkICJCcmFuY2hlcyIKQEAgLTE5MjEsNiArMjI3NSwyMiBAQAogbXNnaWQgIlNjYW5uaW5nICVzLi4uIgogbXNnc3RyICJTeW5jaHJvbmlzYXRpb24gZGUgJXMuLi4iCiAKKyM6IGxpYi9zZWFyY2gudGNsOjIxCittc2dpZCAiRmluZDoiCittc2dzdHIgIkNoZXJjaGVyIDoiCisKKyM6IGxpYi9zZWFyY2gudGNsOjIzCittc2dpZCAiTmV4dCIKK21zZ3N0ciAiU3VpdmFudCIKKworIzogbGliL3NlYXJjaC50Y2w6MjQKK21zZ2lkICJQcmV2IgorbXNnc3RyICJQcsOpY8OpZGFudCIKKworIzogbGliL3NlYXJjaC50Y2w6MjUKK21zZ2lkICJDYXNlLVNlbnNpdGl2ZSIKK21zZ3N0ciAiU2Vuc2libGUgw6AgbGEgY2Fzc2UiCisKICM6IGxpYi9zaG9ydGN1dC50Y2w6MjAgbGliL3Nob3J0Y3V0LnRjbDo2MQogbXNnaWQgIkNhbm5vdCB3cml0ZSBzaG9ydGN1dDoiCiBtc2dzdHIgIkltcG9zc2libGUgZCfDqWNyaXJlIGxlIHJhY2NvdXJjaXMgOiIKQEAgLTE5NTgsMjMgKzIzMjgsMTg4IEBACiBtc2dpZCAiTm8gU3VnZ2VzdGlvbnMiCiBtc2dzdHIgIkF1Y3VuZSBzdWdnZXN0aW9uIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg3CisjOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg4CiBtc2dpZCAiVW5leHBlY3RlZCBFT0YgZnJvbSBzcGVsbCBjaGVja2VyIgogbXNnc3RyICJFT0YgaW5hdHRlbmR1ZSBlbnZvecOpZSBwYXIgbGUgdsOpcmlmaWNhdGV1ciBkJ29ydGhvZ3JhcGhlIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkxCisjOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkyCiBtc2dpZCAiU3BlbGwgQ2hlY2tlciBGYWlsZWQiCiBtc2dzdHIgIkxlIHbDqXJpZmljYXRldXIgZCdvcnRob2dyYXBoZSBhIMOpY2hvdcOpIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICJBdWN1bmUgY2zDqSB0cm91dsOpZS4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRm91bmQgYSBwdWJsaWMga2V5IGluOiAlcyIKK21zZ3N0ciAiQ2zDqSBwdWJsaXF1ZSB0cm91dsOpZSBkYW5zIDogJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjQwCittc2dpZCAiR2VuZXJhdGUgS2V5IgorbXNnc3RyICJHw6luw6lyZXIgdW5lIGNsw6kiCisKKyM6IGxpYi9zc2hrZXkudGNsOjU2Cittc2dpZCAiQ29weSBUbyBDbGlwYm9hcmQiCittc2dzdHIgIkNvcGllciBkYW5zIGxlIHByZXNzZSBwYXBpZXIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIlZvdHJlIGNsw6kgcHVibGlxdWUgT3BlbiBTU0giCisKKyM6IGxpYi9zc2hrZXkudGNsOjc4Cittc2dpZCAiR2VuZXJhdGluZy4uLiIKK21zZ3N0ciAiR8OpbsOpcmF0aW9uLi4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkltcG9zc2libGUgZGUgbGFuY2VyIHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjExMQorbXNnaWQgIkdlbmVyYXRpb24gZmFpbGVkLiIKK21zZ3N0ciAiTGEgZ8OpbsOpcmF0aW9uIGEgw6ljaG91w6kuIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIkxhIGfDqW7DqXJhdGlvbiBhIHLDqXVzc2ksIG1haXMgYXVjdW5lIGNsw6kgbidhIMOpdMOpIHRyb3V2w6llLiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICJWb3RyZSBjbMOpIGVzdCBkYW5zIDogJXMiCisKICM6IGxpYi9zdGF0dXNfYmFyLnRjbDo4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIC4uLiAlKmkgb2YgJSppICVzICglM2klJSkiCiBtc2dzdHIgIiVzIC4uLiAlKmkgZGUgJSppICVzICglM2klJSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjYKKyM6IGxpYi90b29scy50Y2w6NzUKICMsIHRjbC1mb3JtYXQKLW1zZ2lkICJmZXRjaCAlcyIKLW1zZ3N0ciAicsOpY3Vww6lyZXIgJXMiCittc2dpZCAiUnVubmluZyAlcyByZXF1aXJlcyBhIHNlbGVjdGVkIGZpbGUuIgorbXNnc3RyICJMYW5jZXIgJXMgbsOpY2Vzc2l0ZSBxdSd1biBmaWNoaWVyIHNvaXQgc8OpbGVjdGlvbm7DqS4iCisKKyM6IGxpYi90b29scy50Y2w6OTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcnVuICVzPyIKK21zZ3N0ciAiw4p0ZXMgdm91cyBzw7tyIGRlIHZvdWxvaXIgbGFuY2VyICVzID8iCisKKyM6IGxpYi90b29scy50Y2w6MTEwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbDogJXMiCittc2dzdHIgIk91dGlsIDogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTExCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVubmluZzogJXMiCittc2dzdHIgIkxhbmNlbWVudCBkZSA6ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE0OQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgY29tcGxldGVkIHN1Y2Nlc2Z1bGx5OiAlcyIKK21zZ3N0ciAiTCdvdXRpbCBhIHRlcm1pbsOpIGF2ZWMgc3VjY8OocyA6ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE1MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgZmFpbGVkOiAlcyIKK21zZ3N0ciAiTCdvdXRpbCBhIMOpY2hvdcOpIDogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIkFqb3V0ZXIgb3V0aWwiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI4Cittc2dpZCAiQWRkIE5ldyBUb29sIENvbW1hbmQiCittc2dzdHIgIkFqb3V0ZXIgbm91dmVsbGUgY29tbWFuZGUgZCdvdXRpbCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzMKK21zZ2lkICJBZGQgZ2xvYmFsbHkiCittc2dzdHIgIkFqb3V0ZXIgZ2xvYmFsZW1lbnQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ1Cittc2dpZCAiVG9vbCBEZXRhaWxzIgorbXNnc3RyICJEw6l0YWlscyBzdXIgbCdvdXRpbCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NDgKK21zZ2lkICJVc2UgJy8nIHNlcGFyYXRvcnMgdG8gY3JlYXRlIGEgc3VibWVudSB0cmVlOiIKK21zZ3N0ciAiVXRpbGlzZXIgbGVzIHPDqXBhcmF0ZXVycyAnLycgcG91ciBjcsOpZXIgdW4gYXJicmUgZGUgc291cyBtZW51cyA6IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo2MQorbXNnaWQgIkNvbW1hbmQ6IgorbXNnc3RyICJDb21tYW5kZSA6IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo3NAorbXNnaWQgIlNob3cgYSBkaWFsb2cgYmVmb3JlIHJ1bm5pbmciCittc2dzdHIgIk1vbnRyZXIgdW5lIGJvw650ZSBkZSBkaWFsb2d1ZSBhdmFudCBsZSBsYW5jZW1lbnQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIkRlbWFuZGVyIMOgIGwndXRpbGlzYXRldXIgZGUgc8OpbGVjdGlvbm5lciB1bmUgcsOpdmlzaW9uIChjaGFuZ2UgJFJFVklTSU9OKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6ODUKK21zZ2lkICJBc2sgdGhlIHVzZXIgZm9yIGFkZGl0aW9uYWwgYXJndW1lbnRzIChzZXRzICRBUkdTKSIKK21zZ3N0ciAiRGVtYW5kZXIgw6AgbCd1dGlsaXNhdGV1ciBkZXMgYXJndW1lbnRzIHN1cHBsw6ltZW50YWlyZXMgKGNoYW5nZSAkQVJHUykiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjkyCittc2dpZCAiRG9uJ3Qgc2hvdyB0aGUgY29tbWFuZCBvdXRwdXQgd2luZG93IgorbXNnc3RyICJOZSBwYXMgbW9udHJlciBsYSBmZW7DqnRyZSBkZSBzb3J0aWUgZGVzIGNvbW1hbmRlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6OTcKK21zZ2lkICJSdW4gb25seSBpZiBhIGRpZmYgaXMgc2VsZWN0ZWQgKCRGSUxFTkFNRSBub3QgZW1wdHkpIgorbXNnc3RyICJMYW5jZXIgc2V1bGVtZW50IHNpIHVuIGRpZmYgZXN0IHNlbGVjdGlvbm7DqSAoJEZJTEVOQU1FIG5vbiB2aWRlKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTIxCittc2dpZCAiUGxlYXNlIHN1cHBseSBhIG5hbWUgZm9yIHRoZSB0b29sLiIKK21zZ3N0ciAiTWVyY2kgZGUgZm91cm5pciB1biBub20gcG91ciBsJ291dGlsLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTI5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAiTCdvdXRpbCAnJXMnIGV4aXN0ZSBkw6lqw6AuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IGFkZCB0b29sOlxuIgorIiVzIgorbXNnc3RyICIiCisiSW1wb3NzaWJsZSBkJ2Fqb3V0ZXIgbCdvdXRpbDpcbiIKKyIlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTkwCittc2dpZCAiUmVtb3ZlIFRvb2wiCittc2dzdHIgIlN1cHByaW1lciBsJ291dGlsIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTYKK21zZ2lkICJSZW1vdmUgVG9vbCBDb21tYW5kcyIKK21zZ3N0ciAiU3VwcHJpbWVyIGRlcyBjb21tYW5kZXMgZCdvdXRpbCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJTdXBwcmltZXIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIzNgorbXNnaWQgIihCbHVlIGRlbm90ZXMgcmVwb3NpdG9yeS1sb2NhbCB0b29scykiCittc2dzdHIgIihMZSBibGV1IGluZGlxdWUgZGVzIG91dGlscyBsb2NhdXggYXUgZMOpcMO0dCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAiTGFuY2VyIGNvbW1hbmRlIDogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMxMQorbXNnaWQgIkFyZ3VtZW50cyIKK21zZ3N0ciAiQXJndW1lbnRzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozNDgKK21zZ2lkICJPSyIKK21zZ3N0ciAiT0siCiAKICM6IGxpYi90cmFuc3BvcnQudGNsOjcKICMsIHRjbC1mb3JtYXQKQEAgLTE5OTEsMTEgKzI1MjYsNiBAQAogbXNnaWQgIlBydW5pbmcgdHJhY2tpbmcgYnJhbmNoZXMgZGVsZXRlZCBmcm9tICVzIgogbXNnc3RyICJOZXR0b3llciBsZXMgYnJhbmNoZXMgZGUgc3Vpdmkgc3VwcHJpbcOpZXMgZGUgJXMiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCi0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAicHVzaCAlcyIKLW1zZ3N0ciAicG91c3NlciAlcyIKLQogIzogbGliL3RyYW5zcG9ydC50Y2w6MjYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nIGNoYW5nZXMgdG8gJXMiCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2dpdC1ndWkucG90IGIvZ2l0LWd1aS9wby9naXQtZ3VpLnBvdAppbmRleCBlMjk1MDAwLi4xNWFlYTBkIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2dpdC1ndWkucG90CisrKyBiL2dpdC1ndWkvcG8vZ2l0LWd1aS5wb3QKQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0wOC0wMiAxNDo0NS0wNzAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTItMDggMDg6MzEtMDgwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IFlFQVItTU8tREEgSE86TUkrWk9ORVxuIgogIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxuIgogIkxhbmd1YWdlLVRlYW06IExBTkdVQUdFIDxMTEBsaS5vcmc+XG4iCkBAIC0xNiwzMyArMTYsMzMgQEAKICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Q0hBUlNFVFxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKIAotIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjY4OCBnaXQtZ3VpLnNoOjcwMiBnaXQtZ3VpLnNoOjcxNSBnaXQtZ3VpLnNoOjc5OAotIzogZ2l0LWd1aS5zaDo4MTcKKyM6IGdpdC1ndWkuc2g6NDEgZ2l0LWd1aS5zaDo3MzcgZ2l0LWd1aS5zaDo3NTEgZ2l0LWd1aS5zaDo3NjQgZ2l0LWd1aS5zaDo4NDcKKyM6IGdpdC1ndWkuc2g6ODY2CiBtc2dpZCAiZ2l0LWd1aTogZmF0YWwgZXJyb3IiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDo2NDQKKyM6IGdpdC1ndWkuc2g6Njg5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBmb250IHNwZWNpZmllZCBpbiAlczoiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDo2NzQKKyM6IGdpdC1ndWkuc2g6NzIzCiBtc2dpZCAiTWFpbiBGb250IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Njc1CisjOiBnaXQtZ3VpLnNoOjcyNAogbXNnaWQgIkRpZmYvQ29uc29sZSBGb250IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Njg5CisjOiBnaXQtZ3VpLnNoOjczOAogbXNnaWQgIkNhbm5vdCBmaW5kIGdpdCBpbiBQQVRILiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjcxNgorIzogZ2l0LWd1aS5zaDo3NjUKIG1zZ2lkICJDYW5ub3QgcGFyc2UgR2l0IHZlcnNpb24gc3RyaW5nOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjczNAorIzogZ2l0LWd1aS5zaDo3ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiR2l0IHZlcnNpb24gY2Fubm90IGJlIGRldGVybWluZWQuXG4iCkBAIC01NCwzNzkgKzU0LDQ0NCBAQAogIkFzc3VtZSAnJXMnIGlzIHZlcnNpb24gMS41LjA/XG4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDo5NzIKKyM6IGdpdC1ndWkuc2g6MTA2MgogbXNnaWQgIkdpdCBkaXJlY3Rvcnkgbm90IGZvdW5kOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjk3OQorIzogZ2l0LWd1aS5zaDoxMDY5CiBtc2dpZCAiQ2Fubm90IG1vdmUgdG8gdG9wIG9mIHdvcmtpbmcgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjk4NgorIzogZ2l0LWd1aS5zaDoxMDc2CiBtc2dpZCAiQ2Fubm90IHVzZSBmdW5ueSAuZ2l0IGRpcmVjdG9yeToiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDo5OTEKKyM6IGdpdC1ndWkuc2g6MTA4MQogbXNnaWQgIk5vIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTEzOCBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQorIzogZ2l0LWd1aS5zaDoxMjQ3IGxpYi9jaGVja291dF9vcC50Y2w6MzA1CiBtc2dpZCAiUmVmcmVzaGluZyBmaWxlIHN0YXR1cy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjExOTQKKyM6IGdpdC1ndWkuc2g6MTMwMwogbXNnaWQgIlNjYW5uaW5nIGZvciBtb2RpZmllZCBmaWxlcyAuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxMzY5IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoxMzg0Cittc2dpZCAiQ29tbWl0IGRlY2xpbmVkIGJ5IHByZXBhcmUtY29tbWl0LW1zZyBob29rLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjE1NDIgbGliL2Jyb3dzZXIudGNsOjI0NgogbXNnaWQgIlJlYWR5LiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzUKKyM6IGdpdC1ndWkuc2g6MTgxOQogbXNnaWQgIlVubW9kaWZpZWQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxNjM3CisjOiBnaXQtZ3VpLnNoOjE4MjEKIG1zZ2lkICJNb2RpZmllZCwgbm90IHN0YWdlZCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzggZ2l0LWd1aS5zaDoxNjQzCisjOiBnaXQtZ3VpLnNoOjE4MjIgZ2l0LWd1aS5zaDoxODMwCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxNjM5IGdpdC1ndWkuc2g6MTY0NAorIzogZ2l0LWd1aS5zaDoxODIzIGdpdC1ndWkuc2g6MTgzMQogbXNnaWQgIlBvcnRpb25zIHN0YWdlZCBmb3IgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTY0MCBnaXQtZ3VpLnNoOjE2NDUKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDIKKyM6IGdpdC1ndWkuc2g6MTgyNgorbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MTgyNworbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoxODI5CiBtc2dpZCAiVW50cmFja2VkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTY0NworIzogZ2l0LWd1aS5zaDoxODM0CiBtc2dpZCAiTWlzc2luZyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDgKKyM6IGdpdC1ndWkuc2g6MTgzNQogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDkKKyM6IGdpdC1ndWkuc2g6MTgzNgogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE2NTEgZ2l0LWd1aS5zaDoxNjUyIGdpdC1ndWkuc2g6MTY1MyBnaXQtZ3VpLnNoOjE2NTQKKyM6IGdpdC1ndWkuc2g6MTgzOCBnaXQtZ3VpLnNoOjE4MzkgZ2l0LWd1aS5zaDoxODQwIGdpdC1ndWkuc2g6MTg0MQorIzogZ2l0LWd1aS5zaDoxODQyIGdpdC1ndWkuc2g6MTg0MwogbXNnaWQgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxNjg5CisjOiBnaXQtZ3VpLnNoOjE4NzgKIG1zZ2lkICJTdGFydGluZyBnaXRrLi4uIHBsZWFzZSB3YWl0Li4uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTY5OAorIzogZ2l0LWd1aS5zaDoxODg3CiBtc2dpZCAiQ291bGRuJ3QgZmluZCBnaXRrIGluIFBBVEgiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxOTQ4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKKyM6IGdpdC1ndWkuc2g6MjI4MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM2CiBtc2dpZCAiUmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE5NDkKKyM6IGdpdC1ndWkuc2g6MjI4MQogbXNnaWQgIkVkaXQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk1NCBsaWIvY2hvb3NlX3Jldi50Y2w6NTQ4CisjOiBnaXQtZ3VpLnNoOjIyODYgbGliL2Nob29zZV9yZXYudGNsOjU0OAogbXNnaWQgIkNvbW1pdEBAbm91biIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTcgbGliL21lcmdlLnRjbDoxMjAgbGliL21lcmdlLnRjbDoxNDkgbGliL21lcmdlLnRjbDoxNjcKKyM6IGdpdC1ndWkuc2g6MjI4OSBsaWIvbWVyZ2UudGNsOjEyMSBsaWIvbWVyZ2UudGNsOjE1MCBsaWIvbWVyZ2UudGNsOjE2OAogbXNnaWQgIk1lcmdlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk1OCBsaWIvY2hvb3NlX3Jldi50Y2w6NTU3CisjOiBnaXQtZ3VpLnNoOjIyOTAgbGliL2Nob29zZV9yZXYudGNsOjU1NwogbXNnaWQgIlJlbW90ZSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE5NjcKKyM6IGdpdC1ndWkuc2g6MjI5MworbXNnaWQgIlRvb2xzIgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MjMwMgorbXNnaWQgIkV4cGxvcmUgV29ya2luZyBDb3B5IgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MjMwNwogbXNnaWQgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk3MQorIzogZ2l0LWd1aS5zaDoyMzExCiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzYKKyM6IGdpdC1ndWkuc2g6MjMxNgogbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxOTgwCisjOiBnaXQtZ3VpLnNoOjIzMjAKIG1zZ2lkICJWaXN1YWxpemUgQWxsIEJyYW5jaCBIaXN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk4NworIzogZ2l0LWd1aS5zaDoyMzI3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJvd3NlICVzJ3MgRmlsZXMiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoxOTg5CisjOiBnaXQtZ3VpLnNoOjIzMjkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJWaXN1YWxpemUgJXMncyBIaXN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk5NCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKKyM6IGdpdC1ndWkuc2g6MjMzNCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKIG1zZ2lkICJEYXRhYmFzZSBTdGF0aXN0aWNzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MTk5NyBsaWIvZGF0YWJhc2UudGNsOjM0CisjOiBnaXQtZ3VpLnNoOjIzMzcgbGliL2RhdGFiYXNlLnRjbDozNAogbXNnaWQgIkNvbXByZXNzIERhdGFiYXNlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjAwMAorIzogZ2l0LWd1aS5zaDoyMzQwCiBtc2dpZCAiVmVyaWZ5IERhdGFiYXNlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjAwNyBnaXQtZ3VpLnNoOjIwMTEgZ2l0LWd1aS5zaDoyMDE1IGxpYi9zaG9ydGN1dC50Y2w6NworIzogZ2l0LWd1aS5zaDoyMzQ3IGdpdC1ndWkuc2g6MjM1MSBnaXQtZ3VpLnNoOjIzNTUgbGliL3Nob3J0Y3V0LnRjbDo3CiAjOiBsaWIvc2hvcnRjdXQudGNsOjM5IGxpYi9zaG9ydGN1dC50Y2w6NzEKIG1zZ2lkICJDcmVhdGUgRGVza3RvcCBJY29uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE3NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4NQorIzogZ2l0LWd1aS5zaDoyMzYzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTgzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTkxCiBtc2dpZCAiUXVpdCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzEKKyM6IGdpdC1ndWkuc2g6MjM3MQogbXNnaWQgIlVuZG8iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDM0CisjOiBnaXQtZ3VpLnNoOjIzNzQKIG1zZ2lkICJSZWRvIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjAzOCBnaXQtZ3VpLnNoOjI1NDUKKyM6IGdpdC1ndWkuc2g6MjM3OCBnaXQtZ3VpLnNoOjI5MzcKIG1zZ2lkICJDdXQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDQxIGdpdC1ndWkuc2g6MjU0OCBnaXQtZ3VpLnNoOjI2MjIgZ2l0LWd1aS5zaDoyNzE1CisjOiBnaXQtZ3VpLnNoOjIzODEgZ2l0LWd1aS5zaDoyOTQwIGdpdC1ndWkuc2g6MzAxNCBnaXQtZ3VpLnNoOjMwOTYKICM6IGxpYi9jb25zb2xlLnRjbDo2OQogbXNnaWQgIkNvcHkiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDQ0IGdpdC1ndWkuc2g6MjU1MQorIzogZ2l0LWd1aS5zaDoyMzg0IGdpdC1ndWkuc2g6Mjk0MwogbXNnaWQgIlBhc3RlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjA0NyBnaXQtZ3VpLnNoOjI1NTQgbGliL2JyYW5jaF9kZWxldGUudGNsOjI2CisjOiBnaXQtZ3VpLnNoOjIzODcgZ2l0LWd1aS5zaDoyOTQ2IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozOAogbXNnaWQgIkRlbGV0ZSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwNTEgZ2l0LWd1aS5zaDoyNTU4IGdpdC1ndWkuc2g6MjcxOSBsaWIvY29uc29sZS50Y2w6NzEKKyM6IGdpdC1ndWkuc2g6MjM5MSBnaXQtZ3VpLnNoOjI5NTAgZ2l0LWd1aS5zaDozMTAwIGxpYi9jb25zb2xlLnRjbDo3MQogbXNnaWQgIlNlbGVjdCBBbGwiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDYwCisjOiBnaXQtZ3VpLnNoOjI0MDAKIG1zZ2lkICJDcmVhdGUuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDY2CisjOiBnaXQtZ3VpLnNoOjI0MDYKIG1zZ2lkICJDaGVja291dC4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzIKKyM6IGdpdC1ndWkuc2g6MjQxMgogbXNnaWQgIlJlbmFtZS4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzcgZ2l0LWd1aS5zaDoyMTg3CisjOiBnaXQtZ3VpLnNoOjI0MTcKIG1zZ2lkICJEZWxldGUuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMDgyCisjOiBnaXQtZ3VpLnNoOjI0MjIKIG1zZ2lkICJSZXNldC4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIwOTQgZ2l0LWd1aS5zaDoyNDkxCi1tc2dpZCAiTmV3IENvbW1pdCIKKyM6IGdpdC1ndWkuc2g6MjQzMgorbXNnaWQgIkRvbmUiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMTAyIGdpdC1ndWkuc2g6MjQ5OAotbXNnaWQgIkFtZW5kIExhc3QgQ29tbWl0IgotbXNnc3RyICIiCi0KLSM6IGdpdC1ndWkuc2g6MjExMSBnaXQtZ3VpLnNoOjI0NTggbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQotbXNnaWQgIlJlc2NhbiIKLW1zZ3N0ciAiIgotCi0jOiBnaXQtZ3VpLnNoOjIxMTcKLW1zZ2lkICJTdGFnZSBUbyBDb21taXQiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyMTIzCi1tc2dpZCAiU3RhZ2UgQ2hhbmdlZCBGaWxlcyBUbyBDb21taXQiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyMTI5Ci1tc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKLW1zZ3N0ciAiIgotCi0jOiBnaXQtZ3VpLnNoOjIxMzQgbGliL2luZGV4LnRjbDozOTUKLW1zZ2lkICJSZXZlcnQgQ2hhbmdlcyIKLW1zZ3N0ciAiIgotCi0jOiBnaXQtZ3VpLnNoOjIxNDEgZ2l0LWd1aS5zaDoyNzAyCi1tc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyMTQ1IGdpdC1ndWkuc2g6MjcwNgotbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgotbXNnc3RyICIiCi0KLSM6IGdpdC1ndWkuc2g6MjE1MSBnaXQtZ3VpLnNoOjI0NzAgZ2l0LWd1aS5zaDoyNTY5Ci1tc2dpZCAiU2lnbiBPZmYiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyMTU1IGdpdC1ndWkuc2g6MjQ3NAorIzogZ2l0LWd1aS5zaDoyNDM0CiBtc2dpZCAiQ29tbWl0QEB2ZXJiIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjE2NgorIzogZ2l0LWd1aS5zaDoyNDQzIGdpdC1ndWkuc2g6Mjg3OAorbXNnaWQgIk5ldyBDb21taXQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNDUxIGdpdC1ndWkuc2g6Mjg4NQorbXNnaWQgIkFtZW5kIExhc3QgQ29tbWl0IgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MjQ2MSBnaXQtZ3VpLnNoOjI4MzkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQorbXNnaWQgIlJlc2NhbiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI0NjcKK21zZ2lkICJTdGFnZSBUbyBDb21taXQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNDczCittc2dpZCAiU3RhZ2UgQ2hhbmdlZCBGaWxlcyBUbyBDb21taXQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNDc5Cittc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI0ODQgbGliL2luZGV4LnRjbDo0MTAKK21zZ2lkICJSZXZlcnQgQ2hhbmdlcyIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI0OTEgZ2l0LWd1aS5zaDozMDgzCittc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNDk1IGdpdC1ndWkuc2g6MzA4NworbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MjUwMiBnaXQtZ3VpLnNoOjI4NTIgZ2l0LWd1aS5zaDoyOTYxCittc2dpZCAiU2lnbiBPZmYiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNTE4CiBtc2dpZCAiTG9jYWwgTWVyZ2UuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMTcxCisjOiBnaXQtZ3VpLnNoOjI1MjMKIG1zZ2lkICJBYm9ydCBNZXJnZS4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIxODMKKyM6IGdpdC1ndWkuc2g6MjUzNSBnaXQtZ3VpLnNoOjI1NzUKK21zZ2lkICJBZGQuLi4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNTM5CiBtc2dpZCAiUHVzaC4uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIxOTcgZ2l0LWd1aS5zaDoyMjE5IGxpYi9hYm91dC50Y2w6MTQKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAorIzogZ2l0LWd1aS5zaDoyNTQzCittc2dpZCAiRGVsZXRlIEJyYW5jaC4uLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjIwMQorIzogZ2l0LWd1aS5zaDoyNTU3CiBtc2dpZCAiUHJlZmVyZW5jZXMuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMjA5IGdpdC1ndWkuc2g6Mjc0MAorIzogZ2l0LWd1aS5zaDoyNTY1IGdpdC1ndWkuc2g6MzEyOQogbXNnaWQgIk9wdGlvbnMuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMjE1IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcKKyM6IGdpdC1ndWkuc2g6MjU3NgorbXNnaWQgIlJlbW92ZS4uLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAogbXNnaWQgIkhlbHAiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMjU2CisjOiBnaXQtZ3VpLnNoOjI2MTEKIG1zZ2lkICJPbmxpbmUgRG9jdW1lbnRhdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjIzNDAKKyM6IGdpdC1ndWkuc2g6MjYxNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTYKK21zZ2lkICJTaG93IFNTSCBLZXkiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoyNzIxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiZmF0YWw6IGNhbm5vdCBzdGF0IHBhdGggJXM6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMzczCisjOiBnaXQtZ3VpLnNoOjI3NTQKIG1zZ2lkICJDdXJyZW50IEJyYW5jaDoiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyMzk0CisjOiBnaXQtZ3VpLnNoOjI3NzUKIG1zZ2lkICJTdGFnZWQgQ2hhbmdlcyAoV2lsbCBDb21taXQpIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjQxNAorIzogZ2l0LWd1aS5zaDoyNzk1CiBtc2dpZCAiVW5zdGFnZWQgQ2hhbmdlcyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI0NjQKKyM6IGdpdC1ndWkuc2g6Mjg0NQogbXNnaWQgIlN0YWdlIENoYW5nZWQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyNDgwIGxpYi90cmFuc3BvcnQudGNsOjkzIGxpYi90cmFuc3BvcnQudGNsOjE4MgorIzogZ2l0LWd1aS5zaDoyODY0IGxpYi90cmFuc3BvcnQudGNsOjEwNCBsaWIvdHJhbnNwb3J0LnRjbDoxOTMKIG1zZ2lkICJQdXNoIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMAorIzogZ2l0LWd1aS5zaDoyODk5CiBtc2dpZCAiSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyNTExCisjOiBnaXQtZ3VpLnNoOjI5MDAKIG1zZ2lkICJBbWVuZGVkIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTIKKyM6IGdpdC1ndWkuc2g6MjkwMQogbXNnaWQgIkFtZW5kZWQgSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyNTEzCisjOiBnaXQtZ3VpLnNoOjI5MDIKIG1zZ2lkICJBbWVuZGVkIE1lcmdlIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTQKKyM6IGdpdC1ndWkuc2g6MjkwMwogbXNnaWQgIk1lcmdlIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTUKKyM6IGdpdC1ndWkuc2g6MjkwNAogbXNnaWQgIkNvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1NjEgZ2l0LWd1aS5zaDoyNzIzIGxpYi9jb25zb2xlLnRjbDo3MworIzogZ2l0LWd1aS5zaDoyOTUzIGdpdC1ndWkuc2g6MzEwNCBsaWIvY29uc29sZS50Y2w6NzMKIG1zZ2lkICJDb3B5IEFsbCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2JsYW1lLnRjbDoxMDAKKyM6IGdpdC1ndWkuc2g6Mjk3NyBsaWIvYmxhbWUudGNsOjEwNAogbXNnaWQgIkZpbGU6IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjY5MQotbXNnaWQgIkFwcGx5L1JldmVyc2UgSHVuayIKLW1zZ3N0ciAiIgotCi0jOiBnaXQtZ3VpLnNoOjI2OTYKLW1zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCi1tc2dzdHIgIiIKLQotIzogZ2l0LWd1aS5zaDoyNzExCisjOiBnaXQtZ3VpLnNoOjMwOTIKIG1zZ2lkICJSZWZyZXNoIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjczMgorIzogZ2l0LWd1aS5zaDozMTEzCiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6MjczNgorIzogZ2l0LWd1aS5zaDozMTE3CiBtc2dpZCAiSW5jcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc0NworIzogZ2l0LWd1aS5zaDozMTI1IGxpYi9ibGFtZS50Y2w6MjgxCittc2dpZCAiRW5jb2RpbmciCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMTM2Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICIiCisKKyM6IGdpdC1ndWkuc2g6MzE0MQorbXNnaWQgIkFwcGx5L1JldmVyc2UgTGluZSIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjMxNTEKK21zZ2lkICJSdW4gTWVyZ2UgVG9vbCIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjMxNTYKK21zZ2lkICJVc2UgUmVtb3RlIFZlcnNpb24iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMTYwCittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMTY0Cittc2dpZCAiUmV2ZXJ0IFRvIEJhc2UiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMTgzCiBtc2dpZCAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc0OAorIzogZ2l0LWd1aS5zaDozMTg0CiBtc2dpZCAiVW5zdGFnZSBMaW5lIEZyb20gQ29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MAorIzogZ2l0LWd1aS5zaDozMTg2CiBtc2dpZCAiU3RhZ2UgSHVuayBGb3IgQ29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MQorIzogZ2l0LWd1aS5zaDozMTg3CiBtc2dpZCAiU3RhZ2UgTGluZSBGb3IgQ29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjc3MQorIzogZ2l0LWd1aS5zaDozMjEwCiBtc2dpZCAiSW5pdGlhbGl6aW5nLi4uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1ndWkuc2g6Mjg3NgorIzogZ2l0LWd1aS5zaDozMzE1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlBvc3NpYmxlIGVudmlyb25tZW50IGlzc3VlcyBleGlzdC5cbiIKQEAgLTQzNywxNCArNTAyLDE0IEBACiAiXG4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWd1aS5zaDoyOTA2CisjOiBnaXQtZ3VpLnNoOjMzNDUKIG1zZ2lkICIiCiAiXG4iCiAiVGhpcyBpcyBkdWUgdG8gYSBrbm93biBpc3N1ZSB3aXRoIHRoZVxuIgogIlRjbCBiaW5hcnkgZGlzdHJpYnV0ZWQgYnkgQ3lnd2luLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtZ3VpLnNoOjI5MTEKKyM6IGdpdC1ndWkuc2g6MzM1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTQ1OSw4MCArNTI0LDEwOCBAQAogbXNnaWQgImdpdC1ndWkgLSBhIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSBmb3IgR2l0LiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwCisjOiBsaWIvYmxhbWUudGNsOjcyCiBtc2dpZCAiRmlsZSBWaWV3ZXIiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDo3NAorIzogbGliL2JsYW1lLnRjbDo3OAogbXNnaWQgIkNvbW1pdDoiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDoyNTcKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDoyNjAKKyM6IGxpYi9ibGFtZS50Y2w6Mjc1Cittc2dpZCAiRmluZCBUZXh0Li4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6Mjg0CiBtc2dpZCAiRG8gRnVsbCBDb3B5IERldGVjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjI5MQorbXNnaWQgIkJsYW1lIFBhcmVudCBDb21taXQiCittc2dzdHIgIiIKKworIzogbGliL2JsYW1lLnRjbDo0NTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZWFkaW5nICVzLi4uIgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NDkyCisjOiBsaWIvYmxhbWUudGNsOjU1NwogbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NTEyCisjOiBsaWIvYmxhbWUudGNsOjU3NwogbXNnaWQgImxpbmVzIGFubm90YXRlZCIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwNAorIzogbGliL2JsYW1lLnRjbDo3NjkKIG1zZ2lkICJMb2FkaW5nIG9yaWdpbmFsIGxvY2F0aW9uIGFubm90YXRpb25zLi4uIgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzA3CisjOiBsaWIvYmxhbWUudGNsOjc3MgogbXNnaWQgIkFubm90YXRpb24gY29tcGxldGUuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzM3CisjOiBsaWIvYmxhbWUudGNsOjgwMgogbXNnaWQgIkJ1c3kiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDo3MzgKKyM6IGxpYi9ibGFtZS50Y2w6ODAzCiBtc2dpZCAiQW5ub3RhdGlvbiBwcm9jZXNzIGlzIGFscmVhZHkgcnVubmluZy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDo3NzcKKyM6IGxpYi9ibGFtZS50Y2w6ODQyCiBtc2dpZCAiUnVubmluZyB0aG9yb3VnaCBjb3B5IGRldGVjdGlvbi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjgyNworIzogbGliL2JsYW1lLnRjbDo5MTAKIG1zZ2lkICJMb2FkaW5nIGFubm90YXRpb24uLi4iCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDo4ODMKKyM6IGxpYi9ibGFtZS50Y2w6OTYzCiBtc2dpZCAiQXV0aG9yOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjg4NworIzogbGliL2JsYW1lLnRjbDo5NjcKIG1zZ2lkICJDb21taXR0ZXI6IgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODkyCisjOiBsaWIvYmxhbWUudGNsOjk3MgogbXNnaWQgIk9yaWdpbmFsIEZpbGU6IgogbXNnc3RyICIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAwNgorIzogbGliL2JsYW1lLnRjbDoxMDIwCittc2dpZCAiQ2Fubm90IGZpbmQgSEVBRCBjb21taXQ6IgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA3NQorbXNnaWQgIkNhbm5vdCBmaW5kIHBhcmVudCBjb21taXQ6IgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA5MAorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjEwOTEgbGliL2RpZmYudGNsOjI5NworbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCittc2dzdHIgIiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMxCiBtc2dpZCAiT3JpZ2luYWxseSBCeToiCiBtc2dzdHIgIiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDEyCisjOiBsaWIvYmxhbWUudGNsOjEyMzcKIG1zZ2lkICJJbiBGaWxlOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYmxhbWUudGNsOjEwMTcKKyM6IGxpYi9ibGFtZS50Y2w6MTI0MgogbXNnaWQgIkNvcGllZCBPciBNb3ZlZCBIZXJlIEJ5OiIKIG1zZ3N0ciAiIgogCkBAIC01NDYsMTYgKzYzOSwxOCBAQAogCiAjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDoyNyBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzUKICM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDozMiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MzAgbGliL2Jyb3dzZXIudGNsOjI4MgotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MQotIzogbGliL29wdGlvbi50Y2w6MTAzIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIgbGliL3RyYW5zcG9ydC50Y2w6OTcKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTQ0IGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzIKKyM6IGxpYi9vcHRpb24udGNsOjEyNSBsaWIvcmVtb3RlX2FkZC50Y2w6MzIgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MgorIzogbGliL3Rvb2xzX2RsZy50Y2w6NDAgbGliL3Rvb2xzX2RsZy50Y2w6MjA0IGxpYi90b29sc19kbGcudGNsOjM1MgorIzogbGliL3RyYW5zcG9ydC50Y2w6MTA4CiBtc2dpZCAiQ2FuY2VsIgogbXNnc3RyICIiCiAKLSM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcgbGliL3Rvb2xzX2RsZy50Y2w6MzI4CiBtc2dpZCAiUmV2aXNpb24iCiBtc2dzdHIgIiIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzYgbGliL2JyYW5jaF9jcmVhdGUudGNsOjY5IGxpYi9vcHRpb24udGNsOjI0NAorIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzYgbGliL2JyYW5jaF9jcmVhdGUudGNsOjY5IGxpYi9vcHRpb24udGNsOjI4MAogbXNnaWQgIk9wdGlvbnMiCiBtc2dzdHIgIiIKIApAQCAtNTc1LDcgKzY3MCw3IEBACiBtc2dpZCAiQ3JlYXRlIE5ldyBCcmFuY2giCiBtc2dzdHIgIiIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjMxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzcxCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzcKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIiIKIApAQCAtNTgzLDcgKzY3OCw3IEBACiBtc2dpZCAiQnJhbmNoIE5hbWUiCiBtc2dzdHIgIiIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjQzCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMgbGliL3JlbW90ZV9hZGQudGNsOjM5IGxpYi90b29sc19kbGcudGNsOjUwCiBtc2dpZCAiTmFtZToiCiBtc2dzdHIgIiIKIApAQCAtNzIzLDkgKzgxOCw5IEBACiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4MgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODUKKyM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozOTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk5NQogbXNnaWQgIkJyb3dzZSIKIG1zZ3N0ciAiIgogCkBAIC03NDAsNiArODM1LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjE0NSBsaWIvY29uc29sZS50Y2w6ODEgbGliL2RhdGFiYXNlLnRjbDozMQorIzogbGliL3NzaGtleS50Y2w6NTMKIG1zZ2lkICJDbG9zZSIKIG1zZ3N0ciAiIgogCkBAIC04MzYsNyArOTMyLDcgQEAKIG1zZ2lkICJSZXNldCAnJXMnPyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2MworIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MzIgbGliL21lcmdlLnRjbDoxNjQgbGliL3Rvb2xzX2RsZy50Y2w6MzQzCiBtc2dpZCAiVmlzdWFsaXplIgogbXNnc3RyICIiCiAKQEAgLTg3NywyMjEgKzk3MywyMjUgQEAKIG1zZ2lkICJHaXQgR3VpIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODIKIG1zZ2lkICJDcmVhdGUgTmV3IFJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MwogbXNnaWQgIk5ldy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQogbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTA2CiBtc2dpZCAiQ2xvbmUuLi4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgzCiBtc2dpZCAiT3BlbiBFeGlzdGluZyBSZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExOQogbXNnaWQgIk9wZW4uLi4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMjYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTMyCiBtc2dpZCAiUmVjZW50IFJlcG9zaXRvcmllcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzgKIG1zZ2lkICJPcGVuIFJlY2VudCBSZXBvc2l0b3J5OiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjI5NiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMwMwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzA5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NzYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3CiBtc2dpZCAiRGlyZWN0b3J5OiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNQotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDA3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQzOQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGaWxlICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjAKIG1zZ2lkICJDbG9uZSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NgotbXNnaWQgIlVSTDoiCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MworbXNnaWQgIlNvdXJjZSBMb2NhdGlvbjoiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDg0Cittc2dpZCAiVGFyZ2V0IERpcmVjdG9yeToiCittc2dzdHIgIiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTYKIG1zZ2lkICJDbG9uZSBUeXBlOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDIKIG1zZ2lkICJTdGFuZGFyZCAoRmFzdCwgU2VtaS1SZWR1bmRhbnQsIEhhcmRsaW5rcykiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTA4CiBtc2dpZCAiRnVsbCBDb3B5IChTbG93ZXIsIFJlZHVuZGFudCBCYWNrdXApIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTA1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUxNAogbXNnaWQgIlNoYXJlZCAoRmFzdGVzdCwgTm90IFJlY29tbWVuZGVkLCBObyBCYWNrdXApIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTQxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg4Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjczNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgwNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTm90IGEgR2l0IHJlcG9zaXRvcnk6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTc3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4NgogbXNnaWQgIlN0YW5kYXJkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTAKIG1zZ2lkICJTaGFyZWQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjAyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkxvY2F0aW9uICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjIKIG1zZ2lkICJGYWlsZWQgdG8gY29uZmlndXJlIG9yaWdpbiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYyNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MzQKIG1zZ2lkICJDb3VudGluZyBvYmplY3RzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNQogbXNnaWQgImJ1Y2tldHMiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNvcHkgb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2ODggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDIKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTE0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjMKIG1zZ2lkICJUaGUgJ21hc3RlcicgYnJhbmNoIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MDEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEwCiBtc2dpZCAiSGFyZGxpbmtzIGFyZSB1bmF2YWlsYWJsZS4gIEZhbGxpbmcgYmFjayB0byBjb3B5aW5nLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MjIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGZyb20gJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzUzCiBtc2dpZCAiQ29weWluZyBvYmplY3RzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1NAogbXNnaWQgIktpQiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc2OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3Q6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzc5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OAogbXNnaWQgIkxpbmtpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4MAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODkKIG1zZ2lkICJvYmplY3RzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzg4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc5NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBoYXJkbGluayBvYmplY3Q6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODQzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1MgogbXNnaWQgIkNhbm5vdCBmZXRjaCBicmFuY2hlcyBhbmQgb2JqZWN0cy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODYzCiBtc2dpZCAiQ2Fubm90IGZldGNoIHRhZ3MuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODc4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg4NwogbXNnaWQgIkNhbm5vdCBkZXRlcm1pbmUgSEVBRC4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNsZWFudXAgJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCiBtc2dpZCAiQ2xvbmUgZmFpbGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDkKIG1zZ2lkICJObyBkZWZhdWx0IGJyYW5jaCBvYnRhaW5lZC4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHJlc29sdmUgJXMgYXMgYSBjb21taXQuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMgogbXNnaWQgIkNyZWF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTI0IGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjcKLSM6IGxpYi9pbmRleC50Y2w6MTkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMyBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI4CisjOiBsaWIvaW5kZXgudGNsOjE5NgogbXNnaWQgImZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTUzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk2MgogbXNnaWQgIkluaXRpYWwgZmlsZSBjaGVja291dCBmYWlsZWQuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTY5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3OAogbXNnaWQgIk9wZW4iCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTg4CiBtc2dpZCAiUmVwb3NpdG9yeToiCiBtc2dzdHIgIiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDI3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gb3BlbiByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiIgpAQCAtMTE1NCwxOSArMTI1NCwxOSBAQAogImN1cnJlbnQgbWVyZ2UgYWN0aXZpdHkuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6NDkKKyM6IGxpYi9jb21taXQudGNsOjQ4CiBtc2dpZCAiRXJyb3IgbG9hZGluZyBjb21taXQgZGF0YSBmb3IgYW1lbmQ6IgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjc2CisjOiBsaWIvY29tbWl0LnRjbDo3NQogbXNnaWQgIlVuYWJsZSB0byBvYnRhaW4geW91ciBpZGVudGl0eToiCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6ODEKKyM6IGxpYi9jb21taXQudGNsOjgwCiBtc2dpZCAiSW52YWxpZCBHSVRfQ09NTUlUVEVSX0lERU5UOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxMzMKKyM6IGxpYi9jb21taXQudGNsOjEzMgogbXNnaWQgIiIKICJMYXN0IHNjYW5uZWQgc3RhdGUgZG9lcyBub3QgbWF0Y2ggcmVwb3NpdG9yeSBzdGF0ZS5cbiIKICJcbiIKQEAgLTExNzYsNyArMTI3Niw3IEBACiAiVGhlIHJlc2NhbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCBub3cuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTU0CisjOiBsaWIvY29tbWl0LnRjbDoxNTUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVW5tZXJnZWQgZmlsZXMgY2Fubm90IGJlIGNvbW1pdHRlZC5cbiIKQEAgLTExODUsNyArMTI4NSw3IEBACiAiYmVmb3JlIGNvbW1pdHRpbmcuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTYyCisjOiBsaWIvY29tbWl0LnRjbDoxNjMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVW5rbm93biBmaWxlIHN0YXRlICVzIGRldGVjdGVkLlxuIgpAQCAtMTE5MywxNCArMTI5MywxNCBAQAogIkZpbGUgJXMgY2Fubm90IGJlIGNvbW1pdHRlZCBieSB0aGlzIHByb2dyYW0uXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTcwCisjOiBsaWIvY29tbWl0LnRjbDoxNzEKIG1zZ2lkICIiCiAiTm8gY2hhbmdlcyB0byBjb21taXQuXG4iCiAiXG4iCiAiWW91IG11c3Qgc3RhZ2UgYXQgbGVhc3QgMSBmaWxlIGJlZm9yZSB5b3UgY2FuIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxODMKKyM6IGxpYi9jb21taXQudGNsOjE4NgogbXNnaWQgIiIKICJQbGVhc2Ugc3VwcGx5IGEgY29tbWl0IG1lc3NhZ2UuXG4iCiAiXG4iCkBAIC0xMjExLDQ1ICsxMzExLDQ1IEBACiAiLSBSZW1haW5pbmcgbGluZXM6IERlc2NyaWJlIHdoeSB0aGlzIGNoYW5nZSBpcyBnb29kLlxuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjIwNworIzogbGliL2NvbW1pdC50Y2w6MjEwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAid2FybmluZzogVGNsIGRvZXMgbm90IHN1cHBvcnQgZW5jb2RpbmcgJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjIxCisjOiBsaWIvY29tbWl0LnRjbDoyMjYKIG1zZ2lkICJDYWxsaW5nIHByZS1jb21taXQgaG9vay4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMzYKKyM6IGxpYi9jb21taXQudGNsOjI0MQogbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBwcmUtY29tbWl0IGhvb2suIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjI1OQorIzogbGliL2NvbW1pdC50Y2w6MjY0CiBtc2dpZCAiQ2FsbGluZyBjb21taXQtbXNnIGhvb2suLi4iCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6Mjc0CisjOiBsaWIvY29tbWl0LnRjbDoyNzkKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgY29tbWl0LW1zZyBob29rLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyODcKKyM6IGxpYi9jb21taXQudGNsOjI5MgogbXNnaWQgIkNvbW1pdHRpbmcgY2hhbmdlcy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMDMKKyM6IGxpYi9jb21taXQudGNsOjMwOAogbXNnaWQgIndyaXRlLXRyZWUgZmFpbGVkOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMDQgbGliL2NvbW1pdC50Y2w6MzQ4IGxpYi9jb21taXQudGNsOjM2OAorIzogbGliL2NvbW1pdC50Y2w6MzA5IGxpYi9jb21taXQudGNsOjM1MyBsaWIvY29tbWl0LnRjbDozNzMKIG1zZ2lkICJDb21taXQgZmFpbGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMjEKKyM6IGxpYi9jb21taXQudGNsOjMyNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQiCiBtc2dzdHIgIiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzI2CisjOiBsaWIvY29tbWl0LnRjbDozMzEKIG1zZ2lkICIiCiAiTm8gY2hhbmdlcyB0byBjb21taXQuXG4iCiAiXG4iCkBAIC0xMjU4LDE5ICsxMzU4LDE5IEBACiAiQSByZXNjYW4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHN0YXJ0ZWQgbm93LlxuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjMzMworIzogbGliL2NvbW1pdC50Y2w6MzM4CiBtc2dpZCAiTm8gY2hhbmdlcyB0byBjb21taXQuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jb21taXQudGNsOjM0NworIzogbGliL2NvbW1pdC50Y2w6MzUyCiBtc2dpZCAiY29tbWl0LXRyZWUgZmFpbGVkOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDozNjcKKyM6IGxpYi9jb21taXQudGNsOjM3MgogbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvY29tbWl0LnRjbDo0NTQKKyM6IGxpYi9jb21taXQudGNsOjQ2MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNyZWF0ZWQgY29tbWl0ICVzOiAlcyIKIG1zZ3N0ciAiIgpAQCAtMTMzOSw3ICsxNDM5LDcgQEAKIG1zZ2lkICJJbnZhbGlkIGRhdGUgZnJvbSBHaXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9kaWZmLnRjbDo0NAorIzogbGliL2RpZmYudGNsOjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIk5vIGRpZmZlcmVuY2VzIGRldGVjdGVkLlxuIgpAQCAtMTM1Myw0OCArMTQ1Myw5MiBAQAogInRoZSBzYW1lIHN0YXRlLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvZGlmZi50Y2w6ODMKKyM6IGxpYi9kaWZmLnRjbDo5OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkxvYWRpbmcgZGlmZiBvZiAlcy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE2IGxpYi9kaWZmLnRjbDoxOTAKKyM6IGxpYi9kaWZmLnRjbDoxMjAKK21zZ2lkICIiCisiTE9DQUw6IGRlbGV0ZWRcbiIKKyJSRU1PVEU6XG4iCittc2dzdHIgIiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZGlmZi50Y2w6MTMyCittc2dpZCAiTE9DQUw6XG4iCittc2dzdHIgIiIKKworIzogbGliL2RpZmYudGNsOjEzNQorbXNnaWQgIlJFTU9URTpcbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZGlmZi50Y2w6MTk3IGxpYi9kaWZmLnRjbDoyOTYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gZGlzcGxheSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE3CisjOiBsaWIvZGlmZi50Y2w6MTk4CiBtc2dpZCAiRXJyb3IgbG9hZGluZyBmaWxlOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvZGlmZi50Y2w6MTI0CisjOiBsaWIvZGlmZi50Y2w6MjA1CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkgKHN1YnByb2plY3QpIgogbXNnc3RyICIiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMzYKKyM6IGxpYi9kaWZmLnRjbDoyMTcKIG1zZ2lkICIqIEJpbmFyeSBmaWxlIChub3Qgc2hvd2luZyBjb250ZW50KS4iCiBtc2dzdHIgIiIKIAotIzogbGliL2RpZmYudGNsOjE5MQotbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCisjOiBsaWIvZGlmZi50Y2w6MjIyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIiogVW50cmFja2VkIGZpbGUgaXMgJWQgYnl0ZXMuXG4iCisiKiBTaG93aW5nIG9ubHkgZmlyc3QgJWQgYnl0ZXMuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL2RpZmYudGNsOjMxMworIzogbGliL2RpZmYudGNsOjIyOAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIqIFVudHJhY2tlZCBmaWxlIGNsaXBwZWQgaGVyZSBieSAlcy5cbiIKKyIqIFRvIHNlZSB0aGUgZW50aXJlIGZpbGUsIHVzZSBhbiBleHRlcm5hbCBlZGl0b3IuXG4iCittc2dzdHIgIiIKKworIzogbGliL2RpZmYudGNsOjQzNgogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9kaWZmLnRjbDozMjAKKyM6IGxpYi9kaWZmLnRjbDo0NDMKIG1zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgaHVuay4iCiBtc2dzdHIgIiIKIAotIzogbGliL2RpZmYudGNsOjM4NgorIzogbGliL2RpZmYudGNsOjUwOQogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9kaWZmLnRjbDozOTQKKyM6IGxpYi9kaWZmLnRjbDo1MTcKIG1zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgbGluZS4iCiBtc2dzdHIgIiIKIAorIzogbGliL2VuY29kaW5nLnRjbDo0NDMKK21zZ2lkICJEZWZhdWx0IgorbXNnc3RyICIiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQ4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU3lzdGVtICglcykiCittc2dzdHIgIiIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NTkgbGliL2VuY29kaW5nLnRjbDo0NjUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAiIgorCiAjOiBsaWIvZXJyb3IudGNsOjIwIGxpYi9lcnJvci50Y2w6MTE0CiBtc2dpZCAiZXJyb3IiCiBtc2dzdHIgIiIKQEAgLTE0MjksMzggKzE1NzMsNDcgQEAKIG1zZ2lkICJVbmxvY2sgSW5kZXgiCiBtc2dzdHIgIiIKIAotIzogbGliL2luZGV4LnRjbDoyODIKKyM6IGxpYi9pbmRleC50Y2w6Mjg3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5zdGFnaW5nICVzIGZyb20gY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzEzCisjOiBsaWIvaW5kZXgudGNsOjMyNgogbXNnaWQgIlJlYWR5IHRvIGNvbW1pdC4iCiBtc2dzdHIgIiIKIAotIzogbGliL2luZGV4LnRjbDozMjYKKyM6IGxpYi9pbmRleC50Y2w6MzM5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzgxCisjOiBsaWIvaW5kZXgudGNsOjM5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJldmVydCBjaGFuZ2VzIGluIGZpbGUgJXM/IgogbXNnc3RyICIiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzgzCisjOiBsaWIvaW5kZXgudGNsOjM5OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJldmVydCBjaGFuZ2VzIGluIHRoZXNlICVpIGZpbGVzPyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvaW5kZXgudGNsOjM5MQorIzogbGliL2luZGV4LnRjbDo0MDYKIG1zZ2lkICJBbnkgdW5zdGFnZWQgY2hhbmdlcyB3aWxsIGJlIHBlcm1hbmVudGx5IGxvc3QgYnkgdGhlIHJldmVydC4iCiBtc2dzdHIgIiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiIgogCisjOiBsaWIvaW5kZXgudGNsOjQyNworbXNnaWQgIlJldmVydGluZyBzZWxlY3RlZCBmaWxlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiIgorCiAjOiBsaWIvbWVyZ2UudGNsOjEzCiBtc2dpZCAiIgogIkNhbm5vdCBtZXJnZSB3aGlsZSBhbWVuZGluZy5cbiIKQEAgLTE0NzgsNyArMTYzMSw3IEBACiAiVGhlIHJlc2NhbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCBub3cuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDo0NAorIzogbGliL21lcmdlLnRjbDo0NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb25mbGljdGVkIG1lcmdlLlxuIgpAQCAtMTQ4OSw3ICsxNjQyLDcgQEAKICJtZXJnZS4gIE9ubHkgdGhlbiBjYW4geW91IGJlZ2luIGFub3RoZXIgbWVyZ2UuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDo1NAorIzogbGliL21lcmdlLnRjbDo1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGFuZ2UuXG4iCkBAIC0xNTAwLDQxICsxNjUzLDQxIEBACiAid2lsbCBoZWxwIHlvdSBhYm9ydCBhIGZhaWxlZCBtZXJnZSwgc2hvdWxkIHRoZSBuZWVkIGFyaXNlLlxuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTA2CisjOiBsaWIvbWVyZ2UudGNsOjEwNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIG9mICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTE5CisjOiBsaWIvbWVyZ2UudGNsOjEyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdpbmcgJXMgYW5kICVzLi4uIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMwCisjOiBsaWIvbWVyZ2UudGNsOjEzMQogbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMyCisjOiBsaWIvbWVyZ2UudGNsOjEzMwogbXNnaWQgIk1lcmdlIGZhaWxlZC4gIENvbmZsaWN0IHJlc29sdXRpb24gaXMgcmVxdWlyZWQuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTU3CisjOiBsaWIvbWVyZ2UudGNsOjE1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdlIEludG8gJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDoxNzYKKyM6IGxpYi9tZXJnZS50Y2w6MTc3CiBtc2dpZCAiUmV2aXNpb24gVG8gTWVyZ2UiCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDoyMTEKKyM6IGxpYi9tZXJnZS50Y2w6MjEyCiBtc2dpZCAiIgogIkNhbm5vdCBhYm9ydCB3aGlsZSBhbWVuZGluZy5cbiIKICJcbiIKICJZb3UgbXVzdCBmaW5pc2ggYW1lbmRpbmcgdGhpcyBjb21taXQuXG4iCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDoyMjEKKyM6IGxpYi9tZXJnZS50Y2w6MjIyCiBtc2dpZCAiIgogIkFib3J0IG1lcmdlP1xuIgogIlxuIgpAQCAtMTU0Myw3ICsxNjk2LDcgQEAKICJDb250aW51ZSB3aXRoIGFib3J0aW5nIHRoZSBjdXJyZW50IG1lcmdlPyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIyNworIzogbGliL21lcmdlLnRjbDoyMjgKIG1zZ2lkICIiCiAiUmVzZXQgY2hhbmdlcz9cbiIKICJcbiIKQEAgLTE1NTIsMTQyICsxNzA1LDMyNSBAQAogIkNvbnRpbnVlIHdpdGggcmVzZXR0aW5nIHRoZSBjdXJyZW50IGNoYW5nZXM/IgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjM4CisjOiBsaWIvbWVyZ2UudGNsOjIzOQogbXNnaWQgIkFib3J0aW5nIgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjM4CisjOiBsaWIvbWVyZ2UudGNsOjIzOQogbXNnaWQgImZpbGVzIHJlc2V0IgogbXNnc3RyICIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjY2CisjOiBsaWIvbWVyZ2UudGNsOjI2NwogbXNnaWQgIkFib3J0IGZhaWxlZC4iCiBtc2dzdHIgIiIKIAotIzogbGliL21lcmdlLnRjbDoyNjgKKyM6IGxpYi9tZXJnZS50Y2w6MjY5CiBtc2dpZCAiQWJvcnQgY29tcGxldGVkLiAgUmVhZHkuIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjk1CisjOiBsaWIvbWVyZ2V0b29sLnRjbDo4Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgYmFzZSB2ZXJzaW9uPyIKK21zZ3N0ciAiIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo5Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGlzIGJyYW5jaD8iCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTAKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBvdGhlciBicmFuY2g/IgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIk5vdGUgdGhhdCB0aGUgZGlmZiBzaG93cyBvbmx5IGNvbmZsaWN0aW5nIGNoYW5nZXMuXG4iCisiXG4iCisiJXMgd2lsbCBiZSBvdmVyd3JpdHRlbi5cbiIKKyJcbiIKKyJUaGlzIG9wZXJhdGlvbiBjYW4gYmUgdW5kb25lIG9ubHkgYnkgcmVzdGFydGluZyB0aGUgbWVyZ2UuIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6NjAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBZGRpbmcgcmVzb2x1dGlvbiBmb3IgJXMiCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQxCittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0NgorbXNnaWQgIkNvbmZsaWN0IGZpbGUgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTm90IGEgR1VJIG1lcmdlIHRvb2w6ICclcyciCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0MworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgdGhlIG1lcmdlIHRvb2w6XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQ3Cittc2dpZCAiUnVubmluZyBtZXJnZSB0b29sLi4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM3NSBsaWIvbWVyZ2V0b29sLnRjbDozODMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGdsb2JhbCBlbmNvZGluZyAnJXMnIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MTE3CiBtc2dpZCAiUmVzdG9yZSBEZWZhdWx0cyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDo5OQorIzogbGliL29wdGlvbi50Y2w6MTIxCiBtc2dpZCAiU2F2ZSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMDkKKyM6IGxpYi9vcHRpb24udGNsOjEzMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIFJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MTEwCisjOiBsaWIvb3B0aW9uLnRjbDoxMzIKIG1zZ2lkICJHbG9iYWwgKEFsbCBSZXBvc2l0b3JpZXMpIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNgorIzogbGliL29wdGlvbi50Y2w6MTM4CiBtc2dpZCAiVXNlciBOYW1lIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNworIzogbGliL29wdGlvbi50Y2w6MTM5CiBtc2dpZCAiRW1haWwgQWRkcmVzcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTkKKyM6IGxpYi9vcHRpb24udGNsOjE0MQogbXNnaWQgIlN1bW1hcml6ZSBNZXJnZSBDb21taXRzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMAorIzogbGliL29wdGlvbi50Y2w6MTQyCiBtc2dpZCAiTWVyZ2UgVmVyYm9zaXR5IgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMQorIzogbGliL29wdGlvbi50Y2w6MTQzCiBtc2dpZCAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjMKKyM6IGxpYi9vcHRpb24udGNsOjE0NAorbXNnaWQgIlVzZSBNZXJnZSBUb29sIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE0NgogbXNnaWQgIlRydXN0IEZpbGUgTW9kaWZpY2F0aW9uIFRpbWVzdGFtcHMiCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI0CisjOiBsaWIvb3B0aW9uLnRjbDoxNDcKIG1zZ2lkICJQcnVuZSBUcmFja2luZyBCcmFuY2hlcyBEdXJpbmcgRmV0Y2giCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI1CisjOiBsaWIvb3B0aW9uLnRjbDoxNDgKIG1zZ2lkICJNYXRjaCBUcmFja2luZyBCcmFuY2hlcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjYKKyM6IGxpYi9vcHRpb24udGNsOjE0OQogbXNnaWQgIkJsYW1lIENvcHkgT25seSBPbiBDaGFuZ2VkIEZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNworIzogbGliL29wdGlvbi50Y2w6MTUwCiBtc2dpZCAiTWluaW11bSBMZXR0ZXJzIFRvIEJsYW1lIENvcHkgT24iCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI4CisjOiBsaWIvb3B0aW9uLnRjbDoxNTEKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTIKIG1zZ2lkICJOdW1iZXIgb2YgRGlmZiBDb250ZXh0IExpbmVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOQorIzogbGliL29wdGlvbi50Y2w6MTUzCiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2UgVGV4dCBXaWR0aCIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMzAKKyM6IGxpYi9vcHRpb24udGNsOjE1NAogbXNnaWQgIk5ldyBCcmFuY2ggTmFtZSBUZW1wbGF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxOTQKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MjMwCiBtc2dpZCAiU3BlbGxpbmcgRGljdGlvbmFyeToiCiBtc2dzdHIgIiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE4CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyMjIKKyM6IGxpYi9vcHRpb24udGNsOjI1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNob29zZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyMjgKKyM6IGxpYi9vcHRpb24udGNsOjI2NAogbXNnaWQgInB0LiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNDIKKyM6IGxpYi9vcHRpb24udGNsOjI3OAogbXNnaWQgIlByZWZlcmVuY2VzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjI3NworIzogbGliL29wdGlvbi50Y2w6MzE0CiBtc2dpZCAiRmFpbGVkIHRvIGNvbXBsZXRlbHkgc2F2ZSBvcHRpb25zOiIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNjUKKyM6IGxpYi9yZW1vdGUudGNsOjE2MworbXNnaWQgIlJlbW92ZSBSZW1vdGUiCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZS50Y2w6MTY4CiBtc2dpZCAiUHJ1bmUgZnJvbSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNzAKKyM6IGxpYi9yZW1vdGUudGNsOjE3MwogbXNnaWQgIkZldGNoIGZyb20iCiBtc2dzdHIgIiIKIAotIzogbGliL3JlbW90ZS50Y2w6MjEzCisjOiBsaWIvcmVtb3RlLnRjbDoyMTUKIG1zZ2lkICJQdXNoIHRvIgogbXNnc3RyICIiCiAKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxOQorbXNnaWQgIkFkZCBSZW1vdGUiCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI0Cittc2dpZCAiQWRkIE5ldyBSZW1vdGUiCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI4IGxpYi90b29sc19kbGcudGNsOjM2Cittc2dpZCAiQWRkIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDozNworbXNnaWQgIlJlbW90ZSBEZXRhaWxzIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo1MAorbXNnaWQgIkxvY2F0aW9uOiIKK21zZ3N0ciAiIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjIKK21zZ2lkICJGdXJ0aGVyIEFjdGlvbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAiIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzEKK21zZ2lkICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEwMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSByZW1vdGUgbmFtZS4iCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjExNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiclcycgaXMgbm90IGFuIGFjY2VwdGFibGUgcmVtb3RlIG5hbWUuIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzMgbGliL3RyYW5zcG9ydC50Y2w6NgorIywgdGNsLWZvcm1hdAorbXNnaWQgImZldGNoICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE1NworIywgdGNsLWZvcm1hdAorbXNnaWQgIkRvIG5vdCBrbm93IGhvdyB0byBpbml0aWFsaXplIHJlcG9zaXRvcnkgYXQgbG9jYXRpb24gJyVzJy4iCittc2dzdHIgIiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo2MworIzogbGliL3RyYW5zcG9ydC50Y2w6ODEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJwdXNoICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHVwIHRoZSAlcyAoYXQgJXMpIgorbXNnc3RyICIiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgorbXNnaWQgIkRlbGV0ZSBCcmFuY2ggUmVtb3RlbHkiCiBtc2dzdHIgIiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0NwogbXNnaWQgIkZyb20gUmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjUwIGxpYi90cmFuc3BvcnQudGNsOjEyMworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo1MCBsaWIvdHJhbnNwb3J0LnRjbDoxMzQKIG1zZ2lkICJSZW1vdGU6IgogbXNnc3RyICIiCiAKLSM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NjYgbGliL3RyYW5zcG9ydC50Y2w6MTM4Ci1tc2dpZCAiQXJiaXRyYXJ5IFVSTDoiCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjY2IGxpYi90cmFuc3BvcnQudGNsOjE0OQorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCiBtc2dzdHIgIiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo4NApAQCAtMTc1MCw2ICsyMDg2LDIyIEBACiBtc2dpZCAiU2Nhbm5pbmcgJXMuLi4iCiBtc2dzdHIgIiIKIAorIzogbGliL3NlYXJjaC50Y2w6MjEKK21zZ2lkICJGaW5kOiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyMworbXNnaWQgIk5leHQiCittc2dzdHIgIiIKKworIzogbGliL3NlYXJjaC50Y2w6MjQKK21zZ2lkICJQcmV2IgorbXNnc3RyICIiCisKKyM6IGxpYi9zZWFyY2gudGNsOjI1Cittc2dpZCAiQ2FzZS1TZW5zaXRpdmUiCittc2dzdHIgIiIKKwogIzogbGliL3Nob3J0Y3V0LnRjbDoyMCBsaWIvc2hvcnRjdXQudGNsOjYxCiBtc2dpZCAiQ2Fubm90IHdyaXRlIHNob3J0Y3V0OiIKIG1zZ3N0ciAiIgpAQCAtMTc4NywyMiArMjEzOSwxODIgQEAKIG1zZ2lkICJObyBTdWdnZXN0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg3CisjOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg4CiBtc2dpZCAiVW5leHBlY3RlZCBFT0YgZnJvbSBzcGVsbCBjaGVja2VyIgogbXNnc3RyICIiCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozOTEKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozOTIKIG1zZ2lkICJTcGVsbCBDaGVja2VyIEZhaWxlZCIKIG1zZ3N0ciAiIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRm91bmQgYSBwdWJsaWMga2V5IGluOiAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3Noa2V5LnRjbDo0MAorbXNnaWQgIkdlbmVyYXRlIEtleSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3Noa2V5LnRjbDo1NgorbXNnaWQgIkNvcHkgVG8gQ2xpcGJvYXJkIgorbXNnc3RyICIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIiIKKworIzogbGliL3NzaGtleS50Y2w6NzgKK21zZ2lkICJHZW5lcmF0aW5nLi4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjg0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBzdGFydCBzc2gta2V5Z2VuOlxuIgorIlxuIgorIiVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjExMQorbXNnaWQgIkdlbmVyYXRpb24gZmFpbGVkLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICIiCisKICM6IGxpYi9zdGF0dXNfYmFyLnRjbDo4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIC4uLiAlKmkgb2YgJSppICVzICglM2klJSkiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6NgorIzogbGliL3Rvb2xzLnRjbDo3NQogIywgdGNsLWZvcm1hdAotbXNnaWQgImZldGNoICVzIgorbXNnaWQgIlJ1bm5pbmcgJXMgcmVxdWlyZXMgYSBzZWxlY3RlZCBmaWxlLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHMudGNsOjkwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJ1biAlcz8iCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzLnRjbDoxMTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sOiAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHMudGNsOjExMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmc6ICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29scy50Y2w6MTQ5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBjb21wbGV0ZWQgc3VjY2VzZnVsbHk6ICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29scy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBmYWlsZWQ6ICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMworbXNnaWQgIkFkZCBnbG9iYWxseSIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0NQorbXNnaWQgIlRvb2wgRGV0YWlscyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0OAorbXNnaWQgIlVzZSAnLycgc2VwYXJhdG9ycyB0byBjcmVhdGUgYSBzdWJtZW51IHRyZWU6IgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjYxCittc2dpZCAiQ29tbWFuZDoiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NzQKK21zZ2lkICJTaG93IGEgZGlhbG9nIGJlZm9yZSBydW5uaW5nIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6ODUKK21zZ2lkICJBc2sgdGhlIHVzZXIgZm9yIGFkZGl0aW9uYWwgYXJndW1lbnRzIChzZXRzICRBUkdTKSIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5MgorbXNnaWQgIkRvbid0IHNob3cgdGhlIGNvbW1hbmQgb3V0cHV0IHdpbmRvdyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5NworbXNnaWQgIlJ1biBvbmx5IGlmIGEgZGlmZiBpcyBzZWxlY3RlZCAoJEZJTEVOQU1FIG5vdCBlbXB0eSkiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTIxCittc2dpZCAiUGxlYXNlIHN1cHBseSBhIG5hbWUgZm9yIHRoZSB0b29sLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxMjkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sICclcycgYWxyZWFkeSBleGlzdHMuIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE1MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3QgYWRkIHRvb2w6XG4iCisiJXMiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTkwCittc2dpZCAiUmVtb3ZlIFRvb2wiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTk2Cittc2dpZCAiUmVtb3ZlIFRvb2wgQ29tbWFuZHMiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIzNgorbXNnaWQgIihCbHVlIGRlbm90ZXMgcmVwb3NpdG9yeS1sb2NhbCB0b29scykiCittc2dzdHIgIiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6Mjk3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVuIENvbW1hbmQ6ICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMxMQorbXNnaWQgIkFyZ3VtZW50cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozNDgKK21zZ2lkICJPSyIKIG1zZ3N0ciAiIgogCiAjOiBsaWIvdHJhbnNwb3J0LnRjbDo3CkBAIC0xODIwLDQ1ICsyMzMyLDQ1IEBACiBtc2dpZCAiUHJ1bmluZyB0cmFja2luZyBicmFuY2hlcyBkZWxldGVkIGZyb20gJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MjUgbGliL3RyYW5zcG9ydC50Y2w6NzEKLSMsIHRjbC1mb3JtYXQKLW1zZ2lkICJwdXNoICVzIgotbXNnc3RyICIiCi0KICM6IGxpYi90cmFuc3BvcnQudGNsOjI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyBjaGFuZ2VzIHRvICVzIgogbXNnc3RyICIiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjcyCisjOiBsaWIvdHJhbnNwb3J0LnRjbDo2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk1pcnJvcmluZyB0byAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDo4MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgJXMgJXMgdG8gJXMiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6ODkKKyM6IGxpYi90cmFuc3BvcnQudGNsOjEwMAogbXNnaWQgIlB1c2ggQnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMTQKIG1zZ2lkICJTb3VyY2UgQnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTIwCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMzEKIG1zZ2lkICJEZXN0aW5hdGlvbiBSZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjE1OAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTY5CiBtc2dpZCAiVHJhbnNmZXIgT3B0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjAKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3MQogbXNnaWQgIkZvcmNlIG92ZXJ3cml0ZSBleGlzdGluZyBicmFuY2ggKG1heSBkaXNjYXJkIGNoYW5nZXMpIgogbXNnc3RyICIiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjE2NAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTc1CiBtc2dpZCAiVXNlIHRoaW4gcGFjayAoZm9yIHNsb3cgbmV0d29yayBjb25uZWN0aW9ucykiCiBtc2dzdHIgIiIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTY4CisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxNzkKIG1zZ2lkICJJbmNsdWRlIHRhZ3MiCiBtc2dzdHIgIiIKZGlmZiAtLWdpdCBhL2dpdC1ndWkvcG8vaHUucG8gYi9naXQtZ3VpL3BvL2h1LnBvCmluZGV4IDI4NzYwZWQuLmY3NjFiNjQgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvcG8vaHUucG8KKysrIGIvZ2l0LWd1aS9wby9odS5wbwpAQCAtNyw4ICs3LDggQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0LWd1aS1pIDE4blxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0wMy0xNCAwNzoxOCswMTAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0wMy0xNCAxNzoyNCswMTAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTItMDggMDg6MzEtMDgwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTItMTAgMTU6MDArMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTWlrbG9zIFZham5hIDx2bWlrbG9zQGZydWdhbHdhcmUub3JnPlxuIgogIkxhbmd1YWdlLVRlYW06IEh1bmdhcmlhblxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCkBAIC0xNiwzMyArMTYsMzMgQEAKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCiAKLSM6IGdpdC1ndWkuc2g6NDEgZ2l0LWd1aS5zaDo2MzQgZ2l0LWd1aS5zaDo2NDggZ2l0LWd1aS5zaDo2NjEgZ2l0LWd1aS5zaDo3NDQKLSM6IGdpdC1ndWkuc2g6NzYzCisjOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6NzM3IGdpdC1ndWkuc2g6NzUxIGdpdC1ndWkuc2g6NzY0IGdpdC1ndWkuc2g6ODQ3CisjOiBnaXQtZ3VpLnNoOjg2NgogbXNnaWQgImdpdC1ndWk6IGZhdGFsIGVycm9yIgogbXNnc3RyICJnaXQtZ3VpOiB2w6lnemV0ZXMgaGliYSIKIAotIzogZ2l0LWd1aS5zaDo1OTMKKyM6IGdpdC1ndWkuc2g6Njg5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBmb250IHNwZWNpZmllZCBpbiAlczoiCiBtc2dzdHIgIsOJcnbDqW55dGVsZW4gZm9udCBsZXR0IG1lZ2FkdmEgaXR0OiAlczoiCiAKLSM6IGdpdC1ndWkuc2g6NjIwCisjOiBnaXQtZ3VpLnNoOjcyMwogbXNnaWQgIk1haW4gRm9udCIKIG1zZ3N0ciAiRsWRIGJldMWxdMOtcHVzIgogCi0jOiBnaXQtZ3VpLnNoOjYyMQorIzogZ2l0LWd1aS5zaDo3MjQKIG1zZ2lkICJEaWZmL0NvbnNvbGUgRm9udCIKIG1zZ3N0ciAiRGlmZi9rb256b2wgYmV0xbF0w61wdXMiCiAKLSM6IGdpdC1ndWkuc2g6NjM1CisjOiBnaXQtZ3VpLnNoOjczOAogbXNnaWQgIkNhbm5vdCBmaW5kIGdpdCBpbiBQQVRILiIKIG1zZ3N0ciAiQSBnaXQgbmVtIHRhbMOhbGhhdMOzIGEgUEFUSC1iYW4uIgogCi0jOiBnaXQtZ3VpLnNoOjY2MgorIzogZ2l0LWd1aS5zaDo3NjUKIG1zZ2lkICJDYW5ub3QgcGFyc2UgR2l0IHZlcnNpb24gc3RyaW5nOiIKIG1zZ3N0ciAiTmVtIMOpcnRlbG1lemhldMWRIGEgR2l0IHZlcnppw7Mgc3p0cmluZzoiCiAKLSM6IGdpdC1ndWkuc2g6NjgwCisjOiBnaXQtZ3VpLnNoOjc4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJHaXQgdmVyc2lvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiIKQEAgLTYxLDM3OSArNjEsNDQ1IEBACiAiXG4iCiAiRmVsdMOpdGVsZXpoZXRqw7xrLCBob2d5IGEoeikgJyVzJyB2ZXJ6acOzamEgbGVnYWzDoWJiIDEuNS4wP1xuIgogCi0jOiBnaXQtZ3VpLnNoOjkxOAorIzogZ2l0LWd1aS5zaDoxMDYyCiBtc2dpZCAiR2l0IGRpcmVjdG9yeSBub3QgZm91bmQ6IgogbXNnc3RyICJBIEdpdCBrw7ZueXZ0w6FyIG5lbSB0YWzDoWxoYXTDszoiCiAKLSM6IGdpdC1ndWkuc2g6OTI1CisjOiBnaXQtZ3VpLnNoOjEwNjkKIG1zZ2lkICJDYW5ub3QgbW92ZSB0byB0b3Agb2Ygd29ya2luZyBkaXJlY3Rvcnk6IgogbXNnc3RyICJOZW0gbGVoZXQgYSBtdW5rYWvDtm55dnTDoXIgdGV0ZWrDqXJlIGzDqXBuaToiCiAKLSM6IGdpdC1ndWkuc2g6OTMyCisjOiBnaXQtZ3VpLnNoOjEwNzYKIG1zZ2lkICJDYW5ub3QgdXNlIGZ1bm55IC5naXQgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiTmVtIGhhc3puw6FsaGF0w7MgdmljY2VzIC5naXQga8O2bnl2dMOhcjoiCiAKLSM6IGdpdC1ndWkuc2g6OTM3CisjOiBnaXQtZ3VpLnNoOjEwODEKIG1zZ2lkICJObyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiTmluY3MgbXVua2Frw7ZueXZ0w6FyIgogCi0jOiBnaXQtZ3VpLnNoOjEwODQgbGliL2NoZWNrb3V0X29wLnRjbDoyODMKKyM6IGdpdC1ndWkuc2g6MTI0NyBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQogbXNnaWQgIlJlZnJlc2hpbmcgZmlsZSBzdGF0dXMuLi4iCiBtc2dzdHIgIkEgZsOhamxvayBzdMOhdHVzesOhbmFrIGZyaXNzw610w6lzZS4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMTQ5CisjOiBnaXQtZ3VpLnNoOjEzMDMKIG1zZ2lkICJTY2FubmluZyBmb3IgbW9kaWZpZWQgZmlsZXMgLi4uIgogbXNnc3RyICJNw7Nkb3PDrXRvdHQgZsOhamxvayBrZXJlc8Opc2UgLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjEzMjQgbGliL2Jyb3dzZXIudGNsOjI0NgorIzogZ2l0LWd1aS5zaDoxMzY3Cittc2dpZCAiQ2FsbGluZyBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4uLiIKK21zZ3N0ciAiQSBwcmVwYXJlLWNvbW1pdC1tc2cgaHVyb2sgbWVnaMOtdsOhc2EuLi4iCisKKyM6IGdpdC1ndWkuc2g6MTM4NAorbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4iCittc2dzdHIgIkEgY29tbWl0b3QgbWVnYWthZMOhbHlvenRhIGEgcHJlcGFyZS1jb21taXQtbXNnIGh1cm9rLiIKKworIzogZ2l0LWd1aS5zaDoxNTQyIGxpYi9icm93c2VyLnRjbDoyNDYKIG1zZ2lkICJSZWFkeS4iCiBtc2dzdHIgIkvDqXN6LiIKIAotIzogZ2l0LWd1aS5zaDoxNTkwCisjOiBnaXQtZ3VpLnNoOjE4MTkKIG1zZ2lkICJVbm1vZGlmaWVkIgogbXNnc3RyICJOZW0gbcOzZG9zw610b3R0IgogCi0jOiBnaXQtZ3VpLnNoOjE1OTIKKyM6IGdpdC1ndWkuc2g6MTgyMQogbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICJNw7Nkb3PDrXRvdHQsIGRlIG5lbSBraXbDoWxhc3p0b3R0IgogCi0jOiBnaXQtZ3VpLnNoOjE1OTMgZ2l0LWd1aS5zaDoxNTk4CisjOiBnaXQtZ3VpLnNoOjE4MjIgZ2l0LWd1aS5zaDoxODMwCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIktpdsOhbGFzenR2YSBjb21taXRvbMOhc3JhIgogCi0jOiBnaXQtZ3VpLnNoOjE1OTQgZ2l0LWd1aS5zaDoxNTk5CisjOiBnaXQtZ3VpLnNoOjE4MjMgZ2l0LWd1aS5zaDoxODMxCiBtc2dpZCAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIlLDqXN6ZWsga2l2w6FsYXN6dHZhIGNvbW1pdG9sw6FzcmEiCiAKLSM6IGdpdC1ndWkuc2g6MTU5NSBnaXQtZ3VpLnNoOjE2MDAKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKIG1zZ3N0ciAiS2l2w6FsYXN6dHZhIGNvbW1pdG9sw6FzcmEsIGhpw6FueXrDsyIKIAotIzogZ2l0LWd1aS5zaDoxNTk3CisjOiBnaXQtZ3VpLnNoOjE4MjYKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgbm90IHN0YWdlZCIKK21zZ3N0ciAiRsOhamwgdMOtcHVzIG1lZ3bDoWx0b3pvdHQsIG5lbSBraXbDoWxhc3p0b3R0IgorCisjOiBnaXQtZ3VpLnNoOjE4MjcKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgc3RhZ2VkIgorbXNnc3RyICJBIGbDoWpsdMOtcHVzIG1lZ3bDoWx0b3pvdHQsIGtpdsOhbGFzenRvdHQiCisKKyM6IGdpdC1ndWkuc2g6MTgyOQogbXNnaWQgIlVudHJhY2tlZCwgbm90IHN0YWdlZCIKIG1zZ3N0ciAiTmVtIGvDtnZldGV0dCwgbmVtIGtpdsOhbGFzenRvdHQiCiAKLSM6IGdpdC1ndWkuc2g6MTYwMgorIzogZ2l0LWd1aS5zaDoxODM0CiBtc2dpZCAiTWlzc2luZyIKIG1zZ3N0ciAiSGnDoW55esOzIgogCi0jOiBnaXQtZ3VpLnNoOjE2MDMKKyM6IGdpdC1ndWkuc2g6MTgzNQogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCIKIG1zZ3N0ciAiS2l2w6FsYXN6dHZhIGVsdMOhdm9sw610w6FzcmEiCiAKLSM6IGdpdC1ndWkuc2g6MTYwNAorIzogZ2l0LWd1aS5zaDoxODM2CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsLCBzdGlsbCBwcmVzZW50IgogbXNnc3RyICJLaXbDoWxhc3p0dmEgZWx0w6F2b2zDrXTDoXNyYSwgamVsZW5sZWcgaXMgZWzDqXJoZXTFkSIKIAotIzogZ2l0LWd1aS5zaDoxNjA2IGdpdC1ndWkuc2g6MTYwNyBnaXQtZ3VpLnNoOjE2MDggZ2l0LWd1aS5zaDoxNjA5CisjOiBnaXQtZ3VpLnNoOjE4MzggZ2l0LWd1aS5zaDoxODM5IGdpdC1ndWkuc2g6MTg0MCBnaXQtZ3VpLnNoOjE4NDEKKyM6IGdpdC1ndWkuc2g6MTg0MiBnaXQtZ3VpLnNoOjE4NDMKIG1zZ2lkICJSZXF1aXJlcyBtZXJnZSByZXNvbHV0aW9uIgogbXNnc3RyICJNZXJnZSBmZWxvbGTDoXMgc3rDvGtzw6lnZXMiCiAKLSM6IGdpdC1ndWkuc2g6MTY0NAorIzogZ2l0LWd1aS5zaDoxODc4CiBtc2dpZCAiU3RhcnRpbmcgZ2l0ay4uLiBwbGVhc2Ugd2FpdC4uLiIKIG1zZ3N0ciAiQSBnaXRrIGluZMOtdMOhc2EuLi4gdsOhcmp1bmsuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MTY1MwotIywgdGNsLWZvcm1hdAotbXNnaWQgIiIKLSJVbmFibGUgdG8gc3RhcnQgZ2l0azpcbiIKLSJcbiIKLSIlcyBkb2VzIG5vdCBleGlzdCIKLW1zZ3N0ciAiIgotIkEgZ2l0ayBpbmTDrXTDoXNhIHNpa2VydGVsZW46XG4iCi0iXG4iCi0iQSh6KSAlcyBuZW0gbMOpdGV6aWsiCisjOiBnaXQtZ3VpLnNoOjE4ODcKK21zZ2lkICJDb3VsZG4ndCBmaW5kIGdpdGsgaW4gUEFUSCIKK21zZ3N0ciAiQSBnaXRrIG5lbSB0YWzDoWxoYXTDsyBhIFBBVEgtYmFuLiIKIAotIzogZ2l0LWd1aS5zaDoxODYwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKKyM6IGdpdC1ndWkuc2g6MjI4MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM2CiBtc2dpZCAiUmVwb3NpdG9yeSIKIG1zZ3N0ciAiUmVww7MiCiAKLSM6IGdpdC1ndWkuc2g6MTg2MQorIzogZ2l0LWd1aS5zaDoyMjgxCiBtc2dpZCAiRWRpdCIKIG1zZ3N0ciAiU3plcmtlc3p0w6lzIgogCi0jOiBnaXQtZ3VpLnNoOjE4NjMgbGliL2Nob29zZV9yZXYudGNsOjU2MQorIzogZ2l0LWd1aS5zaDoyMjgzIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKIG1zZ2lkICJCcmFuY2giCiBtc2dzdHIgIkJyYW5jaCIKIAotIzogZ2l0LWd1aS5zaDoxODY2IGxpYi9jaG9vc2VfcmV2LnRjbDo1NDgKKyM6IGdpdC1ndWkuc2g6MjI4NiBsaWIvY2hvb3NlX3Jldi50Y2w6NTQ4CiBtc2dpZCAiQ29tbWl0QEBub3VuIgogbXNnc3RyICJDb21taXRAQGbFkW7DqXYiCiAKLSM6IGdpdC1ndWkuc2g6MTg2OSBsaWIvbWVyZ2UudGNsOjEyMCBsaWIvbWVyZ2UudGNsOjE0OSBsaWIvbWVyZ2UudGNsOjE2NworIzogZ2l0LWd1aS5zaDoyMjg5IGxpYi9tZXJnZS50Y2w6MTIxIGxpYi9tZXJnZS50Y2w6MTUwIGxpYi9tZXJnZS50Y2w6MTY4CiBtc2dpZCAiTWVyZ2UiCiBtc2dzdHIgIk1lcmdlIgogCi0jOiBnaXQtZ3VpLnNoOjE4NzAgbGliL2Nob29zZV9yZXYudGNsOjU1NworIzogZ2l0LWd1aS5zaDoyMjkwIGxpYi9jaG9vc2VfcmV2LnRjbDo1NTcKIG1zZ2lkICJSZW1vdGUiCiBtc2dzdHIgIlTDoXZvbGkiCiAKLSM6IGdpdC1ndWkuc2g6MTg3OQorIzogZ2l0LWd1aS5zaDoyMjkzCittc2dpZCAiVG9vbHMiCittc2dzdHIgIkVzemvDtnrDtmsiCisKKyM6IGdpdC1ndWkuc2g6MjMwMgorbXNnaWQgIkV4cGxvcmUgV29ya2luZyBDb3B5IgorbXNnc3RyICJNdW5rYW3DoXNvbGF0IGZlbGZlZGV6w6lzZSIKKworIzogZ2l0LWd1aS5zaDoyMzA3CiBtc2dpZCAiQnJvd3NlIEN1cnJlbnQgQnJhbmNoJ3MgRmlsZXMiCiBtc2dzdHIgIkEgamVsZW5sZWdpIGJyYW5jaCBmw6FqbGphaW5hayBiw7ZuZ8Opc3rDqXNlIgogCi0jOiBnaXQtZ3VpLnNoOjE4ODMKKyM6IGdpdC1ndWkuc2g6MjMxMQogbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMuLi4iCiBtc2dzdHIgIkEgYnJhbmNoIGbDoWpsamFpbmFrIGLDtm5nw6lzesOpc2UuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MTg4OAorIzogZ2l0LWd1aS5zaDoyMzE2CiBtc2dpZCAiVmlzdWFsaXplIEN1cnJlbnQgQnJhbmNoJ3MgSGlzdG9yeSIKIG1zZ3N0ciAiQSBqZWxlbmxlZ2kgYnJhbmNoIHTDtnJ0w6luZXTDqW5layB2aXp1YWxpesOhbMOhc2EiCiAKLSM6IGdpdC1ndWkuc2g6MTg5MgorIzogZ2l0LWd1aS5zaDoyMzIwCiBtc2dpZCAiVmlzdWFsaXplIEFsbCBCcmFuY2ggSGlzdG9yeSIKIG1zZ3N0ciAiQXogw7Zzc3plcyBicmFuY2ggdMO2cnTDqW5ldMOpbmVrIHZpenVhbGl6w6Fsw6FzYSIKIAotIzogZ2l0LWd1aS5zaDoxODk5CisjOiBnaXQtZ3VpLnNoOjIzMjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJCcm93c2UgJXMncyBGaWxlcyIKIG1zZ3N0ciAiQSh6KSAlcyBicmFuY2ggZsOhamxqYWluYWsgYsO2bmfDqXN6w6lzZSIKIAotIzogZ2l0LWd1aS5zaDoxOTAxCisjOiBnaXQtZ3VpLnNoOjIzMjkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJWaXN1YWxpemUgJXMncyBIaXN0b3J5IgogbXNnc3RyICJBKHopICVzIGJyYW5jaCB0w7ZydMOpbmV0w6luZWsgdml6dWFsaXrDoWzDoXNhIgogCi0jOiBnaXQtZ3VpLnNoOjE5MDYgbGliL2RhdGFiYXNlLnRjbDoyNyBsaWIvZGF0YWJhc2UudGNsOjY3CisjOiBnaXQtZ3VpLnNoOjIzMzQgbGliL2RhdGFiYXNlLnRjbDoyNyBsaWIvZGF0YWJhc2UudGNsOjY3CiBtc2dpZCAiRGF0YWJhc2UgU3RhdGlzdGljcyIKIG1zZ3N0ciAiQWRhdGLDoXppcyBzdGF0aXN6dGlrw6FrIgogCi0jOiBnaXQtZ3VpLnNoOjE5MDkgbGliL2RhdGFiYXNlLnRjbDozNAorIzogZ2l0LWd1aS5zaDoyMzM3IGxpYi9kYXRhYmFzZS50Y2w6MzQKIG1zZ2lkICJDb21wcmVzcyBEYXRhYmFzZSIKIG1zZ3N0ciAiQWRhdGLDoXppcyB0w7Ztw7Zyw610w6lzZSIKIAotIzogZ2l0LWd1aS5zaDoxOTEyCisjOiBnaXQtZ3VpLnNoOjIzNDAKIG1zZ2lkICJWZXJpZnkgRGF0YWJhc2UiCiBtc2dzdHIgIkFkYXRiw6F6aXMgZWxsZW7FkXJ6w6lzZSIKIAotIzogZ2l0LWd1aS5zaDoxOTE5IGdpdC1ndWkuc2g6MTkyMyBnaXQtZ3VpLnNoOjE5MjcgbGliL3Nob3J0Y3V0LnRjbDo3CisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKICM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQogbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCiBtc2dzdHIgIkFzenRhbCBpa29uIGzDqXRyZWhvesOhc2EiCiAKLSM6IGdpdC1ndWkuc2g6MTkzMiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE3NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4NQorIzogZ2l0LWd1aS5zaDoyMzYzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTgzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTkxCiBtc2dpZCAiUXVpdCIKIG1zZ3N0ciAiS2lsw6lww6lzIgogCi0jOiBnaXQtZ3VpLnNoOjE5MzkKKyM6IGdpdC1ndWkuc2g6MjM3MQogbXNnaWQgIlVuZG8iCiBtc2dzdHIgIlZpc3N6YXZvbsOhcyIKIAotIzogZ2l0LWd1aS5zaDoxOTQyCisjOiBnaXQtZ3VpLnNoOjIzNzQKIG1zZ2lkICJSZWRvIgogbXNnc3RyICJNw6lnaXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk0NiBnaXQtZ3VpLnNoOjI0NDMKKyM6IGdpdC1ndWkuc2g6MjM3OCBnaXQtZ3VpLnNoOjI5MzcKIG1zZ2lkICJDdXQiCiBtc2dzdHIgIktpdsOhZ8OhcyIKIAotIzogZ2l0LWd1aS5zaDoxOTQ5IGdpdC1ndWkuc2g6MjQ0NiBnaXQtZ3VpLnNoOjI1MjAgZ2l0LWd1aS5zaDoyNjE0CisjOiBnaXQtZ3VpLnNoOjIzODEgZ2l0LWd1aS5zaDoyOTQwIGdpdC1ndWkuc2g6MzAxNCBnaXQtZ3VpLnNoOjMwOTYKICM6IGxpYi9jb25zb2xlLnRjbDo2OQogbXNnaWQgIkNvcHkiCiBtc2dzdHIgIk3DoXNvbMOhcyIKIAotIzogZ2l0LWd1aS5zaDoxOTUyIGdpdC1ndWkuc2g6MjQ0OQorIzogZ2l0LWd1aS5zaDoyMzg0IGdpdC1ndWkuc2g6Mjk0MwogbXNnaWQgIlBhc3RlIgogbXNnc3RyICJCZWlsbGVzenTDqXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk1NSBnaXQtZ3VpLnNoOjI0NTIgbGliL2JyYW5jaF9kZWxldGUudGNsOjI2CisjOiBnaXQtZ3VpLnNoOjIzODcgZ2l0LWd1aS5zaDoyOTQ2IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozOAogbXNnaWQgIkRlbGV0ZSIKIG1zZ3N0ciAiVMO2cmzDqXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk1OSBnaXQtZ3VpLnNoOjI0NTYgZ2l0LWd1aS5zaDoyNjE4IGxpYi9jb25zb2xlLnRjbDo3MQorIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6Mjk1MCBnaXQtZ3VpLnNoOjMxMDAgbGliL2NvbnNvbGUudGNsOjcxCiBtc2dpZCAiU2VsZWN0IEFsbCIKIG1zZ3N0ciAiTWluZGVudCBraXbDoWxhc3p0IgogCi0jOiBnaXQtZ3VpLnNoOjE5NjgKKyM6IGdpdC1ndWkuc2g6MjQwMAogbXNnaWQgIkNyZWF0ZS4uLiIKIG1zZ3N0ciAiTMOpdHJlaG96w6FzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzQKKyM6IGdpdC1ndWkuc2g6MjQwNgogbXNnaWQgIkNoZWNrb3V0Li4uIgogbXNnc3RyICJDaGVja291dC4uLiIKIAotIzogZ2l0LWd1aS5zaDoxOTgwCisjOiBnaXQtZ3VpLnNoOjI0MTIKIG1zZ2lkICJSZW5hbWUuLi4iCiBtc2dzdHIgIsOBdG5ldmV6w6lzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5ODUgZ2l0LWd1aS5zaDoyMDg1CisjOiBnaXQtZ3VpLnNoOjI0MTcKIG1zZ2lkICJEZWxldGUuLi4iCiBtc2dzdHIgIlTDtnJsw6lzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5OTAKKyM6IGdpdC1ndWkuc2g6MjQyMgogbXNnaWQgIlJlc2V0Li4uIgogbXNnc3RyICJWaXNzemHDoWxsw610w6FzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwMDIgZ2l0LWd1aS5zaDoyMzg5Ci1tc2dpZCAiTmV3IENvbW1pdCIKLW1zZ3N0ciAiw5pqIGNvbW1pdCIKKyM6IGdpdC1ndWkuc2g6MjQzMgorbXNnaWQgIkRvbmUiCittc2dzdHIgIkvDqXN6IgogCi0jOiBnaXQtZ3VpLnNoOjIwMTAgZ2l0LWd1aS5zaDoyMzk2Ci1tc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCi1tc2dzdHIgIlV0b2xzw7MgY29tbWl0IGphdsOtdMOhc2EiCi0KLSM6IGdpdC1ndWkuc2g6MjAxOSBnaXQtZ3VpLnNoOjIzNTYgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQotbXNnaWQgIlJlc2NhbiIKLW1zZ3N0ciAiS2VyZXPDqXMgw7pqcmEiCi0KLSM6IGdpdC1ndWkuc2g6MjAyNQotbXNnaWQgIlN0YWdlIFRvIENvbW1pdCIKLW1zZ3N0ciAiS2l2w6FsYXN6dMOhcyBjb21taXRvbMOhc3JhIgotCi0jOiBnaXQtZ3VpLnNoOjIwMzEKLW1zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKLW1zZ3N0ciAiTcOzZG9zw610b3R0IGbDoWpsb2sga2l2w6FsYXN6dMOhc2EgY29tbWl0b2zDoXNyYSIKLQotIzogZ2l0LWd1aS5zaDoyMDM3Ci1tc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKLW1zZ3N0ciAiQ29tbWl0YmEgdmFsw7Mga2l2w6FsYXN6dMOhcyB2aXNzemF2b27DoXNhIgotCi0jOiBnaXQtZ3VpLnNoOjIwNDIgbGliL2luZGV4LnRjbDozOTUKLW1zZ2lkICJSZXZlcnQgQ2hhbmdlcyIKLW1zZ3N0ciAiVsOhbHRvenRhdMOhc29rIHZpc3N6YcOhbGzDrXTDoXNhIgotCi0jOiBnaXQtZ3VpLnNoOjIwNDkgZ2l0LWd1aS5zaDoyMzY4IGdpdC1ndWkuc2g6MjQ2NwotbXNnaWQgIlNpZ24gT2ZmIgotbXNnc3RyICJBbMOhw61yIgotCi0jOiBnaXQtZ3VpLnNoOjIwNTMgZ2l0LWd1aS5zaDoyMzcyCisjOiBnaXQtZ3VpLnNoOjI0MzQKIG1zZ2lkICJDb21taXRAQHZlcmIiCiBtc2dzdHIgIkNvbW1pdEBAaWdlIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjQKKyM6IGdpdC1ndWkuc2g6MjQ0MyBnaXQtZ3VpLnNoOjI4NzgKK21zZ2lkICJOZXcgQ29tbWl0IgorbXNnc3RyICLDmmogY29tbWl0IgorCisjOiBnaXQtZ3VpLnNoOjI0NTEgZ2l0LWd1aS5zaDoyODg1Cittc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCittc2dzdHIgIlV0b2xzw7MgY29tbWl0IGphdsOtdMOhc2EiCisKKyM6IGdpdC1ndWkuc2g6MjQ2MSBnaXQtZ3VpLnNoOjI4MzkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQorbXNnaWQgIlJlc2NhbiIKK21zZ3N0ciAiS2VyZXPDqXMgw7pqcmEiCisKKyM6IGdpdC1ndWkuc2g6MjQ2NworbXNnaWQgIlN0YWdlIFRvIENvbW1pdCIKK21zZ3N0ciAiS2l2w6FsYXN6dMOhcyBjb21taXRvbMOhc3JhIgorCisjOiBnaXQtZ3VpLnNoOjI0NzMKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKK21zZ3N0ciAiTcOzZG9zw610b3R0IGbDoWpsb2sga2l2w6FsYXN6dMOhc2EgY29tbWl0b2zDoXNyYSIKKworIzogZ2l0LWd1aS5zaDoyNDc5Cittc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKK21zZ3N0ciAiQ29tbWl0YmEgdmFsw7Mga2l2w6FsYXN6dMOhcyB2aXNzemF2b27DoXNhIgorCisjOiBnaXQtZ3VpLnNoOjI0ODQgbGliL2luZGV4LnRjbDo0MTAKK21zZ2lkICJSZXZlcnQgQ2hhbmdlcyIKK21zZ3N0ciAiVsOhbHRvenRhdMOhc29rIHZpc3N6YcOhbGzDrXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjI0OTEgZ2l0LWd1aS5zaDozMDgzCittc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCittc2dzdHIgIktldmVzZWJiIGvDtnJueWV6ZXQgbXV0YXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjI0OTUgZ2l0LWd1aS5zaDozMDg3Cittc2dpZCAiU2hvdyBNb3JlIENvbnRleHQiCittc2dzdHIgIlTDtmJiIGvDtnJueWV6ZXQgbXV0YXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjI1MDIgZ2l0LWd1aS5zaDoyODUyIGdpdC1ndWkuc2g6Mjk2MQorbXNnaWQgIlNpZ24gT2ZmIgorbXNnc3RyICJBbMOhw61yIgorCisjOiBnaXQtZ3VpLnNoOjI1MTgKIG1zZ2lkICJMb2NhbCBNZXJnZS4uLiIKIG1zZ3N0ciAiSGVseWkgbWVyZ2UuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA2OQorIzogZ2l0LWd1aS5zaDoyNTIzCiBtc2dpZCAiQWJvcnQgTWVyZ2UuLi4iCiBtc2dzdHIgIk1lcmdlIG1lZ3N6YWvDrXTDoXNhLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwODEKKyM6IGdpdC1ndWkuc2g6MjUzNSBnaXQtZ3VpLnNoOjI1NzUKK21zZ2lkICJBZGQuLi4iCittc2dzdHIgIkhvenrDoWFkw6FzLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1MzkKIG1zZ2lkICJQdXNoLi4uIgogbXNnc3RyICJQdXNoLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwOTIgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MQotbXNnaWQgIkFwcGxlIgotbXNnc3RyICJBcHBsZSIKKyM6IGdpdC1ndWkuc2g6MjU0MworbXNnaWQgIkRlbGV0ZSBCcmFuY2guLi4iCittc2dzdHIgIkJyYW5jaCB0w7ZybMOpc2UuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA5NSBnaXQtZ3VpLnNoOjIxMTcgbGliL2Fib3V0LnRjbDoxNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgogbXNnc3RyICJOw6l2amVneTogJXMiCiAKLSM6IGdpdC1ndWkuc2g6MjA5OQorIzogZ2l0LWd1aS5zaDoyNTU3CiBtc2dpZCAiUHJlZmVyZW5jZXMuLi4iCiBtc2dzdHIgIkJlw6FsbMOtdMOhc29rLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxMDcgZ2l0LWd1aS5zaDoyNjM5CisjOiBnaXQtZ3VpLnNoOjI1NjUgZ2l0LWd1aS5zaDozMTI5CiBtc2dpZCAiT3B0aW9ucy4uLiIKIG1zZ3N0ciAiT3BjacOzay4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcKKyM6IGdpdC1ndWkuc2g6MjU3NgorbXNnaWQgIlJlbW92ZS4uLiIKK21zZ3N0ciAiRWx0w6F2b2zDrXTDoXMuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCiBtc2dpZCAiSGVscCIKIG1zZ3N0ciAiU2Vnw610c8OpZyIKIAotIzogZ2l0LWd1aS5zaDoyMTU0CisjOiBnaXQtZ3VpLnNoOjI2MTEKIG1zZ2lkICJPbmxpbmUgRG9jdW1lbnRhdGlvbiIKIG1zZ3N0ciAiT25saW5lIGRva3VtZW50w6FjacOzIgogCi0jOiBnaXQtZ3VpLnNoOjIyMzgKKyM6IGdpdC1ndWkuc2g6MjYxNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTYKK21zZ2lkICJTaG93IFNTSCBLZXkiCittc2dzdHIgIlNTSCBrdWxjcyBtdXRhdMOhc2EiCisKKyM6IGdpdC1ndWkuc2g6MjcyMQogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBjYW5ub3Qgc3RhdCBwYXRoICVzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAidsOpZ3pldGVzIGhpYmE6IG5lbSDDqXJoZXTFkSBlbCBhKHopICVzIMO6dHZvbmFsOiBOaW5jcyBpbHllbiBmw6FqbCB2YWd5IGvDtm55dnTDoXIiCiAKLSM6IGdpdC1ndWkuc2g6MjI3MQorIzogZ2l0LWd1aS5zaDoyNzU0CiBtc2dpZCAiQ3VycmVudCBCcmFuY2g6IgogbXNnc3RyICJKZWxlbmxlZ2kgYnJhbmNoOiIKIAotIzogZ2l0LWd1aS5zaDoyMjkyCisjOiBnaXQtZ3VpLnNoOjI3NzUKIG1zZ2lkICJTdGFnZWQgQ2hhbmdlcyAoV2lsbCBDb21taXQpIgogbXNnc3RyICJLaXbDoWxhc3p0b3R0IHbDoWx0b3p0YXTDoXNvayAoY29tbWl0b2x2YSBsZXN6KSIKIAotIzogZ2l0LWd1aS5zaDoyMzEyCisjOiBnaXQtZ3VpLnNoOjI3OTUKIG1zZ2lkICJVbnN0YWdlZCBDaGFuZ2VzIgogbXNnc3RyICJLaXbDoWxhc3p0YXRsYW4gdsOhbHRvenRhdMOhc29rIgogCi0jOiBnaXQtZ3VpLnNoOjIzNjIKKyM6IGdpdC1ndWkuc2g6Mjg0NQogbXNnaWQgIlN0YWdlIENoYW5nZWQiCiBtc2dzdHIgIlbDoWx0b3p0YXTDoXNvayBraXbDoWxhc3p0w6FzYSIKIAotIzogZ2l0LWd1aS5zaDoyMzc4IGxpYi90cmFuc3BvcnQudGNsOjkzIGxpYi90cmFuc3BvcnQudGNsOjE4MgorIzogZ2l0LWd1aS5zaDoyODY0IGxpYi90cmFuc3BvcnQudGNsOjEwNCBsaWIvdHJhbnNwb3J0LnRjbDoxOTMKIG1zZ2lkICJQdXNoIgogbXNnc3RyICJQdXNoIgogCi0jOiBnaXQtZ3VpLnNoOjI0MDgKKyM6IGdpdC1ndWkuc2g6Mjg5OQogbXNnaWQgIkluaXRpYWwgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJLZXpkZXRpIGNvbW1pdCDDvHplbmV0OiIKIAotIzogZ2l0LWd1aS5zaDoyNDA5CisjOiBnaXQtZ3VpLnNoOjI5MDAKIG1zZ2lkICJBbWVuZGVkIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiSmF2w610w7MgY29tbWl0IMO8emVuZXQ6IgogCi0jOiBnaXQtZ3VpLnNoOjI0MTAKKyM6IGdpdC1ndWkuc2g6MjkwMQogbXNnaWQgIkFtZW5kZWQgSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIktlemRldGkgamF2w610w7MgY29tbWl0IMO8emVuZXQ6IgogCi0jOiBnaXQtZ3VpLnNoOjI0MTEKKyM6IGdpdC1ndWkuc2g6MjkwMgogbXNnaWQgIkFtZW5kZWQgTWVyZ2UgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJKYXbDrXTDsyBtZXJnZSBjb21taXQgw7x6ZW5ldDoiCiAKLSM6IGdpdC1ndWkuc2g6MjQxMgorIzogZ2l0LWd1aS5zaDoyOTAzCiBtc2dpZCAiTWVyZ2UgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJNZXJnZSBjb21taXQgw7x6ZW5ldDoiCiAKLSM6IGdpdC1ndWkuc2g6MjQxMworIzogZ2l0LWd1aS5zaDoyOTA0CiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJDb21taXQgw7x6ZW5ldDoiCiAKLSM6IGdpdC1ndWkuc2g6MjQ1OSBnaXQtZ3VpLnNoOjI2MjIgbGliL2NvbnNvbGUudGNsOjczCisjOiBnaXQtZ3VpLnNoOjI5NTMgZ2l0LWd1aS5zaDozMTA0IGxpYi9jb25zb2xlLnRjbDo3MwogbXNnaWQgIkNvcHkgQWxsIgogbXNnc3RyICLDlnNzemVzIG3DoXNvbMOhc2EiCiAKLSM6IGdpdC1ndWkuc2g6MjQ4MyBsaWIvYmxhbWUudGNsOjEwNworIzogZ2l0LWd1aS5zaDoyOTc3IGxpYi9ibGFtZS50Y2w6MTA0CiBtc2dpZCAiRmlsZToiCiBtc2dzdHIgIkbDoWpsOiIKIAotIzogZ2l0LWd1aS5zaDoyNTg5Ci1tc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgotbXNnc3RyICJIdW5rIGFsa2FsbWF6w6FzYS92aXNzemHDoWxsw610w6FzYSIKLQotIzogZ2l0LWd1aS5zaDoyNTk1Ci1tc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCi1tc2dzdHIgIktldmVzZWJiIGvDtnJueWV6ZXQgbXV0YXTDoXNhIgotCi0jOiBnaXQtZ3VpLnNoOjI2MDIKLW1zZ2lkICJTaG93IE1vcmUgQ29udGV4dCIKLW1zZ3N0ciAiVMO2YmIga8O2cm55ZXpldCBtdXRhdMOhc2EiCi0KLSM6IGdpdC1ndWkuc2g6MjYxMAorIzogZ2l0LWd1aS5zaDozMDkyCiBtc2dpZCAiUmVmcmVzaCIKIG1zZ3N0ciAiRnJpc3PDrXTDqXMiCiAKLSM6IGdpdC1ndWkuc2g6MjYzMQorIzogZ2l0LWd1aS5zaDozMTEzCiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJGb250IG3DqXJldCBjc8O2a2tlbnTDqXNlIgogCi0jOiBnaXQtZ3VpLnNoOjI2MzUKKyM6IGdpdC1ndWkuc2g6MzExNwogbXNnaWQgIkluY3JlYXNlIEZvbnQgU2l6ZSIKIG1zZ3N0ciAiRsO2bnQgbcOpcmV0IG7DtnZlbMOpc2UiCiAKLSM6IGdpdC1ndWkuc2g6MjY0NgorIzogZ2l0LWd1aS5zaDozMTI1IGxpYi9ibGFtZS50Y2w6MjgxCittc2dpZCAiRW5jb2RpbmciCittc2dzdHIgIkvDs2RvbMOhcyIKKworIzogZ2l0LWd1aS5zaDozMTM2Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICJIdW5rIGFsa2FsbWF6w6FzYS92aXNzemHDoWxsw610w6FzYSIKKworIzogZ2l0LWd1aS5zaDozMTQxCittc2dpZCAiQXBwbHkvUmV2ZXJzZSBMaW5lIgorbXNnc3RyICJTb3IgYWxrYWxtYXrDoXNhL3Zpc3N6YcOhbGzDrXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjMxNTEKK21zZ2lkICJSdW4gTWVyZ2UgVG9vbCIKK21zZ3N0ciAiTWVyZ2UgZXN6a8O2eiBmdXR0YXTDoXNhIgorCisjOiBnaXQtZ3VpLnNoOjMxNTYKK21zZ2lkICJVc2UgUmVtb3RlIFZlcnNpb24iCittc2dzdHIgIlTDoXZvbGkgdmVyemnDsyBoYXN6bsOhbGF0YSIKKworIzogZ2l0LWd1aS5zaDozMTYwCittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIkhlbHlpIHZlcnppw7MgaGFzem7DoWxhdGEiCisKKyM6IGdpdC1ndWkuc2g6MzE2NAorbXNnaWQgIlJldmVydCBUbyBCYXNlIgorbXNnc3RyICJWaXNzemHDoWxsw610w6FzIGF6IGFsYXBob3oiCisKKyM6IGdpdC1ndWkuc2g6MzE4MwogbXNnaWQgIlVuc3RhZ2UgSHVuayBGcm9tIENvbW1pdCIKIG1zZ3N0ciAiSHVuayB0w7ZybMOpc2UgY29tbWl0YsOzbCIKIAotIzogZ2l0LWd1aS5zaDoyNjQ4CisjOiBnaXQtZ3VpLnNoOjMxODQKK21zZ2lkICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiCittc2dzdHIgIkEgc29yIGtpdsOhbGFzenTDoXPDoW5hayB0w7ZybMOpc2UiCisKKyM6IGdpdC1ndWkuc2g6MzE4NgogbXNnaWQgIlN0YWdlIEh1bmsgRm9yIENvbW1pdCIKIG1zZ3N0ciAiSHVuayBraXbDoWxhc3p0w6FzYSBjb21taXRiYSIKIAotIzogZ2l0LWd1aS5zaDoyNjY3CisjOiBnaXQtZ3VpLnNoOjMxODcKK21zZ2lkICJTdGFnZSBMaW5lIEZvciBDb21taXQiCittc2dzdHIgIlNvciBraXbDoWxhc3p0w6FzYSBjb21taXRiYSIKKworIzogZ2l0LWd1aS5zaDozMjEwCiBtc2dpZCAiSW5pdGlhbGl6aW5nLi4uIgogbXNnc3RyICJJbmljaWFsaXrDoWzDoXMuLi4iCiAKLSM6IGdpdC1ndWkuc2g6Mjc2MgorIzogZ2l0LWd1aS5zaDozMzE1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlBvc3NpYmxlIGVudmlyb25tZW50IGlzc3VlcyBleGlzdC5cbiIKQEAgLTQ1MCw3ICs1MTYsNyBAQAogImluZMOtdG90dCBmb2x5YW1hdG9rIMOhbHRhbDpcbiIKICJcbiIKIAotIzogZ2l0LWd1aS5zaDoyNzkyCisjOiBnaXQtZ3VpLnNoOjMzNDUKIG1zZ2lkICIiCiAiXG4iCiAiVGhpcyBpcyBkdWUgdG8gYSBrbm93biBpc3N1ZSB3aXRoIHRoZVxuIgpAQCAtNDYwLDcgKzUyNiw3IEBACiAiRXogYSBDeWd3aW4gw6FsdGFsIHRlcmplc3p0ZXR0IFRjbCBiaW7DoXJpc2JhblxuIgogImzDqXbFkSBpc21lcnQgaGliYSBtaWF0dCB2YW4uIgogCi0jOiBnaXQtZ3VpLnNoOjI3OTcKKyM6IGdpdC1ndWkuc2g6MzM1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTQ4MSw2NCArNTQ3LDEwOCBAQAogbXNnaWQgImdpdC1ndWkgLSBhIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSBmb3IgR2l0LiIKIG1zZ3N0ciAiZ2l0LWd1aSAtIGVneSBncmFmaWt1cyBmZWzDvGxldCBhIEdpdGhlei4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzcKKyM6IGxpYi9ibGFtZS50Y2w6NzIKIG1zZ2lkICJGaWxlIFZpZXdlciIKIG1zZ3N0ciAiRsOhamwgbsOpesWRIgogCi0jOiBsaWIvYmxhbWUudGNsOjgxCisjOiBsaWIvYmxhbWUudGNsOjc4CiBtc2dpZCAiQ29tbWl0OiIKIG1zZ3N0ciAiQ29tbWl0OiIKIAotIzogbGliL2JsYW1lLnRjbDoyNjQKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIkNvbW1pdCBtw6Fzb2zDoXNhIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4NAorIzogbGliL2JsYW1lLnRjbDoyNzUKK21zZ2lkICJGaW5kIFRleHQuLi4iCittc2dzdHIgIlN6w7Z2ZWcga2VyZXPDqXNlLi4uIgorCisjOiBsaWIvYmxhbWUudGNsOjI4NAorbXNnaWQgIkRvIEZ1bGwgQ29weSBEZXRlY3Rpb24iCittc2dzdHIgIlRlbGplcyBtw6Fzb2xhdC3DqXJ6w6lrZWzDqXMgYmVrYXBjc29sw6FzYSIKKworIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiVMO2cnTDqW5ldGkga8O2cm55ZXpldCBtdXRhdMOhc2EiCisKKyM6IGxpYi9ibGFtZS50Y2w6MjkxCittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiU3rDvGzFkSBjb21taXQgdml6c2fDoWxhdGEiCisKKyM6IGxpYi9ibGFtZS50Y2w6NDUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVhZGluZyAlcy4uLiIKIG1zZ3N0ciAiQSh6KSAlcyBvbHZhc8Ohc2EuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NDg4CisjOiBsaWIvYmxhbWUudGNsOjU1NwogbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgogbXNnc3RyICJBIG3DoXNvbMOhc3Qvw6F0bmV2ZXrDqXN0IGvDtnZldMWRIGFubm90w6FjacOzayBiZXTDtmx0w6lzZS4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo1MDgKKyM6IGxpYi9ibGFtZS50Y2w6NTc3CiBtc2dpZCAibGluZXMgYW5ub3RhdGVkIgogbXNnc3RyICJzb3IgYW5ub3TDoWx2YSIKIAotIzogbGliL2JsYW1lLnRjbDo2ODkKKyM6IGxpYi9ibGFtZS50Y2w6NzY5CiBtc2dpZCAiTG9hZGluZyBvcmlnaW5hbCBsb2NhdGlvbiBhbm5vdGF0aW9ucy4uLiIKIG1zZ3N0ciAiQXogZXJlZGV0aSBoZWx5IGFubm90w6FjacOzayBiZXTDtmx0w6lzZS4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo2OTIKKyM6IGxpYi9ibGFtZS50Y2w6NzcyCiBtc2dpZCAiQW5ub3RhdGlvbiBjb21wbGV0ZS4iCiBtc2dzdHIgIkF6IGFubm90w6FjacOzIGvDqXN6LiIKIAotIzogbGliL2JsYW1lLnRjbDo3NDYKKyM6IGxpYi9ibGFtZS50Y2w6ODAyCittc2dpZCAiQnVzeSIKK21zZ3N0ciAiRWxmb2dsYWx0IgorCisjOiBsaWIvYmxhbWUudGNsOjgwMworbXNnaWQgIkFubm90YXRpb24gcHJvY2VzcyBpcyBhbHJlYWR5IHJ1bm5pbmcuIgorbXNnc3RyICJBeiBhbm5vdMOhY2nDs3MgZm9seWFtYXQgbcOhciBmdXQuIgorCisjOiBsaWIvYmxhbWUudGNsOjg0MgorbXNnaWQgIlJ1bm5pbmcgdGhvcm91Z2ggY29weSBkZXRlY3Rpb24uLi4iCittc2dzdHIgIkZ1dHRhdMOhcyBtw6Fzb2zDoXMtw6lyesOpa2Vsw6lzZW4ga2VyZXN6dMO8bC4uLiIKKworIzogbGliL2JsYW1lLnRjbDo5MTAKIG1zZ2lkICJMb2FkaW5nIGFubm90YXRpb24uLi4iCiBtc2dzdHIgIkF6IGFubm90w6FjacOzIGJldMO2bHTDqXNlLi4uIgogCi0jOiBsaWIvYmxhbWUudGNsOjgwMgorIzogbGliL2JsYW1lLnRjbDo5NjMKIG1zZ2lkICJBdXRob3I6IgogbXNnc3RyICJTemVyesWROiIKIAotIzogbGliL2JsYW1lLnRjbDo4MDYKKyM6IGxpYi9ibGFtZS50Y2w6OTY3CiBtc2dpZCAiQ29tbWl0dGVyOiIKIG1zZ3N0ciAiQ29tbWl0ZXI6IgogCi0jOiBsaWIvYmxhbWUudGNsOjgxMQorIzogbGliL2JsYW1lLnRjbDo5NzIKIG1zZ2lkICJPcmlnaW5hbCBGaWxlOiIKIG1zZ3N0ciAiRXJlZGV0aSBmw6FqbDoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6OTI1CisjOiBsaWIvYmxhbWUudGNsOjEwMjAKK21zZ2lkICJDYW5ub3QgZmluZCBIRUFEIGNvbW1pdDoiCittc2dzdHIgIk5lbSB0YWzDoWxoYXTDsyBhIEhFQUQgY29tbWl0OiIKKworIzogbGliL2JsYW1lLnRjbDoxMDc1Cittc2dpZCAiQ2Fubm90IGZpbmQgcGFyZW50IGNvbW1pdDoiCittc2dzdHIgIk5lbSB0YWzDoWxoYXTDsyBhIHN6w7xsxZEgY29tbWl0OiIKKworIzogbGliL2JsYW1lLnRjbDoxMDkwCittc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgcGFyZW50IgorbXNnc3RyICJOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYSBzesO8bMWRdCIKKworIzogbGliL2JsYW1lLnRjbDoxMDkxIGxpYi9kaWZmLnRjbDoyOTcKK21zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgorbXNnc3RyICJIaWJhIGEgZGlmZiBiZXTDtmx0w6lzZSBrw7Z6YmVuOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMxCiBtc2dpZCAiT3JpZ2luYWxseSBCeToiCiBtc2dzdHIgIkVyZWRldGkgc3plcnrFkToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6OTMxCisjOiBsaWIvYmxhbWUudGNsOjEyMzcKIG1zZ2lkICJJbiBGaWxlOiIKIG1zZ3N0ciAiRWJiZW4gYSBmw6FqbGJhbjoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6OTM2CisjOiBsaWIvYmxhbWUudGNsOjEyNDIKIG1zZ2lkICJDb3BpZWQgT3IgTW92ZWQgSGVyZSBCeToiCiBtc2dzdHIgIklkZSBtw6Fzb2x0YSB2YWd5IGhlbHllenRlOiIKIApAQCAtNTUyLDE2ICs2NjIsMTggQEAKIAogIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MjcgbGliL2JyYW5jaF9jcmVhdGUudGNsOjM1CiAjOiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MzIgbGliL2JyYW5jaF9yZW5hbWUudGNsOjMwIGxpYi9icm93c2VyLnRjbDoyODIKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NTIyIGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzEKLSM6IGxpYi9vcHRpb24udGNsOjEwMyBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjQyIGxpYi90cmFuc3BvcnQudGNsOjk3CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjU0NCBsaWIvY2hvb3NlX2ZvbnQudGNsOjQzIGxpYi9tZXJnZS50Y2w6MTcyCisjOiBsaWIvb3B0aW9uLnRjbDoxMjUgbGliL3JlbW90ZV9hZGQudGNsOjMyIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIKKyM6IGxpYi90b29sc19kbGcudGNsOjQwIGxpYi90b29sc19kbGcudGNsOjIwNCBsaWIvdG9vbHNfZGxnLnRjbDozNTIKKyM6IGxpYi90cmFuc3BvcnQudGNsOjEwOAogbXNnaWQgIkNhbmNlbCIKIG1zZ3N0ciAiTcOpZ3NlbSIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NyBsaWIvdG9vbHNfZGxnLnRjbDozMjgKIG1zZ2lkICJSZXZpc2lvbiIKIG1zZ3N0ciAiUmV2w616acOzIgogCi0jOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjQyCisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjgwCiBtc2dpZCAiT3B0aW9ucyIKIG1zZ3N0ciAiT3BjacOzayIKIApAQCAtNTgxLDcgKzY5Myw3IEBACiBtc2dpZCAiQ3JlYXRlIE5ldyBCcmFuY2giCiBtc2dzdHIgIsOaaiBicmFuY2ggbMOpdHJlaG96w6FzYSIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjMxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzcxCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzcKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIkzDqXRyZWhvesOhcyIKIApAQCAtNTg5LDcgKzcwMSw3IEBACiBtc2dpZCAiQnJhbmNoIE5hbWUiCiBtc2dzdHIgIkJyYW5jaCBuZXZlIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MyBsaWIvcmVtb3RlX2FkZC50Y2w6MzkgbGliL3Rvb2xzX2RsZy50Y2w6NTAKIG1zZ2lkICJOYW1lOiIKIG1zZ3N0ciAiTsOpdjoiCiAKQEAgLTYxMyw3ICs3MjUsNyBAQAogbXNnaWQgIkZhc3QgRm9yd2FyZCBPbmx5IgogbXNnc3RyICJDc2FrIGZhc3QgZm9yd2FyZCIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjg1IGxpYi9jaGVja291dF9vcC50Y2w6NTE0CisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6ODUgbGliL2NoZWNrb3V0X29wLnRjbDo1MzYKIG1zZ2lkICJSZXNldCIKIG1zZ3N0ciAiVmlzc3phw6FsbMOtdMOhcyIKIApAQCAtNzAzLDcgKzgxNSw3IEBACiBtc2dpZCAiUGxlYXNlIHNlbGVjdCBhIGJyYW5jaCB0byByZW5hbWUuIgogbXNnc3RyICJWw6FsYXNzenVuayBraSBlZ3kgw6F0bmV2ZXplbmTFkSBicmFuY2hldC4iCiAKLSM6IGxpYi9icmFuY2hfcmVuYW1lLnRjbDo5NiBsaWIvY2hlY2tvdXRfb3AudGNsOjE3OQorIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjk2IGxpYi9jaGVja291dF9vcC50Y2w6MjAxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJBKHopICclcycgYnJhbmNoIG3DoXIgbMOpdGV6aWsuIgpAQCAtNzM0LDMyICs4NDYsMzkgQEAKIG1zZ2lkICJCcm93c2UgQnJhbmNoIEZpbGVzIgogbXNnc3RyICJBIGJyYW5jaCBmw6FqbGphaW5hayBiw7ZuZ8Opc3rDqXNlIgogCi0jOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODcKKyM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozOTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk5NQogbXNnaWQgIkJyb3dzZSIKIG1zZ3N0ciAiQsO2bmfDqXN6w6lzIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjc5CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjg0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmV0Y2hpbmcgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiQSh6KSAlcyBsZXTDtmx0w6lzZSBpbm5lbjogJXMiCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6MTI3CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjEzMgogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBDYW5ub3QgcmVzb2x2ZSAlcyIKIG1zZ3N0ciAidsOpZ3pldGVzOiBOZW0gbGVoZXQgZmVsb2xkYW5pIGEga8O2dmV0a2V6xZF0OiAlcyIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDoxNDAgbGliL2NvbnNvbGUudGNsOjgxIGxpYi9kYXRhYmFzZS50Y2w6MzEKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MTQ1IGxpYi9jb25zb2xlLnRjbDo4MSBsaWIvZGF0YWJhc2UudGNsOjMxCisjOiBsaWIvc3Noa2V5LnRjbDo1MwogbXNnaWQgIkNsb3NlIgogbXNnc3RyICJCZXrDoXLDoXMiCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6MTY5CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjE3NAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0LiIKIG1zZ3N0ciAiQSh6KSAnJXMnIGJyYW5jaCBuZW0gbMOpdGV6aWsuIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjIwNgorIzogbGliL2NoZWNrb3V0X29wLnRjbDoxOTMKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gY29uZmlndXJlIHNpbXBsaWZpZWQgZ2l0LXB1bGwgZm9yICclcycuIgorbXNnc3RyICIiCisiTmVtIHNpa2Vyw7xsdCBiZcOhbGzDrXRhbmkgYXogZWd5c3plcsWxc8OtdGV0dCBnaXQtcHVsbC10IGEoeikgJyVzJyBzesOhbcOhcmEuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjIyOAogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJCcmFuY2ggJyVzJyBhbHJlYWR5IGV4aXN0cy5cbiIKQEAgLTc3MiwyMSArODkxLDIxIEBACiAiTmVtIGxlaGV0IGZhc3QtZm9yd2FyZG9sbmkgYSBrw7Z2ZXRrZXrFkWjDtno6ICVzLlxuIgogIkVneSBtZXJnZSBzesO8a3PDqWdlcy4iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6MjIwCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI0MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdlIHN0cmF0ZWd5ICclcycgbm90IHN1cHBvcnRlZC4iCiBtc2dzdHIgIkEoeikgJyVzJyBtZXJnZSBzdHJhdGVneSBuZW0gdMOhbW9nYXRvdHQuIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjIzOQorIzogbGliL2NoZWNrb3V0X29wLnRjbDoyNjEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gdXBkYXRlICclcycuIgogbXNnc3RyICJOZW0gc2lrZXLDvGx0IGZyaXNzw610ZW5pIGEga8O2dmV0a2V6xZF0OiAnJXMnLiIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDoyNTEKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MjczCiBtc2dpZCAiU3RhZ2luZyBhcmVhIChpbmRleCkgaXMgYWxyZWFkeSBsb2NrZWQuIgogbXNnc3RyICJBIGtpdsOhbGFzenTDoXNpIHRlcsO8bGV0IChpbmRleCkgbcOhciB6w6Fyb2x2YSB2YW4uIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI2NgorIzogbGliL2NoZWNrb3V0X29wLnRjbDoyODgKIG1zZ2lkICIiCiAiTGFzdCBzY2FubmVkIHN0YXRlIGRvZXMgbm90IG1hdGNoIHJlcG9zaXRvcnkgc3RhdGUuXG4iCiAiXG4iCkBAIC04MDMsMzAgKzkyMiwzMCBAQAogIlxuIgogIkF6IMO6anJha2VyZXPDqXMgbW9zdCBhdXRvbWF0aWt1c2FuIGVsIGZvZyBpbmR1bG5pLlxuIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjMyMgorIzogbGliL2NoZWNrb3V0X29wLnRjbDozNDQKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeSB0byAnJXMnLi4uIgogbXNnc3RyICJBIG11bmtrw7ZueXZ0w6FyIGZyaXNzacOtdMOpc2UgYSBrw7Z2ZXRrZXrFkXJlOiAnJXMnLi4uIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjMyMworIzogbGliL2NoZWNrb3V0X29wLnRjbDozNDUKIG1zZ2lkICJmaWxlcyBjaGVja2VkIG91dCIKIG1zZ3N0ciAiZsOhamwgZnJpc3PDrXR2ZSIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDozNTMKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6Mzc1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWJvcnRlZCBjaGVja291dCBvZiAnJXMnIChmaWxlIGxldmVsIG1lcmdpbmcgaXMgcmVxdWlyZWQpLiIKIG1zZ3N0ciAiQSh6KSAnJXMnIGNoZWNrb3V0amEgbWVnc3pha8OtdHZhIChmw6FqbHN6aW50xbEgbWVyZ2Utw7Zsw6lzIHN6w7xrc8OpZ2VzKS4iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6MzU0CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjM3NgogbXNnaWQgIkZpbGUgbGV2ZWwgbWVyZ2UgcmVxdWlyZWQuIgogbXNnc3RyICJGw6FqbHN6aW50xbEgbWVyZ2Utw7Zsw6lzIHN6w7xrc8OpZ2VzLiIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDozNTgKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MzgwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiU3RheWluZyBvbiBicmFuY2ggJyVzJy4iCiBtc2dzdHIgIkplbGVubGVnIGEoeikgJyVzJyBicmFuY2hlbi4iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NDI5CisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjQ1MQogbXNnaWQgIiIKICJZb3UgYXJlIG5vIGxvbmdlciBvbiBhIGxvY2FsIGJyYW5jaC5cbiIKICJcbiIKQEAgLTgzOCwzMSArOTU3LDMxIEBACiAiSGEgZWd5IGJyYW5jaGVuIHN6ZXJldG7DqW5rIGxlbm5pLCBob3p6dW5rIGzDqXRyZSBlZ3lldCBheiAnRXogYSBsZXbDoWxhc3p0b3R0ICIKICJjaGVja291dCctYsOzbC4iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NDQ2IGxpYi9jaGVja291dF9vcC50Y2w6NDUwCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjQ2OCBsaWIvY2hlY2tvdXRfb3AudGNsOjQ3MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNoZWNrZWQgb3V0ICclcycuIgogbXNnc3RyICInJXMnIGtpZmVqdHZlLiIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDo0NzgKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTAwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXR0aW5nICclcycgdG8gJyVzJyB3aWxsIGxvc2UgdGhlIGZvbGxvd2luZyBjb21taXRzOiIKIG1zZ3N0ciAiIgogIkEoeikgJyVzJyAtPiAnJXMnIHZpc3N6YcOhbGzDrXTDoXMgYSBrw7Z2ZXRrZXrFkSBjb21taXRvayBlbHZlc3p0w6lzw6l0IGplbGVudGk6IgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUwMAorIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MjIKIG1zZ2lkICJSZWNvdmVyaW5nIGxvc3QgY29tbWl0cyBtYXkgbm90IGJlIGVhc3kuIgogbXNnc3RyICJBeiBlbHZlc3pldHQgY29tbWl0b2sgaGVseXJlw6FsbMOtdMOhc2EgbmVtIGJpenRvcywgaG9neSBlZ3lzemVyxbEuIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUwNQorIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXNldCAnJXMnPyIKIG1zZ3N0ciAiVmlzc3phw6FsbMOtdGp1ayBhIGvDtnZldGtlesWRdDogJyVzJz8iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NTEwIGxpYi9tZXJnZS50Y2w6MTYzCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2NCBsaWIvdG9vbHNfZGxnLnRjbDozNDMKIG1zZ2lkICJWaXN1YWxpemUiCiBtc2dzdHIgIlZpenVhbGl6w6Fsw6FzIgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjU3OAorIzogbGliL2NoZWNrb3V0X29wLnRjbDo2MDAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiRmFpbGVkIHRvIHNldCBjdXJyZW50IGJyYW5jaC5cbiIKQEAgLTkwNywyMjMgKzEwMjYsMjI3IEBACiBtc2dpZCAiR2l0IEd1aSIKIG1zZ3N0ciAiR2l0IEd1aSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4MgogbXNnaWQgIkNyZWF0ZSBOZXcgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiw5pqIHJlcMOzIGzDqXRyZWhvesOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTMKIG1zZ2lkICJOZXcuLi4iCiBtc2dzdHIgIsOaai4uLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2MAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjUKIG1zZ2lkICJDbG9uZSBFeGlzdGluZyBSZXBvc2l0b3J5IgogbXNnc3RyICJMw6l0ZXrFkSByZXDDsyBtw6Fzb2zDoXNhIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDYKIG1zZ2lkICJDbG9uZS4uLiIKIG1zZ3N0ciAiTcOhc29sw6FzLi4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODMKIG1zZ2lkICJPcGVuIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIkzDqXRlesWRIGvDtm55dnTDoXIgbWVnbnlpdMOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExOQogbXNnaWQgIk9wZW4uLi4iCiBtc2dzdHIgIk1lZ2d5aXTDoXMuLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgogbXNnaWQgIlJlY2VudCBSZXBvc2l0b3JpZXMiCiBtc2dzdHIgIkxlZ3V0w7NiYmkgcmVww7NrIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzgKIG1zZ2lkICJPcGVuIFJlY2VudCBSZXBvc2l0b3J5OiIKIG1zZ3N0ciAiTGVndXTDs2JiaSByZXDDs2sgbWVnbnlpdMOhc2E6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjI5NiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMwMwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzA5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgbGV0cmVob3puaSBhKHopICVzIHJlcMOzdDoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDc4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4NwogbXNnaWQgIkRpcmVjdG9yeToiCiBtc2dzdHIgIkvDtm55dnTDoXI6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkdpdCByZXDDsyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiQSh6KSAnJXMnIGvDtm55dnTDoXIgbcOhciBsw6l0ZXppay4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZpbGUgJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJBKHopICclcycgZsOhamwgbcOhciBsw6l0ZXppay4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2MAogbXNnaWQgIkNsb25lIgogbXNnc3RyICJCZXrDoXLDoXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY4Ci1tc2dpZCAiVVJMOiIKLW1zZ3N0ciAiVVJMOiIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDczCittc2dpZCAiU291cmNlIExvY2F0aW9uOiIKK21zZ3N0ciAiRm9ycsOhcyBoZWx5ZToiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDg5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NAorbXNnaWQgIlRhcmdldCBEaXJlY3Rvcnk6IgorbXNnc3RyICJDw6lsIGvDtm55dnTDoXI6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICJNw6Fzb2zDoXMgdMOtcHVzYToiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDk1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwMgogbXNnaWQgIlN0YW5kYXJkIChGYXN0LCBTZW1pLVJlZHVuZGFudCwgSGFyZGxpbmtzKSIKIG1zZ3N0ciAiw4FsdGFsw6Fub3MgKEd5b3JzLCBmw6lsaWctcmVkdW5kw6FucywgaGFyZGxpbmtlaykiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwOAogbXNnaWQgIkZ1bGwgQ29weSAoU2xvd2VyLCBSZWR1bmRhbnQgQmFja3VwKSIKIG1zZ3N0ciAiVGVsamVzIG3DoXNvbMOhcyAoTGFzc2FiYiwgcmVkdW5kw6FucyBiaXp0b25zw6FnaSBtZW50w6lzKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0CiBtc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCiBtc2dzdHIgIk1lZ29zenRvdHQgKExlZ2d5b3JzYWJiLCBuZW0gYWrDoW5sb3R0LCBuaW5jcyBtZW50w6lzKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NDMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzM2IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODA2Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMTcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDI1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU1MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJOb3QgYSBHaXQgcmVwb3NpdG9yeTogJXMiCiBtc2dzdHIgIk5lbSBHaXQgcmVww7M6ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU3OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1ODYKIG1zZ2lkICJTdGFuZGFyZCBvbmx5IGF2YWlsYWJsZSBmb3IgbG9jYWwgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIkEgc3RhbmRhcmQgY3NhayBoZWx5aSByZXDDs2tyYSDDqXJoZXTFkSBlbC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTgzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5MAogbXNnaWQgIlNoYXJlZCBvbmx5IGF2YWlsYWJsZSBmb3IgbG9jYWwgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIkEgbWVnb3N6dG90dCBjc2FrIGhlbHlpIHJlcMOza3JhIMOpcmhldMWRIGVsLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MDQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjExCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9jYXRpb24gJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJBKHopICclcycgaGVseSBtw6FyIGzDqXRlemlrLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjIyCiBtc2dpZCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSBvcmlnaW4iCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgYmXDoWxsw610YW5pIGF6IG9yaWdpbnQiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNAogbXNnaWQgIkNvdW50aW5nIG9iamVjdHMiCiBtc2dzdHIgIk9iamVrdHVtb2sgc3rDoW1vbMOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNQogbXNnaWQgImJ1Y2tldHMiCiBtc2dzdHIgInbDtmRyw7ZrIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY1MgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3RzL2luZm8vYWx0ZXJuYXRlczogJXMiCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgbcOhc29sbmkgYXogb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMtdDogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIlNlbW1pIG3DoXNvbG5pIHZhbMOzIG5pbmNzIGlubmVuOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2OTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDQKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTE2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjMKIG1zZ2lkICJUaGUgJ21hc3RlcicgYnJhbmNoIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4iCiBtc2dzdHIgIkEgJ21hc3RlcicgYnJhbmNoIG5pbmNzIGluaWNpYWxpesOhbHZhLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MDMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEwCiBtc2dpZCAiSGFyZGxpbmtzIGFyZSB1bmF2YWlsYWJsZS4gIEZhbGxpbmcgYmFjayB0byBjb3B5aW5nLiIKIG1zZ3N0ciAiTmVtIMOpcmhldMWRZWsgZWwgaGFyZGxpbmtlay4gIE3DoXNvbMOhcyBoYXN6bsOhbGF0YS4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzE1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcyMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgZnJvbSAlcyIKIG1zZ3N0ciAiTcOhc29sw6FzIGlubmVuOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzUzCiBtc2dpZCAiQ29weWluZyBvYmplY3RzIgogbXNnc3RyICJPYmpla3R1bW9rIG3DoXNvbMOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1NAogbXNnaWQgIktpQiIKIG1zZ3N0ciAiS2lCIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc3MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3Q6ICVzIgogbXNnc3RyICJOZW0gc2lrZXLDvGx0IG3DoXNvbG5pIGF6IG9iamVrdHVtb3Q6ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKIG1zZ2lkICJMaW5raW5nIG9iamVjdHMiCiBtc2dzdHIgIk9iamVrdHVtb2sgw7Zzc3plZsWxesOpc2UiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzgyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OQogbXNnaWQgIm9iamVjdHMiCiBtc2dzdHIgIm9iamVrdHVtIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc5MAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3OTcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gaGFyZGxpbmsgb2JqZWN0OiAlcyIKIG1zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBoYXJkbGlua2VsbmkgYXogb2JqZWt0dW1vdDogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODQ1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1MgogbXNnaWQgIkNhbm5vdCBmZXRjaCBicmFuY2hlcyBhbmQgb2JqZWN0cy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICJOZW0gc2lrZXLDvGx0IGxldMO2bHRlbmkgYSBicmFuY2gtZWtldCDDqXMgYXogb2JqZWt0dW1va2F0LiAgQsWRdmViYmVuIGEgIgogImtvbnpvbG9zIGtpbWVuZXRiZW4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NjMKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggdGFncy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgbGV0w7ZsdGVuaSBhIHRhZ2VrZXQuICBCxZF2ZWJiZW4gYSBrb256b2xvcyBraW1lbmV0YmVuLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4ODAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSBIRUFELiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBtZWfDoWxsYXDDrXRhbmkgYSBIRUFELWV0LiAgQsWRdmViYmVuIGEga29uem9sb3Mga2ltZW5ldGJlbi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjbGVhbnVwICVzIgogbXNnc3RyICJOZW0gc2lrZXLDvGx0IHRpc3rDrXRhbmk6ICVzLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCiBtc2dpZCAiQ2xvbmUgZmFpbGVkLiIKIG1zZ3N0ciAiQSBtw6Fzb2zDoXMgbmVtIHNpa2Vyw7xsdC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwOQogbXNnaWQgIk5vIGRlZmF1bHQgYnJhbmNoIG9idGFpbmVkLiIKIG1zZ3N0ciAiTmluY3MgYWxhcMOpcnRlbG1lemV0dCBicmFuY2guIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgcmVzb2x2ZSAlcyBhcyBhIGNvbW1pdC4iCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgZmVsw7ZsZGFuaSBhKHopICVzIG9iamVrdHVtb3QgY29tbWl0a8OpbnQuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzIKIG1zZ2lkICJDcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiTXVua2Frw7ZueXZ0w6FyIGzDqXRyZWhvesOhc2EiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTI2IGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjcKLSM6IGxpYi9pbmRleC50Y2w6MTkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMyBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI4CisjOiBsaWIvaW5kZXgudGNsOjE5NgogbXNnaWQgImZpbGVzIgogbXNnc3RyICJmw6FqbCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NTUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTYyCiBtc2dpZCAiSW5pdGlhbCBmaWxlIGNoZWNrb3V0IGZhaWxlZC4iCiBtc2dzdHIgIkEga2V6ZGV0aSBmw6FqbC1raWJvbnTDoXMgc2lrZXJ0ZWxlbi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTcxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3OAogbXNnaWQgIk9wZW4iCiBtc2dzdHIgIk1lZ255aXTDoXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4OAogbXNnaWQgIlJlcG9zaXRvcnk6IgogbXNnc3RyICJSZXDDszoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAzMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDM3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIG9wZW4gcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgbWVnbnlpdG5pIGEoeikgJXMgcmVww7N0OiIKQEAgLTExOTQsMTkgKzEzMTcsMTkgQEAKICJBIGplbGVubGVnaSBtZXJnZSBtw6lnIG5lbSB0ZWxqZXNlbiBmZWplesWRZMO2dHQgYmUuIENzYWsgYWtrb3IgamF2w610aGF0IGVneSAiCiAiZWzFkWJiaSBjb21taXRvdCwgaG9neWhhIG1lZ3N6YWvDrXRqYSBhIGplbGVubGVnaSBtZXJnZSBmb2x5YW1hdG90LlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDo0OQorIzogbGliL2NvbW1pdC50Y2w6NDgKIG1zZ2lkICJFcnJvciBsb2FkaW5nIGNvbW1pdCBkYXRhIGZvciBhbWVuZDoiCiBtc2dzdHIgIkhpYmEgYSBqYXbDrXRhbmTDsyBjb21taXQgYWRhdCBiZXTDtmx0w6lzZSBrw7Z6YmVuOiIKIAotIzogbGliL2NvbW1pdC50Y2w6NzYKKyM6IGxpYi9jb21taXQudGNsOjc1CiBtc2dpZCAiVW5hYmxlIHRvIG9idGFpbiB5b3VyIGlkZW50aXR5OiIKIG1zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBtZWfDoWxsYXDDrXRhbmkgYXogYXpvbm9zw610w7N0OiIKIAotIzogbGliL2NvbW1pdC50Y2w6ODEKKyM6IGxpYi9jb21taXQudGNsOjgwCiBtc2dpZCAiSW52YWxpZCBHSVRfQ09NTUlUVEVSX0lERU5UOiIKIG1zZ3N0ciAiw4lydsOpbnl0ZWxlbiBHSVRfQ09NTUlUVEVSX0lERU5UOiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTMzCisjOiBsaWIvY29tbWl0LnRjbDoxMzIKIG1zZ2lkICIiCiAiTGFzdCBzY2FubmVkIHN0YXRlIGRvZXMgbm90IG1hdGNoIHJlcG9zaXRvcnkgc3RhdGUuXG4iCiAiXG4iCkBAIC0xMjIzLDcgKzEzNDYsNyBAQAogIlxuIgogIkF6IMO6anJha2VyZXPDqXMgbW9zdCBhdXRvbWF0aWt1c2FuIGVsIGZvZyBpbmR1bG5pLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNTQKKyM6IGxpYi9jb21taXQudGNsOjE1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbm1lcmdlZCBmaWxlcyBjYW5ub3QgYmUgY29tbWl0dGVkLlxuIgpAQCAtMTIzNiw3ICsxMzU5LDcgQEAKICJBKHopICVzIGbDoWpsYmFuIMO8dGvDtnrDqXNlayB2YW5uYWsuIEVneXN6ZXIgYXpva2F0IGtpIGtlbGwgamF2w610YW5pLCBtYWpkICIKICJob3p6w6Ega2kga2VsbCB2w6FsYXN6dGFuaSBhIGbDoWpsdCBtaWVsxZF0dCBjb21taXRvbG5pIGxlaGV0bmUuXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE2MgorIzogbGliL2NvbW1pdC50Y2w6MTYzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlVua25vd24gZmlsZSBzdGF0ZSAlcyBkZXRlY3RlZC5cbiIKQEAgLTEyNDcsNyArMTM3MCw3IEBACiAiXG4iCiAiQSh6KSAlcyBmw6FqbHQgbmVtIHR1ZGphIGV6IGEgcHJvZ3JhbSBjb21taXRvbG5pLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNzAKKyM6IGxpYi9jb21taXQudGNsOjE3MQogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEyNTcsNyArMTM4MCw3IEBACiAiXG4iCiAiTGVnYWzDoWJiIGVneSBmw6FqbCBraSBrZWxsIHbDoWxhc3p0YW5pLCBob2d5IGNvbW1pdG9sbmkgbGVoZXNzZW4uXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE4MworIzogbGliL2NvbW1pdC50Y2w6MTg2CiBtc2dpZCAiIgogIlBsZWFzZSBzdXBwbHkgYSBjb21taXQgbWVzc2FnZS5cbiIKICJcbiIKQEAgLTEyNzUsNDUgKzEzOTgsNDUgQEAKICItIE3DoXNvZGlrIHNvcjogw5xyZXNcbiIKICItIEEgdMO2YmJpIHNvcjogTGXDrXJqYSwgaG9neSBtacOpcnQgasOzIGV6IGEgdsOhbHRvenRhdMOhcy5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjA3CisjOiBsaWIvY29tbWl0LnRjbDoyMTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJ3YXJuaW5nOiBUY2wgZG9lcyBub3Qgc3VwcG9ydCBlbmNvZGluZyAnJXMnLiIKIG1zZ3N0ciAiZmlneWVsbWV6dGV0w6lzOiBhIFRjbCBuZW0gdMOhbW9nYXRqYSBhKHopICclcycga8OzZG9sw6FzdC4iCiAKLSM6IGxpYi9jb21taXQudGNsOjIyMQorIzogbGliL2NvbW1pdC50Y2w6MjI2CiBtc2dpZCAiQ2FsbGluZyBwcmUtY29tbWl0IGhvb2suLi4iCiBtc2dzdHIgIkEgcHJlLWNvbW1pdCBodXJvayBtZWdow612w6FzYS4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDEKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKIG1zZ3N0ciAiQSBjb21taXRvdCBtZWdha2Fkw6FseW96dGEgYSBwcmUtY29tbWl0IGh1cm9rLiAiCiAKLSM6IGxpYi9jb21taXQudGNsOjI1OQorIzogbGliL2NvbW1pdC50Y2w6MjY0CiBtc2dpZCAiQ2FsbGluZyBjb21taXQtbXNnIGhvb2suLi4iCiBtc2dzdHIgIkEgY29tbWl0LW1zZyBodXJvayBtZWdow612w6FzYS4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6Mjc0CisjOiBsaWIvY29tbWl0LnRjbDoyNzkKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgY29tbWl0LW1zZyBob29rLiIKIG1zZ3N0ciAiQSBjb21taW90IG1lZ2FrYWTDoWx5b3p0YSBhIGNvbW1pdC1tc2cgaHVyb2suIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyODcKKyM6IGxpYi9jb21taXQudGNsOjI5MgogbXNnaWQgIkNvbW1pdHRpbmcgY2hhbmdlcy4uLiIKIG1zZ3N0ciAiQSB2w6FsdG96dGF0w6Fzb2sgY29tbWl0b2zDoXNhLi4uIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMDMKKyM6IGxpYi9jb21taXQudGNsOjMwOAogbXNnaWQgIndyaXRlLXRyZWUgZmFpbGVkOiIKIG1zZ3N0ciAiYSB3cml0ZS10cmVlIHNpa2VydGVsZW46IgogCi0jOiBsaWIvY29tbWl0LnRjbDozMDQgbGliL2NvbW1pdC50Y2w6MzQ4IGxpYi9jb21taXQudGNsOjM2OAorIzogbGliL2NvbW1pdC50Y2w6MzA5IGxpYi9jb21taXQudGNsOjM1MyBsaWIvY29tbWl0LnRjbDozNzMKIG1zZ2lkICJDb21taXQgZmFpbGVkLiIKIG1zZ3N0ciAiQSBjb21taXQgbmVtIHNpa2Vyw7xsdC4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMyMQorIzogbGliL2NvbW1pdC50Y2w6MzI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIKIG1zZ3N0ciAiQSh6KSAlcyBjb21taXQgc8OpcsO8bHRuZWsgdMWxbmlrIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMjYKKyM6IGxpYi9jb21taXQudGNsOjMzMQogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEzMjcsMTkgKzE0NTAsMTkgQEAKICJcbiIKICJBeiDDumpyYWtlcmVzw6lzIG1vc3QgYXV0b21hdGlrdXNhbiBlbCBmb2cgaW5kdWxuaS5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzMzCisjOiBsaWIvY29tbWl0LnRjbDozMzgKIG1zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCiBtc2dzdHIgIk5pbmNzIGNvbW1pdG9sYW5kw7MgdsOhbHRvenRhdMOhcy4iCiAKLSM6IGxpYi9jb21taXQudGNsOjM0NworIzogbGliL2NvbW1pdC50Y2w6MzUyCiBtc2dpZCAiY29tbWl0LXRyZWUgZmFpbGVkOiIKIG1zZ3N0ciAiYSBjb21taXQtdHJlZSBzaWtlcnRlbGVuOiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzY3CisjOiBsaWIvY29tbWl0LnRjbDozNzIKIG1zZ2lkICJ1cGRhdGUtcmVmIGZhaWxlZDoiCiBtc2dzdHIgImF6IHVwZGF0ZS1yZWYgc2lrZXJ0ZWxlbjoiCiAKLSM6IGxpYi9jb21taXQudGNsOjQ1NAorIzogbGliL2NvbW1pdC50Y2w6NDYwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ3JlYXRlZCBjb21taXQgJXM6ICVzIgogbXNnc3RyICJMw6l0cmVqw7Z0dCBhICVzIGNvbW1pdDogJXMiCkBAIC0xNDE0LDcgKzE1MzcsNyBAQAogbXNnaWQgIkludmFsaWQgZGF0ZSBmcm9tIEdpdDogJXMiCiBtc2dzdHIgIsOJcnbDqW55dGVsZW4gZMOhdHVtIGEgR2l0LXTFkWw6ICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6NDIKKyM6IGxpYi9kaWZmLnRjbDo1OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJObyBkaWZmZXJlbmNlcyBkZXRlY3RlZC5cbiIKQEAgLTE0MzYsNDAgKzE1NTksMTAxIEBACiAiXG4iCiAiRWd5IMO6anJha2VyZXPDqXMgZm9nIGluZHVsbmkgYSBoYXNvbmzDsyDDoWxsYXBvdMO6IGbDoWpsb2sgbWVndGFsw6Fsw6FzYSDDqXJkZWvDqWJlbi4iCiAKLSM6IGxpYi9kaWZmLnRjbDo4MQorIzogbGliL2RpZmYudGNsOjk5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9hZGluZyBkaWZmIG9mICVzLi4uIgogbXNnc3RyICJBKHopICVzIGRpZmYtasOpbmVrIGJldMO2bHTDqXNlLi4uIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE0IGxpYi9kaWZmLnRjbDoxODQKKyM6IGxpYi9kaWZmLnRjbDoxMjAKK21zZ2lkICIiCisiTE9DQUw6IGRlbGV0ZWRcbiIKKyJSRU1PVEU6XG4iCittc2dzdHIgIiIKKyJIRUxZSTogdMO2csO2bHZlXG4iCisiVMOBVk9MSTpcbiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiIgorIlTDgVZPTEk6IHTDtnLDtmx2ZVxuIgorIkhFTFlJOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTMyCittc2dpZCAiTE9DQUw6XG4iCittc2dzdHIgIkhFTFlJOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTM1Cittc2dpZCAiUkVNT1RFOlxuIgorbXNnc3RyICJUw4FWT0xJOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTk3IGxpYi9kaWZmLnRjbDoyOTYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gZGlzcGxheSAlcyIKIG1zZ3N0ciAiTmVtIGxlaGV0IG1lZ2plbGVuw610ZW5pIGEga8O2dmV0a2V6xZF0OiAlcyIKIAotIzogbGliL2RpZmYudGNsOjExNQorIzogbGliL2RpZmYudGNsOjE5OAogbXNnaWQgIkVycm9yIGxvYWRpbmcgZmlsZToiCiBtc2dzdHIgIkhpYmEgYSBmw6FqbCBiZXTDtmx0w6lzZSBrw7Z6YmVuOiIKIAotIzogbGliL2RpZmYudGNsOjEyMgorIzogbGliL2RpZmYudGNsOjIwNQogbXNnaWQgIkdpdCBSZXBvc2l0b3J5IChzdWJwcm9qZWN0KSIKIG1zZ3N0ciAiR2l0IHJlcMOzIChhbHByb2pla3QpIgogCi0jOiBsaWIvZGlmZi50Y2w6MTM0CisjOiBsaWIvZGlmZi50Y2w6MjE3CiBtc2dpZCAiKiBCaW5hcnkgZmlsZSAobm90IHNob3dpbmcgY29udGVudCkuIgogbXNnc3RyICIqIEJpbsOhcmlzIGbDoWpsICh0YXJ0YWxvbSBlbHJlanTDqXNlKS4iCiAKLSM6IGxpYi9kaWZmLnRjbDoxODUKLW1zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgotbXNnc3RyICJIaWJhIGEgZGlmZiBiZXTDtmx0w6lzZSBrw7Z6YmVuOiIKKyM6IGxpYi9kaWZmLnRjbDoyMjIKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiKiBVbnRyYWNrZWQgZmlsZSBpcyAlZCBieXRlcy5cbiIKKyIqIFNob3dpbmcgb25seSBmaXJzdCAlZCBieXRlcy5cbiIKK21zZ3N0ciAiIgorIiogTmVtIGvDtnZldGV0dCBmw6FqbCAlZCBiw6FqdHRhbC5cbiIKKyIqIENzYWsgYXogZWxzxZEgJWQgYsOhanQgbXV0YXTDoXNhLlxuIgogCi0jOiBsaWIvZGlmZi50Y2w6MzAzCisjOiBsaWIvZGlmZi50Y2w6MjI4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiogVW50cmFja2VkIGZpbGUgY2xpcHBlZCBoZXJlIGJ5ICVzLlxuIgorIiogVG8gc2VlIHRoZSBlbnRpcmUgZmlsZSwgdXNlIGFuIGV4dGVybmFsIGVkaXRvci5cbiIKK21zZ3N0ciAiIgorIlxuIgorIiogTmVtIGvDtnZldGV0dCBmw6FqbHQgbGV2w6FndGEgYSh6KSAlcy5cbiIKKyIqIEEgdGVsamVzIHRhcnRhbG9tIG1lZ2plbGVuw610w6lzw6loZXogaGFzem7DoWxqdW5rIGvDvGxzxZEgc3rDtnZlZ3N6ZXJrZXN6dMWRdC5cbiIKKworIzogbGliL2RpZmYudGNsOjQzNgogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICJOZW0gdmlzc3phdm9ubmkgYSBodW5rIGtpdsOhbGFzenTDoXPDoXQuIgogCi0jOiBsaWIvZGlmZi50Y2w6MzEwCisjOiBsaWIvZGlmZi50Y2w6NDQzCiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICJOZW0gc2lrZXLDvGx0IGtpdsOhbGFzenRhbmkgYSBodW5rb3QuIgogCisjOiBsaWIvZGlmZi50Y2w6NTA5Cittc2dpZCAiRmFpbGVkIHRvIHVuc3RhZ2Ugc2VsZWN0ZWQgbGluZS4iCittc2dzdHIgIk5lbSBzaWtlcsO8bHQgdmlzc3phdm9ubmkgYSBzb3Iga2l2w6FsYXN6dMOhc8OhdC4iCisKKyM6IGxpYi9kaWZmLnRjbDo1MTcKK21zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgbGluZS4iCittc2dzdHIgIk5lbSBzaWtlcsO8bHQga2l2w6FsYXN6dGFuaSBhIHNvcnQuIgorCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0MworbXNnaWQgIkRlZmF1bHQiCittc2dzdHIgIkFsYXDDqXJ0ZWxtZXrDqXMiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQ4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU3lzdGVtICglcykiCittc2dzdHIgIlJlbmRzemVyICglcykiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDU5IGxpYi9lbmNvZGluZy50Y2w6NDY1Cittc2dpZCAiT3RoZXIiCittc2dzdHIgIk3DoXMiCisKICM6IGxpYi9lcnJvci50Y2w6MjAgbGliL2Vycm9yLnRjbDoxMTQKIG1zZ2lkICJlcnJvciIKIG1zZ3N0ciAiaGliYSIKQEAgLTE1MDYsNDAgKzE2OTAsNDkgQEAKIG1zZ2lkICJVbmxvY2sgSW5kZXgiCiBtc2dzdHIgIkluZGV4IHrDoXJvbMOhc8OhbmFrIGZlbG9sZMOhc2EiCiAKLSM6IGxpYi9pbmRleC50Y2w6MjgyCisjOiBsaWIvaW5kZXgudGNsOjI4NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuc3RhZ2luZyAlcyBmcm9tIGNvbW1pdCIKIG1zZ3N0ciAiQSh6KSAlcyBjb21taXRiYSB2YWzDsyBraXbDoWxhc3p0w6Fzw6FuYWsgdmlzc3phdm9uw6FzYSIKIAotIzogbGliL2luZGV4LnRjbDozMTMKKyM6IGxpYi9pbmRleC50Y2w6MzI2CiBtc2dpZCAiUmVhZHkgdG8gY29tbWl0LiIKIG1zZ3N0ciAiQ29tbWl0b2zDoXNyYSBrw6lzei4iCiAKLSM6IGxpYi9pbmRleC50Y2w6MzI2CisjOiBsaWIvaW5kZXgudGNsOjMzOQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFkZGluZyAlcyIKIG1zZ3N0ciAiQSh6KSAlcyBob3p6w6FhZMOhc2EuLi4iCiAKLSM6IGxpYi9pbmRleC50Y2w6MzgxCisjOiBsaWIvaW5kZXgudGNsOjM5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJldmVydCBjaGFuZ2VzIGluIGZpbGUgJXM/IgogbXNnc3RyICJWaXNzemHDoWxsw610amEgYSB2w6FsdG96dGF0w6Fzb2thdCBhKHopICVzIGbDoWpsYmFuPyIKIAotIzogbGliL2luZGV4LnRjbDozODMKKyM6IGxpYi9pbmRleC50Y2w6Mzk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gdGhlc2UgJWkgZmlsZXM/IgogbXNnc3RyICJWaXNzemHDoWxsw610amEgYSB2w6FsdG96dGF0w6Fzb2thdCBlYmJlbiBlICVpIGbDoWpsYmFuPyIKIAotIzogbGliL2luZGV4LnRjbDozOTEKKyM6IGxpYi9pbmRleC50Y2w6NDA2CiBtc2dpZCAiQW55IHVuc3RhZ2VkIGNoYW5nZXMgd2lsbCBiZSBwZXJtYW5lbnRseSBsb3N0IGJ5IHRoZSByZXZlcnQuIgogbXNnc3RyICIiCiAiTWluZGVuIG5lbSBraXbDoWxhc3p0b3R0IHbDoWx0b3p0YXTDoXMgZWwgZm9nIHZlc3puaSBlesOhbHRhbCBhIHZpc3N6YcOhbGzDrXTDoXMgIgogIsOhbHRhbC4iCiAKLSM6IGxpYi9pbmRleC50Y2w6Mzk0CisjOiBsaWIvaW5kZXgudGNsOjQwOQogbXNnaWQgIkRvIE5vdGhpbmciCiBtc2dzdHIgIk5lIGNzaW7DoWxqdW5rIHNlbW1pdCIKIAorIzogbGliL2luZGV4LnRjbDo0MjcKK21zZ2lkICJSZXZlcnRpbmcgc2VsZWN0ZWQgZmlsZXMiCittc2dzdHIgIkEga2l2w6FsYXN6dG90dCBmw6FqbG9rIHZpc3N6YcOhbGzDrXTDoXNhIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiJXMgdmlzc3phw6FsbMOtdMOhc2EiCisKICM6IGxpYi9tZXJnZS50Y2w6MTMKIG1zZ2lkICIiCiAiQ2Fubm90IG1lcmdlIHdoaWxlIGFtZW5kaW5nLlxuIgpAQCAtMTU2OCw3ICsxNzYxLDcgQEAKICJcbiIKICJBeiDDumpyYWtlcmVzw6lzIG1vc3QgYXV0b21hdGlrdXNhbiBlbCBmb2cgaW5kdWxuaS5cbiIKIAotIzogbGliL21lcmdlLnRjbDo0NAorIzogbGliL21lcmdlLnRjbDo0NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb25mbGljdGVkIG1lcmdlLlxuIgpAQCAtMTU4NSw3ICsxNzc4LDcgQEAKICJGZWwga2VsbCBvbGRhbnVuayDFkWtldCwga2l2w6FsYXN6dGFuaSBhIGbDoWpsdCwgw6lzIGNvbW1pdG9sbmkgaG9neSBiZWZlamV6esO8ayAiCiAiYSBqZWxlbmxlZ2kgbWVyZ2UtdC4gQ3NhayBlenV0w6FuIGtlemRoZXTDvG5rIGVsIGVneSDDumphYmJhdC5cbiIKIAotIzogbGliL21lcmdlLnRjbDo1NAorIzogbGliL21lcmdlLnRjbDo1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGFuZ2UuXG4iCkBAIC0xNjAyLDM0ICsxNzk1LDM0IEBACiAiRWzFkXN6w7ZyIGJlIGtlbGwgZmVqZXpuw7xuayBhIGplbGVubGVnaSBjb21taXRvdCwgaG9neSBlbGtlemRoZXNzw7xuayBlZ3kgbWVyZ2UtIgogInQuIEV6IHNlZ8OtdGVuaSBmb2csIGhvZ3kgZsOpbGJlc3pha8OtdGhhc3N1bmsgZWd5IG1lcmdlLXQuXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTA2CisjOiBsaWIvbWVyZ2UudGNsOjEwNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIG9mICVzIgogbXNnc3RyICIlcyAvICVzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjExOQorIzogbGliL21lcmdlLnRjbDoxMjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnaW5nICVzIGFuZCAlcy4uLiIKIG1zZ3N0ciAiQSh6KSAlcyDDqXMgYSh6KSAlcyBtZXJnZS3DtmzDqXNlLi4uIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEzMAorIzogbGliL21lcmdlLnRjbDoxMzEKIG1zZ2lkICJNZXJnZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiIKIG1zZ3N0ciAiQSBtZXJnZSBzaWtlcmVzZW4gYmVmZWplesWRZMO2dHQuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEzMgorIzogbGliL21lcmdlLnRjbDoxMzMKIG1zZ2lkICJNZXJnZSBmYWlsZWQuICBDb25mbGljdCByZXNvbHV0aW9uIGlzIHJlcXVpcmVkLiIKIG1zZ3N0ciAiQSBtZXJnZSBzaWtlcnRlbGVuLiBGZWwga2VsbCBvbGRhbnVuayBheiDDvHRrw7Z6w6lzZWtldC4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTU3CisjOiBsaWIvbWVyZ2UudGNsOjE1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdlIEludG8gJXMiCiBtc2dzdHIgIk1lcmdlLcO2bMOpcyBhIGvDtnZldGtlesWRYmU6ICVzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjE3NgorIzogbGliL21lcmdlLnRjbDoxNzcKIG1zZ2lkICJSZXZpc2lvbiBUbyBNZXJnZSIKIG1zZ3N0ciAiTWVyZ2Utw7Zsbmkgc3rDoW5kw6lrb3pvdHQgcmV2w616acOzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIxMQorIzogbGliL21lcmdlLnRjbDoyMTIKIG1zZ2lkICIiCiAiQ2Fubm90IGFib3J0IHdoaWxlIGFtZW5kaW5nLlxuIgogIlxuIgpAQCAtMTYzOSw3ICsxODMyLDcgQEAKICJcbiIKICJCZSBrZWxsIGZlamV6bsO8bmsgZW5uZWsgYSBjb21taXRuYWsgYSBqYXbDrXTDoXPDoXQuXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjIxCisjOiBsaWIvbWVyZ2UudGNsOjIyMgogbXNnaWQgIiIKICJBYm9ydCBtZXJnZT9cbiIKICJcbiIKQEAgLTE2NTQsNyArMTg0Nyw3IEBACiAiXG4iCiAiRm9seXRhdGp1ayBhIGplbGVubGVnaSBtZXJnZSBtZWdzemFrw610w6Fzw6F0PyIKIAotIzogbGliL21lcmdlLnRjbDoyMjcKKyM6IGxpYi9tZXJnZS50Y2w6MjI4CiBtc2dpZCAiIgogIlJlc2V0IGNoYW5nZXM/XG4iCiAiXG4iCkBAIC0xNjY5LDEyMyArMTg2MiwzMzggQEAKICJcbiIKICJGb2x5dGF0anVrIGEgamVsZW5sZWdpIG3Ds2Rvc8OtdMOhc29rIHZpc3N6YXZvbsOhc8OhdD8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjM4CisjOiBsaWIvbWVyZ2UudGNsOjIzOQogbXNnaWQgIkFib3J0aW5nIgogbXNnc3RyICJGw6lsYmVzemFrw610w6FzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAiZsOhamwgdmlzc3phw6FsbMOtdHZhIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2NQorIzogbGliL21lcmdlLnRjbDoyNjcKIG1zZ2lkICJBYm9ydCBmYWlsZWQuIgogbXNnc3RyICJBIGbDqWxiZXN6YWvDrXTDoXMgbmVtIHNpa2Vyw7xsdC4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjY3CisjOiBsaWIvbWVyZ2UudGNsOjI2OQogbXNnaWQgIkFib3J0IGNvbXBsZXRlZC4gIFJlYWR5LiIKIG1zZ3N0ciAiQSBtZWdrZXN6YWvDrXTDoXMgYmVmZWplesWRZMO2dHQuIEvDqXN6LiIKIAotIzogbGliL29wdGlvbi50Y2w6OTUKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjgKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBiYXNlIHZlcnNpb24/IgorbXNnc3RyICJGZWxvbGTDoXMgZXLFkWx0ZXTDqXNlIGF6IGFsYXAgdmVyemnDs2hvej8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjkKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoaXMgYnJhbmNoPyIKK21zZ3N0ciAiRmVsb2xkw6FzIGVyxZFsdGV0w6lzZSBlaGhleiBhIGJyYW5jaC1oZXo/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxMAorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIG90aGVyIGJyYW5jaD8iCittc2dzdHIgIkZlbG9sZMOhcyBlcsWRbHRldMOpc2UgYSBtw6FzaWsgYnJhbmNoLWhlej8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIk5vdGUgdGhhdCB0aGUgZGlmZiBzaG93cyBvbmx5IGNvbmZsaWN0aW5nIGNoYW5nZXMuXG4iCisiXG4iCisiJXMgd2lsbCBiZSBvdmVyd3JpdHRlbi5cbiIKKyJcbiIKKyJUaGlzIG9wZXJhdGlvbiBjYW4gYmUgdW5kb25lIG9ubHkgYnkgcmVzdGFydGluZyB0aGUgbWVyZ2UuIgorbXNnc3RyICIiCisiTWVnamVneXrDqXM6IGNzYWsgYXogw7x0a8O2esWRIGvDvGzDtm5ic8OpZ2VrIGzDoXRzemFuYWsuXG4iCisiXG4iCisiQSh6KSAlcyBmZWzDvGwgbGVzeiDDrXJ2YS5cbiIKKyJcbiIKKyJFeiBhIG3FsXZlbGV0IGNzYWsgYSBtZXJnZSDDumpyYWluZMOtdMOhc8OhdmFsIGxlc3ogdmlzc3phdm9uaGF0w7MuIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo0NQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZpbGUgJXMgc2VlbXMgdG8gaGF2ZSB1bnJlc29sdmVkIGNvbmZsaWN0cywgc3RpbGwgc3RhZ2U/IgorbXNnc3RyICIiCisiQSh6KSAlcyBmw6FqbCBuZW0gZmVsb2xkb3R0IMO8dGvDtnrDqXNla2V0IHRhcnRhbG1heiwgbcOpZ2lzIGxlZ3llbiBraXbDoWxhc3p0dmE/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo2MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIKK21zZ3N0ciAiRmVsb2xkw6FzIGhvenrDoWFkw6FzYSBhKHopICVzIHN6w6Ftw6FyYSIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQxCittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICJOZW0gbGVoZXQgZmVsb2xkYW5pIHTDtnJsw6lzaSB2YWd5IGxpbmsgw7x0a8O2esOpc3QgZWd5IGVzemvDtnp6ZWwiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0NgorbXNnaWQgIkNvbmZsaWN0IGZpbGUgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIkEga29uZmlrbHVzLWbDoWpsIG5lbSBsw6l0ZXppay4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk5vdCBhIEdVSSBtZXJnZSB0b29sOiAnJXMnIgorbXNnc3RyICJOZW0gR1VJIG1lcmdlIGVzemvDtno6ICVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyNjgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbnN1cHBvcnRlZCBtZXJnZSB0b29sICclcyciCittc2dzdHIgIkEoeikgJyVzJyBtZXJnZSBlc3prw7Z6IG5lbSB0w6Ftb2dhdG90dCIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzAzCittc2dpZCAiTWVyZ2UgdG9vbCBpcyBhbHJlYWR5IHJ1bm5pbmcsIHRlcm1pbmF0ZSBpdD8iCittc2dzdHIgIkEgbWVyZ2UgZXN6a8O2eiBtw6FyIGZ1dCwgbGUgbGVneWVuIMOhbGzDrXR2YT8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisiSGliYSBhIHZlcnppw7NrIGtpbnllcsOpc2Uga8O2emJlbjpcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBzdGFydCB0aGUgbWVyZ2UgdG9vbDpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkEgbWVyZ2UgZXN6a8O2eiBpbmTDrXTDoXNhIHNpa2VydGVsZW46XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0NworbXNnaWQgIlJ1bm5pbmcgbWVyZ2UgdG9vbC4uLiIKK21zZ3N0ciAiQSBtZXJnZSBlc3prw7Z6IGZ1dHRhdMOhc2EuLi4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM3NSBsaWIvbWVyZ2V0b29sLnRjbDozODMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIkEgbWVyZ2UgZXN6a8O2eiBuZW0gc2lrZXLDvGx0LiIKKworIzogbGliL29wdGlvbi50Y2w6MTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGdsb2JhbCBlbmNvZGluZyAnJXMnIgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIGdsb2LDoWxpcyBrw7Nkb2zDoXMgJyVzJyIKKworIzogbGliL29wdGlvbi50Y2w6MTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlcG8gZW5jb2RpbmcgJyVzJyIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiByZXDDsyBrw7Nkb2zDoXMgJyVzJyIKKworIzogbGliL29wdGlvbi50Y2w6MTE3CiBtc2dpZCAiUmVzdG9yZSBEZWZhdWx0cyIKIG1zZ3N0ciAiQWxhcMOpcnRlbG1lesOpcyB2aXNzemHDoWxsw610w6FzYSIKIAotIzogbGliL29wdGlvbi50Y2w6OTkKKyM6IGxpYi9vcHRpb24udGNsOjEyMQogbXNnaWQgIlNhdmUiCiBtc2dzdHIgIk1lbnTDqXMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEwOQorIzogbGliL29wdGlvbi50Y2w6MTMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiJXMgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiJXMgUmVww7MiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExMAorIzogbGliL29wdGlvbi50Y2w6MTMyCiBtc2dpZCAiR2xvYmFsIChBbGwgUmVwb3NpdG9yaWVzKSIKIG1zZ3N0ciAiR2xvYsOhbGlzIChtaW5kZW4gcmVww7MpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTYKKyM6IGxpYi9vcHRpb24udGNsOjEzOAogbXNnaWQgIlVzZXIgTmFtZSIKIG1zZ3N0ciAiRmVsaGFzem7DoWzDs27DqXYiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNworIzogbGliL29wdGlvbi50Y2w6MTM5CiBtc2dpZCAiRW1haWwgQWRkcmVzcyIKIG1zZ3N0ciAiRW1haWwgY8OtbSIKIAotIzogbGliL29wdGlvbi50Y2w6MTE5CisjOiBsaWIvb3B0aW9uLnRjbDoxNDEKIG1zZ2lkICJTdW1tYXJpemUgTWVyZ2UgQ29tbWl0cyIKIG1zZ3N0ciAiQSBtZXJnZSBjb21taXRvayDDtnNzemVnesOpc2UiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMAorIzogbGliL29wdGlvbi50Y2w6MTQyCiBtc2dpZCAiTWVyZ2UgVmVyYm9zaXR5IgogbXNnc3RyICJNZXJnZSBiZXN6w6lkZXNzw6lnIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjEKKyM6IGxpYi9vcHRpb24udGNsOjE0MwogbXNnaWQgIlNob3cgRGlmZnN0YXQgQWZ0ZXIgTWVyZ2UiCiBtc2dzdHIgIkRpZmZzdGF0IG11dGF0w6FzYSBtZXJnZSB1dMOhbiIKIAotIzogbGliL29wdGlvbi50Y2w6MTIzCisjOiBsaWIvb3B0aW9uLnRjbDoxNDQKK21zZ2lkICJVc2UgTWVyZ2UgVG9vbCIKK21zZ3N0ciAiTWVyZ2UgZXN6a8O2eiBoYXN6bsOhbGF0YSIKKworIzogbGliL29wdGlvbi50Y2w6MTQ2CiBtc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKIG1zZ3N0ciAiQSBmw6FqbCBtw7Nkb3PDrXTDoXNpIGTDoXR1bW9rIG1lZ2LDrXpoYXTDs2FrIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjQKKyM6IGxpYi9vcHRpb24udGNsOjE0NwogbXNnaWQgIlBydW5lIFRyYWNraW5nIEJyYW5jaGVzIER1cmluZyBGZXRjaCIKIG1zZ3N0ciAiQSBrw7Z2ZXTFkSBicmFuY2hlayBlbHTDoXZvbMOtdMOhc2EgbGV0w7ZsdMOpcyBhbGF0dCIKIAotIzogbGliL29wdGlvbi50Y2w6MTI1CisjOiBsaWIvb3B0aW9uLnRjbDoxNDgKIG1zZ2lkICJNYXRjaCBUcmFja2luZyBCcmFuY2hlcyIKIG1zZ3N0ciAiQSBrw7Z2ZXTFkSBicmFuY2hlayBlZ3llenRldMOpc2UiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNgorIzogbGliL29wdGlvbi50Y2w6MTQ5Cittc2dpZCAiQmxhbWUgQ29weSBPbmx5IE9uIENoYW5nZWQgRmlsZXMiCittc2dzdHIgIkEgYmxhbWUgbcOhc29sw6FzIGJla2FwY3NvbMOhc2EgY3NhayBtZWd2w6FsdG96b3R0IGbDoWpsb2tyYSIKKworIzogbGliL29wdGlvbi50Y2w6MTUwCittc2dpZCAiTWluaW11bSBMZXR0ZXJzIFRvIEJsYW1lIENvcHkgT24iCittc2dzdHIgIk1pbmltdW0gYmV0xbFzesOhbSBibGFtZSBtw6Fzb2zDoXMtw6lyesOpa2Vsw6lzaGV6IgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTEKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiQmxhbWUgdMO2cnTDqW5ldCBrw7ZybnllemV0IHN1Z8OhciAobmFwb2tiYW4pIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTIKIG1zZ2lkICJOdW1iZXIgb2YgRGlmZiBDb250ZXh0IExpbmVzIgogbXNnc3RyICJBIGRpZmYga8O2cm55ZXpldGkgc29yb2sgc3rDoW1hIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjcKKyM6IGxpYi9vcHRpb24udGNsOjE1MwogbXNnaWQgIkNvbW1pdCBNZXNzYWdlIFRleHQgV2lkdGgiCiBtc2dzdHIgIkNvbW1pdCDDvHplbmV0IHN6w7Z2ZWfDqW5layBzesOpbGVzc8OpZ2UiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOAorIzogbGliL29wdGlvbi50Y2w6MTU0CiBtc2dpZCAiTmV3IEJyYW5jaCBOYW1lIFRlbXBsYXRlIgogbXNnc3RyICLDmmogYnJhbmNoIG7DqXYgc2FibG9uIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxOTIKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiQWxhcMOpcnRlbG1lemV0dCBmw6FqbHRhcnRhbG9tLWvDs2RvbMOhcyIKKworIzogbGliL29wdGlvbi50Y2w6MjAzCittc2dpZCAiQ2hhbmdlIgorbXNnc3RyICJNZWd2w6FsdG96dGF0w6FzIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMzAKIG1zZ2lkICJTcGVsbGluZyBEaWN0aW9uYXJ5OiIKIG1zZ3N0ciAiSGVseWVzw61yw6FzLWVsbGVuxZFyesWRIHN6w7N0w6FyOiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE2CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiQmV0xbF0w61wdXMgbWVndsOhbHRvenRhdMOhc2EiCiAKLSM6IGxpYi9vcHRpb24udGNsOjIyMAorIzogbGliL29wdGlvbi50Y2w6MjU4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2hvb3NlICVzIgogbXNnc3RyICIlcyB2w6FsYXN6dMOhc2EiCiAKLSM6IGxpYi9vcHRpb24udGNsOjIyNgorIzogbGliL29wdGlvbi50Y2w6MjY0CiBtc2dpZCAicHQuIgogbXNnc3RyICJwdC4iCiAKLSM6IGxpYi9vcHRpb24udGNsOjI0MAorIzogbGliL29wdGlvbi50Y2w6Mjc4CiBtc2dpZCAiUHJlZmVyZW5jZXMiCiBtc2dzdHIgIkJlw6FsbMOtdMOhc29rIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNzUKKyM6IGxpYi9vcHRpb24udGNsOjMxNAogbXNnaWQgIkZhaWxlZCB0byBjb21wbGV0ZWx5IHNhdmUgb3B0aW9uczoiCiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgdGVsamVzZW4gZWxtZW50ZW5pIGEgYmXDoWxsw610w6Fzb2thdDoiCiAKKyM6IGxpYi9yZW1vdGUudGNsOjE2MworbXNnaWQgIlJlbW92ZSBSZW1vdGUiCittc2dzdHIgIlJlbW90ZSBlbHTDoXZvbMOtdMOhc2EiCisKKyM6IGxpYi9yZW1vdGUudGNsOjE2OAorbXNnaWQgIlBydW5lIGZyb20iCittc2dzdHIgIlTDtnJsw6lzIGlubmVuIgorCisjIHRjbC1mb3JtYXQKKyM6IGxpYi9yZW1vdGUudGNsOjE3MworbXNnaWQgIkZldGNoIGZyb20iCittc2dzdHIgIkxldMO2bHTDqXMgaW5uZW4iCisKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQorbXNnaWQgIlB1c2ggdG8iCittc2dzdHIgIlB1c2ggaWRlIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTkKK21zZ2lkICJBZGQgUmVtb3RlIgorbXNnc3RyICJSZW1vdGUgaG96esOhYWTDoXNhIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjQKK21zZ2lkICJBZGQgTmV3IFJlbW90ZSIKK21zZ3N0ciAiw5pqIHJlbW90ZSBob3p6w6FhZMOhc2EiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoyOCBsaWIvdG9vbHNfZGxnLnRjbDozNgorbXNnaWQgIkFkZCIKK21zZ3N0ciAiSG96esOhYWTDoXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDozNworbXNnaWQgIlJlbW90ZSBEZXRhaWxzIgorbXNnc3RyICJSZW1vdGUgcsOpc3psZXRlaSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjUwCittc2dpZCAiTG9jYXRpb246IgorbXNnc3RyICJIZWx5OiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjYyCittc2dpZCAiRnVydGhlciBBY3Rpb24iCittc2dzdHIgIkvDtnZldGtlesWRIG3FsXZlbGV0IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAiTGV0w7ZsdMOpcyBtb3N0IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzEKK21zZ2lkICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIgorbXNnc3RyICJUw6F2b2xpIHJlcMOzIGluaWNpYWxpesOhbMOhc2Egw6lzIHB1c2giCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIk5lIGNzaW7DoWxqdW5rIHNlbW1pdCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEwMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSByZW1vdGUgbmFtZS4iCittc2dzdHIgIkFkanVuayBtZWd5IGVneSByZW1vdGUgbmV2ZXQuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTE0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSByZW1vdGUgbmFtZS4iCittc2dzdHIgIkEoeikgJyVzJyBuZW0gZWd5IGVsZm9nYWRoYXTDsyByZW1vdGUgbsOpdi4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICJOZW0gc2lrZXLDvGx0IGEodCkgJyVzJyByZW1vdGUgaG96esOhYWTDoXNhIGlubmVuOiAnJXMnLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEzMyBsaWIvdHJhbnNwb3J0LnRjbDo2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiZmV0Y2ggJXMiCittc2dzdHIgImEoeikgJXMgbGV0w7ZsdMOpc2UiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIkEoeikgJXMgbGV0w7ZsdMOpc2UiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJEbyBub3Qga25vdyBob3cgdG8gaW5pdGlhbGl6ZSByZXBvc2l0b3J5IGF0IGxvY2F0aW9uICclcycuIgorbXNnc3RyICJOZW0gdHVkbmksIGhvZ3kgaG9neSBrZWxsIGEoeikgJyVzJyBoZWx5ZW4gcmVww7N0IGluaWNpYWxpesOhbG5pLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo2MworIzogbGliL3RyYW5zcG9ydC50Y2w6ODEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJwdXNoICVzIgorbXNnc3RyICIlcyBwdXNoLW9sw6FzYSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgdXAgdGhlICVzIChhdCAlcykiCittc2dzdHIgIkEoeikgJXMgYmXDoWxsw610w6FzYSBpdHQ6ICVzIgorCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjI5IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MzQKLW1zZ2lkICJEZWxldGUgUmVtb3RlIEJyYW5jaCIKLW1zZ3N0ciAiVMOhdm9saSBicmFuY2ggdMO2cmzDqXNlIgorbXNnaWQgIkRlbGV0ZSBCcmFuY2ggUmVtb3RlbHkiCittc2dzdHIgIlTDoXZvbGkgQnJhbmNoIHTDtnJsw6lzZSIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0NwogbXNnaWQgIkZyb20gUmVwb3NpdG9yeSIKIG1zZ3N0ciAiRm9ycsOhcyByZXDDsyIKIAotIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo1MCBsaWIvdHJhbnNwb3J0LnRjbDoxMjMKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NTAgbGliL3RyYW5zcG9ydC50Y2w6MTM0CiBtc2dpZCAiUmVtb3RlOiIKIG1zZ3N0ciAiVMOhdm9saToiCiAKLSM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NjYgbGliL3RyYW5zcG9ydC50Y2w6MTM4Ci1tc2dpZCAiQXJiaXRyYXJ5IFVSTDoiCi1tc2dzdHIgIlRldHN6xZFsZWdlcyBVUkw6IgorIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo2NiBsaWIvdHJhbnNwb3J0LnRjbDoxNDkKK21zZ2lkICJBcmJpdHJhcnkgTG9jYXRpb246IgorbXNnc3RyICLDlm5rw6lueWVzIGhlbHk6IgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0CiBtc2dpZCAiQnJhbmNoZXMiCkBAIC0xODU0LDE4ICsyMjYyLDIxIEBACiBtc2dpZCAiU2Nhbm5pbmcgJXMuLi4iCiBtc2dzdHIgIktlcmVzw6lzIGl0dDogJXMuLi4iCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE2NQotbXNnaWQgIlBydW5lIGZyb20iCi1tc2dzdHIgIlTDtnJsw6lzIGlubmVuIgorIzogbGliL3NlYXJjaC50Y2w6MjEKK21zZ2lkICJGaW5kOiIKK21zZ3N0ciAiS2VyZXPDqXM6IgogCi0jIHRjbC1mb3JtYXQKLSM6IGxpYi9yZW1vdGUudGNsOjE3MAotbXNnaWQgIkZldGNoIGZyb20iCi1tc2dzdHIgIkxldMO2bHTDqXMgaW5uZW4iCisjOiBsaWIvc2VhcmNoLnRjbDoyMworbXNnaWQgIk5leHQiCittc2dzdHIgIkvDtnZldGtlesWRIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoyMTMKLW1zZ2lkICJQdXNoIHRvIgotbXNnc3RyICJQdXNoIGlkZSIKKyM6IGxpYi9zZWFyY2gudGNsOjI0Cittc2dpZCAiUHJldiIKK21zZ3N0ciAiRWzFkXrFkSIKKworIzogbGliL3NlYXJjaC50Y2w6MjUKK21zZ2lkICJDYXNlLVNlbnNpdGl2ZSIKK21zZ3N0ciAiS2lzYmV0xbEtbmFneWJldMWxIHN6w6Ftw610IgogCiAjOiBsaWIvc2hvcnRjdXQudGNsOjIwIGxpYi9zaG9ydGN1dC50Y2w6NjEKIG1zZ2lkICJDYW5ub3Qgd3JpdGUgc2hvcnRjdXQ6IgpAQCAtMTkwMCwyNyArMjMxMSwxOTQgQEAKIG1zZ2lkICJVbnJlY29nbml6ZWQgc3BlbGwgY2hlY2tlciIKIG1zZ3N0ciAiSXNtZXJldGxlbiBoZWx5ZXPDrXLDoXMtZWxsZW7FkXJ6xZEiCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDoxODAKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDoxODYKIG1zZ2lkICJObyBTdWdnZXN0aW9ucyIKIG1zZ3N0ciAiTmluY3MgamF2YXNsYXQiCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODEKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODgKIG1zZ2lkICJVbmV4cGVjdGVkIEVPRiBmcm9tIHNwZWxsIGNoZWNrZXIiCiBtc2dzdHIgIk5lbSB2w6FydCBFT0YgYSBoZWx5ZXPDrXLDoXMtZWxsZW7FkXJ6xZF0xZFsIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6Mzg1CisjOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkyCiBtc2dpZCAiU3BlbGwgQ2hlY2tlciBGYWlsZWQiCiBtc2dzdHIgIkEgaGVseWVzw61yw6FzLWVsbGVuxZFyesOpcyBzaWtlcnRlbGVuIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICJOaW5jc2VuZWsga3VsY3Nvay4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRm91bmQgYSBwdWJsaWMga2V5IGluOiAlcyIKK21zZ3N0ciAiTnlpbHbDoW5vcyBrdWxjcyB0YWzDoWxoYXTDsyBlYmJlbjogJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjQwCittc2dpZCAiR2VuZXJhdGUgS2V5IgorbXNnc3RyICJLdWxjcyBnZW5lcsOhbMOhc2EiCisKKyM6IGxpYi9zc2hrZXkudGNsOjU2Cittc2dpZCAiQ29weSBUbyBDbGlwYm9hcmQiCittc2dzdHIgIk3DoXNvbMOhcyB2w6Fnw7NsYXByYSIKKworIzogbGliL3NzaGtleS50Y2w6NzAKK21zZ2lkICJZb3VyIE9wZW5TU0ggUHVibGljIEtleSIKK21zZ3N0ciAiQXogT3BlblNTSCBwdWJsaWt1cyBrdWxjc3VuayIKKworIzogbGliL3NzaGtleS50Y2w6NzgKK21zZ2lkICJHZW5lcmF0aW5nLi4uIgorbXNnc3RyICJHZW5lcsOhbMOhcy4uLiIKKworIzogbGliL3NzaGtleS50Y2w6ODQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKyJBeiBzc2gta2V5Z2VuIGluZMOtdMOhc2Egc2lrZXJ0ZWxlbjpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL3NzaGtleS50Y2w6MTExCittc2dpZCAiR2VuZXJhdGlvbiBmYWlsZWQuIgorbXNnc3RyICJBIGdlbmVyw6Fsw6FzIG5lbSBzaWtlcsO8bHQuIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIkEgZ2VuZXLDoWzDoXMgc2lrZXJlcywgZGUgZWd5IGt1bGNzIHNlIHRhbMOhbGhhdMOzLiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICJBIGt1bGNzdW5rIGl0dCB2YW46ICVzIgorCiAjOiBsaWIvc3RhdHVzX2Jhci50Y2w6ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyAuLi4gJSppIG9mICUqaSAlcyAoJTNpJSUpIgogbXNnc3RyICIlcyAuLi4gJSppIC8gJSppICVzICglM2klJSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjYKKyM6IGxpYi90b29scy50Y2w6NzUKICMsIHRjbC1mb3JtYXQKLW1zZ2lkICJmZXRjaCAlcyIKLW1zZ3N0ciAiYSh6KSAlcyBsZXTDtmx0w6lzZSIKK21zZ2lkICJSdW5uaW5nICVzIHJlcXVpcmVzIGEgc2VsZWN0ZWQgZmlsZS4iCittc2dzdHIgIkEoeikgJXMgZnV0dGF0w6FzYSBlZ3kga2l2w6FsYXN6dG90dCBmw6FqbHQgaWfDqW55ZWwuIgorCisjOiBsaWIvdG9vbHMudGNsOjkwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJ1biAlcz8iCittc2dzdHIgIkJpenRvcyBiZW5uZSwgaG9neSBmdXR0YXRuaSBrw612w6FuamE6ICVzPyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sOiAlcyIKK21zZ3N0ciAiRXN6a8O2ejogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTExCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVubmluZzogJXMiCittc2dzdHIgIkZ1dHRhdMOhczogJXMuLi4iCisKKyM6IGxpYi90b29scy50Y2w6MTQ5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBjb21wbGV0ZWQgc3VjY2VzZnVsbHk6ICVzIgorbXNnc3RyICJBeiBlc3prw7Z6IHNpa2VyZXNlbiBiZWZlamV6xZFkw7Z0dDogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBmYWlsZWQ6ICVzIgorbXNnc3RyICJBeiBlc3prw7Z6IHNpa2VydGVsZW46ICVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMgorbXNnaWQgIkFkZCBUb29sIgorbXNnc3RyICJFc3prw7Z6IGhvenrDoWFkw6FzYSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAiw5pqIGVzemvDtnotcGFyYW5jcyBob3p6w6FhZMOhc2EiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMzCittc2dpZCAiQWRkIGdsb2JhbGx5IgorbXNnc3RyICJHbG9iw6FsaXMgaG96esOhYWTDoXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ1Cittc2dpZCAiVG9vbCBEZXRhaWxzIgorbXNnc3RyICJFc3prw7Z6IHLDqXN6bGV0ZWkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ4Cittc2dpZCAiVXNlICcvJyBzZXBhcmF0b3JzIHRvIGNyZWF0ZSBhIHN1Ym1lbnUgdHJlZToiCittc2dzdHIgIkhhc3puw6FsanVuayAnLycgc3plcGFyw6F0b3Jva2F0IGFsbWVuw7wtZmEgbMOpdHJlaG96w6Fzw6Fob3o6IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo2MQorbXNnaWQgIkNvbW1hbmQ6IgorbXNnc3RyICJQYXJhbmNzOiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NzQKK21zZ2lkICJTaG93IGEgZGlhbG9nIGJlZm9yZSBydW5uaW5nIgorbXNnc3RyICJQYXJhbmNzYWJsYWsgbXV0YXTDoXNhIGZ1dHRhdMOhcyBlbMWRdHQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIiIKKyJNZWdrw6lyaSBhIGZlbGhhc3puw6Fsw7N0LCBob2d5IHbDoWxhc3N6b24ga2kgZWd5IHJldsOtemnDs3QgKGEgJFJFVklTSU9OLXQgIgorIsOhbGzDrXRqYSkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIk1lZ2vDqXJkZXppIGEgZmVsaGFzem7DoWzDs3QgdG92w6FiYmkgYXJndW1lbnR1bW9rw6lydCAoYSAkQVJHUy1vdCDDoWxsw610amEpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5MgorbXNnaWQgIkRvbid0IHNob3cgdGhlIGNvbW1hbmQgb3V0cHV0IHdpbmRvdyIKK21zZ3N0ciAiTmUgbXV0YXNzYSBhIHBhcmFuY3Mga2ltZW5ldGkgYWJsYWvDoXQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjk3Cittc2dpZCAiUnVuIG9ubHkgaWYgYSBkaWZmIGlzIHNlbGVjdGVkICgkRklMRU5BTUUgbm90IGVtcHR5KSIKK21zZ3N0ciAiRnV0dGF0w6FzIGNzYWsgaGEgZWd5IGRpZmYga2kgdmFuIHbDoWxhc3p0dmEgKGEgJEZJTEVOQU1FIG5lbSDDvHJlcykiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBuYW1lIGZvciB0aGUgdG9vbC4iCittc2dzdHIgIkFkanVuayBtZWcgZWd5IGVzemvDtnogbmV2ZXQuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxMjkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sICclcycgYWxyZWFkeSBleGlzdHMuIgorbXNnc3RyICJBKHopICclcycgZXN6a8O2eiBtw6FyIGzDqXRlemlrLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBhZGQgdG9vbDpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkF6IGVzemvDtnogbmVtIGhvenrDoWFkaGF0w7M6XG4iCisiJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE5MAorbXNnaWQgIlJlbW92ZSBUb29sIgorbXNnc3RyICJFc3prw7Z6IGVsdMOhdm9sw610w6FzYSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTk2Cittc2dpZCAiUmVtb3ZlIFRvb2wgQ29tbWFuZHMiCittc2dzdHIgIkVzemvDtnogcGFyYW5jc29rIGVsdMOhdm9sw610w6FzYSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJFbHTDoXZvbMOtdMOhcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjM2Cittc2dpZCAiKEJsdWUgZGVub3RlcyByZXBvc2l0b3J5LWxvY2FsIHRvb2xzKSIKK21zZ3N0ciAiKEvDqWsgamVsemkgYSByZXDDsy1zcGVjaWZpa3VzIGVzemvDtnrDtmtldCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAiUGFyYW5jcyBmdXR0YXTDoXNhOiAlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzExCittc2dpZCAiQXJndW1lbnRzIgorbXNnc3RyICJBcmd1bWVudHVtb2siCisKKyM6IGxpYi90b29sc19kbGcudGNsOjM0OAorbXNnaWQgIk9LIgorbXNnc3RyICJPSyIKIAogIzogbGliL3RyYW5zcG9ydC50Y2w6NwogIywgdGNsLWZvcm1hdApAQCAtMTkzNyw3MiArMjUxNSw4MSBAQAogbXNnaWQgIlBydW5pbmcgdHJhY2tpbmcgYnJhbmNoZXMgZGVsZXRlZCBmcm9tICVzIgogbXNnc3RyICJBICVzIHJlcMOzYsOzbCB0w7Zyw7ZsdCBrw7Z2ZXTFkSBicmFuY2hlayB0w7ZybMOpc2UiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCi0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAicHVzaCAlcyIKLW1zZ3N0ciAiJXMgcHVzaC1vbMOhc2EiCi0KICM6IGxpYi90cmFuc3BvcnQudGNsOjI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyBjaGFuZ2VzIHRvICVzIgogbXNnc3RyICJWw6FsdG96w6Fzb2sgcHVzaG9sw6FzYSBpZGU6ICVzIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo3MgorIzogbGliL3RyYW5zcG9ydC50Y2w6NjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNaXJyb3JpbmcgdG8gJXMiCittc2dzdHIgIlTDvGtyw7Z6w6lzIGEga8O2dmV0a2V6xZEgaGVseXJlOiAlcyIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6ODIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nICVzICVzIHRvICVzIgogbXNnc3RyICJQdXNob2zDoXM6ICVzICVzLCBpZGU6ICVzIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo4OQorIzogbGliL3RyYW5zcG9ydC50Y2w6MTAwCiBtc2dpZCAiUHVzaCBCcmFuY2hlcyIKIG1zZ3N0ciAiQnJhbmNoZWsgcHVzaG9sw6FzYSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMTQKIG1zZ2lkICJTb3VyY2UgQnJhbmNoZXMiCiBtc2dzdHIgIkZvcnLDoXMgYnJhbmNoZWsiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjEyMAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTMxCiBtc2dpZCAiRGVzdGluYXRpb24gUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQ8OpbCByZXDDsyIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTU4CisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjkKIG1zZ2lkICJUcmFuc2ZlciBPcHRpb25zIgogbXNnc3RyICLDgXR2aXRlbGkgb3BjacOzayIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTYwCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxNzEKIG1zZ2lkICJGb3JjZSBvdmVyd3JpdGUgZXhpc3RpbmcgYnJhbmNoIChtYXkgZGlzY2FyZCBjaGFuZ2VzKSIKIG1zZ3N0ciAiIgogIkzDqXRlesWRIGJyYW5jaCBmZWzDvGzDrXLDoXPDoW5hayBlcsWRbHRldMOpc2UgKGxlaGV0LCBob2d5IGVsIGZvZyBkb2JuaSAiCiAidsOhbHRvenRhdMOhc29rYXQpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjQKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3NQogbXNnaWQgIlVzZSB0aGluIHBhY2sgKGZvciBzbG93IG5ldHdvcmsgY29ubmVjdGlvbnMpIgogbXNnc3RyICJWw6lrb255IGNzb21hZ29rIGhhc3puw6FsYXRhIChsYXNzw7ogaMOhbMOzemF0aSBrYXBjc29sYXRvayBzesOhbcOhcmEpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjgKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3OQogbXNnaWQgIkluY2x1ZGUgdGFncyIKIG1zZ3N0ciAiVGFnZWtldCBpcyIKIAorI34gbXNnaWQgIiIKKyN+ICJVbmFibGUgdG8gc3RhcnQgZ2l0azpcbiIKKyN+ICJcbiIKKyN+ICIlcyBkb2VzIG5vdCBleGlzdCIKKyN+IG1zZ3N0ciAiIgorI34gIkEgZ2l0ayBpbmTDrXTDoXNhIHNpa2VydGVsZW46XG4iCisjfiAiXG4iCisjfiAiQSh6KSAlcyBuZW0gbMOpdGV6aWsiCisKKyN+IG1zZ2lkICJBcHBsZSIKKyN+IG1zZ3N0ciAiQXBwbGUiCisKKyN+IG1zZ2lkICJVUkw6IgorI34gbXNnc3RyICJVUkw6IgorCisjfiBtc2dpZCAiRGVsZXRlIFJlbW90ZSBCcmFuY2giCisjfiBtc2dzdHIgIlTDoXZvbGkgYnJhbmNoIHTDtnJsw6lzZSIKKwogI34gbXNnaWQgIk5vdCBjb25uZWN0ZWQgdG8gYXNwZWxsIgogI34gbXNnc3RyICJOaW5jcyBrYXBjc29sYXQgYXogYXNwZWxsaGV6IgogCi0jfiBtc2dpZCAiQ2Fubm90IGZpbmQgdGhlIGdpdCBkaXJlY3Rvcnk6IgotI34gbXNnc3RyICJOZW0gdGFsw6FsaGF0w7MgYSBnaXQga8O2bnl2dMOhcjoiCi0KICN+IG1zZ2lkICJVbnN0YWdlZCBDaGFuZ2VzIChXaWxsIE5vdCBCZSBDb21taXR0ZWQpIgogI34gbXNnc3RyICJOZW0ga2l2w6FsYXN6dG90dCB2w6FsdG96dGF0w6Fzb2sgKG5lbSBsZXN6IGNvbW1pdG9sdmEpIgogCiAjfiBtc2dpZCAiUHVzaCB0byAlcy4uLiIKICN+IG1zZ3N0ciAiUHVzaG9sw6FzIGlkZTogJXMuLi4iCiAKLSN+IG1zZ2lkICJBZGQgVG8gQ29tbWl0IgotI34gbXNnc3RyICJIb3p6w6FhZMOhcyBhIGNvbW1pdGhveiIKLQogI34gbXNnaWQgIkFkZCBFeGlzdGluZyBUbyBDb21taXQiCiAjfiBtc2dzdHIgIkhvenrDoWFkw6FzIGzDqXRlesWRIGNvbW1pdGhveiIKIAotI34gbXNnaWQgIlJ1bm5pbmcgbWlnYS4uLiIKLSN+IG1zZ3N0ciAiQSBtaWdhIGZ1dHRhdMOhc2EuLi4iCi0KICN+IG1zZ2lkICJBZGQgRXhpc3RpbmciCiAjfiBtc2dzdHIgIkzDqXRlesWRIGhvenrDoWFkw6FzYSIKIApkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9pdC5wbyBiL2dpdC1ndWkvcG8vaXQucG8KaW5kZXggM2RiNGZiNi4uMjk0ZTU5NSAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9wby9pdC5wbworKysgYi9naXQtZ3VpL3BvL2l0LnBvCkBAIC05LDQxICs5LDQxIEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdpdC1ndWlcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMDgtMDIgMTQ6NDUtMDcwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMDgtMDMgMTY6MDQrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTEyLTA4IDA4OjMxLTA4MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTEyLTA5IDEzOjA0KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IE1pY2hlbGUgQmFsbGFiaW8gPGJhcnJhX2N1ZGFAa2F0YW1haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEl0YWxpYW4gPHRwQGxpc3RzLmxpbnV4Lml0PlxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6Njg4IGdpdC1ndWkuc2g6NzAyIGdpdC1ndWkuc2g6NzE1IGdpdC1ndWkuc2g6Nzk4Ci0jOiBnaXQtZ3VpLnNoOjgxNworIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjczNyBnaXQtZ3VpLnNoOjc1MSBnaXQtZ3VpLnNoOjc2NCBnaXQtZ3VpLnNoOjg0NworIzogZ2l0LWd1aS5zaDo4NjYKIG1zZ2lkICJnaXQtZ3VpOiBmYXRhbCBlcnJvciIKIG1zZ3N0ciAiZ2l0LWd1aTogZXJyb3JlIGdyYXZlIgogCi0jOiBnaXQtZ3VpLnNoOjY0NAorIzogZ2l0LWd1aS5zaDo2ODkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGZvbnQgc3BlY2lmaWVkIGluICVzOiIKIG1zZ3N0ciAiQ2FyYXR0ZXJpIG5vbiB2YWxpZGkgc3BlY2lmaWNhdGkgaW4gJXM6IgogCi0jOiBnaXQtZ3VpLnNoOjY3NAorIzogZ2l0LWd1aS5zaDo3MjMKIG1zZ2lkICJNYWluIEZvbnQiCiBtc2dzdHIgIkNhcmF0dGVyaSBwcmluY2lwYWxpIgogCi0jOiBnaXQtZ3VpLnNoOjY3NQorIzogZ2l0LWd1aS5zaDo3MjQKIG1zZ2lkICJEaWZmL0NvbnNvbGUgRm9udCIKIG1zZ3N0ciAiQ2FyYXR0ZXJpIHBlciBjb25mcm9udGkgZSB0ZXJtaW5hbGUiCiAKLSM6IGdpdC1ndWkuc2g6Njg5CisjOiBnaXQtZ3VpLnNoOjczOAogbXNnaWQgIkNhbm5vdCBmaW5kIGdpdCBpbiBQQVRILiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgdHJvdmFyZSBnaXQgbmVsIFBBVEgiCiAKLSM6IGdpdC1ndWkuc2g6NzE2CisjOiBnaXQtZ3VpLnNoOjc2NQogbXNnaWQgIkNhbm5vdCBwYXJzZSBHaXQgdmVyc2lvbiBzdHJpbmc6IgogbXNnc3RyICJJbXBvc3NpYmlsZSBkZXRlcm1pbmFyZSBsYSB2ZXJzaW9uZSBkaSBHaXQ6IgogCi0jOiBnaXQtZ3VpLnNoOjczNAorIzogZ2l0LWd1aS5zaDo3ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiR2l0IHZlcnNpb24gY2Fubm90IGJlIGRldGVybWluZWQuXG4iCkBAIC02MiwzODEgKzYyLDQ0NiBAQAogIlxuIgogIkFzc3VtZXJlIGNoZSAnJXMnIHNpYSBhbGxhIHZlcnNpb25lIDEuNS4wP1xuIgogCi0jOiBnaXQtZ3VpLnNoOjk3MgorIzogZ2l0LWd1aS5zaDoxMDYyCiBtc2dpZCAiR2l0IGRpcmVjdG9yeSBub3QgZm91bmQ6IgogbXNnc3RyICJOb24gdHJvdm8gbGEgZGlyZWN0b3J5IGRpIGdpdDogIgogCi0jOiBnaXQtZ3VpLnNoOjk3OQorIzogZ2l0LWd1aS5zaDoxMDY5CiBtc2dpZCAiQ2Fubm90IG1vdmUgdG8gdG9wIG9mIHdvcmtpbmcgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgc3Bvc3RhcnNpIHN1bGxhIGRpcmVjdG9yeSBwcmluY2lwYWxlIGRlbCBwcm9nZXR0bzoiCiAKLSM6IGdpdC1ndWkuc2g6OTg2CisjOiBnaXQtZ3VpLnNoOjEwNzYKIG1zZ2lkICJDYW5ub3QgdXNlIGZ1bm55IC5naXQgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgdXNhcmUgdW5hIC5naXQgZGlyZWN0b3J5IHN0cmFuYToiCiAKLSM6IGdpdC1ndWkuc2g6OTkxCisjOiBnaXQtZ3VpLnNoOjEwODEKIG1zZ2lkICJObyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiTmVzc3VuYSBkaXJlY3RvcnkgZGkgbGF2b3JvIgogCi0jOiBnaXQtZ3VpLnNoOjExMzggbGliL2NoZWNrb3V0X29wLnRjbDozMDUKKyM6IGdpdC1ndWkuc2g6MTI0NyBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQogbXNnaWQgIlJlZnJlc2hpbmcgZmlsZSBzdGF0dXMuLi4iCiBtc2dzdHIgIkNvbnRyb2xsbyBkZWxsbyBzdGF0byBkZWkgZmlsZSBpbiBjb3Jzby4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMTk0CisjOiBnaXQtZ3VpLnNoOjEzMDMKIG1zZ2lkICJTY2FubmluZyBmb3IgbW9kaWZpZWQgZmlsZXMgLi4uIgogbXNnc3RyICJSaWNlcmNhIGRpIGZpbGUgbW9kaWZpY2F0aSBpbiBjb3Jzby4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMzY5IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIkF2dmlvIHByZXBhcmUtY29tbWl0LW1zZyBob29rLi4uIgorCisjOiBnaXQtZ3VpLnNoOjEzODQKK21zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suIgorbXNnc3RyICJSZXZpc2lvbmUgcmlmaXV0YXRhIGRhbCBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4iCisKKyM6IGdpdC1ndWkuc2g6MTU0MiBsaWIvYnJvd3Nlci50Y2w6MjQ2CiBtc2dpZCAiUmVhZHkuIgogbXNnc3RyICJQcm9udG8uIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzUKKyM6IGdpdC1ndWkuc2g6MTgxOQogbXNnaWQgIlVubW9kaWZpZWQiCiBtc2dzdHIgIk5vbiBtb2RpZmljYXRvIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzcKKyM6IGdpdC1ndWkuc2g6MTgyMQogbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICJNb2RpZmljYXRvLCBub24gcHJlcGFyYXRvIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzggZ2l0LWd1aS5zaDoxNjQzCisjOiBnaXQtZ3VpLnNoOjE4MjIgZ2l0LWd1aS5zaDoxODMwCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIlByZXBhcmF0byBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoxNjM5IGdpdC1ndWkuc2g6MTY0NAorIzogZ2l0LWd1aS5zaDoxODIzIGdpdC1ndWkuc2g6MTgzMQogbXNnaWQgIlBvcnRpb25zIHN0YWdlZCBmb3IgY29tbWl0IgogbXNnc3RyICJQYXJ0aSBwcmVwYXJhdGUgcGVyIHVuYSBudW92YSByZXZpc2lvbmUiCiAKLSM6IGdpdC1ndWkuc2g6MTY0MCBnaXQtZ3VpLnNoOjE2NDUKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKIG1zZ3N0ciAiUHJlcGFyYXRvIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lLCBtYW5jYW50ZSIKIAotIzogZ2l0LWd1aS5zaDoxNjQyCisjOiBnaXQtZ3VpLnNoOjE4MjYKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgbm90IHN0YWdlZCIKK21zZ3N0ciAiVGlwbyBkaSBmaWxlIG1vZGlmaWNhdG8sIG5vbiBwcmVwYXJhdG8gcGVyIHVuYSBudW92YSByZXZpc2lvbmUiCisKKyM6IGdpdC1ndWkuc2g6MTgyNworbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQiCittc2dzdHIgIlRpcG8gZGkgZmlsZSBtb2RpZmljYXRvLCBwcmVwYXJhdG8gcGVyIHVuYSBudW92YSByZXZpc2lvbmUiCisKKyM6IGdpdC1ndWkuc2g6MTgyOQogbXNnaWQgIlVudHJhY2tlZCwgbm90IHN0YWdlZCIKIG1zZ3N0ciAiTm9uIHRyYWNjaWF0bywgbm9uIHByZXBhcmF0byBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoxNjQ3CisjOiBnaXQtZ3VpLnNoOjE4MzQKIG1zZ2lkICJNaXNzaW5nIgogbXNnc3RyICJNYW5jYW50ZSIKIAotIzogZ2l0LWd1aS5zaDoxNjQ4CisjOiBnaXQtZ3VpLnNoOjE4MzUKIG1zZ2lkICJTdGFnZWQgZm9yIHJlbW92YWwiCiBtc2dzdHIgIlByZXBhcmF0byBwZXIgbGEgcmltb3ppb25lIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDkKKyM6IGdpdC1ndWkuc2g6MTgzNgogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCIKIG1zZ3N0ciAiUHJlcGFyYXRvIGFsbGEgcmltb3ppb25lLCBhbmNvcmEgcHJlc2VudGUiCiAKLSM6IGdpdC1ndWkuc2g6MTY1MSBnaXQtZ3VpLnNoOjE2NTIgZ2l0LWd1aS5zaDoxNjUzIGdpdC1ndWkuc2g6MTY1NAorIzogZ2l0LWd1aS5zaDoxODM4IGdpdC1ndWkuc2g6MTgzOSBnaXQtZ3VpLnNoOjE4NDAgZ2l0LWd1aS5zaDoxODQxCisjOiBnaXQtZ3VpLnNoOjE4NDIgZ2l0LWd1aS5zaDoxODQzCiBtc2dpZCAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiIKIG1zZ3N0ciAiUmljaGllZGUgcmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aSIKIAotIzogZ2l0LWd1aS5zaDoxNjg5CisjOiBnaXQtZ3VpLnNoOjE4NzgKIG1zZ2lkICJTdGFydGluZyBnaXRrLi4uIHBsZWFzZSB3YWl0Li4uIgogbXNnc3RyICJBdnZpbyBkaSBnaXRrLi4uIGF0dGVuZGVyZS4uLiIKIAotIzogZ2l0LWd1aS5zaDoxNjk4CisjOiBnaXQtZ3VpLnNoOjE4ODcKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGdpdGsgaW4gUEFUSCIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgdHJvdmFyZSBnaXRrIG5lbCBQQVRIIgogCi0jOiBnaXQtZ3VpLnNoOjE5NDggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNgorIzogZ2l0LWd1aS5zaDoyMjgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKIG1zZ2lkICJSZXBvc2l0b3J5IgogbXNnc3RyICJBcmNoaXZpbyIKIAotIzogZ2l0LWd1aS5zaDoxOTQ5CisjOiBnaXQtZ3VpLnNoOjIyODEKIG1zZ2lkICJFZGl0IgogbXNnc3RyICJNb2RpZmljYSIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJSYW1vIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTQgbGliL2Nob29zZV9yZXYudGNsOjU0OAorIzogZ2l0LWd1aS5zaDoyMjg2IGxpYi9jaG9vc2VfcmV2LnRjbDo1NDgKIG1zZ2lkICJDb21taXRAQG5vdW4iCiBtc2dzdHIgIlJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoxOTU3IGxpYi9tZXJnZS50Y2w6MTIwIGxpYi9tZXJnZS50Y2w6MTQ5IGxpYi9tZXJnZS50Y2w6MTY3CisjOiBnaXQtZ3VpLnNoOjIyODkgbGliL21lcmdlLnRjbDoxMjEgbGliL21lcmdlLnRjbDoxNTAgbGliL21lcmdlLnRjbDoxNjgKIG1zZ2lkICJNZXJnZSIKIG1zZ3N0ciAiRnVzaW9uZSAoTWVyZ2UpIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTggbGliL2Nob29zZV9yZXYudGNsOjU1NworIzogZ2l0LWd1aS5zaDoyMjkwIGxpYi9jaG9vc2VfcmV2LnRjbDo1NTcKIG1zZ2lkICJSZW1vdGUiCiBtc2dzdHIgIlJlbW90byIKIAotIzogZ2l0LWd1aS5zaDoxOTY3CisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiU3RydW1lbnRpIgorCisjOiBnaXQtZ3VpLnNoOjIzMDIKK21zZ2lkICJFeHBsb3JlIFdvcmtpbmcgQ29weSIKK21zZ3N0ciAiRXNwbG9yYSBjb3BpYSBkaSBsYXZvcm8iCisKKyM6IGdpdC1ndWkuc2g6MjMwNwogbXNnaWQgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIgogbXNnc3RyICJFc3Bsb3JhIGkgZmlsZSBkZWwgcmFtbyBhdHR1YWxlIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzEKKyM6IGdpdC1ndWkuc2g6MjMxMQogbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMuLi4iCiBtc2dzdHIgIkVzcGxvcmEgaSBmaWxlIGRlbCByYW1vLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzYKKyM6IGdpdC1ndWkuc2g6MjMxNgogbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCiBtc2dzdHIgIlZpc3VhbGl6emEgbGEgY3Jvbm9sb2dpYSBkZWwgcmFtbyBhdHR1YWxlIgogCi0jOiBnaXQtZ3VpLnNoOjE5ODAKKyM6IGdpdC1ndWkuc2g6MjMyMAogbXNnaWQgIlZpc3VhbGl6ZSBBbGwgQnJhbmNoIEhpc3RvcnkiCiBtc2dzdHIgIlZpc3VhbGl6emEgbGEgY3Jvbm9sb2dpYSBkaSB0dXR0aSBpIHJhbWkiCiAKLSM6IGdpdC1ndWkuc2g6MTk4NworIzogZ2l0LWd1aS5zaDoyMzI3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJvd3NlICVzJ3MgRmlsZXMiCiBtc2dzdHIgIkVzcGxvcmEgaSBmaWxlIGRpICVzIgogCi0jOiBnaXQtZ3VpLnNoOjE5ODkKKyM6IGdpdC1ndWkuc2g6MjMyOQogIywgdGNsLWZvcm1hdAogbXNnaWQgIlZpc3VhbGl6ZSAlcydzIEhpc3RvcnkiCiBtc2dzdHIgIlZpc3VhbGl6emEgbGEgY3Jvbm9sb2dpYSBkaSAlcyIKIAotIzogZ2l0LWd1aS5zaDoxOTk0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NworIzogZ2l0LWd1aS5zaDoyMzM0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NwogbXNnaWQgIkRhdGFiYXNlIFN0YXRpc3RpY3MiCiBtc2dzdHIgIlN0YXRpc3RpY2hlIGRlbGwnYXJjaGl2aW8iCiAKLSM6IGdpdC1ndWkuc2g6MTk5NyBsaWIvZGF0YWJhc2UudGNsOjM0CisjOiBnaXQtZ3VpLnNoOjIzMzcgbGliL2RhdGFiYXNlLnRjbDozNAogbXNnaWQgIkNvbXByZXNzIERhdGFiYXNlIgogbXNnc3RyICJDb21wcmltaSBsJ2FyY2hpdmlvIgogCi0jOiBnaXQtZ3VpLnNoOjIwMDAKKyM6IGdpdC1ndWkuc2g6MjM0MAogbXNnaWQgIlZlcmlmeSBEYXRhYmFzZSIKIG1zZ3N0ciAiVmVyaWZpY2EgbCdhcmNoaXZpbyIKIAotIzogZ2l0LWd1aS5zaDoyMDA3IGdpdC1ndWkuc2g6MjAxMSBnaXQtZ3VpLnNoOjIwMTUgbGliL3Nob3J0Y3V0LnRjbDo3CisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKICM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQogbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCiBtc2dzdHIgIkNyZWEgaWNvbmEgZGVza3RvcCIKIAotIzogZ2l0LWd1aS5zaDoyMDIzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTc3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTg1CisjOiBnaXQtZ3VpLnNoOjIzNjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxODMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxOTEKIG1zZ2lkICJRdWl0IgogbXNnc3RyICJFc2NpIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzEKKyM6IGdpdC1ndWkuc2g6MjM3MQogbXNnaWQgIlVuZG8iCiBtc2dzdHIgIkFubnVsbGEiCiAKLSM6IGdpdC1ndWkuc2g6MjAzNAorIzogZ2l0LWd1aS5zaDoyMzc0CiBtc2dpZCAiUmVkbyIKIG1zZ3N0ciAiUmlwZXRpIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzggZ2l0LWd1aS5zaDoyNTQ1CisjOiBnaXQtZ3VpLnNoOjIzNzggZ2l0LWd1aS5zaDoyOTM3CiBtc2dpZCAiQ3V0IgogbXNnc3RyICJUYWdsaWEiCiAKLSM6IGdpdC1ndWkuc2g6MjA0MSBnaXQtZ3VpLnNoOjI1NDggZ2l0LWd1aS5zaDoyNjIyIGdpdC1ndWkuc2g6MjcxNQorIzogZ2l0LWd1aS5zaDoyMzgxIGdpdC1ndWkuc2g6Mjk0MCBnaXQtZ3VpLnNoOjMwMTQgZ2l0LWd1aS5zaDozMDk2CiAjOiBsaWIvY29uc29sZS50Y2w6NjkKIG1zZ2lkICJDb3B5IgogbXNnc3RyICJDb3BpYSIKIAotIzogZ2l0LWd1aS5zaDoyMDQ0IGdpdC1ndWkuc2g6MjU1MQorIzogZ2l0LWd1aS5zaDoyMzg0IGdpdC1ndWkuc2g6Mjk0MwogbXNnaWQgIlBhc3RlIgogbXNnc3RyICJJbmNvbGxhIgogCi0jOiBnaXQtZ3VpLnNoOjIwNDcgZ2l0LWd1aS5zaDoyNTU0IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgorIzogZ2l0LWd1aS5zaDoyMzg3IGdpdC1ndWkuc2g6Mjk0NiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MjYKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MzgKIG1zZ2lkICJEZWxldGUiCiBtc2dzdHIgIkVsaW1pbmEiCiAKLSM6IGdpdC1ndWkuc2g6MjA1MSBnaXQtZ3VpLnNoOjI1NTggZ2l0LWd1aS5zaDoyNzE5IGxpYi9jb25zb2xlLnRjbDo3MQorIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6Mjk1MCBnaXQtZ3VpLnNoOjMxMDAgbGliL2NvbnNvbGUudGNsOjcxCiBtc2dpZCAiU2VsZWN0IEFsbCIKIG1zZ3N0ciAiU2VsZXppb25hIHR1dHRvIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjAKKyM6IGdpdC1ndWkuc2g6MjQwMAogbXNnaWQgIkNyZWF0ZS4uLiIKIG1zZ3N0ciAiQ3JlYS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDY2CisjOiBnaXQtZ3VpLnNoOjI0MDYKIG1zZ2lkICJDaGVja291dC4uLiIKIG1zZ3N0ciAiQXR0aXZhLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzIKKyM6IGdpdC1ndWkuc2g6MjQxMgogbXNnaWQgIlJlbmFtZS4uLiIKIG1zZ3N0ciAiUmlub21pbmEiCiAKLSM6IGdpdC1ndWkuc2g6MjA3NyBnaXQtZ3VpLnNoOjIxODcKKyM6IGdpdC1ndWkuc2g6MjQxNwogbXNnaWQgIkRlbGV0ZS4uLiIKIG1zZ3N0ciAiRWxpbWluYS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDgyCisjOiBnaXQtZ3VpLnNoOjI0MjIKIG1zZ2lkICJSZXNldC4uLiIKIG1zZ3N0ciAiUmlwcmlzdGluYS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDk0IGdpdC1ndWkuc2g6MjQ5MQotbXNnaWQgIk5ldyBDb21taXQiCi1tc2dzdHIgIk51b3ZhIHJldmlzaW9uZSIKKyM6IGdpdC1ndWkuc2g6MjQzMgorbXNnaWQgIkRvbmUiCittc2dzdHIgIkZhdHRvIgogCi0jOiBnaXQtZ3VpLnNoOjIxMDIgZ2l0LWd1aS5zaDoyNDk4Ci1tc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCi1tc2dzdHIgIkNvcnJlZ2dpIGwndWx0aW1hIHJldmlzaW9uZSIKLQotIzogZ2l0LWd1aS5zaDoyMTExIGdpdC1ndWkuc2g6MjQ1OCBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjk5Ci1tc2dpZCAiUmVzY2FuIgotbXNnc3RyICJBbmFsaXp6YSBudW92YW1lbnRlIgotCi0jOiBnaXQtZ3VpLnNoOjIxMTcKLW1zZ2lkICJTdGFnZSBUbyBDb21taXQiCi1tc2dzdHIgIlByZXBhcmEgcGVyIHVuYSBudW92YSByZXZpc2lvbmUiCi0KLSM6IGdpdC1ndWkuc2g6MjEyMwotbXNnaWQgIlN0YWdlIENoYW5nZWQgRmlsZXMgVG8gQ29tbWl0IgotbXNnc3RyICJQcmVwYXJhIGkgZmlsZSBtb2RpZmljYXRpIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgotCi0jOiBnaXQtZ3VpLnNoOjIxMjkKLW1zZ2lkICJVbnN0YWdlIEZyb20gQ29tbWl0IgotbXNnc3RyICJBbm51bGxhIHByZXBhcmF6aW9uZSIKLQotIzogZ2l0LWd1aS5zaDoyMTM0IGxpYi9pbmRleC50Y2w6Mzk1Ci1tc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCi1tc2dzdHIgIkFubnVsbGEgbW9kaWZpY2hlIgotCi0jOiBnaXQtZ3VpLnNoOjIxNDEgZ2l0LWd1aS5zaDoyNzAyCi1tc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCi1tc2dzdHIgIk1vc3RyYSBtZW5vIGNvbnRlc3RvIgotCi0jOiBnaXQtZ3VpLnNoOjIxNDUgZ2l0LWd1aS5zaDoyNzA2Ci1tc2dpZCAiU2hvdyBNb3JlIENvbnRleHQiCi1tc2dzdHIgIk1vc3RyYSBwacO5IGNvbnRlc3RvIgotCi0jOiBnaXQtZ3VpLnNoOjIxNTEgZ2l0LWd1aS5zaDoyNDcwIGdpdC1ndWkuc2g6MjU2OQotbXNnaWQgIlNpZ24gT2ZmIgotbXNnc3RyICJTaWduIE9mZiIKLQotIzogZ2l0LWd1aS5zaDoyMTU1IGdpdC1ndWkuc2g6MjQ3NAorIzogZ2l0LWd1aS5zaDoyNDM0CiBtc2dpZCAiQ29tbWl0QEB2ZXJiIgogbXNnc3RyICJOdW92YSByZXZpc2lvbmUiCiAKLSM6IGdpdC1ndWkuc2g6MjE2NgorIzogZ2l0LWd1aS5zaDoyNDQzIGdpdC1ndWkuc2g6Mjg3OAorbXNnaWQgIk5ldyBDb21taXQiCittc2dzdHIgIk51b3ZhIHJldmlzaW9uZSIKKworIzogZ2l0LWd1aS5zaDoyNDUxIGdpdC1ndWkuc2g6Mjg4NQorbXNnaWQgIkFtZW5kIExhc3QgQ29tbWl0IgorbXNnc3RyICJDb3JyZWdnaSBsJ3VsdGltYSByZXZpc2lvbmUiCisKKyM6IGdpdC1ndWkuc2g6MjQ2MSBnaXQtZ3VpLnNoOjI4MzkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo5OQorbXNnaWQgIlJlc2NhbiIKK21zZ3N0ciAiQW5hbGl6emEgbnVvdmFtZW50ZSIKKworIzogZ2l0LWd1aS5zaDoyNDY3Cittc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgorbXNnc3RyICJQcmVwYXJhIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgorCisjOiBnaXQtZ3VpLnNoOjI0NzMKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKK21zZ3N0ciAiUHJlcGFyYSBpIGZpbGUgbW9kaWZpY2F0aSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKKworIzogZ2l0LWd1aS5zaDoyNDc5Cittc2dpZCAiVW5zdGFnZSBGcm9tIENvbW1pdCIKK21zZ3N0ciAiQW5udWxsYSBwcmVwYXJhemlvbmUiCisKKyM6IGdpdC1ndWkuc2g6MjQ4NCBsaWIvaW5kZXgudGNsOjQxMAorbXNnaWQgIlJldmVydCBDaGFuZ2VzIgorbXNnc3RyICJBbm51bGxhIG1vZGlmaWNoZSIKKworIzogZ2l0LWd1aS5zaDoyNDkxIGdpdC1ndWkuc2g6MzA4MworbXNnaWQgIlNob3cgTGVzcyBDb250ZXh0IgorbXNnc3RyICJNb3N0cmEgbWVubyBjb250ZXN0byIKKworIzogZ2l0LWd1aS5zaDoyNDk1IGdpdC1ndWkuc2g6MzA4NworbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgorbXNnc3RyICJNb3N0cmEgcGnDuSBjb250ZXN0byIKKworIzogZ2l0LWd1aS5zaDoyNTAyIGdpdC1ndWkuc2g6Mjg1MiBnaXQtZ3VpLnNoOjI5NjEKK21zZ2lkICJTaWduIE9mZiIKK21zZ3N0ciAiU2lnbiBPZmYiCisKKyM6IGdpdC1ndWkuc2g6MjUxOAogbXNnaWQgIkxvY2FsIE1lcmdlLi4uIgogbXNnc3RyICJGdXNpb25lIGxvY2FsZS4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMTcxCisjOiBnaXQtZ3VpLnNoOjI1MjMKIG1zZ2lkICJBYm9ydCBNZXJnZS4uLiIKIG1zZ3N0ciAiSW50ZXJyb21waSBmdXNpb25lLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxODMKKyM6IGdpdC1ndWkuc2g6MjUzNSBnaXQtZ3VpLnNoOjI1NzUKK21zZ2lkICJBZGQuLi4iCittc2dzdHIgIkFnZ2l1bmdpLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1MzkKIG1zZ2lkICJQdXNoLi4uIgogbXNnc3RyICJQcm9wYWdhLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxOTcgZ2l0LWd1aS5zaDoyMjE5IGxpYi9hYm91dC50Y2w6MTQKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAorIzogZ2l0LWd1aS5zaDoyNTQzCittc2dpZCAiRGVsZXRlIEJyYW5jaC4uLiIKK21zZ3N0ciAiRWxpbWluYSByYW1vLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkFib3V0ICVzIgogbXNnc3RyICJJbmZvcm1hemlvbmkgc3UgJXMiCiAKLSM6IGdpdC1ndWkuc2g6MjIwMQorIzogZ2l0LWd1aS5zaDoyNTU3CiBtc2dpZCAiUHJlZmVyZW5jZXMuLi4iCiBtc2dzdHIgIlByZWZlcmVuemUuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjIwOSBnaXQtZ3VpLnNoOjI3NDAKKyM6IGdpdC1ndWkuc2g6MjU2NSBnaXQtZ3VpLnNoOjMxMjkKIG1zZ2lkICJPcHRpb25zLi4uIgogbXNnc3RyICJPcHppb25pLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIyMTUgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NworIzogZ2l0LWd1aS5zaDoyNTc2Cittc2dpZCAiUmVtb3ZlLi4uIgorbXNnc3RyICJSaW11b3ZpLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MAogbXNnaWQgIkhlbHAiCiBtc2dzdHIgIkFpdXRvIgogCi0jOiBnaXQtZ3VpLnNoOjIyNTYKKyM6IGdpdC1ndWkuc2g6MjYxMQogbXNnaWQgIk9ubGluZSBEb2N1bWVudGF0aW9uIgogbXNnc3RyICJEb2N1bWVudGF6aW9uZSBzdWwgd2ViIgogCi0jOiBnaXQtZ3VpLnNoOjIzNDAKKyM6IGdpdC1ndWkuc2g6MjYxNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTYKK21zZ2lkICJTaG93IFNTSCBLZXkiCittc2dzdHIgIk1vc3RyYSBjaGF2ZSBTU0giCisKKyM6IGdpdC1ndWkuc2g6MjcyMQogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBjYW5ub3Qgc3RhdCBwYXRoICVzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAiZXJyb3JlIGdyYXZlOiBpbXBvc3NpYmlsZSBlZmZldHR1YXJlIGxvIHN0YXQgZGVsIHBhdGggJXM6IGZpbGUgbyBkaXJlY3RvcnkgIgogIm5vbiB0cm92YXRhIgogCi0jOiBnaXQtZ3VpLnNoOjIzNzMKKyM6IGdpdC1ndWkuc2g6Mjc1NAogbXNnaWQgIkN1cnJlbnQgQnJhbmNoOiIKIG1zZ3N0ciAiUmFtbyBhdHR1YWxlOiIKIAotIzogZ2l0LWd1aS5zaDoyMzk0CisjOiBnaXQtZ3VpLnNoOjI3NzUKIG1zZ2lkICJTdGFnZWQgQ2hhbmdlcyAoV2lsbCBDb21taXQpIgogbXNnc3RyICJNb2RpZmljaGUgcHJlcGFyYXRlIChzYXJhbm5vIG5lbGxhIG51b3ZhIHJldmlzaW9uZSkiCiAKLSM6IGdpdC1ndWkuc2g6MjQxNAorIzogZ2l0LWd1aS5zaDoyNzk1CiBtc2dpZCAiVW5zdGFnZWQgQ2hhbmdlcyIKIG1zZ3N0ciAiTW9kaWZpY2hlIG5vbiBwcmVwYXJhdGUiCiAKLSM6IGdpdC1ndWkuc2g6MjQ2NAorIzogZ2l0LWd1aS5zaDoyODQ1CiBtc2dpZCAiU3RhZ2UgQ2hhbmdlZCIKIG1zZ3N0ciAiUHJlcGFyYSBtb2RpZmljYXRpIgogCi0jOiBnaXQtZ3VpLnNoOjI0ODAgbGliL3RyYW5zcG9ydC50Y2w6OTMgbGliL3RyYW5zcG9ydC50Y2w6MTgyCisjOiBnaXQtZ3VpLnNoOjI4NjQgbGliL3RyYW5zcG9ydC50Y2w6MTA0IGxpYi90cmFuc3BvcnQudGNsOjE5MwogbXNnaWQgIlB1c2giCiBtc2dzdHIgIlByb3BhZ2EgKFB1c2gpIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTAKKyM6IGdpdC1ndWkuc2g6Mjg5OQogbXNnaWQgIkluaXRpYWwgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJNZXNzYWdnaW8gZGkgcmV2aXNpb25lIGluaXppYWxlOiIKIAotIzogZ2l0LWd1aS5zaDoyNTExCisjOiBnaXQtZ3VpLnNoOjI5MDAKIG1zZ2lkICJBbWVuZGVkIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiTWVzc2FnZ2lvIGRpIHJldmlzaW9uZSBjb3JyZXR0bzoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMgorIzogZ2l0LWd1aS5zaDoyOTAxCiBtc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiTWVzc2FnZ2lvIGluaXppYWxlIGRpIHJldmlzaW9uZSBjb3JyZXR0bzoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMworIzogZ2l0LWd1aS5zaDoyOTAyCiBtc2dpZCAiQW1lbmRlZCBNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2dpbyBkaSBmdXNpb25lIGNvcnJldHRvOiIKIAotIzogZ2l0LWd1aS5zaDoyNTE0CisjOiBnaXQtZ3VpLnNoOjI5MDMKIG1zZ2lkICJNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2dpbyBkaSBmdXNpb25lOiIKIAotIzogZ2l0LWd1aS5zaDoyNTE1CisjOiBnaXQtZ3VpLnNoOjI5MDQKIG1zZ2lkICJDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIk1lc3NhZ2dpbyBkaSByZXZpc2lvbmU6IgogCi0jOiBnaXQtZ3VpLnNoOjI1NjEgZ2l0LWd1aS5zaDoyNzIzIGxpYi9jb25zb2xlLnRjbDo3MworIzogZ2l0LWd1aS5zaDoyOTUzIGdpdC1ndWkuc2g6MzEwNCBsaWIvY29uc29sZS50Y2w6NzMKIG1zZ2lkICJDb3B5IEFsbCIKIG1zZ3N0ciAiQ29waWEgdHV0dG8iCiAKLSM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvYmxhbWUudGNsOjEwMAorIzogZ2l0LWd1aS5zaDoyOTc3IGxpYi9ibGFtZS50Y2w6MTA0CiBtc2dpZCAiRmlsZToiCiBtc2dzdHIgIkZpbGU6IgogCi0jOiBnaXQtZ3VpLnNoOjI2OTEKLW1zZ2lkICJBcHBseS9SZXZlcnNlIEh1bmsiCi1tc2dzdHIgIkFwcGxpY2EvSW52ZXJ0aSBzZXppb25lIgotCi0jOiBnaXQtZ3VpLnNoOjI2OTYKLW1zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCi1tc2dzdHIgIkFwcGxpY2EvSW52ZXJ0aSByaWdhIgotCi0jOiBnaXQtZ3VpLnNoOjI3MTEKKyM6IGdpdC1ndWkuc2g6MzA5MgogbXNnaWQgIlJlZnJlc2giCiBtc2dzdHIgIlJpbmZyZXNjYSIKIAotIzogZ2l0LWd1aS5zaDoyNzMyCisjOiBnaXQtZ3VpLnNoOjMxMTMKIG1zZ2lkICJEZWNyZWFzZSBGb250IFNpemUiCiBtc2dzdHIgIkRpbWludWlzY2kgZGltZW5zaW9uZSBjYXJhdHRlcmkiCiAKLSM6IGdpdC1ndWkuc2g6MjczNgorIzogZ2l0LWd1aS5zaDozMTE3CiBtc2dpZCAiSW5jcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJBdW1lbnRhIGRpbWVuc2lvbmUgY2FyYXR0ZXJpIgogCi0jOiBnaXQtZ3VpLnNoOjI3NDcKKyM6IGdpdC1ndWkuc2g6MzEyNSBsaWIvYmxhbWUudGNsOjI4MQorbXNnaWQgIkVuY29kaW5nIgorbXNnc3RyICJDb2RpZmljYSIKKworIzogZ2l0LWd1aS5zaDozMTM2Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICJBcHBsaWNhL0ludmVydGkgc2V6aW9uZSIKKworIzogZ2l0LWd1aS5zaDozMTQxCittc2dpZCAiQXBwbHkvUmV2ZXJzZSBMaW5lIgorbXNnc3RyICJBcHBsaWNhL0ludmVydGkgcmlnYSIKKworIzogZ2l0LWd1aS5zaDozMTUxCittc2dpZCAiUnVuIE1lcmdlIFRvb2wiCittc2dzdHIgIkF2dmlhIHByb2dyYW1tYSBlc3Rlcm5vIHBlciBsYSByaXNvbHV6aW9uZSBkZWkgY29uZmxpdHRpIgorCisjOiBnaXQtZ3VpLnNoOjMxNTYKK21zZ2lkICJVc2UgUmVtb3RlIFZlcnNpb24iCittc2dzdHIgIlVzYSB2ZXJzaW9uZSByZW1vdGEiCisKKyM6IGdpdC1ndWkuc2g6MzE2MAorbXNnaWQgIlVzZSBMb2NhbCBWZXJzaW9uIgorbXNnc3RyICJVc2EgdmVyc2lvbmUgbG9jYWxlIgorCisjOiBnaXQtZ3VpLnNoOjMxNjQKK21zZ2lkICJSZXZlcnQgVG8gQmFzZSIKK21zZ3N0ciAiUml0b3JuYSBhbGxhIHJldmlzaW9uZSBjb211bmUiCisKKyM6IGdpdC1ndWkuc2g6MzE4MwogbXNnaWQgIlVuc3RhZ2UgSHVuayBGcm9tIENvbW1pdCIKIG1zZ3N0ciAiQW5udWxsYSBwcmVwYXJhemlvbmUgZGVsbGEgc2V6aW9uZSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoyNzQ4CisjOiBnaXQtZ3VpLnNoOjMxODQKIG1zZ2lkICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiCiBtc2dzdHIgIkFubnVsbGEgcHJlcGFyYXppb25lIGRlbGxhIGxpbmVhIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgogCi0jOiBnaXQtZ3VpLnNoOjI3NTAKKyM6IGdpdC1ndWkuc2g6MzE4NgogbXNnaWQgIlN0YWdlIEh1bmsgRm9yIENvbW1pdCIKIG1zZ3N0ciAiUHJlcGFyYSBzZXppb25lIHBlciB1bmEgbnVvdmEgcmV2aXNpb25lIgogCi0jOiBnaXQtZ3VpLnNoOjI3NTEKKyM6IGdpdC1ndWkuc2g6MzE4NwogbXNnaWQgIlN0YWdlIExpbmUgRm9yIENvbW1pdCIKIG1zZ3N0ciAiUHJlcGFyYSBsaW5lYSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSIKIAotIzogZ2l0LWd1aS5zaDoyNzcxCisjOiBnaXQtZ3VpLnNoOjMyMTAKIG1zZ2lkICJJbml0aWFsaXppbmcuLi4iCiBtc2dzdHIgIkluaXppYWxpenphemlvbmUuLi4iCiAKLSM6IGdpdC1ndWkuc2g6Mjg3NgorIzogZ2l0LWd1aS5zaDozMzE1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlBvc3NpYmxlIGVudmlyb25tZW50IGlzc3VlcyBleGlzdC5cbiIKQEAgLTQ1Myw3ICs1MTgsNyBAQAogImRhICVzOlxuIgogIlxuIgogCi0jOiBnaXQtZ3VpLnNoOjI5MDYKKyM6IGdpdC1ndWkuc2g6MzM0NQogbXNnaWQgIiIKICJcbiIKICJUaGlzIGlzIGR1ZSB0byBhIGtub3duIGlzc3VlIHdpdGggdGhlXG4iCkBAIC00NjMsNyArNTI4LDcgQEAKICJDacOyIMOoIGRvdnV0byBhIHVuIHByb2JsZW1hIGNvbm9zY2l1dG9cbiIKICJjYXVzYXRvIGRhbGwnZXNlZ3VpYmlsZSBUY2wgZGlzdHJpYnVpdG8gZGEgQ3lnd2luLiIKIAotIzogZ2l0LWd1aS5zaDoyOTExCisjOiBnaXQtZ3VpLnNoOjMzNTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC00ODMsODAgKzU0OCwxMDggQEAKIG1zZ2lkICJnaXQtZ3VpIC0gYSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgZm9yIEdpdC4iCiBtc2dzdHIgImdpdC1ndWkgLSB1bidpbnRlcmZhY2NpYSBncmFmaWNhIHBlciBHaXQuIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwCisjOiBsaWIvYmxhbWUudGNsOjcyCiBtc2dpZCAiRmlsZSBWaWV3ZXIiCiBtc2dzdHIgIk1vc3RyYSBmaWxlIgogCi0jOiBsaWIvYmxhbWUudGNsOjc0CisjOiBsaWIvYmxhbWUudGNsOjc4CiBtc2dpZCAiQ29tbWl0OiIKIG1zZ3N0ciAiUmV2aXNpb25lOiIKIAotIzogbGliL2JsYW1lLnRjbDoyNTcKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIkNvcGlhIHJldmlzaW9uZSIKIAotIzogbGliL2JsYW1lLnRjbDoyNjAKKyM6IGxpYi9ibGFtZS50Y2w6Mjc1Cittc2dpZCAiRmluZCBUZXh0Li4uIgorbXNnc3RyICJUcm92YSB0ZXN0by4uLiIKKworIzogbGliL2JsYW1lLnRjbDoyODQKIG1zZ2lkICJEbyBGdWxsIENvcHkgRGV0ZWN0aW9uIgogbXNnc3RyICJSaWNlcmNhIGFjY3VyYXRhIGRlbGxlIGNvcGllIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiTW9zdHJhIGNvbnRlc3RvIG5lbGxhIGNyb25vbG9naWEiCisKKyM6IGxpYi9ibGFtZS50Y2w6MjkxCittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiQW5ub3RhIGxhIHJldmlzaW9uZSBwcmVjZWRlbnRlIgorCisjOiBsaWIvYmxhbWUudGNsOjQ1MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlYWRpbmcgJXMuLi4iCiBtc2dzdHIgIkxldHR1cmEgZGkgJXMuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NDkyCisjOiBsaWIvYmxhbWUudGNsOjU1NwogbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgogbXNnc3RyICJDYXJpY2FtZW50byBhbm5vdGF6aW9uaSBwZXIgY29waWUvc3Bvc3RhbWVudGkuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NTEyCisjOiBsaWIvYmxhbWUudGNsOjU3NwogbXNnaWQgImxpbmVzIGFubm90YXRlZCIKIG1zZ3N0ciAibGluZWUgYW5ub3RhdGUiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzA0CisjOiBsaWIvYmxhbWUudGNsOjc2OQogbXNnaWQgIkxvYWRpbmcgb3JpZ2luYWwgbG9jYXRpb24gYW5ub3RhdGlvbnMuLi4iCiBtc2dzdHIgIkNhcmljYW1lbnRvIGFubm90YXppb25pIHBlciBwb3NpemlvbmUgb3JpZ2luYXJpYS4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo3MDcKKyM6IGxpYi9ibGFtZS50Y2w6NzcyCiBtc2dpZCAiQW5ub3RhdGlvbiBjb21wbGV0ZS4iCiBtc2dzdHIgIkFubm90YXppb25lIGNvbXBsZXRhdGEuIgogCi0jOiBsaWIvYmxhbWUudGNsOjczNworIzogbGliL2JsYW1lLnRjbDo4MDIKIG1zZ2lkICJCdXN5IgogbXNnc3RyICJPY2N1cGF0byIKIAotIzogbGliL2JsYW1lLnRjbDo3MzgKKyM6IGxpYi9ibGFtZS50Y2w6ODAzCiBtc2dpZCAiQW5ub3RhdGlvbiBwcm9jZXNzIGlzIGFscmVhZHkgcnVubmluZy4iCiBtc2dzdHIgIklsIHByb2Nlc3NvIGRpIGFubm90YXppb25lIMOoIGdpw6AgaW4gY29yc28uIgogCi0jOiBsaWIvYmxhbWUudGNsOjc3NworIzogbGliL2JsYW1lLnRjbDo4NDIKIG1zZ2lkICJSdW5uaW5nIHRob3JvdWdoIGNvcHkgZGV0ZWN0aW9uLi4uIgogbXNnc3RyICJSaWNlcmNhIGFjY3VyYXRhIGRlbGxlIGNvcGllIGluIGNvcnNvLi4uIgogCi0jOiBsaWIvYmxhbWUudGNsOjgyNworIzogbGliL2JsYW1lLnRjbDo5MTAKIG1zZ2lkICJMb2FkaW5nIGFubm90YXRpb24uLi4iCiBtc2dzdHIgIkNhcmljYW1lbnRvIGFubm90YXppb25pLi4uIgogCi0jOiBsaWIvYmxhbWUudGNsOjg4MworIzogbGliL2JsYW1lLnRjbDo5NjMKIG1zZ2lkICJBdXRob3I6IgogbXNnc3RyICJBdXRvcmU6IgogCi0jOiBsaWIvYmxhbWUudGNsOjg4NworIzogbGliL2JsYW1lLnRjbDo5NjcKIG1zZ2lkICJDb21taXR0ZXI6IgogbXNnc3RyICJSZXZpc2lvbmUgY3JlYXRhIGRhOiIKIAotIzogbGliL2JsYW1lLnRjbDo4OTIKKyM6IGxpYi9ibGFtZS50Y2w6OTcyCiBtc2dpZCAiT3JpZ2luYWwgRmlsZToiCiBtc2dzdHIgIkZpbGUgb3JpZ2luYXJpbzoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAwNgorIzogbGliL2JsYW1lLnRjbDoxMDIwCittc2dpZCAiQ2Fubm90IGZpbmQgSEVBRCBjb21taXQ6IgorbXNnc3RyICJJbXBvc3NpYmlsZSB0cm92YXJlIGxhIHJldmlzaW9uZSBIRUFEOiIKKworIzogbGliL2JsYW1lLnRjbDoxMDc1Cittc2dpZCAiQ2Fubm90IGZpbmQgcGFyZW50IGNvbW1pdDoiCittc2dzdHIgIkltcG9zc2liaWxlIHRyb3ZhcmUgbGEgcmV2aXNpb25lIHByZWNlZGVudGU6IgorCisjOiBsaWIvYmxhbWUudGNsOjEwOTAKK21zZ2lkICJVbmFibGUgdG8gZGlzcGxheSBwYXJlbnQiCittc2dzdHIgIkltcG9zc2liaWxlIHZpc3VhbGl6emFyZSBsYSByZXZpc2lvbmUgcHJlY2VkZW50ZSIKKworIzogbGliL2JsYW1lLnRjbDoxMDkxIGxpYi9kaWZmLnRjbDoyOTcKK21zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgorbXNnc3RyICJFcnJvcmUgbmVsIGNhcmljYW1lbnRvIGRlbGxlIGRpZmZlcmVuemU6IgorCisjOiBsaWIvYmxhbWUudGNsOjEyMzEKIG1zZ2lkICJPcmlnaW5hbGx5IEJ5OiIKIG1zZ3N0ciAiSW4gb3JpZ2luZSBkYToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAxMgorIzogbGliL2JsYW1lLnRjbDoxMjM3CiBtc2dpZCAiSW4gRmlsZToiCiBtc2dzdHIgIk5lbCBmaWxlOiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDE3CisjOiBsaWIvYmxhbWUudGNsOjEyNDIKIG1zZ2lkICJDb3BpZWQgT3IgTW92ZWQgSGVyZSBCeToiCiBtc2dzdHIgIkNvcGlhdG8gbyBzcG9zdGF0byBxdWkgZGE6IgogCkBAIC01NzAsMTYgKzY2MywxOCBAQAogCiAjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDoyNyBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzUKICM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDozMiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MzAgbGliL2Jyb3dzZXIudGNsOjI4MgotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MQotIzogbGliL29wdGlvbi50Y2w6MTAzIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIgbGliL3RyYW5zcG9ydC50Y2w6OTcKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTQ0IGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzIKKyM6IGxpYi9vcHRpb24udGNsOjEyNSBsaWIvcmVtb3RlX2FkZC50Y2w6MzIgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MgorIzogbGliL3Rvb2xzX2RsZy50Y2w6NDAgbGliL3Rvb2xzX2RsZy50Y2w6MjA0IGxpYi90b29sc19kbGcudGNsOjM1MgorIzogbGliL3RyYW5zcG9ydC50Y2w6MTA4CiBtc2dpZCAiQ2FuY2VsIgogbXNnc3RyICJBbm51bGxhIgogCi0jOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozMiBsaWIvYnJvd3Nlci50Y2w6Mjg3CisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozMiBsaWIvYnJvd3Nlci50Y2w6Mjg3IGxpYi90b29sc19kbGcudGNsOjMyOAogbXNnaWQgIlJldmlzaW9uIgogbXNnc3RyICJSZXZpc2lvbmUiCiAKLSM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjM2IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo2OSBsaWIvb3B0aW9uLnRjbDoyNDQKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjM2IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo2OSBsaWIvb3B0aW9uLnRjbDoyODAKIG1zZ2lkICJPcHRpb25zIgogbXNnc3RyICJPcHppb25pIgogCkBAIC01OTksNyArNjk0LDcgQEAKIG1zZ2lkICJDcmVhdGUgTmV3IEJyYW5jaCIKIG1zZ3N0ciAiQ3JlYSBudW92byByYW1vIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzEKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozMSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NwogbXNnaWQgIkNyZWF0ZSIKIG1zZ3N0ciAiQ3JlYSIKIApAQCAtNjA3LDcgKzcwMiw3IEBACiBtc2dpZCAiQnJhbmNoIE5hbWUiCiBtc2dzdHIgIk5vbWUgZGVsIHJhbW8iCiAKLSM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjQzIGxpYi9yZW1vdGVfYWRkLnRjbDozOSBsaWIvdG9vbHNfZGxnLnRjbDo1MAogbXNnaWQgIk5hbWU6IgogbXNnc3RyICJOb21lOiIKIApAQCAtNzUzLDkgKzg0OCw5IEBACiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcyIKIG1zZ3N0ciAiRXNwbG9yYSBpIGZpbGUgZGVsIHJhbW8iCiAKLSM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgyCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4NQorIzogbGliL2Jyb3dzZXIudGNsOjI3OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM5NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTk1CiBtc2dpZCAiQnJvd3NlIgogbXNnc3RyICJFc3Bsb3JhIgogCkBAIC03NzAsNiArODY1LDcgQEAKIG1zZ3N0ciAiZXJyb3JlIGdyYXZlOiBpbXBvc3NpYmlsZSByaXNvbHZlcmUgJXMiCiAKICM6IGxpYi9jaGVja291dF9vcC50Y2w6MTQ1IGxpYi9jb25zb2xlLnRjbDo4MSBsaWIvZGF0YWJhc2UudGNsOjMxCisjOiBsaWIvc3Noa2V5LnRjbDo1MwogbXNnaWQgIkNsb3NlIgogbXNnc3RyICJDaGl1ZGkiCiAKQEAgLTg4Myw3ICs5NzksNyBAQAogbXNnaWQgIlJlc2V0ICclcyc/IgogbXNnc3RyICJSaXByaXN0aW5hcmUgJyVzJz8iCiAKLSM6IGxpYi9jaGVja291dF9vcC50Y2w6NTMyIGxpYi9tZXJnZS50Y2w6MTYzCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2NCBsaWIvdG9vbHNfZGxnLnRjbDozNDMKIG1zZ2lkICJWaXN1YWxpemUiCiBtc2dzdHIgIlZpc3VhbGl6emEiCiAKQEAgLTkzMywyMjYgKzEwMjksMjMwIEBACiBtc2dpZCAiR2l0IEd1aSIKIG1zZ3N0ciAiR2l0IEd1aSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4MgogbXNnaWQgIkNyZWF0ZSBOZXcgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQ3JlYSBudW92byBhcmNoaXZpbyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MwogbXNnaWQgIk5ldy4uLiIKIG1zZ3N0ciAiTnVvdm8uLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NTgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY1CiBtc2dpZCAiQ2xvbmUgRXhpc3RpbmcgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQ2xvbmEgYXJjaGl2aW8gZXNpc3RlbnRlIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDYKIG1zZ2lkICJDbG9uZS4uLiIKIG1zZ3N0ciAiQ2xvbmEuLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTA3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTc0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4MwogbXNnaWQgIk9wZW4gRXhpc3RpbmcgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQXByaSBhcmNoaXZpbyBlc2lzdGVudGUiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExOQogbXNnaWQgIk9wZW4uLi4iCiBtc2dzdHIgIkFwcmkuLi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgogbXNnaWQgIlJlY2VudCBSZXBvc2l0b3JpZXMiCiBtc2dzdHIgIkFyY2hpdmkgcmVjZW50aSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTM4CiBtc2dpZCAiT3BlbiBSZWNlbnQgUmVwb3NpdG9yeToiCiBtc2dzdHIgIkFwcmkgYXJjaGl2aW8gcmVjZW50ZToiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mjk2IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAzCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDIgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzE2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgY3JlYXJlIGwnYXJjaGl2aW8gJXM6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKIG1zZ2lkICJEaXJlY3Rvcnk6IgogbXNnc3RyICJEaXJlY3Rvcnk6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNQotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDA3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkFyY2hpdmlvIEdpdCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiTGEgZGlyZWN0b3J5ICVzIGVzaXN0ZSBnacOgLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQ2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmlsZSAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIklsIGZpbGUgJXMgZXNpc3RlIGdpw6AuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjAKIG1zZ2lkICJDbG9uZSIKIG1zZ3N0ciAiQ2xvbmEiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY2Ci1tc2dpZCAiVVJMOiIKLW1zZ3N0ciAiVVJMOiIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDczCittc2dpZCAiU291cmNlIExvY2F0aW9uOiIKK21zZ3N0ciAiUG9zaXppb25lIHNvcmdlbnRlOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDg0Cittc2dpZCAiVGFyZ2V0IERpcmVjdG9yeToiCittc2dzdHIgIkRpcmVjdG9yeSBkaSBkZXN0aW5hemlvbmU6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICJUaXBvIGRpIGNsb25lOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAyCiBtc2dpZCAiU3RhbmRhcmQgKEZhc3QsIFNlbWktUmVkdW5kYW50LCBIYXJkbGlua3MpIgogbXNnc3RyICJTdGFuZGFyZCAodmVsb2NlLCBzZW1pLXJpZG9uZGFudGUsIGNvbiBoYXJkbGluaykiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDk5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwOAogbXNnaWQgIkZ1bGwgQ29weSAoU2xvd2VyLCBSZWR1bmRhbnQgQmFja3VwKSIKIG1zZ3N0ciAiQ29waWEgY29tcGxldGEgKHBpw7kgbGVudG8sIGJhY2t1cCByaWRvbmRhbnRlKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0CiBtc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCiBtc2dzdHIgIlNoYXJlZCAoaWwgcGnDuSB2ZWxvY2UsIG5vbiByYWNjb21hbmRhdG8sIG5lc3N1biBiYWNrdXApIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4OAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MzQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MDQKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAxMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTUwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTk3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc0MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDIzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAzMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdCBhIEdpdCByZXBvc2l0b3J5OiAlcyIKIG1zZ3N0ciAiJXMgbm9uIMOoIHVuIGFyY2hpdmlvIEdpdC4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTc3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4NgogbXNnaWQgIlN0YW5kYXJkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKIG1zZ3N0ciAiU3RhbmRhcmQgw6ggZGlzcG9uaWJpbGUgc29sbyBwZXIgYXJjaGl2aSBsb2NhbGkuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTAKIG1zZ2lkICJTaGFyZWQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICJTaGFyZWQgw6ggZGlzcG9uaWJpbGUgc29sbyBwZXIgYXJjaGl2aSBsb2NhbGkuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYwMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJMb2NhdGlvbiAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIklsIGZpbGUvZGlyZWN0b3J5ICVzIGVzaXN0ZSBnacOgLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjIyCiBtc2dpZCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSBvcmlnaW4iCiBtc2dzdHIgIkltcG9zc2liaWxlIGNvbmZpZ3VyYXJlIG9yaWdpbiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM0CiBtc2dpZCAiQ291bnRpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiQ2FsY29sbyBvZ2dldHRpIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYyNgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MzUKIG1zZ2lkICJidWNrZXRzIgogbXNnc3RyICIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjUwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY1OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjb3B5IG9iamVjdHMvaW5mby9hbHRlcm5hdGVzOiAlcyIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgY29waWFyZSBvZ2dldHRpL2luZm8vYWx0ZXJuYXRlOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2ODYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTm90aGluZyB0byBjbG9uZSBmcm9tICVzLiIKIG1zZ3N0ciAiTmllbnRlIGRhIGNsb25hcmUgZGEgJXMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY4OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMwogbXNnaWQgIlRoZSAnbWFzdGVyJyBicmFuY2ggaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiIKIG1zZ3N0ciAiSWwgcmFtbyAnbWFzdGVyJyBub24gw6ggc3RhdG8gaW5pemlhbGl6emF0by4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzAxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMAogbXNnaWQgIkhhcmRsaW5rcyBhcmUgdW5hdmFpbGFibGUuICBGYWxsaW5nIGJhY2sgdG8gY29weWluZy4iCiBtc2dzdHIgIkltcG9zc2liaWxlIHV0aWxpenphcmUgZ2xpIGhhcmRsaW5rLiBTaSByaWNvcnJlcsOgIGFsbGEgY29waWEuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MjIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGZyb20gJXMiCiBtc2dzdHIgIkNsb25hemlvbmUgZGEgJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1MwogbXNnaWQgIkNvcHlpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiQ29waWEgZGVnbGkgb2dnZXR0aSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzU0CiBtc2dpZCAiS2lCIgogbXNnc3RyICJLaUIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzY5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc3OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjb3B5IG9iamVjdDogJXMiCiBtc2dzdHIgIkltcG9zc2liaWxlIGNvcGlhcmUgb2dnZXR0bzogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzc5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OAogbXNnaWQgIkxpbmtpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiQ29sbGVnYW1lbnRvIG9nZ2V0dGkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzgwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OQogbXNnaWQgIm9iamVjdHMiCiBtc2dzdHIgIm9nZ2V0dGkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzg4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc5NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBoYXJkbGluayBvYmplY3Q6ICVzIgogbXNnc3RyICJIYXJkbGluayBpbXBvc3NpYmlsZSBzdWxsJ29nZ2V0dG86ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg0MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTIKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggYnJhbmNoZXMgYW5kIG9iamVjdHMuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAiSW1wb3NzaWJpbGUgcmVjdXBlcmFyZSByYW1pIGUgb2dnZXR0aS4gQ29udHJvbGxhcmUgaSBkZXR0YWdsaSBmb3JuaXRpIGRhbGxhICIKICJjb25zb2xlLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODYzCiBtc2dpZCAiQ2Fubm90IGZldGNoIHRhZ3MuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAiSW1wb3NzaWJpbGUgcmVjdXBlcmFyZSBsZSBldGljaGV0dGUuIENvbnRyb2xsYXJlIGkgZGV0dGFnbGkgZm9ybml0aSBkYWxsYSAiCiAiY29uc29sZS4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODc4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg4NwogbXNnaWQgIkNhbm5vdCBkZXRlcm1pbmUgSEVBRC4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICJJbXBvc3NpYmlsZSBkZXRlcm1pbmFyZSBIRUFELiBDb250cm9sbGFyZSBpIGRldHRhZ2xpIGZvcm5pdGkgZGFsbGEgY29uc29sZS4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjbGVhbnVwICVzIgogbXNnc3RyICJJbXBvc3NpYmlsZSByaXB1bGlyZSAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCiBtc2dpZCAiQ2xvbmUgZmFpbGVkLiIKIG1zZ3N0ciAiQ2xvbmF6aW9uZSBub24gcml1c2NpdGEuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDkKIG1zZ2lkICJObyBkZWZhdWx0IGJyYW5jaCBvYnRhaW5lZC4iCiBtc2dzdHIgIk5vbiDDqCBzdGF0byB0cm92YXRvIHVuIHJhbW8gcHJlZGVmaW5pdG8uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgcmVzb2x2ZSAlcyBhcyBhIGNvbW1pdC4iCiBtc2dzdHIgIkltcG9zc2liaWxlIHJpc29sdmVyZSAlcyBjb21lIHVuYSByZXZpc2lvbmUuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzIKIG1zZ2lkICJDcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiQ3JlYXppb25lIGRpcmVjdG9yeSBkaSBsYXZvcm8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTI0IGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjcKLSM6IGxpYi9pbmRleC50Y2w6MTkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMyBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI4CisjOiBsaWIvaW5kZXgudGNsOjE5NgogbXNnaWQgImZpbGVzIgogbXNnc3RyICJmaWxlIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjIKIG1zZ2lkICJJbml0aWFsIGZpbGUgY2hlY2tvdXQgZmFpbGVkLiIKIG1zZ3N0ciAiQXR0aXZhemlvbmUgaW5pemlhbGUgbm9uIHJpdXNjaXRhLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTc4CiBtc2dpZCAiT3BlbiIKIG1zZ3N0ciAiQXByaSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTg4CiBtc2dpZCAiUmVwb3NpdG9yeToiCiBtc2dzdHIgIkFyY2hpdmlvOiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDI3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gb3BlbiByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgYWNjZWRlcmUgYWxsJ2FyY2hpdmlvICVzOiIKQEAgLTEyMjQsMTkgKzEzMjQsMTkgQEAKICJjb21wbGV0YXRhLiBOb24gcHVvaSBjb3JyZWdnZXJlIGxhIHJldmlzaW9uZSBwcmVjZWRlbnRlIGEgbWVubyBjaGUgcHJpbWEgdHUgIgogIm5vbiBpbnRlcnJvbXBhIGwnb3BlcmF6aW9uZSBkaSBmdXNpb25lIGluIGNvcnNvLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDo0OQorIzogbGliL2NvbW1pdC50Y2w6NDgKIG1zZ2lkICJFcnJvciBsb2FkaW5nIGNvbW1pdCBkYXRhIGZvciBhbWVuZDoiCiBtc2dzdHIgIkVycm9yZSBkdXJhbnRlIGlsIGNhcmljYW1lbnRvIGRlaSBkYXRpIGRlbGxhIHJldmlzaW9uZSBkYSBjb3JyZWdnZXJlOiIKIAotIzogbGliL2NvbW1pdC50Y2w6NzYKKyM6IGxpYi9jb21taXQudGNsOjc1CiBtc2dpZCAiVW5hYmxlIHRvIG9idGFpbiB5b3VyIGlkZW50aXR5OiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgb3R0ZW5lcmUgbGEgdHVhIGlkZW50aXTDoDoiCiAKLSM6IGxpYi9jb21taXQudGNsOjgxCisjOiBsaWIvY29tbWl0LnRjbDo4MAogbXNnaWQgIkludmFsaWQgR0lUX0NPTU1JVFRFUl9JREVOVDoiCiBtc2dzdHIgIkdJVF9DT01NSVRURVJfSURFTlQgbm9uIHZhbGlkYToiCiAKLSM6IGxpYi9jb21taXQudGNsOjEzMworIzogbGliL2NvbW1pdC50Y2w6MTMyCiBtc2dpZCAiIgogIkxhc3Qgc2Nhbm5lZCBzdGF0ZSBkb2VzIG5vdCBtYXRjaCByZXBvc2l0b3J5IHN0YXRlLlxuIgogIlxuIgpAQCAtMTI1Myw3ICsxMzUzLDcgQEAKICJcbiIKICJMYSBudW92YSBhbmFsaXNpIGNvbWluY2Vyw6Agb3JhLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNTQKKyM6IGxpYi9jb21taXQudGNsOjE1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbm1lcmdlZCBmaWxlcyBjYW5ub3QgYmUgY29tbWl0dGVkLlxuIgpAQCAtMTI2Niw3ICsxMzY2LDcgQEAKICJJbCBmaWxlICVzIHByZXNlbnRhIGRlaSBjb25mbGl0dGkuIERldmkgcmlzb2x2ZXJsaSBlIHByZXBhcmFyZSBpbCBmaWxlIHBlciAiCiAiY3JlYXJlIHVuYSBudW92YSByZXZpc2lvbmUgcHJpbWEgZGkgZWZmZXR0dWFyZSBxdWVzdGEgYXppb25lLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNjIKKyM6IGxpYi9jb21taXQudGNsOjE2MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbmtub3duIGZpbGUgc3RhdGUgJXMgZGV0ZWN0ZWQuXG4iCkBAIC0xMjc3LDcgKzEzNzcsNyBAQAogIlxuIgogIlF1ZXN0byBwcm9ncmFtbWEgbm9uIHB1w7IgY3JlYXJlIHVuYSByZXZpc2lvbmUgY29udGVuZW50ZSBpbCBmaWxlICVzLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNzAKKyM6IGxpYi9jb21taXQudGNsOjE3MQogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEyODgsNyArMTM4OCw3IEBACiAiRGV2aSBwcmVwYXJhcmUgcGVyIHVuYSBudW92YSByZXZpc2lvbmUgYWxtZW5vIDEgZmlsZSBwcmltYSBkaSBlZmZldHR1YXJlICIKICJxdWVzdGEgb3BlcmF6aW9uZS5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTgzCisjOiBsaWIvY29tbWl0LnRjbDoxODYKIG1zZ2lkICIiCiAiUGxlYXNlIHN1cHBseSBhIGNvbW1pdCBtZXNzYWdlLlxuIgogIlxuIgpAQCAtMTMwNiw0NSArMTQwNiw0NSBAQAogIi0gU2Vjb25kYSBsaW5lYTogdnVvdGEuXG4iCiAiLSBUZXJ6YSBsaW5lYTogc3BpZWdhIGEgY29zYSBzZXJ2ZSBsYSB0dWEgbW9kaWZpY2EuXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjIwNworIzogbGliL2NvbW1pdC50Y2w6MjEwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAid2FybmluZzogVGNsIGRvZXMgbm90IHN1cHBvcnQgZW5jb2RpbmcgJyVzJy4iCiBtc2dzdHIgImF0dGVuemlvbmU6IFRjbCBub24gc3VwcG9ydGEgbGEgY29kaWZpY2EgJyVzJy4iCiAKLSM6IGxpYi9jb21taXQudGNsOjIyMQorIzogbGliL2NvbW1pdC50Y2w6MjI2CiBtc2dpZCAiQ2FsbGluZyBwcmUtY29tbWl0IGhvb2suLi4iCiBtc2dzdHIgIkF2dmlvIHByZS1jb21taXQgaG9vay4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDEKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKIG1zZ3N0ciAiUmV2aXNpb25lIHJpZml1dGF0YSBkYWwgcHJlLWNvbW1pdCBob29rLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjU5CisjOiBsaWIvY29tbWl0LnRjbDoyNjQKIG1zZ2lkICJDYWxsaW5nIGNvbW1pdC1tc2cgaG9vay4uLiIKIG1zZ3N0ciAiQXZ2aW8gY29tbWl0LW1zZyBob29rLi4uIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyNzQKKyM6IGxpYi9jb21taXQudGNsOjI3OQogbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBjb21taXQtbXNnIGhvb2suIgogbXNnc3RyICJSZXZpc2lvbmUgcmlmaXV0YXRhIGRhbCBjb21taXQtbXNnIGhvb2suIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyODcKKyM6IGxpYi9jb21taXQudGNsOjI5MgogbXNnaWQgIkNvbW1pdHRpbmcgY2hhbmdlcy4uLiIKIG1zZ3N0ciAiQXJjaGl2aWF6aW9uZSBtb2RpZmljaGUuLi4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMwMworIzogbGliL2NvbW1pdC50Y2w6MzA4CiBtc2dpZCAid3JpdGUtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJ3cml0ZS10cmVlIG5vbiByaXVzY2l0bzoiCiAKLSM6IGxpYi9jb21taXQudGNsOjMwNCBsaWIvY29tbWl0LnRjbDozNDggbGliL2NvbW1pdC50Y2w6MzY4CisjOiBsaWIvY29tbWl0LnRjbDozMDkgbGliL2NvbW1pdC50Y2w6MzUzIGxpYi9jb21taXQudGNsOjM3MwogbXNnaWQgIkNvbW1pdCBmYWlsZWQuIgogbXNnc3RyICJJbXBvc3NpYmlsZSBjcmVhcmUgdW5hIG51b3ZhIHJldmlzaW9uZS4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMyMQorIzogbGliL2NvbW1pdC50Y2w6MzI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIKIG1zZ3N0ciAiTGEgcmV2aXNpb25lICVzIHNlbWJyYSBlc3NlcmUgZGFubmVnZ2lhdGEiCiAKLSM6IGxpYi9jb21taXQudGNsOjMyNgorIzogbGliL2NvbW1pdC50Y2w6MzMxCiBtc2dpZCAiIgogIk5vIGNoYW5nZXMgdG8gY29tbWl0LlxuIgogIlxuIgpAQCAtMTM1OCwxOSArMTQ1OCwxOSBAQAogIlxuIgogIlNpIHByb2NlZGVyw6Agc3ViaXRvIGFkIHVuYSBudW92YSBhbmFsaXNpLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMzMKKyM6IGxpYi9jb21taXQudGNsOjMzOAogbXNnaWQgIk5vIGNoYW5nZXMgdG8gY29tbWl0LiIKIG1zZ3N0ciAiTmVzc3VuYSBtb2RpZmljYSBwZXIgbGEgbnVvdmEgcmV2aXNpb25lLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzQ3CisjOiBsaWIvY29tbWl0LnRjbDozNTIKIG1zZ2lkICJjb21taXQtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJjb21taXQtdHJlZSBub24gcml1c2NpdG86IgogCi0jOiBsaWIvY29tbWl0LnRjbDozNjcKKyM6IGxpYi9jb21taXQudGNsOjM3MgogbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKIG1zZ3N0ciAidXBkYXRlLXJlZiBub24gcml1c2NpdG86IgogCi0jOiBsaWIvY29tbWl0LnRjbDo0NTQKKyM6IGxpYi9jb21taXQudGNsOjQ2MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNyZWF0ZWQgY29tbWl0ICVzOiAlcyIKIG1zZ3N0ciAiQ3JlYXRhIHJldmlzaW9uZSAlczogJXMiCkBAIC0xNDQ1LDcgKzE1NDUsNyBAQAogbXNnaWQgIkludmFsaWQgZGF0ZSBmcm9tIEdpdDogJXMiCiBtc2dzdHIgIkdpdCBoYSByZXN0aXR1aXRvIHVuYSBkYXRhIG5vbiB2YWxpZGE6ICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6NDQKKyM6IGxpYi9kaWZmLnRjbDo1OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJObyBkaWZmZXJlbmNlcyBkZXRlY3RlZC5cbiIKQEAgLTE0NjgsNDggKzE1NjgsMTAxIEBACiAiU2kgcHJvY2VkZXLDoCBhdXRvbWF0aWNhbWVudGUgYWQgdW5hIG51b3ZhIGFuYWxpc2kgcGVyIHRyb3ZhcmUgYWx0cmkgZmlsZSBjaGUgIgogInBvdHJlYmJlcm8gYXZlcmUgbG8gc3Rlc3NvIHN0YXRvLiIKIAotIzogbGliL2RpZmYudGNsOjgzCisjOiBsaWIvZGlmZi50Y2w6OTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJMb2FkaW5nIGRpZmYgb2YgJXMuLi4iCiBtc2dzdHIgIkNhcmljYW1lbnRvIGRlbGxlIGRpZmZlcmVuemUgZGkgJXMuLi4iCiAKLSM6IGxpYi9kaWZmLnRjbDoxMTYgbGliL2RpZmYudGNsOjE5MAorIzogbGliL2RpZmYudGNsOjEyMAorbXNnaWQgIiIKKyJMT0NBTDogZGVsZXRlZFxuIgorIlJFTU9URTpcbiIKK21zZ3N0ciAiIgorIkxPQ0FMRTogY2FuY2VsbGF0b1xuIgorIlJFTU9UTzpcbiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiIgorIlJFTU9UTzogY2FuY2VsbGF0b1xuIgorIkxPQ0FMRTpcbiIKKworIzogbGliL2RpZmYudGNsOjEzMgorbXNnaWQgIkxPQ0FMOlxuIgorbXNnc3RyICJMT0NBTEU6XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxMzUKK21zZ2lkICJSRU1PVEU6XG4iCittc2dzdHIgIlJFTU9UTzpcbiIKKworIzogbGliL2RpZmYudGNsOjE5NyBsaWIvZGlmZi50Y2w6Mjk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgJXMiCiBtc2dzdHIgIkltcG9zc2liaWxlIHZpc3VhbGl6emFyZSAlcyIKIAotIzogbGliL2RpZmYudGNsOjExNworIzogbGliL2RpZmYudGNsOjE5OAogbXNnaWQgIkVycm9yIGxvYWRpbmcgZmlsZToiCiBtc2dzdHIgIkVycm9yZSBuZWwgY2FyaWNhbWVudG8gZGVsIGZpbGU6IgogCi0jOiBsaWIvZGlmZi50Y2w6MTI0CisjOiBsaWIvZGlmZi50Y2w6MjA1CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkgKHN1YnByb2plY3QpIgogbXNnc3RyICJBcmNoaXZpbyBHaXQgKHNvdHRvcHJvZ2V0dG8pIgogCi0jOiBsaWIvZGlmZi50Y2w6MTM2CisjOiBsaWIvZGlmZi50Y2w6MjE3CiBtc2dpZCAiKiBCaW5hcnkgZmlsZSAobm90IHNob3dpbmcgY29udGVudCkuIgogbXNnc3RyICIqIEZpbGUgYmluYXJpbyAoaWwgY29udGVudXRvIG5vbiBzYXLDoCBtb3N0cmF0bykuIgogCi0jOiBsaWIvZGlmZi50Y2w6MTkxCi1tc2dpZCAiRXJyb3IgbG9hZGluZyBkaWZmOiIKLW1zZ3N0ciAiRXJyb3JlIG5lbCBjYXJpY2FtZW50byBkZWxsZSBkaWZmZXJlbnplOiIKKyM6IGxpYi9kaWZmLnRjbDoyMjIKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiKiBVbnRyYWNrZWQgZmlsZSBpcyAlZCBieXRlcy5cbiIKKyIqIFNob3dpbmcgb25seSBmaXJzdCAlZCBieXRlcy5cbiIKK21zZ3N0ciAiIgorIiogSWwgZmlsZSBub24gdHJhY2NpYXRvIMOoIGRpICVkIGJ5dGUuXG4iCisiKiBTYXJhbm5vIHZpc3VhbGl6emF0aSBzb2xvIGkgcHJpbWkgJWQgYnl0ZS5cbiIKIAotIzogbGliL2RpZmYudGNsOjMxMworIzogbGliL2RpZmYudGNsOjIyOAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIqIFVudHJhY2tlZCBmaWxlIGNsaXBwZWQgaGVyZSBieSAlcy5cbiIKKyIqIFRvIHNlZSB0aGUgZW50aXJlIGZpbGUsIHVzZSBhbiBleHRlcm5hbCBlZGl0b3IuXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqICVzIG5vbiB2aXN1YWxpenphIGNvbXBsZXRhbWVudGUgcXVlc3RvIGZpbGUgbm9uIHRyYWNjaWF0by5cbiIKKyIqIFBlciB2aXN1YWxpenphcmUgaWwgZmlsZSBjb21wbGV0bywgdXNhcmUgdW4gcHJvZ3JhbW1hIGVzdGVybm8uXG4iCisKKyM6IGxpYi9kaWZmLnRjbDo0MzYKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBodW5rLiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgcmltdW92ZXJlIGxhIHNlemlvbmUgc2NlbHRhIGRhbGxhIG51b3ZhIHJldmlzaW9uZS4iCiAKLSM6IGxpYi9kaWZmLnRjbDozMjAKKyM6IGxpYi9kaWZmLnRjbDo0NDMKIG1zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgaHVuay4iCiBtc2dzdHIgIkltcG9zc2liaWxlIHByZXBhcmFyZSBsYSBzZXppb25lIHNjZWx0YSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZS4iCiAKLSM6IGxpYi9kaWZmLnRjbDozODYKKyM6IGxpYi9kaWZmLnRjbDo1MDkKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBsaW5lLiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgcmltdW92ZXJlIGxhIHJpZ2Egc2NlbHRhIGRhbGxhIG51b3ZhIHJldmlzaW9uZS4iCiAKLSM6IGxpYi9kaWZmLnRjbDozOTQKKyM6IGxpYi9kaWZmLnRjbDo1MTcKIG1zZ2lkICJGYWlsZWQgdG8gc3RhZ2Ugc2VsZWN0ZWQgbGluZS4iCiBtc2dzdHIgIkltcG9zc2liaWxlIHByZXBhcmFyZSBsYSByaWdhIHNjZWx0YSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZS4iCiAKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQzCittc2dpZCAiRGVmYXVsdCIKK21zZ3N0ciAiUHJlZGVmaW5pdG8iCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQ4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU3lzdGVtICglcykiCittc2dzdHIgIkNvZGlmaWNhIGRpIHNpc3RlbWEgKCVzKSIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NTkgbGliL2VuY29kaW5nLnRjbDo0NjUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAiQWx0cm8iCisKICM6IGxpYi9lcnJvci50Y2w6MjAgbGliL2Vycm9yLnRjbDoxMTQKIG1zZ2lkICJlcnJvciIKIG1zZ3N0ciAiZXJyb3JlIgpAQCAtMTU0Nyw0MCArMTcwMCw0OSBAQAogbXNnaWQgIlVubG9jayBJbmRleCIKIG1zZ3N0ciAiU2Jsb2NjYSBsJ2FjY2Vzc28gYWxsJ2luZGljZSIKIAotIzogbGliL2luZGV4LnRjbDoyODIKKyM6IGxpYi9pbmRleC50Y2w6Mjg3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5zdGFnaW5nICVzIGZyb20gY29tbWl0IgogbXNnc3RyICIlcyBub24gZmFyw6AgcGFydGUgZGVsbGEgcHJvc3NpbWEgcmV2aXNpb25lIgogCi0jOiBsaWIvaW5kZXgudGNsOjMxMworIzogbGliL2luZGV4LnRjbDozMjYKIG1zZ2lkICJSZWFkeSB0byBjb21taXQuIgogbXNnc3RyICJQcm9udG8gcGVyIGNyZWFyZSB1bmEgbnVvdmEgcmV2aXNpb25lLiIKIAotIzogbGliL2luZGV4LnRjbDozMjYKKyM6IGxpYi9pbmRleC50Y2w6MzM5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICJBZ2dpdW50YSBkaSAlcyBpbiBjb3JzbyIKIAotIzogbGliL2luZGV4LnRjbDozODEKKyM6IGxpYi9pbmRleC50Y2w6Mzk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gZmlsZSAlcz8iCiBtc2dzdHIgIkFubnVsbGFyZSBsZSBtb2RpZmljaGUgbmVsIGZpbGUgJXM/IgogCi0jOiBsaWIvaW5kZXgudGNsOjM4MworIzogbGliL2luZGV4LnRjbDozOTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiB0aGVzZSAlaSBmaWxlcz8iCiBtc2dzdHIgIkFubnVsbGFyZSBsZSBtb2RpZmljaGUgaW4gcXVlc3RpICVpIGZpbGU/IgogCi0jOiBsaWIvaW5kZXgudGNsOjM5MQorIzogbGliL2luZGV4LnRjbDo0MDYKIG1zZ2lkICJBbnkgdW5zdGFnZWQgY2hhbmdlcyB3aWxsIGJlIHBlcm1hbmVudGx5IGxvc3QgYnkgdGhlIHJldmVydC4iCiBtc2dzdHIgIiIKICJUdXR0ZSBsZSBtb2RpZmljaGUgbm9uIHByZXBhcmF0ZSBwZXIgdW5hIG51b3ZhIHJldmlzaW9uZSBzYXJhbm5vIHBlcnNlIHBlciAiCiAic2VtcHJlLiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiTm9uIGZhcmUgbmllbnRlIgogCisjOiBsaWIvaW5kZXgudGNsOjQyNworbXNnaWQgIlJldmVydGluZyBzZWxlY3RlZCBmaWxlcyIKK21zZ3N0ciAiQW5udWxsbyBsZSBtb2RpZmljaGUgbmVpIGZpbGUgc2VsZXppb25hdGkiCisKKyM6IGxpYi9pbmRleC50Y2w6NDMxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUmV2ZXJ0aW5nICVzIgorbXNnc3RyICJBbm51bGxvIGxlIG1vZGlmaWNoZSBpbiAlcyIKKwogIzogbGliL21lcmdlLnRjbDoxMwogbXNnaWQgIiIKICJDYW5ub3QgbWVyZ2Ugd2hpbGUgYW1lbmRpbmcuXG4iCkBAIC0xNjA4LDcgKzE3NzAsNyBAQAogIlxuIgogIkxhIG51b3ZhIGFuYWxpc2kgY29taW5jZXLDoCBvcmEuXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6NDQKKyM6IGxpYi9tZXJnZS50Y2w6NDUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY29uZmxpY3RlZCBtZXJnZS5cbiIKQEAgLTE2MjYsNyArMTc4OCw3IEBACiAiaW5maW5lIGNyZWFybGEgcGVyIGNvbXBsZXRhcmUgbGEgZnVzaW9uZSBhdHR1YWxlLiBTb2xvIGEgcXVlc3RvIHB1bnRvIHBvdHJhaSAiCiAiaW5pemlhcmUgdW4nYWx0cmEgZnVzaW9uZS5cbiIKIAotIzogbGliL21lcmdlLnRjbDo1NAorIzogbGliL21lcmdlLnRjbDo1NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGFuZ2UuXG4iCkBAIC0xNjQ0LDM0ICsxODA2LDM0IEBACiAidW5hIGZ1c2lvbmUuIEluIHF1ZXN0byBtb2RvIHNhcsOgIHBpw7kgZmFjaWxlIGludGVycm9tcGVyZSB1bmEgZnVzaW9uZSBub24gIgogInJpdXNjaXRhLCBuZWwgY2FzbyBjZSBuZSBmb3NzZSBiaXNvZ25vLlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEwNgorIzogbGliL21lcmdlLnRjbDoxMDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBvZiAlcyIKIG1zZ3N0ciAiJXMgZGkgJXMiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTE5CisjOiBsaWIvbWVyZ2UudGNsOjEyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdpbmcgJXMgYW5kICVzLi4uIgogbXNnc3RyICJGdXNpb25lIGRpICVzIGUgJXMgaW4gY29yc28uLi4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMwCisjOiBsaWIvbWVyZ2UudGNsOjEzMQogbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgogbXNnc3RyICJGdXNpb25lIGNvbXBsZXRhdGEgY29uIHN1Y2Nlc3NvLiIKIAotIzogbGliL21lcmdlLnRjbDoxMzIKKyM6IGxpYi9tZXJnZS50Y2w6MTMzCiBtc2dpZCAiTWVyZ2UgZmFpbGVkLiAgQ29uZmxpY3QgcmVzb2x1dGlvbiBpcyByZXF1aXJlZC4iCiBtc2dzdHIgIkZ1c2lvbmUgbm9uIHJpdXNjaXRhLiBCaXNvZ25hIHJpc29sdmVyZSBpIGNvbmZsaXR0aS4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTU3CisjOiBsaWIvbWVyZ2UudGNsOjE1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1lcmdlIEludG8gJXMiCiBtc2dzdHIgIkZ1c2lvbmUgaW4gJXMiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTc2CisjOiBsaWIvbWVyZ2UudGNsOjE3NwogbXNnaWQgIlJldmlzaW9uIFRvIE1lcmdlIgogbXNnc3RyICJSZXZpc2lvbmUgZGEgZm9uZGVyZSIKIAotIzogbGliL21lcmdlLnRjbDoyMTEKKyM6IGxpYi9tZXJnZS50Y2w6MjEyCiBtc2dpZCAiIgogIkNhbm5vdCBhYm9ydCB3aGlsZSBhbWVuZGluZy5cbiIKICJcbiIKQEAgLTE2ODEsNyArMTg0Myw3IEBACiAiXG4iCiAiQmlzb2duYSBmaW5pcmUgZGkgY29ycmVnZ2VyZSBxdWVzdGEgcmV2aXNpb25lLlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIyMQorIzogbGliL21lcmdlLnRjbDoyMjIKIG1zZ2lkICIiCiAiQWJvcnQgbWVyZ2U/XG4iCiAiXG4iCkBAIC0xNjk2LDcgKzE4NTgsNyBAQAogIlxuIgogIkNvbnRpbnVhcmUgY29uIGwnaW50ZXJydXppb25lIGRlbGxhIGZ1c2lvbmUgYXR0dWFsZT8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjI3CisjOiBsaWIvbWVyZ2UudGNsOjIyOAogbXNnaWQgIiIKICJSZXNldCBjaGFuZ2VzP1xuIgogIlxuIgpAQCAtMTcwNCwxNTEgKzE4NjYsMzUyIEBACiAiXG4iCiAiQ29udGludWUgd2l0aCByZXNldHRpbmcgdGhlIGN1cnJlbnQgY2hhbmdlcz8iCiBtc2dzdHIgIiIKLSJSaXByaXN0aW5hcmUgbGEgcmV2aXNpb25lIGNvcnJlbnRlIGUgYW5udWxsYXJlIGxlIG1vZGlmaWNoZT9cbiIKKyJSaXByaXN0aW5hcmUgbGEgcmV2aXNpb25lIGF0dHVhbGUgZSBhbm51bGxhcmUgbGUgbW9kaWZpY2hlP1xuIgogIlxuIgogIkwnYW5udWxsYW1lbnRvIGRlbGxlIG1vZGlmaWNoZSBjYXVzZXLDoCBsYSBwZXJkaXRhIGRpICpUVVRURSogbGUgbW9kaWZpY2hlICIKICJub24gYW5jb3JhIHByZXNlbnRpIG5lbGwnYXJjaGl2aW8uXG4iCiAiXG4iCiAiQ29udGludWFyZSBjb24gbCdhbm51bGxhbWVudG8gZGVsbGUgbW9kaWZpY2hlIGF0dHVhbGk/IgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJBYm9ydGluZyIKIG1zZ3N0ciAiSW50ZXJydXppb25lIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAicmlwcmlzdGlubyBmaWxlIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2NgorIzogbGliL21lcmdlLnRjbDoyNjcKIG1zZ2lkICJBYm9ydCBmYWlsZWQuIgogbXNnc3RyICJJbnRlcnJ1emlvbmUgbm9uIHJpdXNjaXRhLiIKIAotIzogbGliL21lcmdlLnRjbDoyNjgKKyM6IGxpYi9tZXJnZS50Y2w6MjY5CiBtc2dpZCAiQWJvcnQgY29tcGxldGVkLiAgUmVhZHkuIgogbXNnc3RyICJJbnRlcnJ1emlvbmUgY29tcGxldGF0YS4gUHJvbnRvLiIKIAotIzogbGliL29wdGlvbi50Y2w6OTUKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjgKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBiYXNlIHZlcnNpb24/IgorbXNnc3RyICJJbXBvcnJlIGxhIHJpc29sdXppb25lIGFsbGEgcmV2aXNpb25lIGNvbXVuZT8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjkKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoaXMgYnJhbmNoPyIKK21zZ3N0ciAiSW1wb3JyZSBsYSByaXNvbHV6aW9uZSBhbCByYW1vIGF0dHVhbGU/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxMAorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIG90aGVyIGJyYW5jaD8iCittc2dzdHIgIkltcG9ycmUgbGEgcmlzb2x1emlvbmUgYWxsJ2FsdHJvIHJhbW8/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIlNpIHN0YW5ubyBtb3N0cmFuZG8gc29sbyBsZSBtb2RpZmljaGUgY29uIGNvbmZsaXR0aS5cbiIKKyJcbiIKKyIlcyBzYXLDoCBzb3ZyYXNjcml0dG8uXG4iCisiXG4iCisiUXVlc3RhIG9wZXJhemlvbmUgcHXDsiBlc3NlcmUgbW9kaWZpY2F0YSBzb2xvIHJpY29taW5jaWFuZG8gbGEgZnVzaW9uZS4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iCittc2dzdHIgIiIKKyJJbCBmaWxlICVzIHNlbWJyYSBjb250ZW5lcmUgY29uZmxpdHRpIG5vbiByaXNvbHRpLCBwcmVwYXJhcmUgcGVyIGxhIHByb3NzaW1hICIKKyJyZXZpc2lvbmU/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo2MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIKK21zZ3N0ciAiIgorIkxhIHJpc29sdXppb25lIGRlaSBjb25mbGl0dGkgcGVyICVzIMOoIHByZXBhcmF0YSBwZXIgbGEgcHJvc3NpbWEgcmV2aXNpb25lIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNDEKK21zZ2lkICJDYW5ub3QgcmVzb2x2ZSBkZWxldGlvbiBvciBsaW5rIGNvbmZsaWN0cyB1c2luZyBhIHRvb2wiCittc2dzdHIgIiIKKyJOb24gw6ggcG9zc2liaWxlIHJpc29sdmVyZSBpIGNvbmZsaXR0aSBwZXIgY2FuY2VsbGF6aW9uaSBvIGxpbmsgY29uIHVuICIKKyJwcm9ncmFtbWEgZXN0ZXJubyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQ2Cittc2dpZCAiQ29uZmxpY3QgZmlsZSBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiTm9uIGVzaXN0ZSB1biBmaWxlIGNvbiBjb25mbGl0dGkuIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJOb3QgYSBHVUkgbWVyZ2UgdG9vbDogJyVzJyIKK21zZ3N0ciAiJyVzJyBub24gw6ggdW5hIEdVSSBwZXIgbGEgcmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aS4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI2OAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlVuc3VwcG9ydGVkIG1lcmdlIHRvb2wgJyVzJyIKK21zZ3N0ciAiSWwgcHJvZ3JhbW1hICclcycgbm9uIMOoIHN1cHBvcnRhdG8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICJMYSByaXNvbHV6aW9uZSBkZWkgY29uZmxpdHRpIMOoIGdpw6AgYXZ2aWF0YSwgdGVybWluYXJsYT8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisiRXJyb3JlOiByZXZpc2lvbmUgbm9uIHRyb3ZhdGE6XG4iCisiJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0MworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgdGhlIG1lcmdlIHRvb2w6XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKyJJbXBvc3NpYmlsZSBhdnZpYXJlIGxhIHJpc29sdXppb25lIGRlaSBjb25mbGl0dGk6XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0NworbXNnaWQgIlJ1bm5pbmcgbWVyZ2UgdG9vbC4uLiIKK21zZ3N0ciAiQXZ2aW8gZGVsIHByb2dyYW1tYSBwZXIgbGEgcmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aSBpbiBjb3Jzby4uLiIKKworIzogbGliL21lcmdldG9vbC50Y2w6Mzc1IGxpYi9tZXJnZXRvb2wudGNsOjM4MworbXNnaWQgIk1lcmdlIHRvb2wgZmFpbGVkLiIKK21zZ3N0ciAiUmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aSBub24gcml1c2NpdGEuIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZ2xvYmFsIGVuY29kaW5nICclcyciCittc2dzdHIgIiIKKyJMYSBjb2RpZmljYSBkZWkgY2FyYXR0ZXJpICclcycgc3BlY2lmaWNhdGEgcGVyIHR1dHRpIGdsaSBhcmNoaXZpIG5vbiDDqCB2YWxpZGEiCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIiIKKyJMYSBjb2RpZmljYSBkZWkgY2FyYXR0ZXJpICclcycgc3BlY2lmaWNhdGEgcGVyIGwnYXJjaGl2aW8gYXR0dWFsZSAgbm9uIMOoICIKKyJ2YWxpZGEiCisKKyM6IGxpYi9vcHRpb24udGNsOjExNwogbXNnaWQgIlJlc3RvcmUgRGVmYXVsdHMiCiBtc2dzdHIgIlJpcHJpc3RpbmEgdmFsb3JpIHByZWRlZmluaXRpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDo5OQorIzogbGliL29wdGlvbi50Y2w6MTIxCiBtc2dpZCAiU2F2ZSIKIG1zZ3N0ciAiU2FsdmEiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEwOQorIzogbGliL29wdGlvbi50Y2w6MTMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiJXMgUmVwb3NpdG9yeSIKIG1zZ3N0ciAiQXJjaGl2aW8gZGkgJXMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExMAorIzogbGliL29wdGlvbi50Y2w6MTMyCiBtc2dpZCAiR2xvYmFsIChBbGwgUmVwb3NpdG9yaWVzKSIKIG1zZ3N0ciAiVHV0dGkgZ2xpIGFyY2hpdmkiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExNgorIzogbGliL29wdGlvbi50Y2w6MTM4CiBtc2dpZCAiVXNlciBOYW1lIgogbXNnc3RyICJOb21lIHV0ZW50ZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTE3CisjOiBsaWIvb3B0aW9uLnRjbDoxMzkKIG1zZ2lkICJFbWFpbCBBZGRyZXNzIgogbXNnc3RyICJJbmRpcml6em8gRW1haWwiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExOQorIzogbGliL29wdGlvbi50Y2w6MTQxCiBtc2dpZCAiU3VtbWFyaXplIE1lcmdlIENvbW1pdHMiCiBtc2dzdHIgIlJpZXBpbG9nbyBuZWxsZSByZXZpc2lvbmkgZGkgZnVzaW9uZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTIwCisjOiBsaWIvb3B0aW9uLnRjbDoxNDIKIG1zZ2lkICJNZXJnZSBWZXJib3NpdHkiCiBtc2dzdHIgIlByb2xpc3NpdMOgIGRlbGxhIGZ1c2lvbmUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMQorIzogbGliL29wdGlvbi50Y2w6MTQzCiBtc2dpZCAiU2hvdyBEaWZmc3RhdCBBZnRlciBNZXJnZSIKIG1zZ3N0ciAiTW9zdHJhIHN0YXRpc3RpY2hlIGRlbGxlIGRpZmZlcmVuemUgZG9wbyBsYSBmdXNpb25lIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjMKKyM6IGxpYi9vcHRpb24udGNsOjE0NAorbXNnaWQgIlVzZSBNZXJnZSBUb29sIgorbXNnc3RyICJQcm9ncmFtbWEgZGEgdXRpbGl6emFyZSBwZXIgbGEgcmlzb2x1emlvbmUgZGVpIGNvbmZsaXR0aSIKKworIzogbGliL29wdGlvbi50Y2w6MTQ2CiBtc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKIG1zZ3N0ciAiRmlkYXRpIGRlbGxlIGRhdGUgZGkgbW9kaWZpY2EgZGVpIGZpbGUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNAorIzogbGliL29wdGlvbi50Y2w6MTQ3CiBtc2dpZCAiUHJ1bmUgVHJhY2tpbmcgQnJhbmNoZXMgRHVyaW5nIEZldGNoIgogbXNnc3RyICIiCiAiRWZmZXR0dWEgcG90YXR1cmEgZGVpIGR1cGxpY2F0aSBsb2NhbGkgZGkgcmFtaSByZW1vdGkgZHVyYW50ZSBpbCByZWN1cGVybyIKIAotIzogbGliL29wdGlvbi50Y2w6MTI1CisjOiBsaWIvb3B0aW9uLnRjbDoxNDgKIG1zZ2lkICJNYXRjaCBUcmFja2luZyBCcmFuY2hlcyIKIG1zZ3N0ciAiQXBwYWlhIGR1cGxpY2F0aSBsb2NhbGkgZGkgcmFtaSByZW1vdGkiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNgorIzogbGliL29wdGlvbi50Y2w6MTQ5CiBtc2dpZCAiQmxhbWUgQ29weSBPbmx5IE9uIENoYW5nZWQgRmlsZXMiCiBtc2dzdHIgIlJpY2VyY2EgY29waWUgc29sbyBuZWkgZmlsZSBtb2RpZmljYXRpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjcKKyM6IGxpYi9vcHRpb24udGNsOjE1MAogbXNnaWQgIk1pbmltdW0gTGV0dGVycyBUbyBCbGFtZSBDb3B5IE9uIgogbXNnc3RyICJOdW1lcm8gbWluaW1vIGRpIGxldHRlcmUgY2hlIGF0dGl2YW5vIGxhIHJpY2VyY2EgZGVsbGUgY29waWUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOAorIzogbGliL29wdGlvbi50Y2w6MTUxCittc2dpZCAiQmxhbWUgSGlzdG9yeSBDb250ZXh0IFJhZGl1cyAoZGF5cykiCittc2dzdHIgIkdpb3JuaSBkaSBjb250ZXN0byBuZWxsYSBjcm9ub2xvZ2lhIGRlbGxlIGFubm90YXppb25pIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTIKIG1zZ2lkICJOdW1iZXIgb2YgRGlmZiBDb250ZXh0IExpbmVzIgogbXNnc3RyICJOdW1lcm8gZGkgbGluZWUgZGkgY29udGVzdG8gbmVsbGUgZGlmZmVyZW56ZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTI5CisjOiBsaWIvb3B0aW9uLnRjbDoxNTMKIG1zZ2lkICJDb21taXQgTWVzc2FnZSBUZXh0IFdpZHRoIgogbXNnc3RyICJMYXJnaGV6emEgZGVsIG1lc3NhZ2dpbyBkaSByZXZpc2lvbmUiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEzMAorIzogbGliL29wdGlvbi50Y2w6MTU0CiBtc2dpZCAiTmV3IEJyYW5jaCBOYW1lIFRlbXBsYXRlIgogbXNnc3RyICJNb2RlbGxvIHBlciBpbCBub21lIGRpIHVuIG51b3ZvIHJhbW8iCiAKLSM6IGxpYi9vcHRpb24udGNsOjE5NAorIzogbGliL29wdGlvbi50Y2w6MTU1Cittc2dpZCAiRGVmYXVsdCBGaWxlIENvbnRlbnRzIEVuY29kaW5nIgorbXNnc3RyICJDb2RpZmljYSBwcmVkZWZpbml0YSBwZXIgaWwgY29udGVudXRvIGRlaSBmaWxlIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIkNhbWJpYSIKKworIzogbGliL29wdGlvbi50Y2w6MjMwCiBtc2dpZCAiU3BlbGxpbmcgRGljdGlvbmFyeToiCiBtc2dzdHIgIkxpbmd1YSBkaXppb25hcmlvOiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE4CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiQ2FtYmlhIGNhcmF0dGVyaSIKIAotIzogbGliL29wdGlvbi50Y2w6MjIyCisjOiBsaWIvb3B0aW9uLnRjbDoyNTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDaG9vc2UgJXMiCiBtc2dzdHIgIlNjZWdsaSAlcyIKIAotIzogbGliL29wdGlvbi50Y2w6MjI4CisjOiBsaWIvb3B0aW9uLnRjbDoyNjQKIG1zZ2lkICJwdC4iCiBtc2dzdHIgInB0LiIKIAotIzogbGliL29wdGlvbi50Y2w6MjQyCisjOiBsaWIvb3B0aW9uLnRjbDoyNzgKIG1zZ2lkICJQcmVmZXJlbmNlcyIKIG1zZ3N0ciAiUHJlZmVyZW56ZSIKIAotIzogbGliL29wdGlvbi50Y2w6Mjc3CisjOiBsaWIvb3B0aW9uLnRjbDozMTQKIG1zZ2lkICJGYWlsZWQgdG8gY29tcGxldGVseSBzYXZlIG9wdGlvbnM6IgogbXNnc3RyICJJbXBvc3NpYmlsZSBzYWx2YXJlIGNvbXBsZXRhbWVudGUgbGUgb3B6aW9uaToiCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE2NQorIzogbGliL3JlbW90ZS50Y2w6MTYzCittc2dpZCAiUmVtb3ZlIFJlbW90ZSIKK21zZ3N0ciAiUmltdW92aSBhcmNoaXZpbyByZW1vdG8iCisKKyM6IGxpYi9yZW1vdGUudGNsOjE2OAogbXNnaWQgIlBydW5lIGZyb20iCiBtc2dzdHIgIkVmZmV0dHVhIHBvdGF0dXJhIGRhIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNzAKKyM6IGxpYi9yZW1vdGUudGNsOjE3MwogbXNnaWQgIkZldGNoIGZyb20iCiBtc2dzdHIgIlJlY3VwZXJhIGRhIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoyMTMKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQogbXNnaWQgIlB1c2ggdG8iCiBtc2dzdHIgIlByb3BhZ2EgdmVyc28iCiAKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxOQorbXNnaWQgIkFkZCBSZW1vdGUiCittc2dzdHIgIkFnZ2l1bmdpIGFyY2hpdmlvIHJlbW90byIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI0Cittc2dpZCAiQWRkIE5ldyBSZW1vdGUiCittc2dzdHIgIkFnZ2l1bmdpIG51b3ZvIGFyY2hpdmlvIHJlbW90byIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjI4IGxpYi90b29sc19kbGcudGNsOjM2Cittc2dpZCAiQWRkIgorbXNnc3RyICJBZ2dpdW5naSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjM3Cittc2dpZCAiUmVtb3RlIERldGFpbHMiCittc2dzdHIgIkRldHRhZ2xpIHN1bGwnYXJjaGl2aW8gcmVtb3RvIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NTAKK21zZ2lkICJMb2NhdGlvbjoiCittc2dzdHIgIlBvc2l6aW9uZToiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo2MgorbXNnaWQgIkZ1cnRoZXIgQWN0aW9uIgorbXNnc3RyICJBbHRyYSBhemlvbmUiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo2NQorbXNnaWQgIkZldGNoIEltbWVkaWF0ZWx5IgorbXNnc3RyICJSZWN1cGVyYSBzdWJpdG8iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3MQorbXNnaWQgIkluaXRpYWxpemUgUmVtb3RlIFJlcG9zaXRvcnkgYW5kIFB1c2giCittc2dzdHIgIkluaXppYWxpenphIGwnYXJjaGl2aW8gcmVtb3RvIGUgcHJvcGFnYSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjc3Cittc2dpZCAiRG8gTm90aGluZyBFbHNlIE5vdyIKK21zZ3N0ciAiTm9uIGZhcmUgYWx0cm8iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMDEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIgorbXNnc3RyICJJbnNlcmlyZSB1biBub21lIHBlciBsJ2FyY2hpdmlvIHJlbW90by4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIHJlbW90ZSBuYW1lLiIKK21zZ3N0ciAiJyVzJyBub24gw6ggdXRpbGl6emFiaWxlIGNvbWUgbm9tZSBkaSBhcmNoaXZpbyByZW1vdG8uIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTI1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGFkZCByZW1vdGUgJyVzJyBvZiBsb2NhdGlvbiAnJXMnLiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgYWdnaXVuZ2VyZSBsJ2FyY2hpdmlvIHJlbW90byAnJXMnIHBvc3RvIGluICclcycuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTMzIGxpYi90cmFuc3BvcnQudGNsOjYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJmZXRjaCAlcyIKK21zZ3N0ciAicmVjdXBlcmEgZGEgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIlJlY3VwZXJvICVzIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTU3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRG8gbm90IGtub3cgaG93IHRvIGluaXRpYWxpemUgcmVwb3NpdG9yeSBhdCBsb2NhdGlvbiAnJXMnLiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgaW5pemlhbGl6emFyZSBsJ2FyY2hpdmlvIHBvc3RvIGluICclcycuIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTYzIGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjYzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDo4MQorIywgdGNsLWZvcm1hdAorbXNnaWQgInB1c2ggJXMiCittc2dzdHIgInByb3BhZ2EgdmVyc28gJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHVwIHRoZSAlcyAoYXQgJXMpIgorbXNnc3RyICJJbXBvc3RvICVzIChpbiAlcykiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgotbXNnc3RyICJDYW5jZWxsYSByYW1vIHJlbW90byIKK21zZ2lkICJEZWxldGUgQnJhbmNoIFJlbW90ZWx5IgorbXNnc3RyICJFbGltaW5hIHJhbW8gcmVtb3RvIgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjQ3CiBtc2dpZCAiRnJvbSBSZXBvc2l0b3J5IgogbXNnc3RyICJEYSBhcmNoaXZpbyIKIAotIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo1MCBsaWIvdHJhbnNwb3J0LnRjbDoxMjMKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NTAgbGliL3RyYW5zcG9ydC50Y2w6MTM0CiBtc2dpZCAiUmVtb3RlOiIKIG1zZ3N0ciAiUmVtb3RvOiIKIAotIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo2NiBsaWIvdHJhbnNwb3J0LnRjbDoxMzgKLW1zZ2lkICJBcmJpdHJhcnkgVVJMOiIKLW1zZ3N0ciAiVVJMIHNwZWNpZmljbzoiCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjY2IGxpYi90cmFuc3BvcnQudGNsOjE0OQorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCittc2dzdHIgIlBvc2l6aW9uZSBzcGVjaWZpY2E6IgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0CiBtc2dpZCAiQnJhbmNoZXMiCkBAIC0xOTE4LDYgKzIyODEsMjIgQEAKIG1zZ2lkICJTY2FubmluZyAlcy4uLiIKIG1zZ3N0ciAiQW5hbGlzaSBpbiBjb3JzbyAlcy4uLiIKIAorIzogbGliL3NlYXJjaC50Y2w6MjEKK21zZ2lkICJGaW5kOiIKK21zZ3N0ciAiVHJvdmE6IgorCisjOiBsaWIvc2VhcmNoLnRjbDoyMworbXNnaWQgIk5leHQiCittc2dzdHIgIlN1Y2MiCisKKyM6IGxpYi9zZWFyY2gudGNsOjI0Cittc2dpZCAiUHJldiIKK21zZ3N0ciAiUHJlYyIKKworIzogbGliL3NlYXJjaC50Y2w6MjUKK21zZ2lkICJDYXNlLVNlbnNpdGl2ZSIKK21zZ3N0ciAiRGlzdGluZ3VpIG1haXVzY29sZSIKKwogIzogbGliL3Nob3J0Y3V0LnRjbDoyMCBsaWIvc2hvcnRjdXQudGNsOjYxCiBtc2dpZCAiQ2Fubm90IHdyaXRlIHNob3J0Y3V0OiIKIG1zZ3N0ciAiSW1wb3NzaWJpbGUgc2NyaXZlcmUgc2hvcnRjdXQ6IgpAQCAtMTk1NSwyMyArMjMzNCwxODkgQEAKIG1zZ2lkICJObyBTdWdnZXN0aW9ucyIKIG1zZ3N0ciAiTmVzc3VuIHN1Z2dlcmltZW50byIKIAotIzogbGliL3NwZWxsY2hlY2sudGNsOjM4NworIzogbGliL3NwZWxsY2hlY2sudGNsOjM4OAogbXNnaWQgIlVuZXhwZWN0ZWQgRU9GIGZyb20gc3BlbGwgY2hlY2tlciIKIG1zZ3N0ciAiSWwgY29ycmV0dG9yZSBvcnRvZ3JhZmljbyBoYSBtYW5kYXRvIHVuIEVPRiBpbmFzcGV0dGF0byIKIAotIzogbGliL3NwZWxsY2hlY2sudGNsOjM5MQorIzogbGliL3NwZWxsY2hlY2sudGNsOjM5MgogbXNnaWQgIlNwZWxsIENoZWNrZXIgRmFpbGVkIgogbXNnc3RyICJFcnJvcmUgbmVsIGNvcnJldHRvcmUgb3J0b2dyYWZpY28iCiAKKyM6IGxpYi9zc2hrZXkudGNsOjMxCittc2dpZCAiTm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIkNoaWF2aSBub24gdHJvdmF0ZS4iCisKKyM6IGxpYi9zc2hrZXkudGNsOjM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRm91bmQgYSBwdWJsaWMga2V5IGluOiAlcyIKK21zZ3N0ciAiQ2hpYXZlIHB1YmJsaWNhIHRyb3ZhdGEgaW46ICVzIgorCisjOiBsaWIvc3Noa2V5LnRjbDo0MAorbXNnaWQgIkdlbmVyYXRlIEtleSIKK21zZ3N0ciAiQ3JlYSBjaGlhdmUiCisKKyM6IGxpYi9zc2hrZXkudGNsOjU2Cittc2dpZCAiQ29weSBUbyBDbGlwYm9hcmQiCittc2dzdHIgIkNvcGlhIG5lZ2xpIGFwcHVudGkiCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIkxhIHR1YSBjaGlhdmUgcHViYmxpY2EgT3BlblNTSCIKKworIzogbGliL3NzaGtleS50Y2w6NzgKK21zZ2lkICJHZW5lcmF0aW5nLi4uIgorbXNnc3RyICJDcmVhemlvbmUgY2hpYXZlIGluIGNvcnNvLi4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkltcG9zc2liaWxlIGF2dmlhcmUgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL3NzaGtleS50Y2w6MTExCittc2dpZCAiR2VuZXJhdGlvbiBmYWlsZWQuIgorbXNnc3RyICJFcnJvcmUgZHVyYW50ZSBsYSBjcmVhemlvbmUgZGVsbGEgY2hpYXZlLiIKKworIzogbGliL3NzaGtleS50Y2w6MTE4Cittc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgorbXNnc3RyICJMYSBjaGlhdmUgw6ggc3RhdGEgY3JlYXRhIGNvbiBzdWNjZXNzbywgbWEgbm9uIMOoIHN0YXRhIHRyb3ZhdGEuIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMjEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJZb3VyIGtleSBpcyBpbjogJXMiCittc2dzdHIgIkxhIGNoaWF2ZSDDqCBpbjogJXMiCisKICM6IGxpYi9zdGF0dXNfYmFyLnRjbDo4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIC4uLiAlKmkgb2YgJSppICVzICglM2klJSkiCiBtc2dzdHIgIiUxJHMgLi4uICU2JHM6ICUyJCppIGRpICU0JCppICglNyQzaSUlKSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6NgorIzogbGliL3Rvb2xzLnRjbDo3NQogIywgdGNsLWZvcm1hdAotbXNnaWQgImZldGNoICVzIgotbXNnc3RyICJyZWN1cGVyYSBkYSAlcyIKK21zZ2lkICJSdW5uaW5nICVzIHJlcXVpcmVzIGEgc2VsZWN0ZWQgZmlsZS4iCittc2dzdHIgIkJpc29nbmEgc2VsZXppb25hcmUgdW4gZmlsZSBwcmltYSBkaSBlc2VndWlyZSAlcy4iCisKKyM6IGxpYi90b29scy50Y2w6OTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcnVuICVzPyIKK21zZ3N0ciAiVnVvaSBkYXZ2ZXJvIGVzZWd1aXJlICVzPyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sOiAlcyIKK21zZ3N0ciAiU3RydW1lbnRvOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSdW5uaW5nOiAlcyIKK21zZ3N0ciAiRXNlZ3VvOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNDkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGNvbXBsZXRlZCBzdWNjZXNmdWxseTogJXMiCittc2dzdHIgIklsIHByb2dyYW1tYSBlc3Rlcm5vIMOoIHRlcm1pbmF0byBjb24gc3VjY2Vzc286ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE1MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgZmFpbGVkOiAlcyIKK21zZ3N0ciAiSWwgcHJvZ3JhbW1hIGVzdGVybm8gaGEgcmlwb3J0YXRvIHVuIGVycm9yZTogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIkFnZ2l1bmdpIHN0cnVtZW50byIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAiQWdnaXVuZ2kgdW4gbnVvdm8gY29tYW5kbyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzMKK21zZ2lkICJBZGQgZ2xvYmFsbHkiCittc2dzdHIgIkFnZ2l1bmdpIHBlciB0dXR0aSBnbGkgYXJjaGl2aSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NDUKK21zZ2lkICJUb29sIERldGFpbHMiCittc2dzdHIgIkRldHRhZ2xpIHN1bGxvIHN0cnVtZW50byIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NDgKK21zZ2lkICJVc2UgJy8nIHNlcGFyYXRvcnMgdG8gY3JlYXRlIGEgc3VibWVudSB0cmVlOiIKK21zZ3N0ciAiVXRpbGl6emEgaWwgc2VwYXJhdG9yZSAnLycgcGVyIGNyZWFyZSB1biBhbGJlcm8gZGkgc290dG9tZW51OiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NjEKK21zZ2lkICJDb21tYW5kOiIKK21zZ3N0ciAiQ29tYW5kbzoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjc0Cittc2dpZCAiU2hvdyBhIGRpYWxvZyBiZWZvcmUgcnVubmluZyIKK21zZ3N0ciAiTW9zdHJhIHVuYSBmaW5lc3RyYSBkaSBkaWFsb2dvIHByaW1hIGRlbGwnYXZ2aW8iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIkNoaWVkaSBhbGwndXRlbnRlIGRpIHNjZWdsaWVyZSB1bmEgcmV2aXNpb25lIChpbXBvc3RhICRSRVZJU0lPTikiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIkNoaWVkaSBhbGwndXRlbnRlIGRpIGZvcm5pcmUgYXJnb21lbnRpIGFnZ2l1bnRpdmkgKGltcG9zdGEgJEFSR1MpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5MgorbXNnaWQgIkRvbid0IHNob3cgdGhlIGNvbW1hbmQgb3V0cHV0IHdpbmRvdyIKK21zZ3N0ciAiTm9uIG1vc3RyYXJlIGxhIGZpbmVzdHJhIGRpIGNvbWFuZG8iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjk3Cittc2dpZCAiUnVuIG9ubHkgaWYgYSBkaWZmIGlzIHNlbGVjdGVkICgkRklMRU5BTUUgbm90IGVtcHR5KSIKK21zZ3N0ciAiQXZ2aWEgc29sbyBzZSDDqCBzZWxlemlvbmF0YSB1bmEgZGlmZmVyZW56YSAoJEZJTEVOQU1FIG5vbiDDqCB2dW90bykiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBuYW1lIGZvciB0aGUgdG9vbC4iCittc2dzdHIgIkJpc29nbmEgZGFyZSB1biBub21lIGFsbG8gc3RydW1lbnRvLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTI5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAiTG8gc3RydW1lbnRvICclcycgZXNpc3RlIGdpw6AuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IGFkZCB0b29sOlxuIgorIiVzIgorbXNnc3RyICIiCisiSW1wb3NzaWJpbGUgYWdnaXVuZ2VyZSBsbyBzdHJ1bWVudG86XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE5MAorbXNnaWQgIlJlbW92ZSBUb29sIgorbXNnc3RyICJSaW11b3ZpIHN0cnVtZW50byIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTk2Cittc2dpZCAiUmVtb3ZlIFRvb2wgQ29tbWFuZHMiCittc2dzdHIgIlJpbXVvdmkgaSBjb21hbmRpIGRlbGxvIHN0cnVtZW50byIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJSaW11b3ZpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMzYKK21zZ2lkICIoQmx1ZSBkZW5vdGVzIHJlcG9zaXRvcnktbG9jYWwgdG9vbHMpIgorbXNnc3RyICIoSWwgY29sb3JlIGJsdSBpbmRpY2Egc3RydW1lbnRpIHBlciBsJ2FyY2hpdmlvIGxvY2FsZSkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAiQXZ2aWEgaWwgY29tYW5kbzogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMxMQorbXNnaWQgIkFyZ3VtZW50cyIKK21zZ3N0ciAiQXJnb21lbnRpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozNDgKK21zZ2lkICJPSyIKK21zZ3N0ciAiT0siCiAKICM6IGxpYi90cmFuc3BvcnQudGNsOjcKICMsIHRjbC1mb3JtYXQKQEAgLTE5ODgsNDUgKzI1MzMsNDUgQEAKIG1zZ2lkICJQcnVuaW5nIHRyYWNraW5nIGJyYW5jaGVzIGRlbGV0ZWQgZnJvbSAlcyIKIG1zZ3N0ciAiRWZmZXR0dWEgcG90YXR1cmEgZGVpIGR1cGxpY2F0aSBsb2NhbGkgZGkgcmFtaSByZW1vdGkgY2FuY2VsbGF0aSBkYSAlcyIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MjUgbGliL3RyYW5zcG9ydC50Y2w6NzEKLSMsIHRjbC1mb3JtYXQKLW1zZ2lkICJwdXNoICVzIgotbXNnc3RyICJwcm9wYWdhIHZlcnNvICVzIgotCiAjOiBsaWIvdHJhbnNwb3J0LnRjbDoyNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgY2hhbmdlcyB0byAlcyIKIG1zZ3N0ciAiUHJvcGFnYXppb25lIG1vZGlmaWNoZSBhICVzIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo3MgorIzogbGliL3RyYW5zcG9ydC50Y2w6NjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNaXJyb3JpbmcgdG8gJXMiCittc2dzdHIgIk1pcnJvcmluZyB2ZXJzbyAlcyIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6ODIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nICVzICVzIHRvICVzIgogbXNnc3RyICJQcm9wYWdhemlvbmUgJXMgJXMgYSAlcyIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6ODkKKyM6IGxpYi90cmFuc3BvcnQudGNsOjEwMAogbXNnaWQgIlB1c2ggQnJhbmNoZXMiCiBtc2dzdHIgIlByb3BhZ2EgcmFtaSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMTQKIG1zZ2lkICJTb3VyY2UgQnJhbmNoZXMiCiBtc2dzdHIgIlJhbWkgZGkgb3JpZ2luZSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTIwCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMzEKIG1zZ2lkICJEZXN0aW5hdGlvbiBSZXBvc2l0b3J5IgogbXNnc3RyICJBcmNoaXZpbyBkaSBkZXN0aW5hemlvbmUiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjE1OAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTY5CiBtc2dpZCAiVHJhbnNmZXIgT3B0aW9ucyIKIG1zZ3N0ciAiT3B6aW9uaSBkaSB0cmFzZmVyaW1lbnRvIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjAKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3MQogbXNnaWQgIkZvcmNlIG92ZXJ3cml0ZSBleGlzdGluZyBicmFuY2ggKG1heSBkaXNjYXJkIGNoYW5nZXMpIgogbXNnc3RyICJTb3ZyYXNjcml2aSByYW1vIGVzaXN0ZW50ZSAoYWxjdW5lIG1vZGlmaWNoZSBwb3RyZWJiZXJvIGVzc2VyZSBwZXJzZSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjE2NAorIzogbGliL3RyYW5zcG9ydC50Y2w6MTc1CiBtc2dpZCAiVXNlIHRoaW4gcGFjayAoZm9yIHNsb3cgbmV0d29yayBjb25uZWN0aW9ucykiCiBtc2dzdHIgIlV0aWxpenphICd0aGluIHBhY2snIChwZXIgY29ubmVzc2lvbmkgbGVudGUpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjgKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3OQogbXNnaWQgIkluY2x1ZGUgdGFncyIKIG1zZ3N0ciAiSW5jbHVkaSBldGljaGV0dGUiCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2phLnBvIGIvZ2l0LWd1aS9wby9qYS5wbwppbmRleCA1ZGI0NGE0Li4wOWQ2MGJlIDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2phLnBvCisrKyBiL2dpdC1ndWkvcG8vamEucG8KQEAgLTgsNDEgKzgsNDEgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0LWd1aVxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0wOC0wMiAxNDo0NS0wNzAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0wOC0wMyAxNzowMCswOTAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTItMDggMDg6MzEtMDgwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTItMDkgMDY6MjcrMDkwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjog44GX44KJ44GE44GXIOOBquOBquOBkyA8bmFuYWtvM0BsYXZhYml0LmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBKYXBhbmVzZVxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6Njg4IGdpdC1ndWkuc2g6NzAyIGdpdC1ndWkuc2g6NzE1IGdpdC1ndWkuc2g6Nzk4Ci0jOiBnaXQtZ3VpLnNoOjgxNworIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjczNyBnaXQtZ3VpLnNoOjc1MSBnaXQtZ3VpLnNoOjc2NCBnaXQtZ3VpLnNoOjg0NworIzogZ2l0LWd1aS5zaDo4NjYKIG1zZ2lkICJnaXQtZ3VpOiBmYXRhbCBlcnJvciIKIG1zZ3N0ciAiZ2l0LWd1aTog6Ie05ZG955qE44Gq44Ko44Op44O8IgogCi0jOiBnaXQtZ3VpLnNoOjY0NAorIzogZ2l0LWd1aS5zaDo2ODkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGZvbnQgc3BlY2lmaWVkIGluICVzOiIKIG1zZ3N0ciAiJXMg44Gr54Sh5Yq544Gq44OV44Kp44Oz44OI44GM5oyH5a6a44GV44KM44Gm44GE44G+44GZOiIKIAotIzogZ2l0LWd1aS5zaDo2NzQKKyM6IGdpdC1ndWkuc2g6NzIzCiBtc2dpZCAiTWFpbiBGb250IgogbXNnc3RyICLkuLvjg5Xjgqnjg7Pjg4giCiAKLSM6IGdpdC1ndWkuc2g6Njc1CisjOiBnaXQtZ3VpLnNoOjcyNAogbXNnaWQgIkRpZmYvQ29uc29sZSBGb250IgogbXNnc3RyICJkaWZmL+OCs+ODs+OCveODvOODq+ODu+ODleOCqeODs+ODiCIKIAotIzogZ2l0LWd1aS5zaDo2ODkKKyM6IGdpdC1ndWkuc2g6NzM4CiBtc2dpZCAiQ2Fubm90IGZpbmQgZ2l0IGluIFBBVEguIgogbXNnc3RyICJQQVRIIOS4reOBqyBnaXQg44GM6KaL44Gk44GL44KK44G+44Gb44KTIgogCi0jOiBnaXQtZ3VpLnNoOjcxNgorIzogZ2l0LWd1aS5zaDo3NjUKIG1zZ2lkICJDYW5ub3QgcGFyc2UgR2l0IHZlcnNpb24gc3RyaW5nOiIKIG1zZ3N0ciAiR2l0IOODkOODvOOCuOODp+ODs+WQjeOBjOeQhuino+OBp+OBjeOBvuOBm+OCkzoiCiAKLSM6IGdpdC1ndWkuc2g6NzM0CisjOiBnaXQtZ3VpLnNoOjc4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJHaXQgdmVyc2lvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiIKQEAgLTYxLDM4MSArNjEsNDQ2IEBACiAiXG4iCiAiJyVzJyDjga/jg5Djg7zjgrjjg6fjg7MgMS41LjAg44Go5oCd44Gj44Gm6Imv44GE44Gn44GZ44GL77yfXG4iCiAKLSM6IGdpdC1ndWkuc2g6OTcyCisjOiBnaXQtZ3VpLnNoOjEwNjIKIG1zZ2lkICJHaXQgZGlyZWN0b3J5IG5vdCBmb3VuZDoiCiBtc2dzdHIgIkdpdCDjg4fjgqPjg6zjgq/jg4jjg6rjgYzopovjgaTjgYvjgorjgb7jgZvjgpM6IgogCi0jOiBnaXQtZ3VpLnNoOjk3OQorIzogZ2l0LWd1aS5zaDoxMDY5CiBtc2dpZCAiQ2Fubm90IG1vdmUgdG8gdG9wIG9mIHdvcmtpbmcgZGlyZWN0b3J5OiIKIG1zZ3N0ciAi5L2c5qWt44OH44Kj44Os44Kv44OI44Oq44Gu5pyA5LiK5L2N44Gr56e75YuV44Gn44GN44G+44Gb44KTIgogCi0jOiBnaXQtZ3VpLnNoOjk4NgorIzogZ2l0LWd1aS5zaDoxMDc2CiBtc2dpZCAiQ2Fubm90IHVzZSBmdW5ueSAuZ2l0IGRpcmVjdG9yeToiCiBtc2dzdHIgIuWkieOBqiAuZ2l0IOODh+OCo+ODrOOCr+ODiOODquOBr+S9v+OBiOOBvuOBm+OCkyIKIAotIzogZ2l0LWd1aS5zaDo5OTEKKyM6IGdpdC1ndWkuc2g6MTA4MQogbXNnaWQgIk5vIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICLkvZzmpa3jg4fjgqPjg6zjgq/jg4jjg6rjgYzjgYLjgorjgb7jgZvjgpMiCiAKLSM6IGdpdC1ndWkuc2g6MTEzOCBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQorIzogZ2l0LWd1aS5zaDoxMjQ3IGxpYi9jaGVja291dF9vcC50Y2w6MzA1CiBtc2dpZCAiUmVmcmVzaGluZyBmaWxlIHN0YXR1cy4uLiIKIG1zZ3N0ciAi44OV44Kh44Kk44Or54q25oWL44KS5pu05paw44GX44Gm44GE44G+44GZ4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjExOTQKKyM6IGdpdC1ndWkuc2g6MTMwMwogbXNnaWQgIlNjYW5uaW5nIGZvciBtb2RpZmllZCBmaWxlcyAuLi4iCiBtc2dzdHIgIuWkieabtOOBleOCjOOBn+ODleOCoeOCpOODq+OCkuOCueOCreODo+ODs+OBl+OBpuOBhOOBvuOBmeKApiIKIAotIzogZ2l0LWd1aS5zaDoxMzY5IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgInByZXBhcmUtY29tbWl0LW1zZyDjg5Xjg4Pjgq/jgpLlrp/ooYzkuK3jg7vjg7vjg7siCisKKyM6IGdpdC1ndWkuc2g6MTM4NAorbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4iCittc2dzdHIgInByZXBhcmUtY29tbWl0LW1zZyDjg5Xjg4Pjgq/jgYzjgrPjg5/jg4Pjg4jjgpLmi5LlkKbjgZfjgb7jgZfjgZ8iCisKKyM6IGdpdC1ndWkuc2g6MTU0MiBsaWIvYnJvd3Nlci50Y2w6MjQ2CiBtc2dpZCAiUmVhZHkuIgogbXNnc3RyICLmupblgpnlrozkuoYiCiAKLSM6IGdpdC1ndWkuc2g6MTYzNQorIzogZ2l0LWd1aS5zaDoxODE5CiBtc2dpZCAiVW5tb2RpZmllZCIKIG1zZ3N0ciAi5aSJ5pu054Sh44GXIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzcKKyM6IGdpdC1ndWkuc2g6MTgyMQogbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgogbXNnc3RyICLlpInmm7TjgYLjgorjgIHjgrPjg5/jg4Pjg4jmnKrkuojlrpoiCiAKLSM6IGdpdC1ndWkuc2g6MTYzOCBnaXQtZ3VpLnNoOjE2NDMKKyM6IGdpdC1ndWkuc2g6MTgyMiBnaXQtZ3VpLnNoOjE4MzAKIG1zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCIKIG1zZ3N0ciAi44Kz44Of44OD44OI5LqI5a6a5riIIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzkgZ2l0LWd1aS5zaDoxNjQ0CisjOiBnaXQtZ3VpLnNoOjE4MjMgZ2l0LWd1aS5zaDoxODMxCiBtc2dpZCAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIumDqOWIhueahOOBq+OCs+ODn+ODg+ODiOS6iOWumua4iCIKIAotIzogZ2l0LWd1aS5zaDoxNjQwIGdpdC1ndWkuc2g6MTY0NQorIzogZ2l0LWd1aS5zaDoxODI0IGdpdC1ndWkuc2g6MTgzMgogbXNnaWQgIlN0YWdlZCBmb3IgY29tbWl0LCBtaXNzaW5nIgogbXNnc3RyICLjgrPjg5/jg4Pjg4jkuojlrprmuIjjgIHjg5XjgqHjgqTjg6vnhKHjgZciCiAKLSM6IGdpdC1ndWkuc2g6MTY0MgorIzogZ2l0LWd1aS5zaDoxODI2Cittc2dpZCAiRmlsZSB0eXBlIGNoYW5nZWQsIG5vdCBzdGFnZWQiCittc2dzdHIgIuODleOCoeOCpOODq+Wei+WkieabtOOAgeOCs+ODn+ODg+ODiOacquS6iOWumiIKKworIzogZ2l0LWd1aS5zaDoxODI3Cittc2dpZCAiRmlsZSB0eXBlIGNoYW5nZWQsIHN0YWdlZCIKK21zZ3N0ciAi44OV44Kh44Kk44Or5Z6L5aSJ5pu044CB44Kz44Of44OD44OI5LqI5a6a5riIIgorCisjOiBnaXQtZ3VpLnNoOjE4MjkKIG1zZ2lkICJVbnRyYWNrZWQsIG5vdCBzdGFnZWQiCiBtc2dzdHIgIueuoeeQhuWkluOAgeOCs+ODn+ODg+ODiOacquS6iOWumiIKIAotIzogZ2l0LWd1aS5zaDoxNjQ3CisjOiBnaXQtZ3VpLnNoOjE4MzQKIG1zZ2lkICJNaXNzaW5nIgogbXNnc3RyICLjg5XjgqHjgqTjg6vnhKHjgZciCiAKLSM6IGdpdC1ndWkuc2g6MTY0OAorIzogZ2l0LWd1aS5zaDoxODM1CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsIgogbXNnc3RyICLliYrpmaTkuojlrprmuIgiCiAKLSM6IGdpdC1ndWkuc2g6MTY0OQorIzogZ2l0LWd1aS5zaDoxODM2CiBtc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsLCBzdGlsbCBwcmVzZW50IgogbXNnc3RyICLliYrpmaTkuojlrprmuIjjgIHjg5XjgqHjgqTjg6vmnKrliYrpmaQiCiAKLSM6IGdpdC1ndWkuc2g6MTY1MSBnaXQtZ3VpLnNoOjE2NTIgZ2l0LWd1aS5zaDoxNjUzIGdpdC1ndWkuc2g6MTY1NAorIzogZ2l0LWd1aS5zaDoxODM4IGdpdC1ndWkuc2g6MTgzOSBnaXQtZ3VpLnNoOjE4NDAgZ2l0LWd1aS5zaDoxODQxCisjOiBnaXQtZ3VpLnNoOjE4NDIgZ2l0LWd1aS5zaDoxODQzCiBtc2dpZCAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiIKIG1zZ3N0ciAi6KaB44Oe44O844K46Kej5rG6IgogCi0jOiBnaXQtZ3VpLnNoOjE2ODkKKyM6IGdpdC1ndWkuc2g6MTg3OAogbXNnaWQgIlN0YXJ0aW5nIGdpdGsuLi4gcGxlYXNlIHdhaXQuLi4iCiBtc2dzdHIgImdpdGsg44KS6LW35YuV5Lit4oCm44GK5b6F44Gh5LiL44GV44GE4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjE2OTgKKyM6IGdpdC1ndWkuc2g6MTg4NwogbXNnaWQgIkNvdWxkbid0IGZpbmQgZ2l0ayBpbiBQQVRIIgogbXNnc3RyICJQQVRIIOS4reOBqyBnaXRrIOOBjOimi+OBpOOBi+OCiuOBvuOBm+OCkyIKIAotIzogZ2l0LWd1aS5zaDoxOTQ4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKKyM6IGdpdC1ndWkuc2g6MjI4MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM2CiBtc2dpZCAiUmVwb3NpdG9yeSIKIG1zZ3N0ciAi44Oq44Od44K444OI44OqIgogCi0jOiBnaXQtZ3VpLnNoOjE5NDkKKyM6IGdpdC1ndWkuc2g6MjI4MQogbXNnaWQgIkVkaXQiCiBtc2dzdHIgIue3qOmbhiIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICLjg5bjg6njg7Pjg4EiCiAKLSM6IGdpdC1ndWkuc2g6MTk1NCBsaWIvY2hvb3NlX3Jldi50Y2w6NTQ4CisjOiBnaXQtZ3VpLnNoOjIyODYgbGliL2Nob29zZV9yZXYudGNsOjU0OAogbXNnaWQgIkNvbW1pdEBAbm91biIKIG1zZ3N0ciAi44Kz44Of44OD44OIIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTcgbGliL21lcmdlLnRjbDoxMjAgbGliL21lcmdlLnRjbDoxNDkgbGliL21lcmdlLnRjbDoxNjcKKyM6IGdpdC1ndWkuc2g6MjI4OSBsaWIvbWVyZ2UudGNsOjEyMSBsaWIvbWVyZ2UudGNsOjE1MCBsaWIvbWVyZ2UudGNsOjE2OAogbXNnaWQgIk1lcmdlIgogbXNnc3RyICLjg57jg7zjgrgiCiAKLSM6IGdpdC1ndWkuc2g6MTk1OCBsaWIvY2hvb3NlX3Jldi50Y2w6NTU3CisjOiBnaXQtZ3VpLnNoOjIyOTAgbGliL2Nob29zZV9yZXYudGNsOjU1NwogbXNnaWQgIlJlbW90ZSIKIG1zZ3N0ciAi44Oq44Oi44O844OIIgogCi0jOiBnaXQtZ3VpLnNoOjE5NjcKKyM6IGdpdC1ndWkuc2g6MjI5MworbXNnaWQgIlRvb2xzIgorbXNnc3RyICLjg4Tjg7zjg6siCisKKyM6IGdpdC1ndWkuc2g6MjMwMgorbXNnaWQgIkV4cGxvcmUgV29ya2luZyBDb3B5IgorbXNnc3RyICLjg6/jg7zjgq3jg7PjgrDjgrPjg5Tjg7zjgpLjg5bjg6njgqbjgroiCisKKyM6IGdpdC1ndWkuc2g6MjMwNwogbXNnaWQgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIgogbXNnc3RyICLnj77lnKjjga7jg5bjg6njg7Pjg4Hjga7jg5XjgqHjgqTjg6vjgpLopovjgosiCiAKLSM6IGdpdC1ndWkuc2g6MTk3MQorIzogZ2l0LWd1aS5zaDoyMzExCiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcy4uLiIKIG1zZ3N0ciAi44OW44Op44Oz44OB44Gu44OV44Kh44Kk44Or44KS6KaL44KL4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzYKKyM6IGdpdC1ndWkuc2g6MjMxNgogbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCiBtc2dzdHIgIuePvuWcqOOBruODluODqeODs+ODgeOBruWxpeattOOCkuimi+OCiyIKIAotIzogZ2l0LWd1aS5zaDoxOTgwCisjOiBnaXQtZ3VpLnNoOjIzMjAKIG1zZ2lkICJWaXN1YWxpemUgQWxsIEJyYW5jaCBIaXN0b3J5IgogbXNnc3RyICLlhajjgabjga7jg5bjg6njg7Pjg4Hjga7lsaXmrbTjgpLopovjgosiCiAKLSM6IGdpdC1ndWkuc2g6MTk4NworIzogZ2l0LWd1aS5zaDoyMzI3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJvd3NlICVzJ3MgRmlsZXMiCiBtc2dzdHIgIuODluODqeODs+ODgSAlcyDjga7jg5XjgqHjgqTjg6vjgpLopovjgosiCiAKLSM6IGdpdC1ndWkuc2g6MTk4OQorIzogZ2l0LWd1aS5zaDoyMzI5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVmlzdWFsaXplICVzJ3MgSGlzdG9yeSIKIG1zZ3N0ciAi44OW44Op44Oz44OBICVzIOOBruWxpeattOOCkuimi+OCiyIKIAotIzogZ2l0LWd1aS5zaDoxOTk0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NworIzogZ2l0LWd1aS5zaDoyMzM0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NwogbXNnaWQgIkRhdGFiYXNlIFN0YXRpc3RpY3MiCiBtc2dzdHIgIuODh+ODvOOCv+ODmeODvOOCuee1seioiCIKIAotIzogZ2l0LWd1aS5zaDoxOTk3IGxpYi9kYXRhYmFzZS50Y2w6MzQKKyM6IGdpdC1ndWkuc2g6MjMzNyBsaWIvZGF0YWJhc2UudGNsOjM0CiBtc2dpZCAiQ29tcHJlc3MgRGF0YWJhc2UiCiBtc2dzdHIgIuODh+ODvOOCv+ODmeODvOOCueWcp+e4riIKIAotIzogZ2l0LWd1aS5zaDoyMDAwCisjOiBnaXQtZ3VpLnNoOjIzNDAKIG1zZ2lkICJWZXJpZnkgRGF0YWJhc2UiCiBtc2dzdHIgIuODh+ODvOOCv+ODmeODvOOCueaknOiovCIKIAotIzogZ2l0LWd1aS5zaDoyMDA3IGdpdC1ndWkuc2g6MjAxMSBnaXQtZ3VpLnNoOjIwMTUgbGliL3Nob3J0Y3V0LnRjbDo3CisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKICM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQogbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCiBtc2dzdHIgIuODh+OCueOCr+ODiOODg+ODl+ODu+OCouOCpOOCs+ODs+OCkuS9nOOCiyIKIAotIzogZ2l0LWd1aS5zaDoyMDIzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTc3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTg1CisjOiBnaXQtZ3VpLnNoOjIzNjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxODMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxOTEKIG1zZ2lkICJRdWl0IgogbXNnc3RyICLntYLkuoYiCiAKLSM6IGdpdC1ndWkuc2g6MjAzMQorIzogZ2l0LWd1aS5zaDoyMzcxCiBtc2dpZCAiVW5kbyIKIG1zZ3N0ciAi5YWD44Gr5oi744GZIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzQKKyM6IGdpdC1ndWkuc2g6MjM3NAogbXNnaWQgIlJlZG8iCiBtc2dzdHIgIuOChOOCiuebtOOBlyIKIAotIzogZ2l0LWd1aS5zaDoyMDM4IGdpdC1ndWkuc2g6MjU0NQorIzogZ2l0LWd1aS5zaDoyMzc4IGdpdC1ndWkuc2g6MjkyMwogbXNnaWQgIkN1dCIKIG1zZ3N0ciAi5YiH44KK5Y+W44KKIgogCi0jOiBnaXQtZ3VpLnNoOjIwNDEgZ2l0LWd1aS5zaDoyNTQ4IGdpdC1ndWkuc2g6MjYyMiBnaXQtZ3VpLnNoOjI3MTUKKyM6IGdpdC1ndWkuc2g6MjM4MSBnaXQtZ3VpLnNoOjI5MjYgZ2l0LWd1aS5zaDozMDAwIGdpdC1ndWkuc2g6MzA4MgogIzogbGliL2NvbnNvbGUudGNsOjY5CiBtc2dpZCAiQ29weSIKIG1zZ3N0ciAi44Kz44OU44O8IgogCi0jOiBnaXQtZ3VpLnNoOjIwNDQgZ2l0LWd1aS5zaDoyNTUxCisjOiBnaXQtZ3VpLnNoOjIzODQgZ2l0LWd1aS5zaDoyOTI5CiBtc2dpZCAiUGFzdGUiCiBtc2dzdHIgIuiyvOOCiuS7mOOBkSIKIAotIzogZ2l0LWd1aS5zaDoyMDQ3IGdpdC1ndWkuc2g6MjU1NCBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MjYKKyM6IGdpdC1ndWkuc2g6MjM4NyBnaXQtZ3VpLnNoOjI5MzIgbGliL2JyYW5jaF9kZWxldGUudGNsOjI2CiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjM4CiBtc2dpZCAiRGVsZXRlIgogbXNnc3RyICLliYrpmaQiCiAKLSM6IGdpdC1ndWkuc2g6MjA1MSBnaXQtZ3VpLnNoOjI1NTggZ2l0LWd1aS5zaDoyNzE5IGxpYi9jb25zb2xlLnRjbDo3MQorIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6MjkzNiBnaXQtZ3VpLnNoOjMwODYgbGliL2NvbnNvbGUudGNsOjcxCiBtc2dpZCAiU2VsZWN0IEFsbCIKIG1zZ3N0ciAi5YWo44Gm6YG45oqeIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjAKKyM6IGdpdC1ndWkuc2g6MjQwMAogbXNnaWQgIkNyZWF0ZS4uLiIKIG1zZ3N0ciAi5L2c5oiQ4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjYKKyM6IGdpdC1ndWkuc2g6MjQwNgogbXNnaWQgIkNoZWNrb3V0Li4uIgogbXNnc3RyICLjg4Hjgqfjg4Pjgq/jgqLjgqbjg4giCiAKLSM6IGdpdC1ndWkuc2g6MjA3MgorIzogZ2l0LWd1aS5zaDoyNDEyCiBtc2dpZCAiUmVuYW1lLi4uIgogbXNnc3RyICLlkI3liY3lpInmm7TigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjA3NyBnaXQtZ3VpLnNoOjIxODcKKyM6IGdpdC1ndWkuc2g6MjQxNwogbXNnaWQgIkRlbGV0ZS4uLiIKIG1zZ3N0ciAi5YmK6Zmk4oCmIgogCi0jOiBnaXQtZ3VpLnNoOjIwODIKKyM6IGdpdC1ndWkuc2g6MjQyMgogbXNnaWQgIlJlc2V0Li4uIgogbXNnc3RyICLjg6rjgrvjg4Pjg4jigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjA5NCBnaXQtZ3VpLnNoOjI0OTEKLW1zZ2lkICJOZXcgQ29tbWl0IgotbXNnc3RyICLmlrDopo/jgrPjg5/jg4Pjg4giCisjOiBnaXQtZ3VpLnNoOjI0MzIKK21zZ2lkICJEb25lIgorbXNnc3RyICLlrozkuoYiCiAKLSM6IGdpdC1ndWkuc2g6MjEwMiBnaXQtZ3VpLnNoOjI0OTgKLW1zZ2lkICJBbWVuZCBMYXN0IENvbW1pdCIKLW1zZ3N0ciAi5pyA5paw44Kz44Of44OD44OI44KS6KiC5q2jIgotCi0jOiBnaXQtZ3VpLnNoOjIxMTEgZ2l0LWd1aS5zaDoyNDU4IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKLW1zZ2lkICJSZXNjYW4iCi1tc2dzdHIgIuWGjeOCueOCreODo+ODsyIKLQotIzogZ2l0LWd1aS5zaDoyMTE3Ci1tc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgotbXNnc3RyICLjgrPjg5/jg4Pjg4jkuojlrprjgZnjgosiCi0KLSM6IGdpdC1ndWkuc2g6MjEyMwotbXNnaWQgIlN0YWdlIENoYW5nZWQgRmlsZXMgVG8gQ29tbWl0IgotbXNnc3RyICLlpInmm7TjgZXjgozjgZ/jg5XjgqHjgqTjg6vjgpLjgrPjg5/jg4Pjg4jkuojlrpoiCi0KLSM6IGdpdC1ndWkuc2g6MjEyOQotbXNnaWQgIlVuc3RhZ2UgRnJvbSBDb21taXQiCi1tc2dzdHIgIuOCs+ODn+ODg+ODiOOBi+OCiemZjeOCjeOBmSIKLQotIzogZ2l0LWd1aS5zaDoyMTM0IGxpYi9pbmRleC50Y2w6Mzk1Ci1tc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCi1tc2dzdHIgIuWkieabtOOCkuWFg+OBq+aIu+OBmSIKLQotIzogZ2l0LWd1aS5zaDoyMTQxIGdpdC1ndWkuc2g6MjcwMgotbXNnaWQgIlNob3cgTGVzcyBDb250ZXh0IgotbXNnc3RyICLmlofohIjjgpLlsJHjgarjgY8iCi0KLSM6IGdpdC1ndWkuc2g6MjE0NSBnaXQtZ3VpLnNoOjI3MDYKLW1zZ2lkICJTaG93IE1vcmUgQ29udGV4dCIKLW1zZ3N0ciAi5paH6ISI44KS5aSa44GPIgotCi0jOiBnaXQtZ3VpLnNoOjIxNTEgZ2l0LWd1aS5zaDoyNDcwIGdpdC1ndWkuc2g6MjU2OQotbXNnaWQgIlNpZ24gT2ZmIgotbXNnc3RyICLnvbLlkI0iCi0KLSM6IGdpdC1ndWkuc2g6MjE1NSBnaXQtZ3VpLnNoOjI0NzQKKyM6IGdpdC1ndWkuc2g6MjQzNAogbXNnaWQgIkNvbW1pdEBAdmVyYiIKIG1zZ3N0ciAi44Kz44Of44OD44OIIgogCi0jOiBnaXQtZ3VpLnNoOjIxNjYKKyM6IGdpdC1ndWkuc2g6MjQ0MyBnaXQtZ3VpLnNoOjI4NjQKK21zZ2lkICJOZXcgQ29tbWl0IgorbXNnc3RyICLmlrDopo/jgrPjg5/jg4Pjg4giCisKKyM6IGdpdC1ndWkuc2g6MjQ1MSBnaXQtZ3VpLnNoOjI4NzEKK21zZ2lkICJBbWVuZCBMYXN0IENvbW1pdCIKK21zZ3N0ciAi5pyA5paw44Kz44Of44OD44OI44KS6KiC5q2jIgorCisjOiBnaXQtZ3VpLnNoOjI0NjEgZ2l0LWd1aS5zaDoyODI1IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKK21zZ2lkICJSZXNjYW4iCittc2dzdHIgIuWGjeOCueOCreODo+ODsyIKKworIzogZ2l0LWd1aS5zaDoyNDY3Cittc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgorbXNnc3RyICLjgrPjg5/jg4Pjg4jkuojlrprjgZnjgosiCisKKyM6IGdpdC1ndWkuc2g6MjQ3MworbXNnaWQgIlN0YWdlIENoYW5nZWQgRmlsZXMgVG8gQ29tbWl0IgorbXNnc3RyICLlpInmm7TjgZXjgozjgZ/jg5XjgqHjgqTjg6vjgpLjgrPjg5/jg4Pjg4jkuojlrpoiCisKKyM6IGdpdC1ndWkuc2g6MjQ3OQorbXNnaWQgIlVuc3RhZ2UgRnJvbSBDb21taXQiCittc2dzdHIgIuOCs+ODn+ODg+ODiOOBi+OCiemZjeOCjeOBmSIKKworIzogZ2l0LWd1aS5zaDoyNDg0IGxpYi9pbmRleC50Y2w6NDEwCittc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCittc2dzdHIgIuWkieabtOOCkuWFg+OBq+aIu+OBmSIKKworIzogZ2l0LWd1aS5zaDoyNDkxIGdpdC1ndWkuc2g6MzA2OQorbXNnaWQgIlNob3cgTGVzcyBDb250ZXh0IgorbXNnc3RyICLmlofohIjjgpLlsJHjgarjgY8iCisKKyM6IGdpdC1ndWkuc2g6MjQ5NSBnaXQtZ3VpLnNoOjMwNzMKK21zZ2lkICJTaG93IE1vcmUgQ29udGV4dCIKK21zZ3N0ciAi5paH6ISI44KS5aSa44GPIgorCisjOiBnaXQtZ3VpLnNoOjI1MDIgZ2l0LWd1aS5zaDoyODM4IGdpdC1ndWkuc2g6Mjk0NworbXNnaWQgIlNpZ24gT2ZmIgorbXNnc3RyICLnvbLlkI0iCisKKyM6IGdpdC1ndWkuc2g6MjUxOAogbXNnaWQgIkxvY2FsIE1lcmdlLi4uIgogbXNnc3RyICLjg63jg7zjgqvjg6vjg7vjg57jg7zjgrjigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjE3MQorIzogZ2l0LWd1aS5zaDoyNTIzCiBtc2dpZCAiQWJvcnQgTWVyZ2UuLi4iCiBtc2dzdHIgIuODnuODvOOCuOS4reatouKApiIKIAotIzogZ2l0LWd1aS5zaDoyMTgzCisjOiBnaXQtZ3VpLnNoOjI1MzUgZ2l0LWd1aS5zaDoyNTc1Cittc2dpZCAiQWRkLi4uIgorbXNnc3RyICLov73liqAiCisKKyM6IGdpdC1ndWkuc2g6MjUzOQogbXNnaWQgIlB1c2guLi4iCiBtc2dzdHIgIuODl+ODg+OCt+ODpeKApiIKIAotIzogZ2l0LWd1aS5zaDoyMTk3IGdpdC1ndWkuc2g6MjIxOSBsaWIvYWJvdXQudGNsOjE0Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAKKyM6IGdpdC1ndWkuc2g6MjU0MworbXNnaWQgIkRlbGV0ZSBCcmFuY2guLi4iCittc2dzdHIgIuODluODqeODs+ODgeWJiumZpC4uLiIKKworIzogZ2l0LWd1aS5zaDoyNTUzIGdpdC1ndWkuc2g6MjU4OSBsaWIvYWJvdXQudGNsOjE0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJBYm91dCAlcyIKIG1zZ3N0ciAiJXMg44Gr44Gk44GE44GmIgogCi0jOiBnaXQtZ3VpLnNoOjIyMDEKKyM6IGdpdC1ndWkuc2g6MjU1NwogbXNnaWQgIlByZWZlcmVuY2VzLi4uIgogbXNnc3RyICLoqK3lrprigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjIwOSBnaXQtZ3VpLnNoOjI3NDAKKyM6IGdpdC1ndWkuc2g6MjU2NSBnaXQtZ3VpLnNoOjMxMTUKIG1zZ2lkICJPcHRpb25zLi4uIgogbXNnc3RyICLjgqrjg5fjgrfjg6fjg7PigKYiCiAKLSM6IGdpdC1ndWkuc2g6MjIxNSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3CisjOiBnaXQtZ3VpLnNoOjI1NzYKK21zZ2lkICJSZW1vdmUuLi4iCittc2dzdHIgIuWJiumZpC4uLiIKKworIzogZ2l0LWd1aS5zaDoyNTg1IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAKIG1zZ2lkICJIZWxwIgogbXNnc3RyICLjg5jjg6vjg5ciCiAKLSM6IGdpdC1ndWkuc2g6MjI1NgorIzogZ2l0LWd1aS5zaDoyNjExCiBtc2dpZCAiT25saW5lIERvY3VtZW50YXRpb24iCiBtc2dzdHIgIuOCquODs+ODqeOCpOODs+ODu+ODieOCreODpeODoeODs+ODiCIKIAotIzogZ2l0LWd1aS5zaDoyMzQwCisjOiBnaXQtZ3VpLnNoOjI2MTQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU2Cittc2dpZCAiU2hvdyBTU0ggS2V5IgorbXNnc3RyICJTU0gg44Kt44O844KS6KGo56S6IgorCisjOiBnaXQtZ3VpLnNoOjI3MDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJmYXRhbDogY2Fubm90IHN0YXQgcGF0aCAlczogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKIG1zZ3N0ciAiIgogIuiHtOWRveeahDog44OR44K5ICVzIOOBjCBzdGF0IOOBp+OBjeOBvuOBm+OCk+OAguOBneOBruOCiOOBhuOBquODleOCoeOCpOODq+OChOODh+OCo+ODrOOCr+ODiOODquOBr+OBguOCiuOBviIKICLjgZvjgpMiCiAKLSM6IGdpdC1ndWkuc2g6MjM3MworIzogZ2l0LWd1aS5zaDoyNzQwCiBtc2dpZCAiQ3VycmVudCBCcmFuY2g6IgogbXNnc3RyICLnj77lnKjjga7jg5bjg6njg7Pjg4EiCiAKLSM6IGdpdC1ndWkuc2g6MjM5NAorIzogZ2l0LWd1aS5zaDoyNzYxCiBtc2dpZCAiU3RhZ2VkIENoYW5nZXMgKFdpbGwgQ29tbWl0KSIKIG1zZ3N0ciAi44K544OG44O844K444Oz44Kw44GV44KM44Gf77yI44Kz44Of44OD44OI5LqI5a6a5riI44Gu77yJ5aSJ5pu0IgogCi0jOiBnaXQtZ3VpLnNoOjI0MTQKKyM6IGdpdC1ndWkuc2g6Mjc4MQogbXNnaWQgIlVuc3RhZ2VkIENoYW5nZXMiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOS6iOWumuOBq+WFpeOBo+OBpuOBhOOBquOBhOWkieabtCIKIAotIzogZ2l0LWd1aS5zaDoyNDY0CisjOiBnaXQtZ3VpLnNoOjI4MzEKIG1zZ2lkICJTdGFnZSBDaGFuZ2VkIgogbXNnc3RyICLlpInmm7TjgpLjgrPjg5/jg4Pjg4jkuojlrprjgavlhaXjgozjgosiCiAKLSM6IGdpdC1ndWkuc2g6MjQ4MCBsaWIvdHJhbnNwb3J0LnRjbDo5MyBsaWIvdHJhbnNwb3J0LnRjbDoxODIKKyM6IGdpdC1ndWkuc2g6Mjg1MCBsaWIvdHJhbnNwb3J0LnRjbDo5MyBsaWIvdHJhbnNwb3J0LnRjbDoxODIKIG1zZ2lkICJQdXNoIgogbXNnc3RyICLjg5fjg4Pjgrfjg6UiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMAorIzogZ2l0LWd1aS5zaDoyODg1CiBtc2dpZCAiSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIuacgOWIneOBruOCs+ODn+ODg+ODiOODoeODg+OCu+ODvOOCuDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMQorIzogZ2l0LWd1aS5zaDoyODg2CiBtc2dpZCAiQW1lbmRlZCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIuioguato+OBl+OBn+OCs+ODn+ODg+ODiOODoeODg+OCu+ODvOOCuDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMgorIzogZ2l0LWd1aS5zaDoyODg3CiBtc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAi6KiC5q2j44GX44Gf5pyA5Yid44Gu44Kz44Of44OD44OI44Oh44OD44K744O844K4OiIKIAotIzogZ2l0LWd1aS5zaDoyNTEzCisjOiBnaXQtZ3VpLnNoOjI4ODgKIG1zZ2lkICJBbWVuZGVkIE1lcmdlIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAi6KiC5q2j44GX44Gf44Oe44O844K444Kz44Of44OD44OI44Oh44OD44K744O844K4OiIKIAotIzogZ2l0LWd1aS5zaDoyNTE0CisjOiBnaXQtZ3VpLnNoOjI4ODkKIG1zZ2lkICJNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIuODnuODvOOCuOOCs+ODn+ODg+ODiOODoeODg+OCu+ODvOOCuDoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxNQorIzogZ2l0LWd1aS5zaDoyODkwCiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICLjgrPjg5/jg4Pjg4jjg6Hjg4Pjgrvjg7zjgrg6IgogCi0jOiBnaXQtZ3VpLnNoOjI1NjEgZ2l0LWd1aS5zaDoyNzIzIGxpYi9jb25zb2xlLnRjbDo3MworIzogZ2l0LWd1aS5zaDoyOTM5IGdpdC1ndWkuc2g6MzA5MCBsaWIvY29uc29sZS50Y2w6NzMKIG1zZ2lkICJDb3B5IEFsbCIKIG1zZ3N0ciAi5YWo44Gm44Kz44OU44O8IgogCi0jOiBnaXQtZ3VpLnNoOjI1ODUgbGliL2JsYW1lLnRjbDoxMDAKKyM6IGdpdC1ndWkuc2g6Mjk2MyBsaWIvYmxhbWUudGNsOjEwNAogbXNnaWQgIkZpbGU6IgogbXNnc3RyICLjg5XjgqHjgqTjg6s6IgogCi0jOiBnaXQtZ3VpLnNoOjI2OTEKLW1zZ2lkICJBcHBseS9SZXZlcnNlIEh1bmsiCi1tc2dzdHIgIuODkeODg+ODgeOCkumBqeeUqC/lj5bjgormtojjgZkiCi0KLSM6IGdpdC1ndWkuc2g6MjY5NgotbXNnaWQgIkFwcGx5L1JldmVyc2UgTGluZSIKLW1zZ3N0ciAi44OR44OD44OB6KGM44KS6YGp55SoL+WPluOCiua2iOOBmSIKLQotIzogZ2l0LWd1aS5zaDoyNzExCisjOiBnaXQtZ3VpLnNoOjMwNzgKIG1zZ2lkICJSZWZyZXNoIgogbXNnc3RyICLlho3oqq3jgb/ovrzjgb8iCiAKLSM6IGdpdC1ndWkuc2g6MjczMgorIzogZ2l0LWd1aS5zaDozMDk5CiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICLjg5Xjgqnjg7Pjg4jjgpLlsI/jgZXjgY8iCiAKLSM6IGdpdC1ndWkuc2g6MjczNgorIzogZ2l0LWd1aS5zaDozMTAzCiBtc2dpZCAiSW5jcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICLjg5Xjgqnjg7Pjg4jjgpLlpKfjgY3jgY8iCiAKLSM6IGdpdC1ndWkuc2g6Mjc0NworIzogZ2l0LWd1aS5zaDozMTExIGxpYi9ibGFtZS50Y2w6MjgxCittc2dpZCAiRW5jb2RpbmciCittc2dzdHIgIuOCqOODs+OCs+ODvOODh+OCo+ODs+OCsCIKKworIzogZ2l0LWd1aS5zaDozMTIyCittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICLjg5Hjg4Pjg4HjgpLpgannlKgv5Y+W44KK5raI44GZIgorCisjOiBnaXQtZ3VpLnNoOjMxMjcKK21zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCittc2dzdHIgIuODkeODg+ODgeihjOOCkumBqeeUqC/lj5bjgormtojjgZkiCisKKyM6IGdpdC1ndWkuc2g6MzEzNworbXNnaWQgIlJ1biBNZXJnZSBUb29sIgorbXNnc3RyICLjg57jg7zjgrjjg4Tjg7zjg6vjgpLotbfli5UiCisKKyM6IGdpdC1ndWkuc2g6MzE0MgorbXNnaWQgIlVzZSBSZW1vdGUgVmVyc2lvbiIKK21zZ3N0ciAi44Oq44Oi44O844OI44Gu5pa544KS5o6h55SoIgorCisjOiBnaXQtZ3VpLnNoOjMxNDYKK21zZ2lkICJVc2UgTG9jYWwgVmVyc2lvbiIKK21zZ3N0ciAi44Ot44O844Kr44Or44Gu5pa544KS5o6h55SoIgorCisjOiBnaXQtZ3VpLnNoOjMxNTAKK21zZ2lkICJSZXZlcnQgVG8gQmFzZSIKK21zZ3N0ciAi44OZ44O844K554mI44KS5o6h55SoIgorCisjOiBnaXQtZ3VpLnNoOjMxNjkKIG1zZ2lkICJVbnN0YWdlIEh1bmsgRnJvbSBDb21taXQiCiBtc2dzdHIgIuODkeODg+ODgeOCkuOCs+ODn+ODg+ODiOS6iOWumuOBi+OCieWkluOBmSIKIAotIzogZ2l0LWd1aS5zaDoyNzQ4CisjOiBnaXQtZ3VpLnNoOjMxNzAKIG1zZ2lkICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOS6iOWumuOBi+OCieihjOOCkuWkluOBmSIKIAotIzogZ2l0LWd1aS5zaDoyNzUwCisjOiBnaXQtZ3VpLnNoOjMxNzIKIG1zZ2lkICJTdGFnZSBIdW5rIEZvciBDb21taXQiCiBtc2dzdHIgIuODkeODg+ODgeOCkuOCs+ODn+ODg+ODiOS6iOWumuOBq+WKoOOBiOOCiyIKIAotIzogZ2l0LWd1aS5zaDoyNzUxCisjOiBnaXQtZ3VpLnNoOjMxNzMKIG1zZ2lkICJTdGFnZSBMaW5lIEZvciBDb21taXQiCiBtc2dzdHIgIuODkeODg+ODgeihjOOCkuOCs+ODn+ODg+ODiOS6iOWumuOBq+WKoOOBiOOCiyIKIAotIzogZ2l0LWd1aS5zaDoyNzcxCisjOiBnaXQtZ3VpLnNoOjMxOTYKIG1zZ2lkICJJbml0aWFsaXppbmcuLi4iCiBtc2dzdHIgIuWIneacn+WMluOBl+OBpuOBhOOBvuOBmeKApiIKIAotIzogZ2l0LWd1aS5zaDoyODc2CisjOiBnaXQtZ3VpLnNoOjMzMDEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiUG9zc2libGUgZW52aXJvbm1lbnQgaXNzdWVzIGV4aXN0LlxuIgpAQCAtNDUwLDcgKzUxNSw3IEBACiAi5Lul5LiL44Gu55Kw5aKD5aSJ5pWw44GvICVzIOOBjOi1t+WLleOBmeOCiyBHaXQg44K144OW44OX44Ot44K744K544Gr44KI44Gj44Gm54Sh6KaW44GV44KM44KL44Gn44GX44KH44GGOlxuIgogIlxuIgogCi0jOiBnaXQtZ3VpLnNoOjI5MDYKKyM6IGdpdC1ndWkuc2g6MzMzMQogbXNnaWQgIiIKICJcbiIKICJUaGlzIGlzIGR1ZSB0byBhIGtub3duIGlzc3VlIHdpdGggdGhlXG4iCkBAIC00NjAsNyArNTI1LDcgQEAKICLjgZPjgozjga8gQ3lnd2luIOOBp+mFjeW4g+OBleOCjOOBpuOBhOOCiyBUY2wg44OQ44Kk44OK44Oq44GrXG4iCiAi6Zai44GX44Gm44Gu5pei55+l44Gu5ZWP6aGM44Gr44KI44KK44G+44GZIgogCi0jOiBnaXQtZ3VpLnNoOjI5MTEKKyM6IGdpdC1ndWkuc2g6MzMzNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTQ3OSw4MCArNTQ0LDEwOCBAQAogbXNnaWQgImdpdC1ndWkgLSBhIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSBmb3IgR2l0LiIKIG1zZ3N0ciAiR2l0IOOBruOCsOODqeODleOCo+OCq+ODq1VJIGdpdC1ndWkiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzAKKyM6IGxpYi9ibGFtZS50Y2w6NzIKIG1zZ2lkICJGaWxlIFZpZXdlciIKIG1zZ3N0ciAi44OV44Kh44Kk44Or44OU44Ol44O844OvIgogCi0jOiBsaWIvYmxhbWUudGNsOjc0CisjOiBsaWIvYmxhbWUudGNsOjc4CiBtc2dpZCAiQ29tbWl0OiIKIG1zZ3N0ciAi44Kz44Of44OD44OIOiIKIAotIzogbGliL2JsYW1lLnRjbDoyNTcKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOOCkuOCs+ODlOODvCIKIAotIzogbGliL2JsYW1lLnRjbDoyNjAKKyM6IGxpYi9ibGFtZS50Y2w6Mjc1Cittc2dpZCAiRmluZCBUZXh0Li4uIgorbXNnc3RyICLjg4bjgq3jgrnjg4jjgpLmpJzntKIiCisKKyM6IGxpYi9ibGFtZS50Y2w6Mjg0CiBtc2dpZCAiRG8gRnVsbCBDb3B5IERldGVjdGlvbiIKIG1zZ3N0ciAi44Kz44OU44O85qSc55+lIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAi5paH6ISI44KS6KaL44Gb44KLIgorCisjOiBsaWIvYmxhbWUudGNsOjI5MQorbXNnaWQgIkJsYW1lIFBhcmVudCBDb21taXQiCittc2dzdHIgIuimquOCs+ODn+ODg+ODiOOCkuiou+mHiCIKKworIzogbGliL2JsYW1lLnRjbDo0NTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZWFkaW5nICVzLi4uIgogbXNnc3RyICIlcyDjgpLoqq3jgpPjgafjgYTjgb7jgZnigKYiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NDkyCisjOiBsaWIvYmxhbWUudGNsOjU1NwogbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgogbXNnc3RyICLjgrPjg5Tjg7zjg7vnp7vli5Xov73ot6Hjg4fjg7zjgr/jgpLoqq3jgpPjgafjgYTjgb7jgZnigKYiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NTEyCisjOiBsaWIvYmxhbWUudGNsOjU3NwogbXNnaWQgImxpbmVzIGFubm90YXRlZCIKIG1zZ3N0ciAi6KGM44KS5rOo6YeI44GX44G+44GX44GfIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwNAorIzogbGliL2JsYW1lLnRjbDo3NjkKIG1zZ2lkICJMb2FkaW5nIG9yaWdpbmFsIGxvY2F0aW9uIGFubm90YXRpb25zLi4uIgogbXNnc3RyICLlhYPkvY3nva7ooYzjga7ms6jph4jjg4fjg7zjgr/jgpLoqq3jgpPjgafjgYTjgb7jgZnigKYiCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzA3CisjOiBsaWIvYmxhbWUudGNsOjc3MgogbXNnaWQgIkFubm90YXRpb24gY29tcGxldGUuIgogbXNnc3RyICLms6jph4jlrozkuobjgZfjgb7jgZfjgZ8iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzM3CisjOiBsaWIvYmxhbWUudGNsOjgwMgogbXNnaWQgIkJ1c3kiCiBtc2dzdHIgIuWun+ihjOS4rSIKIAotIzogbGliL2JsYW1lLnRjbDo3MzgKKyM6IGxpYi9ibGFtZS50Y2w6ODAzCiBtc2dpZCAiQW5ub3RhdGlvbiBwcm9jZXNzIGlzIGFscmVhZHkgcnVubmluZy4iCiBtc2dzdHIgIuOBmeOBp+OBqyBibGFtZSDjg5fjg63jgrvjgrnjgpLlrp/ooYzkuK3jgafjgZnjgIIiCiAKLSM6IGxpYi9ibGFtZS50Y2w6Nzc3CisjOiBsaWIvYmxhbWUudGNsOjg0MgogbXNnaWQgIlJ1bm5pbmcgdGhvcm91Z2ggY29weSBkZXRlY3Rpb24uLi4iCiBtc2dzdHIgIuOCs+ODlOODvOaknOefpeOCkuWun+ihjOS4reKApiIKIAotIzogbGliL2JsYW1lLnRjbDo4MjcKKyM6IGxpYi9ibGFtZS50Y2w6OTEwCiBtc2dpZCAiTG9hZGluZyBhbm5vdGF0aW9uLi4uIgogbXNnc3RyICLms6jph4jjgpLoqq3jgb/ovrzjgpPjgafjgYTjgb7jgZnigKYiCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODgzCisjOiBsaWIvYmxhbWUudGNsOjk2NAogbXNnaWQgIkF1dGhvcjoiCiBtc2dzdHIgIuS9nOiAhToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODg3CisjOiBsaWIvYmxhbWUudGNsOjk2OAogbXNnaWQgIkNvbW1pdHRlcjoiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOiAhToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6ODkyCisjOiBsaWIvYmxhbWUudGNsOjk3MwogbXNnaWQgIk9yaWdpbmFsIEZpbGU6IgogbXNnc3RyICLlhYPjg5XjgqHjgqTjg6siCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAwNgorIzogbGliL2JsYW1lLnRjbDoxMDIxCittc2dpZCAiQ2Fubm90IGZpbmQgSEVBRCBjb21taXQ6IgorbXNnc3RyICJIRUFEIOOCs+ODn+ODg+ODiOOBjOimi+OBpOOBi+OCiuOBvuOBm+OCkyIKKworIzogbGliL2JsYW1lLnRjbDoxMDc2Cittc2dpZCAiQ2Fubm90IGZpbmQgcGFyZW50IGNvbW1pdDoiCittc2dzdHIgIuimquOCs+ODn+ODg+ODiOOBjOimi+OBpOOBi+OCiuOBvuOBm+OCkzoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA5MQorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5IHBhcmVudCIKK21zZ3N0ciAi6Kaq44KS6KGo56S644Gn44GN44G+44Gb44KTIgorCisjOiBsaWIvYmxhbWUudGNsOjEwOTIgbGliL2RpZmYudGNsOjI5NworbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCittc2dzdHIgImRpZmYg44KS6Kqt44KA6Zqb44Gu44Ko44Op44O844Gn44GZOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMyCiBtc2dpZCAiT3JpZ2luYWxseSBCeToiCiBtc2dzdHIgIuWOn+S9nOiAhToiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAxMgorIzogbGliL2JsYW1lLnRjbDoxMjM4CiBtc2dpZCAiSW4gRmlsZToiCiBtc2dzdHIgIuODleOCoeOCpOODqzoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAxNworIzogbGliL2JsYW1lLnRjbDoxMjQzCiBtc2dpZCAiQ29waWVkIE9yIE1vdmVkIEhlcmUgQnk6IgogbXNnc3RyICLopIflhpnjg7vnp7vli5XogIU6IgogCkBAIC01NjYsMTYgKzY1OSwxOCBAQAogCiAjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDoyNyBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzUKICM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDozMiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MzAgbGliL2Jyb3dzZXIudGNsOjI4MgotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MQotIzogbGliL29wdGlvbi50Y2w6MTAzIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIgbGliL3RyYW5zcG9ydC50Y2w6OTcKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTQ0IGxpYi9jaG9vc2VfZm9udC50Y2w6NDMgbGliL21lcmdlLnRjbDoxNzIKKyM6IGxpYi9vcHRpb24udGNsOjEyNSBsaWIvcmVtb3RlX2FkZC50Y2w6MzIgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MgorIzogbGliL3Rvb2xzX2RsZy50Y2w6NDAgbGliL3Rvb2xzX2RsZy50Y2w6MjA0IGxpYi90b29sc19kbGcudGNsOjM1MgorIzogbGliL3RyYW5zcG9ydC50Y2w6OTcKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIuS4reatoiIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NyBsaWIvdG9vbHNfZGxnLnRjbDozMjgKIG1zZ2lkICJSZXZpc2lvbiIKIG1zZ3N0ciAi44Oq44OT44K444On44OzIgogCi0jOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjQ0CisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjgwCiBtc2dpZCAiT3B0aW9ucyIKIG1zZ3N0ciAi44Kq44OX44K344On44OzIgogCkBAIC01OTUsNyArNjkwLDcgQEAKIG1zZ2lkICJDcmVhdGUgTmV3IEJyYW5jaCIKIG1zZ3N0ciAi44OW44Op44Oz44OB44KS5paw6KaP5L2c5oiQIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzEKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozMSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NwogbXNnaWQgIkNyZWF0ZSIKIG1zZ3N0ciAi5L2c5oiQIgogCkBAIC02MDMsNyArNjk4LDcgQEAKIG1zZ2lkICJCcmFuY2ggTmFtZSIKIG1zZ3N0ciAi44OW44Op44Oz44OB5ZCNIgogCi0jOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MyBsaWIvcmVtb3RlX2FkZC50Y2w6MzkgbGliL3Rvb2xzX2RsZy50Y2w6NTAKIG1zZ2lkICJOYW1lOiIKIG1zZ3N0ciAi5ZCN5YmNOiIKIApAQCAtNzQ4LDkgKzg0Myw5IEBACiBtc2dpZCAiQnJvd3NlIEJyYW5jaCBGaWxlcyIKIG1zZ3N0ciAi54++5Zyo44Gu44OW44Op44Oz44OB44Gu44OV44Kh44Kk44Or44KS6KaL44KLIgogCi0jOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4MgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODUKKyM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozOTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk5NQogbXNnaWQgIkJyb3dzZSIKIG1zZ3N0ciAi44OW44Op44Km44K6IgogCkBAIC03NjUsNiArODYwLDcgQEAKIG1zZ3N0ciAi6Ie05ZG955qE44Ko44Op44O8OiAlcyDjgpLop6PmsbrjgafjgY3jgb7jgZvjgpMiCiAKICM6IGxpYi9jaGVja291dF9vcC50Y2w6MTQ1IGxpYi9jb25zb2xlLnRjbDo4MSBsaWIvZGF0YWJhc2UudGNsOjMxCisjOiBsaWIvc3Noa2V5LnRjbDo1MwogbXNnaWQgIkNsb3NlIgogbXNnc3RyICLplonjgZjjgosiCiAKQEAgLTg3NSw3ICs5NzEsNyBAQAogbXNnaWQgIlJlc2V0ICclcyc/IgogbXNnc3RyICInJXMnIOOCkuODquOCu+ODg+ODiOOBl+OBvuOBmeOBi++8nyIKIAotIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MzIgbGliL21lcmdlLnRjbDoxNjMKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTMyIGxpYi9tZXJnZS50Y2w6MTY0IGxpYi90b29sc19kbGcudGNsOjM0MwogbXNnaWQgIlZpc3VhbGl6ZSIKIG1zZ3N0ciAi5Y+v6KaW5YyWIgogCkBAIC05MjMsMjIxICsxMDE5LDIyNSBAQAogbXNnaWQgIkdpdCBHdWkiCiBtc2dzdHIgIkdpdCBHVUkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODIKIG1zZ2lkICJDcmVhdGUgTmV3IFJlcG9zaXRvcnkiCiBtc2dzdHIgIuaWsOOBl+OBhOODquODneOCuOODiOODquOCkuS9nOOCiyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MwogbXNnaWQgIk5ldy4uLiIKIG1zZ3N0ciAi5paw6KaP4oCmIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQogbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIuaXouWtmOODquODneOCuOODiOODquOCkuikh+ijveOBmeOCiyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTA2CiBtc2dpZCAiQ2xvbmUuLi4iCiBtc2dzdHIgIuikh+ijveKApiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgzCiBtc2dpZCAiT3BlbiBFeGlzdGluZyBSZXBvc2l0b3J5IgogbXNnc3RyICLml6LlrZjjg6rjg53jgrjjg4jjg6rjgpLplovjgY8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjExOQogbXNnaWQgIk9wZW4uLi4iCiBtc2dzdHIgIumWi+OBj+KApiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMjYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTMyCiBtc2dpZCAiUmVjZW50IFJlcG9zaXRvcmllcyIKIG1zZ3N0ciAi5pyA6L+R5L2/44Gj44Gf44Oq44Od44K444OI44OqIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzgKIG1zZ2lkICJPcGVuIFJlY2VudCBSZXBvc2l0b3J5OiIKIG1zZ3N0ciAi5pyA6L+R5L2/44Gj44Gf44Oq44Od44K444OI44Oq44KS6ZaL44GPIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjI5NiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMwMwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzA5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIuODquODneOCuOODiOODqiAlcyDjgpLkvZzoo73jgafjgY3jgb7jgZvjgpM6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4MSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3NgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKIG1zZ2lkICJEaXJlY3Rvcnk6IgogbXNnc3RyICLjg4fjgqPjg6zjgq/jg4jjg6o6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNQotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDA3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkdJVCDjg6rjg53jgrjjg4jjg6oiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDM1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkRpcmVjdG9yeSAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIuODh+OCo+ODrOOCr+ODiOODqiAnJXMnIOOBr+aXouOBq+WtmOWcqOOBl+OBvuOBmeOAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0MzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQ2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRmlsZSAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIuODleOCoeOCpOODqyAnJXMnIOOBr+aXouOBq+WtmOWcqOOBl+OBvuOBmeOAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDYwCiBtc2dpZCAiQ2xvbmUiCiBtc2dzdHIgIuikh+ijvSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjYKLW1zZ2lkICJVUkw6IgotbXNnc3RyICJVUkw6IgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NzMKK21zZ2lkICJTb3VyY2UgTG9jYXRpb246IgorbXNnc3RyICLjgr3jg7zjgrnjga7kvY3nva4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NAorbXNnaWQgIlRhcmdldCBEaXJlY3Rvcnk6IgorbXNnc3RyICLlhYjjg4fjgqPjg6zjgq/jg4jjg6o6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICLopIfoo73mlrnlvI86IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDIKIG1zZ2lkICJTdGFuZGFyZCAoRmFzdCwgU2VtaS1SZWR1bmRhbnQsIEhhcmRsaW5rcykiCiBtc2dzdHIgIuaomea6lijpq5jpgJ/jg7vkuK3lhpfplbfluqbjg7vjg4/jg7zjg4njg6rjg7Pjgq8pIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDgKIG1zZ2lkICJGdWxsIENvcHkgKFNsb3dlciwgUmVkdW5kYW50IEJhY2t1cCkiCiBtc2dzdHIgIuWFqOikh+WGmSjkvY7pgJ/jg7vlhpfplbfjg5Djg4Pjgq/jgqLjg4Pjg5cpIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MTQKIG1zZ2lkICJTaGFyZWQgKEZhc3Rlc3QsIE5vdCBSZWNvbW1lbmRlZCwgTm8gQmFja3VwKSIKIG1zZ3N0ciAi5YWx5pyJKOacgOmrmOmAn+ODu+mdnuaOqOWlqOODu+ODkOODg+OCr+OCouODg+ODl+eEoeOBlykiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTQxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg4Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjczNCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgwNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NTAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODEzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTm90IGEgR2l0IHJlcG9zaXRvcnk6ICVzIgogbXNnc3RyICJHaXQg44Oq44Od44K444OI44Oq44Gn44Gv44GC44KK44G+44Gb44KTOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NzcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg2CiBtc2dpZCAiU3RhbmRhcmQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICLmqJnmupbmlrnlvI/jga/lkIzkuIDoqIjnrpfmqZ/kuIrjga7jg6rjg53jgrjjg4jjg6rjgavjga7jgb/kvb/jgYjjgb7jgZnjgIIiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTgxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5MAogbXNnaWQgIlNoYXJlZCBvbmx5IGF2YWlsYWJsZSBmb3IgbG9jYWwgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIuWFseacieaWueW8j+OBr+WQjOS4gOioiOeul+apn+S4iuOBruODquODneOCuOODiOODquOBq+OBruOBv+S9v+OBiOOBvuOBmeOAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MDIKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjExCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9jYXRpb24gJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICInJXMnIOOBr+aXouOBq+WtmOWcqOOBl+OBvuOBmeOAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjIyCiBtc2dpZCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSBvcmlnaW4iCiBtc2dzdHIgIm9yaWdpbiDjgpLoqK3lrprjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNAogbXNnaWQgIkNvdW50aW5nIG9iamVjdHMiCiBtc2dzdHIgIuOCquODluOCuOOCp+OCr+ODiOOCkuaVsOOBiOOBpuOBhOOBvuOBmSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjYKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM1CiBtc2dpZCAiYnVja2V0cyIKIG1zZ3N0ciAi44OQ44Kx44OEIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY1MAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3RzL2luZm8vYWx0ZXJuYXRlczogJXMiCiBtc2dzdHIgIm9iamVjdHMvaW5mby9hbHRlcm5hdGVzIOOCkuikh+WGmeOBp+OBjeOBvuOBm+OCkzogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIiVzIOOBi+OCieikh+ijveOBmeOCi+WGheWuueOBr+OBguOCiuOBvuOBm+OCkyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2ODggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDIKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTE0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkxMQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjMKIG1zZ2lkICJUaGUgJ21hc3RlcicgYnJhbmNoIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4iCiBtc2dzdHIgIidtYXN0ZXInIOODluODqeODs+ODgeOBjOWIneacn+WMluOBleOCjOOBpuOBhOOBvuOBm+OCkyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MDEKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzEwCiBtc2dpZCAiSGFyZGxpbmtzIGFyZSB1bmF2YWlsYWJsZS4gIEZhbGxpbmcgYmFjayB0byBjb3B5aW5nLiIKIG1zZ3N0ciAi44OP44O844OJ44Oq44Oz44Kv44GM5L2c44KM44Gq44GE44Gu44Gn44CB44Kz44OU44O844GX44G+44GZIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MjIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGZyb20gJXMiCiBtc2dzdHIgIiVzIOOBi+OCieikh+ijveOBl+OBpuOBhOOBvuOBmSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzUzCiBtc2dpZCAiQ29weWluZyBvYmplY3RzIgogbXNnc3RyICLjgqrjg5bjgrjjgqfjgq/jg4jjgpLopIflhpnjgZfjgabjgYTjgb7jgZkiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ1CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1NAogbXNnaWQgIktpQiIKIG1zZ3N0ciAiS2lCIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc2OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3Q6ICVzIgogbXNnc3RyICLjgqrjg5bjgrjjgqfjgq/jg4jjgpLopIflhpnjgafjgY3jgb7jgZvjgpM6ICVzIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc3OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKIG1zZ2lkICJMaW5raW5nIG9iamVjdHMiCiBtc2dzdHIgIuOCquODluOCuOOCp+OCr+ODiOOCkumAo+e1kOOBl+OBpuOBhOOBvuOBmSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzg5CiBtc2dpZCAib2JqZWN0cyIKIG1zZ3N0ciAi44Kq44OW44K444Kn44Kv44OIIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3OTcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gaGFyZGxpbmsgb2JqZWN0OiAlcyIKIG1zZ3N0ciAi44Kq44OW44K444Kn44Kv44OI44KS44OP44O844OJ44Oq44Oz44Kv44Gn44GN44G+44Gb44KTOiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NDMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODUyCiBtc2dpZCAiQ2Fubm90IGZldGNoIGJyYW5jaGVzIGFuZCBvYmplY3RzLiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAi44OW44Op44Oz44OB44KE44Kq44OW44K444Kn44Kv44OI44KS5Y+W5b6X44Gn44GN44G+44Gb44KT44CC44Kz44Oz44K944O844Or5Ye65Yqb44KS6KaL44Gm5LiL44GV44GEIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NjMKIG1zZ2lkICJDYW5ub3QgZmV0Y2ggdGFncy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIuOCv+OCsOOCkuWPluW+l+OBp+OBjeOBvuOBm+OCk+OAguOCs+ODs+OCveODvOODq+WHuuWKm+OCkuimi+OBpuS4i+OBleOBhCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NzgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSBIRUFELiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiSEVBRCDjgpLnorrlrprjgafjgY3jgb7jgZvjgpPjgILjgrPjg7Pjgr3jg7zjg6vlh7rlipvjgpLopovjgabkuIvjgZXjgYQiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjbGVhbnVwICVzIgogbXNnc3RyICIlcyDjgpLmjoPpmaTjgafjgY3jgb7jgZvjgpMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMgogbXNnaWQgIkNsb25lIGZhaWxlZC4iCiBtc2dzdHIgIuikh+WGmeOBq+WkseaVl+OBl+OBvuOBl+OBn+OAgiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTA5CiBtc2dpZCAiTm8gZGVmYXVsdCBicmFuY2ggb2J0YWluZWQuIgogbXNnc3RyICLjg4fjg5Xjgqnjg7zjg6vjg4jjg7vjg5bjg6njg7Pjg4HjgYzlj5blvpfjgZXjgozjgb7jgZvjgpPjgafjgZfjgZ8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNhbm5vdCByZXNvbHZlICVzIGFzIGEgY29tbWl0LiIKIG1zZ3N0ciAiJXMg44KS44Kz44Of44OD44OI44Go44GX44Gm6Kej6YeI44Gn44GN44G+44Gb44KTIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzIKIG1zZ2lkICJDcmVhdGluZyB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAi5L2c5qWt44OH44Kj44Os44Kv44OI44Oq44KS5L2c5oiQ44GX44Gm44GE44G+44GZIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyNCBsaWIvaW5kZXgudGNsOjY1IGxpYi9pbmRleC50Y2w6MTI3Ci0jOiBsaWIvaW5kZXgudGNsOjE5MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MzMgbGliL2luZGV4LnRjbDo2NSBsaWIvaW5kZXgudGNsOjEyOAorIzogbGliL2luZGV4LnRjbDoxOTYKIG1zZ2lkICJmaWxlcyIKIG1zZ3N0ciAi44OV44Kh44Kk44OrIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjIKIG1zZ2lkICJJbml0aWFsIGZpbGUgY2hlY2tvdXQgZmFpbGVkLiIKIG1zZ3N0ciAi5Yid5pyf44OB44Kn44OD44Kv44Ki44Km44OI44Gr5aSx5pWX44GX44G+44GX44GfIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk2OQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzgKIG1zZ2lkICJPcGVuIgogbXNnc3RyICLplovjgY8iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTc5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk4OAogbXNnaWQgIlJlcG9zaXRvcnk6IgogbXNnc3RyICLjg6rjg53jgrjjg4jjg6o6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMjcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAzNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBvcGVuIHJlcG9zaXRvcnkgJXM6IgogbXNnc3RyICLjg6rjg53jgrjjg4jjg6ogJXMg44KS6ZaL44GR44G+44Gb44KTOiIKQEAgLTEyMzYsNyArMTMzNiw3IEBACiAiXG4iCiAi6Ieq5YuV55qE44Gr5YaN44K544Kt44Oj44Oz44KS6ZaL5aeL44GX44G+44GZ44CCXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE1NAorIzogbGliL2NvbW1pdC50Y2w6MTU2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlVubWVyZ2VkIGZpbGVzIGNhbm5vdCBiZSBjb21taXR0ZWQuXG4iCkBAIC0xMjQ5LDcgKzEzNDksNyBAQAogIuODleOCoeOCpOODqyAlcyDjgavjga/jg57jg7zjgrjooZ3nqoHjgYzmrovjgaPjgabjgYTjgb7jgZnjgILjgb7jgZrop6PmsbrjgZfjgabjgrPjg5/jg4Pjg4jkuojlrprjgavliqDjgYjjgovlv4UiCiAi6KaB44GM44GC44KK44G+44GZ44CCXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE2MgorIzogbGliL2NvbW1pdC50Y2w6MTY0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlVua25vd24gZmlsZSBzdGF0ZSAlcyBkZXRlY3RlZC5cbiIKQEAgLTEyNjAsNyArMTM2MCw3IEBACiAiXG4iCiAi44OV44Kh44Kk44OrICVzIOOBr+acrOODl+ODreOCsOODqeODoOOBp+OBr+OCs+ODn+ODg+ODiOOBp+OBjeOBvuOBm+OCk+OAglxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNzAKKyM6IGxpYi9jb21taXQudGNsOjE3MgogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEyNzAsNyArMTM3MCw3IEBACiAiXG4iCiAi5pyA5L2O5LiA44Gk44Gu5aSJ5pu044KS44Kz44Of44OD44OI5LqI5a6a44Gr5Yqg44GI44Gm44GL44KJ44Kz44Of44OD44OI44GX44Gm5LiL44GV44GE44CCXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjE4MworIzogbGliL2NvbW1pdC50Y2w6MTg3CiBtc2dpZCAiIgogIlBsZWFzZSBzdXBwbHkgYSBjb21taXQgbWVzc2FnZS5cbiIKICJcbiIKQEAgLTEyODgsNDUgKzEzODgsNDUgQEAKICItIOesrO+8kuihjDog56m655m9XG4iCiAiLSDmrovjgorjga7ooYw6IOOBquOBnOOAgeOBk+OBruWkieabtOOBjOiJr+OBhOWkieabtOOBi+OAgeOBruiqrOaYjuOAglxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMDcKKyM6IGxpYi9jb21taXQudGNsOjIxMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIndhcm5pbmc6IFRjbCBkb2VzIG5vdCBzdXBwb3J0IGVuY29kaW5nICclcycuIgogbXNnc3RyICLorablkYo6IFRjbCDjga/jgqjjg7PjgrPjg7zjg4fjgqPjg7PjgrAgJyVzJyDjgpLjgrXjg53jg7zjg4jjgZfjgabjgYTjgb7jgZvjgpMiCiAKLSM6IGxpYi9jb21taXQudGNsOjIyMQorIzogbGliL2NvbW1pdC50Y2w6MjI3CiBtc2dpZCAiQ2FsbGluZyBwcmUtY29tbWl0IGhvb2suLi4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOWJjeODleODg+OCr+OCkuWun+ihjOS4reODu+ODu+ODuyIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDIKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKIG1zZ3N0ciAi44Kz44Of44OD44OI5YmN44OV44OD44Kv44GM44Kz44Of44OD44OI44KS5ouS5ZCm44GX44G+44GX44GfIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyNTkKKyM6IGxpYi9jb21taXQudGNsOjI2NQogbXNnaWQgIkNhbGxpbmcgY29tbWl0LW1zZyBob29rLi4uIgogbXNnc3RyICLjgrPjg5/jg4Pjg4jjg7vjg6Hjg4Pjgrvjg7zjgrjjg7vjg5Xjg4Pjgq/jgpLlrp/ooYzkuK3jg7vjg7vjg7siCiAKLSM6IGxpYi9jb21taXQudGNsOjI3NAorIzogbGliL2NvbW1pdC50Y2w6MjgwCiBtc2dpZCAiQ29tbWl0IGRlY2xpbmVkIGJ5IGNvbW1pdC1tc2cgaG9vay4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOODu+ODoeODg+OCu+ODvOOCuOODu+ODleODg+OCr+OBjOOCs+ODn+ODg+ODiOOCkuaLkuWQpuOBl+OBvuOBl+OBnyIKIAotIzogbGliL2NvbW1pdC50Y2w6Mjg3CisjOiBsaWIvY29tbWl0LnRjbDoyOTMKIG1zZ2lkICJDb21taXR0aW5nIGNoYW5nZXMuLi4iCiBtc2dzdHIgIuWkieabtOeCueOCkuOCs+ODn+ODg+ODiOS4reODu+ODu+ODuyIKIAotIzogbGliL2NvbW1pdC50Y2w6MzAzCisjOiBsaWIvY29tbWl0LnRjbDozMDkKIG1zZ2lkICJ3cml0ZS10cmVlIGZhaWxlZDoiCiBtc2dzdHIgIndyaXRlLXRyZWUg44GM5aSx5pWX44GX44G+44GX44GfOiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzA0IGxpYi9jb21taXQudGNsOjM0OCBsaWIvY29tbWl0LnRjbDozNjgKKyM6IGxpYi9jb21taXQudGNsOjMxMCBsaWIvY29tbWl0LnRjbDozNTQgbGliL2NvbW1pdC50Y2w6Mzc0CiBtc2dpZCAiQ29tbWl0IGZhaWxlZC4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOOBq+WkseaVl+OBl+OBvuOBl+OBn+OAgiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzIxCisjOiBsaWIvY29tbWl0LnRjbDozMjcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgYXBwZWFycyB0byBiZSBjb3JydXB0IgogbXNnc3RyICLjgrPjg5/jg4Pjg4ggJXMg44Gv5aOK44KM44Gm44GE44G+44GZIgogCi0jOiBsaWIvY29tbWl0LnRjbDozMjYKKyM6IGxpYi9jb21taXQudGNsOjMzMgogbXNnaWQgIiIKICJObyBjaGFuZ2VzIHRvIGNvbW1pdC5cbiIKICJcbiIKQEAgLTEzNDAsMTkgKzE0NDAsMTkgQEAKICJcbiIKICLoh6rli5XnmoTjgavlho3jgrnjgq3jg6Pjg7PjgpLplovlp4vjgZfjgb7jgZnjgIJcbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzMzCisjOiBsaWIvY29tbWl0LnRjbDozMzkKIG1zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOOBmeOCi+WkieabtOOBjOOBguOCiuOBvuOBm+OCk+OAgiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzQ3CisjOiBsaWIvY29tbWl0LnRjbDozNTMKIG1zZ2lkICJjb21taXQtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJjb21taXQtdHJlZSDjgYzlpLHmlZfjgZfjgb7jgZfjgZ86IgogCi0jOiBsaWIvY29tbWl0LnRjbDozNjcKKyM6IGxpYi9jb21taXQudGNsOjM3MwogbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKIG1zZ3N0ciAidXBkYXRlLXJlZiDjgYzlpLHmlZfjgZfjgb7jgZfjgZ86IgogCi0jOiBsaWIvY29tbWl0LnRjbDo0NTQKKyM6IGxpYi9jb21taXQudGNsOjQ2MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNyZWF0ZWQgY29tbWl0ICVzOiAlcyIKIG1zZ3N0ciAi44Kz44Of44OD44OIICVzIOOCkuS9nOaIkOOBl+OBvuOBl+OBnzogJXMiCkBAIC0xNDI3LDcgKzE1MjcsNyBAQAogbXNnaWQgIkludmFsaWQgZGF0ZSBmcm9tIEdpdDogJXMiCiBtc2dzdHIgIkdpdCDjgYvjgonlh7rjgZ/nhKHlirnjgarml6Xku5g6ICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6NDQKKyM6IGxpYi9kaWZmLnRjbDo1OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJObyBkaWZmZXJlbmNlcyBkZXRlY3RlZC5cbiIKQEAgLTE0NDksNDggKzE1NDksMTAyIEBACiAiXG4iCiAi5ZCM5qeY44Gq54q25oWL44Gu44OV44Kh44Kk44Or44KS5o6i44GZ44Gf44KB44Gr44CB6Ieq5YuV55qE44Gr5YaN44K544Kt44Oj44Oz44KS6ZaL5aeL44GX44G+44GZ44CCIgogCi0jOiBsaWIvZGlmZi50Y2w6ODMKKyM6IGxpYi9kaWZmLnRjbDo5OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkxvYWRpbmcgZGlmZiBvZiAlcy4uLiIKIG1zZ3N0ciAiJXMg44Gu5aSJ5pu054K544KS44Ot44O844OJ5Lit4oCmIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE2IGxpYi9kaWZmLnRjbDoxOTAKKyM6IGxpYi9kaWZmLnRjbDoxMjAKK21zZ2lkICIiCisiTE9DQUw6IGRlbGV0ZWRcbiIKKyJSRU1PVEU6XG4iCittc2dzdHIgIiIKKyJMT0NBTDog5YmK6ZmkXG4iCisiUmVtb3RlOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTI1Cittc2dpZCAiIgorIlJFTU9URTogZGVsZXRlZFxuIgorIkxPQ0FMOlxuIgorbXNnc3RyICIiCisiUkVNT1RFOiDliYrpmaRcbiIKKyJMT0NBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzMgorbXNnaWQgIkxPQ0FMOlxuIgorbXNnc3RyICJMT0NBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzNQorbXNnaWQgIlJFTU9URTpcbiIKK21zZ3N0ciAiUkVNT1RFXG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxOTcgbGliL2RpZmYudGNsOjI5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5ICVzIgogbXNnc3RyICIlcyDjgpLooajnpLrjgafjgY3jgb7jgZvjgpMiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMTcKKyM6IGxpYi9kaWZmLnRjbDoxOTgKIG1zZ2lkICJFcnJvciBsb2FkaW5nIGZpbGU6IgogbXNnc3RyICLjg5XjgqHjgqTjg6vjgpLoqq3jgoDpmpvjga7jgqjjg6njg7zjgafjgZk6IgogCi0jOiBsaWIvZGlmZi50Y2w6MTI0CisjOiBsaWIvZGlmZi50Y2w6MjA1CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkgKHN1YnByb2plY3QpIgogbXNnc3RyICJHaXQg44Oq44Od44K444OI44OqKOOCteODluODl+ODreOCuOOCp+OCr+ODiCkiCiAKLSM6IGxpYi9kaWZmLnRjbDoxMzYKKyM6IGxpYi9kaWZmLnRjbDoyMTcKIG1zZ2lkICIqIEJpbmFyeSBmaWxlIChub3Qgc2hvd2luZyBjb250ZW50KS4iCiBtc2dzdHIgIiog44OQ44Kk44OK44Oq44OV44Kh44Kk44OrKOWGheWuueOBr+ihqOekuuOBl+OBvuOBm+OCkykiCiAKLSM6IGxpYi9kaWZmLnRjbDoxOTEKLW1zZ2lkICJFcnJvciBsb2FkaW5nIGRpZmY6IgotbXNnc3RyICJkaWZmIOOCkuiqreOCgOmam+OBruOCqOODqeODvOOBp+OBmToiCisjOiBsaWIvZGlmZi50Y2w6MjIyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIiogVW50cmFja2VkIGZpbGUgaXMgJWQgYnl0ZXMuXG4iCisiKiBTaG93aW5nIG9ubHkgZmlyc3QgJWQgYnl0ZXMuXG4iCittc2dzdHIgIiIKKyIqIOeuoeeQhuWkluOBruODleOCoeOCpOODq+OBruWkp+OBjeOBleOBryAlZCDjg5DjgqTjg4jjgafjgZnjgIJcbiIKKyIqIOacgOWIneOBriAlZCDjg5DjgqTjg4jjgaDjgZHooajnpLrjgZfjgabjgYTjgb7jgZnjgIJcbiIKIAotIzogbGliL2RpZmYudGNsOjMxMworIzogbGliL2RpZmYudGNsOjIyOAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIqIFVudHJhY2tlZCBmaWxlIGNsaXBwZWQgaGVyZSBieSAlcy5cbiIKKyIqIFRvIHNlZSB0aGUgZW50aXJlIGZpbGUsIHVzZSBhbiBleHRlcm5hbCBlZGl0b3IuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyIqICVzIOOBr+euoeeQhuWkluOBruODleOCoeOCpOODq+OCkuOBk+OBk+OBp+WIh+OCiuOBiuOBqOOBl+OBvuOBl+OBn+OAglxuIgorIiog5YWo5L2T44KS6KaL44KL44Gr44Gv5aSW6YOo44Ko44OH44Kj44K/44KS5L2/44Gj44Gm44GP44Gg44GV44GE44CCXG4iCisKKyM6IGxpYi9kaWZmLnRjbDo0MzYKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBodW5rLiIKIG1zZ3N0ciAi6YG45oqe44GV44KM44Gf44OR44OD44OB44KS44Kz44Of44OD44OI5LqI5a6a44GL44KJ5aSW44Gb44G+44Gb44KT44CCIgogCi0jOiBsaWIvZGlmZi50Y2w6MzIwCisjOiBsaWIvZGlmZi50Y2w6NDQzCiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGh1bmsuIgogbXNnc3RyICLpgbjmip7jgZXjgozjgZ/jg5Hjg4Pjg4HjgpLjgrPjg5/jg4Pjg4jkuojlrprjgavliqDjgYjjgonjgozjgb7jgZvjgpPjgIIiCiAKLSM6IGxpYi9kaWZmLnRjbDozODYKKyM6IGxpYi9kaWZmLnRjbDo1MDkKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBsaW5lLiIKIG1zZ3N0ciAi6YG45oqe44GV44KM44Gf44OR44OD44OB6KGM44KS44Kz44Of44OD44OI5LqI5a6a44GL44KJ5aSW44Gb44G+44Gb44KT44CCIgogCi0jOiBsaWIvZGlmZi50Y2w6Mzk0CisjOiBsaWIvZGlmZi50Y2w6NTE3CiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICLpgbjmip7jgZXjgozjgZ/jg5Hjg4Pjg4HooYzjgpLjgrPjg5/jg4Pjg4jkuojlrprjgavliqDjgYjjgonjgozjgb7jgZvjgpPjgIIiCiAKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDQzCittc2dpZCAiRGVmYXVsdCIKK21zZ3N0ciAi44OH44OV44Kp44O844Or44OIIgorCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0OAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlN5c3RlbSAoJXMpIgorbXNnc3RyICLjgrfjgrnjg4bjg6AgKCVzKSIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NTkgbGliL2VuY29kaW5nLnRjbDo0NjUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAi44Gd44Gu5LuWIgorCiAjOiBsaWIvZXJyb3IudGNsOjIwIGxpYi9lcnJvci50Y2w6MTE0CiBtc2dpZCAiZXJyb3IiCiBtc2dzdHIgIuOCqOODqeODvCIKQEAgLTE1MjcsMzggKzE2ODEsNDcgQEAKIG1zZ2lkICJVbmxvY2sgSW5kZXgiCiBtc2dzdHIgIuOCpOODs+ODh+ODg+OCr+OCueOBruODreODg+OCr+ino+mZpCIKIAotIzogbGliL2luZGV4LnRjbDoyODIKKyM6IGxpYi9pbmRleC50Y2w6Mjg3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5zdGFnaW5nICVzIGZyb20gY29tbWl0IgogbXNnc3RyICLjgrPjg5/jg4Pjg4jjgYvjgokgJyVzJyDjgpLpmY3jgo3jgZkiCiAKLSM6IGxpYi9pbmRleC50Y2w6MzEzCisjOiBsaWIvaW5kZXgudGNsOjMyNgogbXNnaWQgIlJlYWR5IHRvIGNvbW1pdC4iCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOa6luWCmeWujOS6hiIKIAotIzogbGliL2luZGV4LnRjbDozMjYKKyM6IGxpYi9pbmRleC50Y2w6MzM5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICLjgrPjg5/jg4Pjg4jjgasgJXMg44KS5Yqg44GI44Gm44GE44G+44GZIgogCi0jOiBsaWIvaW5kZXgudGNsOjM4MQorIzogbGliL2luZGV4LnRjbDozOTYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiBmaWxlICVzPyIKIG1zZ3N0ciAi44OV44Kh44Kk44OrICVzIOOBq+OBl+OBn+WkieabtOOCkuWFg+OBq+aIu+OBl+OBvuOBmeOBi++8nyIKIAotIzogbGliL2luZGV4LnRjbDozODMKKyM6IGxpYi9pbmRleC50Y2w6Mzk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gdGhlc2UgJWkgZmlsZXM/IgogbXNnc3RyICLjgZPjgozjgokgJWkg5YCL44Gu44OV44Kh44Kk44Or44Gr44GX44Gf5aSJ5pu044KS5YWD44Gr5oi744GX44G+44GZ44GL77yfIgogCi0jOiBsaWIvaW5kZXgudGNsOjM5MQorIzogbGliL2luZGV4LnRjbDo0MDYKIG1zZ2lkICJBbnkgdW5zdGFnZWQgY2hhbmdlcyB3aWxsIGJlIHBlcm1hbmVudGx5IGxvc3QgYnkgdGhlIHJldmVydC4iCiBtc2dzdHIgIuWkieabtOOCkuWFg+OBq+aIu+OBmeOBqOOCs+ODn+ODg+ODiOS6iOWumuOBl+OBpuOBhOOBquOBhOWkieabtOOBr+WFqOOBpuWkseOCj+OCjOOBvuOBmeOAgiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAi5L2V44KC44GX44Gq44GEIgogCisjOiBsaWIvaW5kZXgudGNsOjQyNworbXNnaWQgIlJldmVydGluZyBzZWxlY3RlZCBmaWxlcyIKK21zZ3N0ciAi6YG45oqe44GV44KM44Gf44OV44Kh44Kk44Or44Gr44GX44Gf5aSJ5pu044KS5YWD44Gr5oi744GX44G+44GZIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiJXMg44Gr44GX44Gf5aSJ5pu044KS5YWD44Gr5oi744GX44G+44GZIgorCiAjOiBsaWIvbWVyZ2UudGNsOjEzCiBtc2dpZCAiIgogIkNhbm5vdCBtZXJnZSB3aGlsZSBhbWVuZGluZy5cbiIKQEAgLTE1ODUsNyArMTc0OCw3IEBACiAiXG4iCiAi6Ieq5YuV55qE44Gr5YaN44K544Kt44Oj44Oz44KS6ZaL5aeL44GX44G+44GZ44CCXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6NDQKKyM6IGxpYi9tZXJnZS50Y2w6NDUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY29uZmxpY3RlZCBtZXJnZS5cbiIKQEAgLTE2MDIsNyArMTc2NSw3IEBACiAi44GT44Gu44OV44Kh44Kk44Or44Gu6KGd56qB44KS6Kej5rG644GX44CB44Kz44Of44OD44OI5LqI5a6a44Gr5Yqg44GI44Gm44CB44Kz44Of44OD44OI44GZ44KL44GT44Go44Gn44Oe44O844K444KSIgogIuWujOS6huOBl+OBvuOBmeOAguOBneOBhuOChOOBo+OBpuWni+OCgeOBpuOAgeaWsOOBn+OBquODnuODvOOCuOOCkumWi+Wni+OBp+OBjeOCi+OCiOOBhuOBq+OBquOCiuOBvuOBmeOAglxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjU0CisjOiBsaWIvbWVyZ2UudGNsOjU1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoYW5nZS5cbiIKQEAgLTE2MTksMzQgKzE3ODIsMzQgQEAKICLnj77lnKjjga7jgrPjg5/jg4Pjg4jjgpLlrozkuobjgZfjgabjgYvjgonjg57jg7zjgrjjgpLplovlp4vjgZfjgabkuIvjgZXjgYTjgILjgZ3jgYbjgZnjgovmlrnjgYzjg57jg7zjgrjjgavlpLHmlZciCiAi44GX44Gf44Go44GN44Gu5Zue5b6p44GM5qW944Gn44GZ44CCXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTA2CisjOiBsaWIvbWVyZ2UudGNsOjEwNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIG9mICVzIgogbXNnc3RyICIlcyDjga4gJXMg44OW44Op44Oz44OBIgogCi0jOiBsaWIvbWVyZ2UudGNsOjExOQorIzogbGliL21lcmdlLnRjbDoxMjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnaW5nICVzIGFuZCAlcy4uLiIKIG1zZ3N0ciAiJXMg44GoICVzIOOCkuODnuODvOOCuOS4reODu+ODu+ODuyIKIAotIzogbGliL21lcmdlLnRjbDoxMzAKKyM6IGxpYi9tZXJnZS50Y2w6MTMxCiBtc2dpZCAiTWVyZ2UgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4iCiBtc2dzdHIgIuODnuODvOOCuOOBjOWujOS6huOBl+OBvuOBl+OBnyIKIAotIzogbGliL21lcmdlLnRjbDoxMzIKKyM6IGxpYi9tZXJnZS50Y2w6MTMzCiBtc2dpZCAiTWVyZ2UgZmFpbGVkLiAgQ29uZmxpY3QgcmVzb2x1dGlvbiBpcyByZXF1aXJlZC4iCiBtc2dzdHIgIuODnuODvOOCuOOBjOWkseaVl+OBl+OBvuOBl+OBn+OAguihneeqgeOBruino+axuuOBjOW/heimgeOBp+OBmeOAgiIKIAotIzogbGliL21lcmdlLnRjbDoxNTcKKyM6IGxpYi9tZXJnZS50Y2w6MTU4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTWVyZ2UgSW50byAlcyIKIG1zZ3N0ciAiJXMg44Gr44Oe44O844K4IgogCi0jOiBsaWIvbWVyZ2UudGNsOjE3NgorIzogbGliL21lcmdlLnRjbDoxNzcKIG1zZ2lkICJSZXZpc2lvbiBUbyBNZXJnZSIKIG1zZ3N0ciAi44Oe44O844K444GZ44KL44Oq44OT44K444On44OzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIxMQorIzogbGliL21lcmdlLnRjbDoyMTIKIG1zZ2lkICIiCiAiQ2Fubm90IGFib3J0IHdoaWxlIGFtZW5kaW5nLlxuIgogIlxuIgpAQCAtMTY1Niw3ICsxODE5LDcgQEAKICJcbiIKICLjgb7jgZrku4rjga7jgrPjg5/jg4Pjg4joqILmraPjgpLlrozkuobjgZXjgZvjgabkuIvjgZXjgYTjgIJcbiIKIAotIzogbGliL21lcmdlLnRjbDoyMjEKKyM6IGxpYi9tZXJnZS50Y2w6MjIyCiBtc2dpZCAiIgogIkFib3J0IG1lcmdlP1xuIgogIlxuIgpAQCAtMTY3MCw3ICsxODMzLDcgQEAKICJcbiIKICLjg57jg7zjgrjjgpLkuK3mlq3jgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ8iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjI3CisjOiBsaWIvbWVyZ2UudGNsOjIyOAogbXNnaWQgIiIKICJSZXNldCBjaGFuZ2VzP1xuIgogIlxuIgpAQCAtMTY4NCwxMzEgKzE4NDcsMzIzIEBACiAiXG4iCiAi44Oq44K744OD44OI44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJBYm9ydGluZyIKIG1zZ3N0ciAi5Lit5pat44GX44Gm44GE44G+44GZIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAi44Oq44K744OD44OI44GX44Gf44OV44Kh44Kk44OrIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2NgorIzogbGliL21lcmdlLnRjbDoyNjcKIG1zZ2lkICJBYm9ydCBmYWlsZWQuIgogbXNnc3RyICLkuK3mlq3jgavlpLHmlZfjgZfjgb7jgZfjgZ/jgIIiCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjY4CisjOiBsaWIvbWVyZ2UudGNsOjI2OQogbXNnaWQgIkFib3J0IGNvbXBsZXRlZC4gIFJlYWR5LiIKIG1zZ3N0ciAi5Lit5pat5a6M5LqG44CCIgogCi0jOiBsaWIvb3B0aW9uLnRjbDo5NQorIzogbGliL21lcmdldG9vbC50Y2w6OAorbXNnaWQgIkZvcmNlIHJlc29sdXRpb24gdG8gdGhlIGJhc2UgdmVyc2lvbj8iCittc2dzdHIgIuWFsemAmuOBrueJiOOCkuS9v+OBhOOBvuOBmeOBiz8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjkKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoaXMgYnJhbmNoPyIKK21zZ3N0ciAi6Ieq5YiG44Gu5YG044Gu54mI44KS5L2/44GE44G+44GZ44GLPyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTAKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBvdGhlciBicmFuY2g/IgorbXNnc3RyICLnm7jmiYvliLbjga7niYjjgpLkvb/jgYTjgb7jgZnjgYs/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIuertuWQiOOBmeOCi+WkieabtOeCueOBoOOBkeOBjOihqOekuuOBleOCjOOBpuOBhOOCi+OBk+OBqOOBq+azqOaEj+OBl+OBpuOBj+OBoOOBleOBhOOAglxuIgorIlxuIgorIiVzIOOBr+S4iuabuOOBjeOBleOCjOOBvuOBmeOAglxuIgorIlxuIgorIuOChOOCiuebtOOBmeOBq+OBr+ODnuODvOOCuOWFqOS9k+OCkuOChOOCiuebtOOBl+OBpuOBj+OBoOOBleOBhOOAgiIKKworIzogbGliL21lcmdldG9vbC50Y2w6NDUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGaWxlICVzIHNlZW1zIHRvIGhhdmUgdW5yZXNvbHZlZCBjb25mbGljdHMsIHN0aWxsIHN0YWdlPyIKK21zZ3N0ciAi44OV44Kh44Kk44OrICVzIOOBq+OBr+ino+axuuOBl+OBpuOBhOOBquOBhOertuWQiOmDqOWIhuOBjOOBvuOBoOOBguOCi+OCiOOBhuOBp+OBmeOBjOOAgeOBhOOBhOOBp+OBmeOBiz8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjYwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQWRkaW5nIHJlc29sdXRpb24gZm9yICVzIgorbXNnc3RyICIlcyDjgbjjga7op6PmsbrjgpLjgrnjg4bjg7zjgrjjgZfjgb7jgZkiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0MQorbXNnaWQgIkNhbm5vdCByZXNvbHZlIGRlbGV0aW9uIG9yIGxpbmsgY29uZmxpY3RzIHVzaW5nIGEgdG9vbCIKK21zZ3N0ciAi44OE44O844Or44Gn44Gv5YmK6Zmk44KE44Oq44Oz44Kv56u25ZCI44Gv5omx44GI44G+44Gb44KTIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNDYKK21zZ2lkICJDb25mbGljdCBmaWxlIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICLnq7blkIjjg5XjgqHjgqTjg6vjga/lrZjlnKjjgZfjgb7jgZvjgpPjgIIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjI2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk5vdCBhIEdVSSBtZXJnZSB0b29sOiAnJXMnIgorbXNnc3RyICJHVUkg44Oe44O844K444OE44O844Or44Gn44Gv44GC44KK44G+44Gb44KTOiAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICLjg57jg7zjgrjjg4Tjg7zjg6sgJyVzJyDjga/jgrXjg53jg7zjg4jjgZfjgabjgYTjgb7jgZvjgpMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICLjg57jg7zjgrjjg4Tjg7zjg6vjga/jgZnjgafjgavotbfli5XjgZfjgabjgYTjgb7jgZnjgILntYLkuobjgZfjgb7jgZnjgYs/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozMjMKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgcmV0cmlldmluZyB2ZXJzaW9uczpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIueJiOOBruWPluOCiuWHuuOBl+aZguOBq+OCqOODqeODvOOBjOWHuuOBvuOBl+OBnzpcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBzdGFydCB0aGUgbWVyZ2UgdG9vbDpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIuODnuODvOOCuOODhOODvOODq+OBjOi1t+WLleOBp+OBjeOBvuOBm+OCkzpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQ3Cittc2dpZCAiUnVubmluZyBtZXJnZSB0b29sLi4uIgorbXNnc3RyICLjg57jg7zjgrjjg4Tjg7zjg6vjgpLlrp/ooYzjgZfjgabjgYTjgb7jgZkuLi4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM3NSBsaWIvbWVyZ2V0b29sLnRjbDozODMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIuODnuODvOOCuOODhOODvOODq+OBjOWkseaVl+OBl+OBvuOBl+OBn+OAgiIKKworIzogbGliL29wdGlvbi50Y2w6MTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGdsb2JhbCBlbmNvZGluZyAnJXMnIgorbXNnc3RyICLlhajkvZPjgqjjg7PjgrPjg7zjg4fjgqPjg7PjgrDjgasg54Sh5Yq544GqICVzIOOBjOaMh+WumuOBleOCjOOBpuOBhOOBvuOBmSIKKworIzogbGliL29wdGlvbi50Y2w6MTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlcG8gZW5jb2RpbmcgJyVzJyIKK21zZ3N0ciAi44Oq44Od44K444OI44Oq44Ko44Oz44Kz44O844OH44Kj44Oz44Kw44GrIOeEoeWKueOBqiAlcyDjgYzmjIflrprjgZXjgozjgabjgYTjgb7jgZkiCisKKyM6IGxpYi9vcHRpb24udGNsOjExNwogbXNnaWQgIlJlc3RvcmUgRGVmYXVsdHMiCiBtc2dzdHIgIuaXouWumuWApOOBq+aIu+OBmSIKIAotIzogbGliL29wdGlvbi50Y2w6OTkKKyM6IGxpYi9vcHRpb24udGNsOjEyMQogbXNnaWQgIlNhdmUiCiBtc2dzdHIgIuS/neWtmCIKIAotIzogbGliL29wdGlvbi50Y2w6MTA5CisjOiBsaWIvb3B0aW9uLnRjbDoxMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBSZXBvc2l0b3J5IgogbXNnc3RyICIlcyDjg6rjg53jgrjjg4jjg6oiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExMAorIzogbGliL29wdGlvbi50Y2w6MTMyCiBtc2dpZCAiR2xvYmFsIChBbGwgUmVwb3NpdG9yaWVzKSIKIG1zZ3N0ciAi5aSn5Z+f77yI5YWo44Gm44Gu44Oq44Od44K444OI44Oq77yJIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTYKKyM6IGxpYi9vcHRpb24udGNsOjEzOAogbXNnaWQgIlVzZXIgTmFtZSIKIG1zZ3N0ciAi44Om44O844K25ZCNIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTcKKyM6IGxpYi9vcHRpb24udGNsOjEzOQogbXNnaWQgIkVtYWlsIEFkZHJlc3MiCiBtc2dzdHIgIumbu+WtkOODoeODvOODq+OCouODieODrOOCuSIKIAotIzogbGliL29wdGlvbi50Y2w6MTE5CisjOiBsaWIvb3B0aW9uLnRjbDoxNDEKIG1zZ2lkICJTdW1tYXJpemUgTWVyZ2UgQ29tbWl0cyIKIG1zZ3N0ciAi44Oe44O844K444Kz44Of44OD44OI44Gu6KaB57SEIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjAKKyM6IGxpYi9vcHRpb24udGNsOjE0MgogbXNnaWQgIk1lcmdlIFZlcmJvc2l0eSIKIG1zZ3N0ciAi44Oe44O844K444Gu5YaX6ZW35bqmIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjEKKyM6IGxpYi9vcHRpb24udGNsOjE0MwogbXNnaWQgIlNob3cgRGlmZnN0YXQgQWZ0ZXIgTWVyZ2UiCiBtc2dzdHIgIuODnuODvOOCuOW+jOOBqyBkaWZmc3RhdCDjgpLooajnpLoiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyMworIzogbGliL29wdGlvbi50Y2w6MTQ0Cittc2dpZCAiVXNlIE1lcmdlIFRvb2wiCittc2dzdHIgIuODnuODvOOCuOODhOODvOODq+OCkuS9v+eUqCIKKworIzogbGliL29wdGlvbi50Y2w6MTQ2CiBtc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKIG1zZ3N0ciAi44OV44Kh44Kk44Or5aSJ5pu05pmC5Yi744KS5L+h6aC844GZ44KLIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjQKKyM6IGxpYi9vcHRpb24udGNsOjE0NwogbXNnaWQgIlBydW5lIFRyYWNraW5nIEJyYW5jaGVzIER1cmluZyBGZXRjaCIKIG1zZ3N0ciAi44OV44Kn44OD44OB5Lit44Gr44OI44Op44OD44Kt44Oz44Kw44OW44Op44Oz44OB44KS5YiI44KLIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjUKKyM6IGxpYi9vcHRpb24udGNsOjE0OAogbXNnaWQgIk1hdGNoIFRyYWNraW5nIEJyYW5jaGVzIgogbXNnc3RyICLjg4jjg6njg4Pjgq3jg7PjgrDjg5bjg6njg7Pjg4HjgpLlkIjjgo/jgZvjgosiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNgorIzogbGliL29wdGlvbi50Y2w6MTQ5CiBtc2dpZCAiQmxhbWUgQ29weSBPbmx5IE9uIENoYW5nZWQgRmlsZXMiCiBtc2dzdHIgIuWkieabtOOBleOCjOOBn+ODleOCoeOCpOODq+OBruOBv+OCs+ODlOODvOaknOefpeOCkuihjOOBquOBhiIKIAotIzogbGliL29wdGlvbi50Y2w6MTI3CisjOiBsaWIvb3B0aW9uLnRjbDoxNTAKIG1zZ2lkICJNaW5pbXVtIExldHRlcnMgVG8gQmxhbWUgQ29weSBPbiIKIG1zZ3N0ciAi44Kz44OU44O844KS5qSc55+l44GZ44KL5pyA5bCR5paH5a2X5pWwIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjgKKyM6IGxpYi9vcHRpb24udGNsOjE1MQorbXNnaWQgIkJsYW1lIEhpc3RvcnkgQ29udGV4dCBSYWRpdXMgKGRheXMpIgorbXNnc3RyICLoqLvph4jjgZnjgovlsaXmrbTljYrlvoTvvIjml6XmlbDvvIkiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MgogbXNnaWQgIk51bWJlciBvZiBEaWZmIENvbnRleHQgTGluZXMiCiBtc2dzdHIgImRpZmYg44Gu5paH6ISI6KGM5pWwIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjkKKyM6IGxpYi9vcHRpb24udGNsOjE1MwogbXNnaWQgIkNvbW1pdCBNZXNzYWdlIFRleHQgV2lkdGgiCiBtc2dzdHIgIuOCs+ODn+ODg+ODiOODoeODg+OCu+ODvOOCuOOBruODhuOCreOCueODiOW5hSIKIAotIzogbGliL29wdGlvbi50Y2w6MTMwCisjOiBsaWIvb3B0aW9uLnRjbDoxNTQKIG1zZ2lkICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUiCiBtc2dzdHIgIuaWsOOBl+OBhOODluODqeODs+ODgeWQjeOBruODhuODs+ODl+ODrOODvOODiCIKIAotIzogbGliL29wdGlvbi50Y2w6MTk0CisjOiBsaWIvb3B0aW9uLnRjbDoxNTUKK21zZ2lkICJEZWZhdWx0IEZpbGUgQ29udGVudHMgRW5jb2RpbmciCittc2dzdHIgIuODleOCoeOCpOODq+WGheWuueOBruODh+ODleOCqeODvOODq+ODiOOCqOODs+OCs+ODvOODh+OCo+ODs+OCsCIKKworIzogbGliL29wdGlvbi50Y2w6MjAzCittc2dpZCAiQ2hhbmdlIgorbXNnc3RyICLlpInmm7QiCisKKyM6IGxpYi9vcHRpb24udGNsOjIzMAogbXNnaWQgIlNwZWxsaW5nIERpY3Rpb25hcnk6IgogbXNnc3RyICLjgrnjg5rjg6vjg4Hjgqfjg4Pjgq/ovp7mm7giCiAKLSM6IGxpYi9vcHRpb24udGNsOjIxOAorIzogbGliL29wdGlvbi50Y2w6MjU0CiBtc2dpZCAiQ2hhbmdlIEZvbnQiCiBtc2dzdHIgIuODleOCqeODs+ODiOOCkuWkieabtCIKIAotIzogbGliL29wdGlvbi50Y2w6MjIyCisjOiBsaWIvb3B0aW9uLnRjbDoyNTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDaG9vc2UgJXMiCiBtc2dzdHIgIiVzIOOCkumBuOaKniIKIAotIzogbGliL29wdGlvbi50Y2w6MjI4CisjOiBsaWIvb3B0aW9uLnRjbDoyNjQKIG1zZ2lkICJwdC4iCiBtc2dzdHIgIuODneOCpOODs+ODiCIKIAotIzogbGliL29wdGlvbi50Y2w6MjQyCisjOiBsaWIvb3B0aW9uLnRjbDoyNzgKIG1zZ2lkICJQcmVmZXJlbmNlcyIKIG1zZ3N0ciAi6Kit5a6aIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyNzcKKyM6IGxpYi9vcHRpb24udGNsOjMxNAogbXNnaWQgIkZhaWxlZCB0byBjb21wbGV0ZWx5IHNhdmUgb3B0aW9uczoiCiBtc2dzdHIgIuWujOWFqOOBq+OCquODl+OCt+ODp+ODs+OCkuS/neWtmOOBp+OBjeOBvuOBm+OCkzoiCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE2NQorIzogbGliL3JlbW90ZS50Y2w6MTYzCittc2dpZCAiUmVtb3ZlIFJlbW90ZSIKK21zZ3N0ciAi44Oq44Oi44O844OI44KS5YmK6ZmkIgorCisjOiBsaWIvcmVtb3RlLnRjbDoxNjgKIG1zZ2lkICJQcnVuZSBmcm9tIgogbXNnc3RyICLjgYvjgonliIjovrzjgoDigKYiCiAKLSM6IGxpYi9yZW1vdGUudGNsOjE3MAorIzogbGliL3JlbW90ZS50Y2w6MTczCiBtc2dpZCAiRmV0Y2ggZnJvbSIKIG1zZ3N0ciAi5Y+W5b6X5YWDIgogCi0jOiBsaWIvcmVtb3RlLnRjbDoyMTMKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQogbXNnaWQgIlB1c2ggdG8iCiBtc2dzdHIgIuODl+ODg+OCt+ODpeWFiCIKIAorIzogbGliL3JlbW90ZV9hZGQudGNsOjE5Cittc2dpZCAiQWRkIFJlbW90ZSIKK21zZ3N0ciAi44Oq44Oi44O844OI44KS6L+95YqgIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjQKK21zZ2lkICJBZGQgTmV3IFJlbW90ZSIKK21zZ3N0ciAi44Oq44Oi44O844OI44KS5paw6KaP44Gr6L+95YqgIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjggbGliL3Rvb2xzX2RsZy50Y2w6MzYKK21zZ2lkICJBZGQiCittc2dzdHIgIui/veWKoCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjM3Cittc2dpZCAiUmVtb3RlIERldGFpbHMiCittc2dzdHIgIuODquODouODvOODiOOBruips+e0sCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjUwCittc2dpZCAiTG9jYXRpb246IgorbXNnc3RyICLloLTmiYA6IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjIKK21zZ2lkICJGdXJ0aGVyIEFjdGlvbiIKK21zZ3N0ciAi44Gd44Gu5LuW44Gu5YuV5L2cIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAi5Y2z5bqn44Gr5Y+W5b6XIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzEKK21zZ2lkICJJbml0aWFsaXplIFJlbW90ZSBSZXBvc2l0b3J5IGFuZCBQdXNoIgorbXNnc3RyICLjg6rjg6Ljg7zjg4jjg6zjg53jgrjjg4jjg6rjgpLliJ3mnJ/ljJbjgZfjgabjg5fjg4Pjgrfjg6UiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIuS9leOCguOBl+OBquOBhCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEwMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSByZW1vdGUgbmFtZS4iCittc2dzdHIgIuODquODouODvOODiOWQjeOCkuaMh+WumuOBl+OBpuS4i+OBleOBhOOAgiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjExNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiclcycgaXMgbm90IGFuIGFjY2VwdGFibGUgcmVtb3RlIG5hbWUuIgorbXNnc3RyICInJXMnIOOBr+ODquODouODvOODiOWQjeOBq+S9v+OBiOOBvuOBm+OCk+OAgiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEyNQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBhZGQgcmVtb3RlICclcycgb2YgbG9jYXRpb24gJyVzJy4iCittc2dzdHIgIuWgtOaJgCAnJTIkcycg44Gu44Oq44Oi44O844OIICclMSRzJ+OBruWQjeWJjeWkieabtOOBq+WkseaVl+OBl+OBvuOBl+OBn+OAgiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEzMyBsaWIvdHJhbnNwb3J0LnRjbDo2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiZmV0Y2ggJXMiCittc2dzdHIgIiVzIOOCkuWPluW+lyIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEzNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZldGNoaW5nIHRoZSAlcyIKK21zZ3N0ciAiJXMg44GL44KJ44OV44Kn44OD44OB44GX44Gm44GE44G+44GZIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTU3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRG8gbm90IGtub3cgaG93IHRvIGluaXRpYWxpemUgcmVwb3NpdG9yeSBhdCBsb2NhdGlvbiAnJXMnLiIKK21zZ3N0ciAi44Oq44Od44K444OI44OqICclcycg44KS5Yid5pyf5YyW44Gn44GN44G+44Gb44KT44CCIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTYzIGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAicHVzaCAlcyIKK21zZ3N0ciAiJXMg44KS44OX44OD44K344OlIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB1cCB0aGUgJXMgKGF0ICVzKSIKK21zZ3N0ciAiJTIkcyDjgavjgYLjgosgJTEkcyDjgpLjgrvjg4Pjg4jjgqLjg4Pjg5fjgZfjgb7jgZkiCisKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MjkgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDozNAotbXNnaWQgIkRlbGV0ZSBSZW1vdGUgQnJhbmNoIgotbXNnc3RyICLjg6rjg6Ljg7zjg4jjg7vjg5bjg6njg7Pjg4HjgpLliYrpmaQiCittc2dpZCAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSIKK21zZ3N0ciAi6YGg6ZqU44Gn44OW44Op44Oz44OB5YmK6ZmkIgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjQ3CiBtc2dpZCAiRnJvbSBSZXBvc2l0b3J5IgpAQCAtMTgxOSw4ICsyMTc0LDggQEAKIG1zZ3N0ciAi44Oq44Oi44O844OIOiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo2NiBsaWIvdHJhbnNwb3J0LnRjbDoxMzgKLW1zZ2lkICJBcmJpdHJhcnkgVVJMOiIKLW1zZ3N0ciAi5Lu75oSP44GuIFVSTDoiCittc2dpZCAiQXJiaXRyYXJ5IExvY2F0aW9uOiIKK21zZ3N0ciAi5Lu75oSP44Gu5L2N572uOiIKIAogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo4NAogbXNnaWQgIkJyYW5jaGVzIgpAQCAtMTg5MCw2ICsyMjQ1LDIyIEBACiBtc2dpZCAiU2Nhbm5pbmcgJXMuLi4iCiBtc2dzdHIgIiVzIOOCkuOCueOCreODo+ODs+OBl+OBpuOBhOOBvuOBmeKApiIKIAorIzogbGliL3NlYXJjaC50Y2w6MjEKK21zZ2lkICJGaW5kOiIKK21zZ3N0ciAi5qSc57SiOiIKKworIzogbGliL3NlYXJjaC50Y2w6MjMKK21zZ2lkICJOZXh0IgorbXNnc3RyICLmrKEiCisKKyM6IGxpYi9zZWFyY2gudGNsOjI0Cittc2dpZCAiUHJldiIKK21zZ3N0ciAi5YmNIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyNQorbXNnaWQgIkNhc2UtU2Vuc2l0aXZlIgorbXNnc3RyICLlpKfmloflrZflsI/mloflrZfjgpLljLrliKUiCisKICM6IGxpYi9zaG9ydGN1dC50Y2w6MjAgbGliL3Nob3J0Y3V0LnRjbDo2MQogbXNnaWQgIkNhbm5vdCB3cml0ZSBzaG9ydGN1dDoiCiBtc2dzdHIgIuOCt+ODp+ODvOODiOOCq+ODg+ODiOOBjOabuOOBkeOBvuOBm+OCkzoiCkBAIC0xOTI3LDIzICsyMjk4LDE4OCBAQAogbXNnaWQgIk5vIFN1Z2dlc3Rpb25zIgogbXNnc3RyICLmj5DmoYjjgarjgZciCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODcKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODgKIG1zZ2lkICJVbmV4cGVjdGVkIEVPRiBmcm9tIHNwZWxsIGNoZWNrZXIiCiBtc2dzdHIgIuOCueODmuODq+ODgeOCp+ODg+OCq+ODvOOBjOS6iOaDs+WkluOBriBFT0Yg44KS6L+U44GX44G+44GX44GfIgogCi0jOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkxCisjOiBsaWIvc3BlbGxjaGVjay50Y2w6MzkyCiBtc2dpZCAiU3BlbGwgQ2hlY2tlciBGYWlsZWQiCiBtc2dzdHIgIuOCueODmuODq+ODgeOCp+ODg+OCr+WkseaVlyIKIAorIzogbGliL3NzaGtleS50Y2w6MzEKK21zZ2lkICJObyBrZXlzIGZvdW5kLiIKK21zZ3N0ciAi44Kt44O844GM44GC44KK44G+44Gb44KT44CCIgorCisjOiBsaWIvc3Noa2V5LnRjbDozNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgcHVibGljIGtleSBpbjogJXMiCittc2dzdHIgIuWFrOmWi+mNteOBjOOBguOCiuOBvuOBl+OBnzogJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjQwCittc2dpZCAiR2VuZXJhdGUgS2V5IgorbXNnc3RyICLpjbXjgpLnlJ/miJAiCisKKyM6IGxpYi9zc2hrZXkudGNsOjU2Cittc2dpZCAiQ29weSBUbyBDbGlwYm9hcmQiCittc2dzdHIgIuOCr+ODquODg+ODl+ODnOODvOODieOBq+OCs+ODlOODvCIKKworIzogbGliL3NzaGtleS50Y2w6NzAKK21zZ2lkICJZb3VyIE9wZW5TU0ggUHVibGljIEtleSIKK21zZ3N0ciAi44GC44Gq44Gf44GuIE9wZW5TU0gg5YWs6ZaL6Y21IgorCisjOiBsaWIvc3Noa2V5LnRjbDo3OAorbXNnaWQgIkdlbmVyYXRpbmcuLi4iCittc2dzdHIgIueUn+aIkOS4rS4uLiIKKworIzogbGliL3NzaGtleS50Y2w6ODQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKyJzc2gta2V5Z2VuIOOCkui1t+WLleOBp+OBjeOBvuOBm+OCkzpcbiIKKyJcbiIKKyIlcyIKKworIzogbGliL3NzaGtleS50Y2w6MTExCittc2dpZCAiR2VuZXJhdGlvbiBmYWlsZWQuIgorbXNnc3RyICLnlJ/miJDjgavlpLHmlZfjgZfjgb7jgZfjgZ/jgIIiCisKKyM6IGxpYi9zc2hrZXkudGNsOjExOAorbXNnaWQgIkdlbmVyYXRpb24gc3VjY2VkZWQsIGJ1dCBubyBrZXlzIGZvdW5kLiIKK21zZ3N0ciAi55Sf5oiQ44Gr44Gv5oiQ5Yqf44GX44G+44GX44Gf44GM44CB6Y2144GM6KaL44Gk44GL44KK44G+44Gb44KT44CCIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMjEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJZb3VyIGtleSBpcyBpbjogJXMiCittc2dzdHIgIuOBguOBquOBn+OBrumNteOBryAlcyDjgavjgYLjgorjgb7jgZkiCisKICM6IGxpYi9zdGF0dXNfYmFyLnRjbDo4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiVzIC4uLiAlKmkgb2YgJSppICVzICglM2klJSkiCiBtc2dzdHIgIiUxJHMgLi4uICU0JCppICU2JHMg5Lit44GuICUyJCppICglNyQzaSUlKSIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6NgorIzogbGliL3Rvb2xzLnRjbDo3NQogIywgdGNsLWZvcm1hdAotbXNnaWQgImZldGNoICVzIgotbXNnc3RyICIlcyDjgpLlj5blvpciCittc2dpZCAiUnVubmluZyAlcyByZXF1aXJlcyBhIHNlbGVjdGVkIGZpbGUuIgorbXNnc3RyICLjg5XjgqHjgqTjg6vjgpLpgbjmip7jgZfjgabjgYvjgokgJXMg44KS6LW35YuV44GX44Gm44GP44Gg44GV44GE44CCIgorCisjOiBsaWIvdG9vbHMudGNsOjkwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJ1biAlcz8iCittc2dzdHIgIuacrOW9k+OBqyAlcyDjgpLotbfli5XjgZfjgb7jgZnjgYs/IgorCisjOiBsaWIvdG9vbHMudGNsOjExMAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2w6ICVzIgorbXNnc3RyICLjg4Tjg7zjg6s6ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjExMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmc6ICVzIgorbXNnc3RyICLlrp/ooYzkuK06ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjE0OQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgY29tcGxldGVkIHN1Y2Nlc2Z1bGx5OiAlcyIKK21zZ3N0ciAi44OE44O844Or44GM5a6M5LqG44GX44G+44GX44GfOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGZhaWxlZDogJXMiCittc2dzdHIgIuODhOODvOODq+OBjOWkseaVl+OBl+OBvuOBl+OBnzogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjIyCittc2dpZCAiQWRkIFRvb2wiCittc2dzdHIgIuODhOODvOODq+OBrui/veWKoCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAi5paw6KaP44OE44O844Or44Kz44Oe44Oz44OJ44Gu6L+95YqgIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMworbXNnaWQgIkFkZCBnbG9iYWxseSIKK21zZ3N0ciAi5YWo5L2T44Gr6L+95YqgIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0NQorbXNnaWQgIlRvb2wgRGV0YWlscyIKK21zZ3N0ciAi44OE44O844Or44Gu6Kmz57SwIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0OAorbXNnaWQgIlVzZSAnLycgc2VwYXJhdG9ycyB0byBjcmVhdGUgYSBzdWJtZW51IHRyZWU6IgorbXNnc3RyICInLycg44Gn44K144OW44Oh44OL44Ol44O844KS5Yy65YiH44KK44G+44GZOiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NjEKK21zZ2lkICJDb21tYW5kOiIKK21zZ3N0ciAi44Kz44Oe44Oz44OJOiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NzQKK21zZ2lkICJTaG93IGEgZGlhbG9nIGJlZm9yZSBydW5uaW5nIgorbXNnc3RyICLotbfli5XjgZnjgovliY3jgavjg4DjgqTjgqLjg63jgrDjgpLooajnpLoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIuODpuODvOOCtuOBq+OCs+ODn+ODg+ODiOOCkuS4gOOBpOmBuOOBsOOBm+OCiyAoJFJFVklTSU9OIOOBq+OCu+ODg+ODiOOBl+OBvuOBmSkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIuODpuODvOOCtuOBq+S7luOBruW8leaVsOOCkui/veWKoOOBleOBm+OCiyAoJEFSR1Mg44Gr44K744OD44OI44GX44G+44GZKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6OTIKK21zZ2lkICJEb24ndCBzaG93IHRoZSBjb21tYW5kIG91dHB1dCB3aW5kb3ciCittc2dzdHIgIuOCs+ODnuODs+ODieOBi+OCieOBruWHuuWKm+OCpuOCo+ODs+ODieOCpuOCkuimi+OBm+OBquOBhCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6OTcKK21zZ2lkICJSdW4gb25seSBpZiBhIGRpZmYgaXMgc2VsZWN0ZWQgKCRGSUxFTkFNRSBub3QgZW1wdHkpIgorbXNnc3RyICLjg5Hjg4Pjg4HjgYzpgbjjgbDjgozjgabjgYTjgovjgajjgY3jgaDjgZHli5XjgYvjgZkoJEZJTEVOQU1FIOOBjOepuuOBp+OBquOBhCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBuYW1lIGZvciB0aGUgdG9vbC4iCittc2dzdHIgIuODhOODvOODq+WQjeOCkuaMh+WumuOBl+OBpuS4i+OBleOBhOOAgiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTI5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAi44OE44O844OrICclcycg44Gv5pei44Gr5a2Y5Zyo44GX44G+44GZ44CCIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IGFkZCB0b29sOlxuIgorIiVzIgorbXNnc3RyICIiCisi44OE44O844Or44KS6L+95Yqg44Gn44GN44G+44Gb44KTOlxuIgorIiVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTAKK21zZ2lkICJSZW1vdmUgVG9vbCIKK21zZ3N0ciAi44OE44O844Or44Gu5YmK6ZmkIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTYKK21zZ2lkICJSZW1vdmUgVG9vbCBDb21tYW5kcyIKK21zZ3N0ciAi44OE44O844Or44Kz44Oe44Oz44OJ44Gu5YmK6ZmkIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMDAKK21zZ2lkICJSZW1vdmUiCittc2dzdHIgIuWJiumZpCIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjM2Cittc2dpZCAiKEJsdWUgZGVub3RlcyByZXBvc2l0b3J5LWxvY2FsIHRvb2xzKSIKK21zZ3N0ciAiKOmdkuiJsuOBr+ODreODvOOCq+ODq+ODrOODneOCuOODiOODquOBruODhOODvOODq+OBp+OBmSkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAi44Kz44Oe44Oz44OJ44KS6LW35YuVOiAlcyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzExCittc2dpZCAiQXJndW1lbnRzIgorbXNnc3RyICLlvJXmlbAiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjM0OAorbXNnaWQgIk9LIgorbXNnc3RyICJPSyIKIAogIzogbGliL3RyYW5zcG9ydC50Y2w6NwogIywgdGNsLWZvcm1hdApAQCAtMTk2MCwxNyArMjQ5NiwxNyBAQAogbXNnaWQgIlBydW5pbmcgdHJhY2tpbmcgYnJhbmNoZXMgZGVsZXRlZCBmcm9tICVzIgogbXNnc3RyICIlcyDjgYvjgonliYrpmaTjgZXjgozjgZ/jg4jjg6njg4Pjgq3jg7PjgrDjg7vjg5bjg6njg7Pjg4HjgpLliIjjgaPjgabjgYTjgb7jgZkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCi0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAicHVzaCAlcyIKLW1zZ3N0ciAiJXMg44KS44OX44OD44K344OlIgotCiAjOiBsaWIvdHJhbnNwb3J0LnRjbDoyNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgY2hhbmdlcyB0byAlcyIKIG1zZ3N0ciAiJXMg44G45aSJ5pu044KS44OX44OD44K344Ol44GX44Gm44GE44G+44GZIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo3MgorIzogbGliL3RyYW5zcG9ydC50Y2w6NjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNaXJyb3JpbmcgdG8gJXMiCittc2dzdHIgIiVzIOOBuOODn+ODqeODvOOBl+OBpuOBhOOBvuOBmSIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6ODIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nICVzICVzIHRvICVzIgogbXNnc3RyICIlMyRzIOOBuCAlMSRzICUyJHMg44KS44OX44OD44K344Ol44GX44Gm44GE44G+44GZIgpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9uYi5wbyBiL2dpdC1ndWkvcG8vbmIucG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM1MTM3ZAotLS0gL2Rldi9udWxsCisrKyBiL2dpdC1ndWkvcG8vbmIucG8KQEAgLTAsMCArMSwyNDg0IEBACisjIE5vcndlZ2lhbiAoQm9rbcOlbCkgdHJhbnNsYXRpb24gb2YgZ2l0LWd1aS4KKyMgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggU2hhd24gUGVhcmNlLCBldCBhbC4KKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGdpdC1ndWkgcGFja2FnZS4KKyMKKyMgRnJlZHJpayBTa29sbWxpIDxmcmVkcmlrQGZyc2submV0PiwgMjAwOC4KKyMKK21zZ2lkICIiCittc2dzdHIgIiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IG5iXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTExLTE2IDEzOjU2LTA4MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTEyLTAzIDE2OjA1KzAxMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IEZyZWRyaWsgU2tvbG1saSA8ZnJlZHJpa0BmcnNrLm5ldD5cbiIKKyJMYW5ndWFnZS1UZWFtOiBOb3J3ZWdpYW4gQm9rbcOlbFxuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorCisjOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6NzM3IGdpdC1ndWkuc2g6NzUxIGdpdC1ndWkuc2g6NzY0IGdpdC1ndWkuc2g6ODQ3CisjOiBnaXQtZ3VpLnNoOjg2NgorbXNnaWQgImdpdC1ndWk6IGZhdGFsIGVycm9yIgorbXNnc3RyICJnaXQtZ3VpOiBLcml0aXNrIGZlaWwiCisKKyM6IGdpdC1ndWkuc2g6Njg5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBmb250IHNwZWNpZmllZCBpbiAlczoiCittc2dzdHIgIlVneWxkaWcgZm9udCBzcGVzaWZpc2VydCBpICVzOiIKKworIzogZ2l0LWd1aS5zaDo3MjMKK21zZ2lkICJNYWluIEZvbnQiCittc2dzdHIgIkhvdmVkc2tyaWZ0dHlwZSIKKworIzogZ2l0LWd1aS5zaDo3MjQKK21zZ2lkICJEaWZmL0NvbnNvbGUgRm9udCIKK21zZ3N0ciAiRGlmZi0vS29uc29sbHNrcmlmdHR5cGUiCisKKyM6IGdpdC1ndWkuc2g6NzM4Cittc2dpZCAiQ2Fubm90IGZpbmQgZ2l0IGluIFBBVEguIgorbXNnc3RyICJLYW4gaWtrZSBmaW5uZSBnaXQgaSBQQVRIIgorCisjOiBnaXQtZ3VpLnNoOjc2NQorbXNnaWQgIkNhbm5vdCBwYXJzZSBHaXQgdmVyc2lvbiBzdHJpbmc6IgorbXNnc3RyICJLYW4gaWtrZSB0eWRlIEdpdCdzIG9wcGdpdHRlIHZlcnNqb246IgorCisjOiBnaXQtZ3VpLnNoOjc4MworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJHaXQgdmVyc2lvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiIKKyJcbiIKKyIlcyBjbGFpbXMgaXQgaXMgdmVyc2lvbiAnJXMnLlxuIgorIlxuIgorIiVzIHJlcXVpcmVzIGF0IGxlYXN0IEdpdCAxLjUuMCBvciBsYXRlci5cbiIKKyJcbiIKKyJBc3N1bWUgJyVzJyBpcyB2ZXJzaW9uIDEuNS4wP1xuIgorbXNnc3RyICIiCisiS2FuIGlra2UgYXZnasO4cmUgaHZpbGtlbiBHaXQtdmVyc2pvbiBkdSBoYXIuXG4iCisiXG4iCisiJXMgc2llciB2ZXJzam9uZW4gZXIgJyVzJy5cbiIKKyJcbiIKKyIlcyBrcmV2ZXIgR2l0IHZlcnNqb24gMS41LjAgZWxsZXIgbnllcmUuXG4iCisiXG4iCisiQW50YSBhdCAnJXMnIGVyIHZlcnNqb24gMS41LjA/XG4iCisKKyM6IGdpdC1ndWkuc2g6MTA2MgorbXNnaWQgIkdpdCBkaXJlY3Rvcnkgbm90IGZvdW5kOiIKK21zZ3N0ciAiR2l0LWthdGFsb2cgaWtrZSBmdW5uZXQ6IgorCisjOiBnaXQtZ3VpLnNoOjEwNjkKK21zZ2lkICJDYW5ub3QgbW92ZSB0byB0b3Agb2Ygd29ya2luZyBkaXJlY3Rvcnk6IgorbXNnc3RyICJLYW4gaWtrZSBnw6UgdGlsIHRvcHBlbiBhdiBhcmJlaWRza2F0YWxvZ2VuOiIKKworIzogZ2l0LWd1aS5zaDoxMDc2Cittc2dpZCAiQ2Fubm90IHVzZSBmdW5ueSAuZ2l0IGRpcmVjdG9yeToiCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoxMDgxCittc2dpZCAiTm8gd29ya2luZyBkaXJlY3RvcnkiCittc2dzdHIgIkluZ2VuIGFyYmVpZHNrYXRhbG9nIgorCisjOiBnaXQtZ3VpLnNoOjEyNDcgbGliL2NoZWNrb3V0X29wLnRjbDozMDUKK21zZ2lkICJSZWZyZXNoaW5nIGZpbGUgc3RhdHVzLi4uIgorbXNnc3RyICJPcHBkYXRlcmVyIGZpbHN0YXR1cy4uLiIKKworIzogZ2l0LWd1aS5zaDoxMzAzCittc2dpZCAiU2Nhbm5pbmcgZm9yIG1vZGlmaWVkIGZpbGVzIC4uLiIKK21zZ3N0ciAiU8O4a2VyIGV0dGVyIGVuZHJlZGUgZmlsZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDoxMzg0Cittc2dpZCAiQ29tbWl0IGRlY2xpbmVkIGJ5IHByZXBhcmUtY29tbWl0LW1zZyBob29rLiIKK21zZ3N0ciAiIgorCisjOiBnaXQtZ3VpLnNoOjE1NDIgbGliL2Jyb3dzZXIudGNsOjI0NgorbXNnaWQgIlJlYWR5LiIKK21zZ3N0ciAiS2xhci4iCisKKyM6IGdpdC1ndWkuc2g6MTgxOQorbXNnaWQgIlVubW9kaWZpZWQiCittc2dzdHIgIlVlbmRyZXQiCisKKyM6IGdpdC1ndWkuc2g6MTgyMQorbXNnaWQgIk1vZGlmaWVkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICJFbmRyZXQsIGlra2Uga8O4ZXQiCisKKyM6IGdpdC1ndWkuc2g6MTgyMiBnaXQtZ3VpLnNoOjE4MzAKK21zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCIKK21zZ3N0ciAiS8O4ZXQgZm9yIGlubnNqZWtraW5nIgorCisjOiBnaXQtZ3VpLnNoOjE4MjMgZ2l0LWd1aS5zaDoxODMxCittc2dpZCAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQiCittc2dzdHIgIkRlbHZpcyBrw7hldCBmb3IgaW5uc2pla2tpbmciCisKKyM6IGdpdC1ndWkuc2g6MTgyNCBnaXQtZ3VpLnNoOjE4MzIKK21zZ2lkICJTdGFnZWQgZm9yIGNvbW1pdCwgbWlzc2luZyIKK21zZ3N0ciAiS2xhciBmb3IgaW5uc2pla2tpbmcsIGZyYXbDpnJlbmRlIgorCisjOiBnaXQtZ3VpLnNoOjE4MjYKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgbm90IHN0YWdlZCIKK21zZ3N0ciAiRmlsdHlwZSBlbmRyZXQsIGlra2Uga8O4ZXQiCisKKyM6IGdpdC1ndWkuc2g6MTgyNworbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBzdGFnZWQiCittc2dzdHIgIkZpbHR5cGUgZW5kcmV0LCBrw7hldCIKKworIzogZ2l0LWd1aS5zaDoxODI5Cittc2dpZCAiVW50cmFja2VkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICJVc3BvcmV0LCBpa2tlIGvDuGV0IgorCisjOiBnaXQtZ3VpLnNoOjE4MzQKK21zZ2lkICJNaXNzaW5nIgorbXNnc3RyICJGcmF2w6ZyZW5kZSIKKworIzogZ2l0LWd1aS5zaDoxODM1Cittc2dpZCAiU3RhZ2VkIGZvciByZW1vdmFsIgorbXNnc3RyICJLw7hldCBmb3IgZmplcm5pbmciCisKKyM6IGdpdC1ndWkuc2g6MTgzNgorbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCIKK21zZ3N0ciAiS8O4ZXQgZm9yIGZqZXJuaW5nLCBmb3J0c2F0dCB0aWxzdGVkZSIKKworIzogZ2l0LWd1aS5zaDoxODM4IGdpdC1ndWkuc2g6MTgzOSBnaXQtZ3VpLnNoOjE4NDAgZ2l0LWd1aS5zaDoxODQxCisjOiBnaXQtZ3VpLnNoOjE4NDIgZ2l0LWd1aS5zaDoxODQzCittc2dpZCAiUmVxdWlyZXMgbWVyZ2UgcmVzb2x1dGlvbiIKK21zZ3N0ciAiU2FtbWVuc2zDpWluZ2VuIGtyZXZlciBrb25mbGlrdGjDpW5kdGVyaW5nIgorCisjOiBnaXQtZ3VpLnNoOjE4NzgKK21zZ2lkICJTdGFydGluZyBnaXRrLi4uIHBsZWFzZSB3YWl0Li4uIgorbXNnc3RyICJTdGFydGVyIGdpdGsuLi4gVmVubmxpZ3N0IHZlbnQuLi4iCisKKyM6IGdpdC1ndWkuc2g6MTg4NworbXNnaWQgIkNvdWxkbid0IGZpbmQgZ2l0ayBpbiBQQVRIIgorbXNnc3RyICJLdW5uZSBpa2tlIGZpbm5lIGdpdGsgaSBQQVRIIgorCisjOiBnaXQtZ3VpLnNoOjIyODAgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNgorbXNnaWQgIlJlcG9zaXRvcnkiCittc2dzdHIgIkFya2l2IgorCisjOiBnaXQtZ3VpLnNoOjIyODEKK21zZ2lkICJFZGl0IgorbXNnc3RyICJSZWRpZ2VyZSIKKworIzogZ2l0LWd1aS5zaDoyMjgzIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKK21zZ2lkICJCcmFuY2giCittc2dzdHIgIkdyZW4iCisKKyM6IGdpdC1ndWkuc2g6MjI4NiBsaWIvY2hvb3NlX3Jldi50Y2w6NTQ4Cittc2dpZCAiQ29tbWl0QEBub3VuIgorbXNnc3RyICJJbm5zamVra2luZyIKKworIzogZ2l0LWd1aS5zaDoyMjg5IGxpYi9tZXJnZS50Y2w6MTIxIGxpYi9tZXJnZS50Y2w6MTUwIGxpYi9tZXJnZS50Y2w6MTY4Cittc2dpZCAiTWVyZ2UiCittc2dzdHIgIlNhbW1lbnNsw6VpbmciCisKKyM6IGdpdC1ndWkuc2g6MjI5MCBsaWIvY2hvb3NlX3Jldi50Y2w6NTU3Cittc2dpZCAiUmVtb3RlIgorbXNnc3RyICJGamVybmFya2l2IgorCisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiVmVya3TDuHkiCisKKyM6IGdpdC1ndWkuc2g6MjMwMgorbXNnaWQgIkV4cGxvcmUgV29ya2luZyBDb3B5IgorbXNnc3RyICJVdGZvcnNrIGFyYmVpZHNrb3BpZW4iCisKKyM6IGdpdC1ndWkuc2g6MjMwNworbXNnaWQgIkJyb3dzZSBDdXJyZW50IEJyYW5jaCdzIEZpbGVzIgorbXNnc3RyICJVdGZvcnNrIGRlbm5lIGdyZW5zIGZpbGVyIgorCisjOiBnaXQtZ3VpLnNoOjIzMTEKK21zZ2lkICJCcm93c2UgQnJhbmNoIEZpbGVzLi4uIgorbXNnc3RyICJCbGEgaWdqZW5ub20gZmlsZXIgcMOlIGdyZW4uLi4iCisKKyM6IGdpdC1ndWkuc2g6MjMxNgorbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCittc2dzdHIgIlZpc3VhbGlzZXIgZGVubmUgZ3JlbnMgaGlzdG9yaWtrIgorCisjOiBnaXQtZ3VpLnNoOjIzMjAKK21zZ2lkICJWaXN1YWxpemUgQWxsIEJyYW5jaCBIaXN0b3J5IgorbXNnc3RyICJWaXN1YWxpc2VyIGFsbGUgZ3JlbmVycyBoaXN0b3Jpa2siCisKKyM6IGdpdC1ndWkuc2g6MjMyNworIywgdGNsLWZvcm1hdAorbXNnaWQgIkJyb3dzZSAlcydzIEZpbGVzIgorbXNnc3RyICJCbGEgaSBmaWxlbmUgdGlsICVzIgorCisjOiBnaXQtZ3VpLnNoOjIzMjkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJWaXN1YWxpemUgJXMncyBIaXN0b3J5IgorbXNnc3RyICJWaXN1YWxpc2VyIGhpc3RvcmllbiB0aWwgJXMiCisKKyM6IGdpdC1ndWkuc2g6MjMzNCBsaWIvZGF0YWJhc2UudGNsOjI3IGxpYi9kYXRhYmFzZS50Y2w6NjcKK21zZ2lkICJEYXRhYmFzZSBTdGF0aXN0aWNzIgorbXNnc3RyICJEYXRhYmFzZXN0YXRpc3Rpa2siCisKKyM6IGdpdC1ndWkuc2g6MjMzNyBsaWIvZGF0YWJhc2UudGNsOjM0Cittc2dpZCAiQ29tcHJlc3MgRGF0YWJhc2UiCittc2dzdHIgIktvbXByZXNzIGRhdGFiYXNlbiIKKworIzogZ2l0LWd1aS5zaDoyMzQwCittc2dpZCAiVmVyaWZ5IERhdGFiYXNlIgorbXNnc3RyICJWZXJpZmlzZXIgZGF0YWJhc2VuIgorCisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKKyM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQorbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCittc2dzdHIgIkxhZyBza3JpdmVib3Jkc2lrb24iCisKKyM6IGdpdC1ndWkuc2g6MjM2MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE5MQorbXNnaWQgIlF1aXQiCittc2dzdHIgIkF2c2x1dHQiCisKKyM6IGdpdC1ndWkuc2g6MjM3MQorbXNnaWQgIlVuZG8iCittc2dzdHIgIkFuZ3JlIgorCisjOiBnaXQtZ3VpLnNoOjIzNzQKK21zZ2lkICJSZWRvIgorbXNnc3RyICJHasO4ciBvbSIKKworIzogZ2l0LWd1aS5zaDoyMzc4IGdpdC1ndWkuc2g6MjkyMworbXNnaWQgIkN1dCIKK21zZ3N0ciAiS2xpcHAgdXQiCisKKyM6IGdpdC1ndWkuc2g6MjM4MSBnaXQtZ3VpLnNoOjI5MjYgZ2l0LWd1aS5zaDozMDAwIGdpdC1ndWkuc2g6MzA4MgorIzogbGliL2NvbnNvbGUudGNsOjY5Cittc2dpZCAiQ29weSIKK21zZ3N0ciAiS29waWVyIgorCisjOiBnaXQtZ3VpLnNoOjIzODQgZ2l0LWd1aS5zaDoyOTI5Cittc2dpZCAiUGFzdGUiCittc2dzdHIgIkxpbSBpbm4iCisKKyM6IGdpdC1ndWkuc2g6MjM4NyBnaXQtZ3VpLnNoOjI5MzIgbGliL2JyYW5jaF9kZWxldGUudGNsOjI2CisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjM4Cittc2dpZCAiRGVsZXRlIgorbXNnc3RyICJTbGV0dCIKKworIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6MjkzNiBnaXQtZ3VpLnNoOjMwODYgbGliL2NvbnNvbGUudGNsOjcxCittc2dpZCAiU2VsZWN0IEFsbCIKK21zZ3N0ciAiVmVsZyBhbGxlIgorCisjOiBnaXQtZ3VpLnNoOjI0MDAKK21zZ2lkICJDcmVhdGUuLi4iCittc2dzdHIgIk9wcHJldHQuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjQwNgorbXNnaWQgIkNoZWNrb3V0Li4uIgorbXNnc3RyICJTamVrayB1dC4uLiIKKworIzogZ2l0LWd1aS5zaDoyNDEyCittc2dpZCAiUmVuYW1lLi4uIgorbXNnc3RyICJFbmRyZSBuYXZuLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI0MTcKK21zZ2lkICJEZWxldGUuLi4iCittc2dzdHIgIlNsZXR0Li4uIgorCisjOiBnaXQtZ3VpLnNoOjI0MjIKK21zZ2lkICJSZXNldC4uLiIKK21zZ3N0ciAiVGlsYmFrZXN0aWxsLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI0MzIKK21zZ2lkICJEb25lIgorbXNnc3RyICJGZXJkaWciCisKKyM6IGdpdC1ndWkuc2g6MjQzNAorbXNnaWQgIkNvbW1pdEBAdmVyYiIKK21zZ3N0ciAiU2pla2sgaW5uIgorCisjOiBnaXQtZ3VpLnNoOjI0NDMgZ2l0LWd1aS5zaDoyODY0Cittc2dpZCAiTmV3IENvbW1pdCIKK21zZ3N0ciAiTnkgaW5uc2pla2tpbmciCisKKyM6IGdpdC1ndWkuc2g6MjQ1MSBnaXQtZ3VpLnNoOjI4NzEKK21zZ2lkICJBbWVuZCBMYXN0IENvbW1pdCIKK21zZ3N0ciAiTGVnZyB0aWwgZm9ycmlnZSBpbm5zamVra2luZyIKKworIzogZ2l0LWd1aS5zaDoyNDYxIGdpdC1ndWkuc2g6MjgyNSBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjk5Cittc2dpZCAiUmVzY2FuIgorbXNnc3RyICJTw7hrIHDDpSBueSIKKworIzogZ2l0LWd1aS5zaDoyNDY3Cittc2dpZCAiU3RhZ2UgVG8gQ29tbWl0IgorbXNnc3RyICJMZWdnIHRpbCBpIGlubnNqZWtraW5nc2vDuGVuIgorCisjOiBnaXQtZ3VpLnNoOjI0NzMKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKK21zZ3N0ciAiTGVnZyB0aWwgZW5kcmVkZSBmaWxlciBpIGlubnNqZWtraW5nc2vDuGVuIgorCisjOiBnaXQtZ3VpLnNoOjI0NzkKK21zZ2lkICJVbnN0YWdlIEZyb20gQ29tbWl0IgorbXNnc3RyICJGamVybiBmcmEgaW5uc2pla2tpbmdza8O4ZW4iCisKKyM6IGdpdC1ndWkuc2g6MjQ4NCBsaWIvaW5kZXgudGNsOjQxMAorbXNnaWQgIlJldmVydCBDaGFuZ2VzIgorbXNnc3RyICJUaWxiYWtlc3RpbGwgZW5kcmluZ2VyIgorCisjOiBnaXQtZ3VpLnNoOjI0OTEgZ2l0LWd1aS5zaDozMDY5Cittc2dpZCAiU2hvdyBMZXNzIENvbnRleHQiCittc2dzdHIgIlZpcyBtaW5kcmUgaW5uaG9sZCIKKworIzogZ2l0LWd1aS5zaDoyNDk1IGdpdC1ndWkuc2g6MzA3MworbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgorbXNnc3RyICJWaXMgbWVyIGlubmhvbGQiCisKKyM6IGdpdC1ndWkuc2g6MjUwMiBnaXQtZ3VpLnNoOjI4MzggZ2l0LWd1aS5zaDoyOTQ3Cittc2dpZCAiU2lnbiBPZmYiCittc2dzdHIgIlNpZ27DqXIiCisKKyM6IGdpdC1ndWkuc2g6MjUxOAorbXNnaWQgIkxvY2FsIE1lcmdlLi4uIgorbXNnc3RyICJMb2thbCBzYW1tZW5zbMOlaW5nLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1MjMKK21zZ2lkICJBYm9ydCBNZXJnZS4uLiIKK21zZ3N0ciAiQXZicnl0IHNhbW1lbnNsw6VpbmcuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjUzNSBnaXQtZ3VpLnNoOjI1NzUKK21zZ2lkICJBZGQuLi4iCittc2dzdHIgIkxlZ2cgdGlsLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1MzkKK21zZ2lkICJQdXNoLi4uIgorbXNnc3RyICJTZW5kLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1NDMKK21zZ2lkICJEZWxldGUgQnJhbmNoLi4uIgorbXNnc3RyICJGamVybiBncmVuLi4uIgorCisjOiBnaXQtZ3VpLnNoOjI1NTMgZ2l0LWd1aS5zaDoyNTg5IGxpYi9hYm91dC50Y2w6MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MworIywgdGNsLWZvcm1hdAorbXNnaWQgIkFib3V0ICVzIgorbXNnc3RyICJPbSAlcyIKKworIzogZ2l0LWd1aS5zaDoyNTU3Cittc2dpZCAiUHJlZmVyZW5jZXMuLi4iCittc2dzdHIgIklubnN0aWxsaW5nZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU2NSBnaXQtZ3VpLnNoOjMxMTUKK21zZ2lkICJPcHRpb25zLi4uIgorbXNnc3RyICJBbHRlcm5hdGl2ZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU3NgorbXNnaWQgIlJlbW92ZS4uLiIKK21zZ3N0ciAiRmplcm4uLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCittc2dpZCAiSGVscCIKK21zZ3N0ciAiSGplbHAiCisKKyM6IGdpdC1ndWkuc2g6MjYxMQorbXNnaWQgIk9ubGluZSBEb2N1bWVudGF0aW9uIgorbXNnc3RyICJPbmxpbmUgZG9rdW1lbnRhc2pvbiIKKworIzogZ2l0LWd1aS5zaDoyNjE0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NgorbXNnaWQgIlNob3cgU1NIIEtleSIKK21zZ3N0ciAiVmlzIFNTSC1uw7hra2VsIgorCisjOiBnaXQtZ3VpLnNoOjI3MDcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJmYXRhbDogY2Fubm90IHN0YXQgcGF0aCAlczogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKK21zZ3N0ciAiIgorImtyaXRpc2s6IGt1bm5lIGlra2UgZmlubmUgc3RhdHVzIGZvciBzdGkgJXM6IEluZ2VuIHNsaWsgZmlsIGVsbGVyIGthdGFsb2ciCisKKyM6IGdpdC1ndWkuc2g6Mjc0MAorbXNnaWQgIkN1cnJlbnQgQnJhbmNoOiIKK21zZ3N0ciAiTsOldsOmcmVuZGUgZ3JlbjoiCisKKyM6IGdpdC1ndWkuc2g6Mjc2MQorbXNnaWQgIlN0YWdlZCBDaGFuZ2VzIChXaWxsIENvbW1pdCkiCittc2dzdHIgIkvDuGVkZSBlbmRyaW5nZXIgKHRpbCBpbm5zamVra2luZykiCisKKyM6IGdpdC1ndWkuc2g6Mjc4MQorbXNnaWQgIlVuc3RhZ2VkIENoYW5nZXMiCittc2dzdHIgIlVrw7hlZGUgZW5kcmluZ2VyIgorCisjOiBnaXQtZ3VpLnNoOjI4MzEKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIgorbXNnc3RyICJLw7ggZW5kcmV0IgorCisjOiBnaXQtZ3VpLnNoOjI4NTAgbGliL3RyYW5zcG9ydC50Y2w6OTMgbGliL3RyYW5zcG9ydC50Y2w6MTgyCittc2dpZCAiUHVzaCIKK21zZ3N0ciAiU2VuZCIKKworIzogZ2l0LWd1aS5zaDoyODg1Cittc2dpZCAiSW5pdGlhbCBDb21taXQgTWVzc2FnZToiCittc2dzdHIgIklubmxlZGVuZGUgaW5uc2pla2tpbmdzbWVsZGluZzoiCisKKyM6IGdpdC1ndWkuc2g6Mjg4NgorbXNnaWQgIkFtZW5kZWQgQ29tbWl0IE1lc3NhZ2U6IgorbXNnc3RyICJVdGR5cHQgaW5uc2pla2tpbmdzbWVsZGluZyIKKworIzogZ2l0LWd1aS5zaDoyODg3Cittc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKK21zZ3N0ciAiVXRkeXB0IGlubmxlZGVuZGUgaW5uc2pla2tpbmdzbWVsZGluZzoiCisKKyM6IGdpdC1ndWkuc2g6Mjg4OAorbXNnaWQgIkFtZW5kZWQgTWVyZ2UgQ29tbWl0IE1lc3NhZ2U6IgorbXNnc3RyICJVdGR5cHQgaW5uc2pla2tpbmdzbWVsZGluZyBmb3Igc2FtbWVuc2zDpWluZzoiCisKKyM6IGdpdC1ndWkuc2g6Mjg4OQorbXNnaWQgIk1lcmdlIENvbW1pdCBNZXNzYWdlOiIKK21zZ3N0ciAiUmV2aXNqb25zbWVsZGluZyBmb3Igc2FtbWVuc2zDpWluZzoiCisKKyM6IGdpdC1ndWkuc2g6Mjg5MAorbXNnaWQgIkNvbW1pdCBNZXNzYWdlOiIKK21zZ3N0ciAiUmV2aXNqb25zbWVsZGluZzoiCisKKyM6IGdpdC1ndWkuc2g6MjkzOSBnaXQtZ3VpLnNoOjMwOTAgbGliL2NvbnNvbGUudGNsOjczCittc2dpZCAiQ29weSBBbGwiCittc2dzdHIgIktvcGllciBhbGxlIgorCisjOiBnaXQtZ3VpLnNoOjI5NjMgbGliL2JsYW1lLnRjbDoxMDQKK21zZ2lkICJGaWxlOiIKK21zZ3N0ciAiRmlsOiIKKworIzogZ2l0LWd1aS5zaDozMDc4Cittc2dpZCAiUmVmcmVzaCIKK21zZ3N0ciAiT3BwZGF0ZXIiCisKKyM6IGdpdC1ndWkuc2g6MzA5OQorbXNnaWQgIkRlY3JlYXNlIEZvbnQgU2l6ZSIKK21zZ3N0ciAiR2rDuHIgdGVrc3RlbiBtaW5kcmUiCisKKyM6IGdpdC1ndWkuc2g6MzEwMworbXNnaWQgIkluY3JlYXNlIEZvbnQgU2l6ZSIKK21zZ3N0ciAiR2rDuHIgdGVrc3RlbiBzdMO4cnJlIgorCisjOiBnaXQtZ3VpLnNoOjMxMTEgbGliL2JsYW1lLnRjbDoyODEKK21zZ2lkICJFbmNvZGluZyIKK21zZ3N0ciAiVGVrc3Rrb2RpbmciCisKKyM6IGdpdC1ndWkuc2g6MzEyMgorbXNnaWQgIkFwcGx5L1JldmVyc2UgSHVuayIKK21zZ3N0ciAiQnJ1ay90aWxiYWtlc3RpbGwgZGVsIgorCisjOiBnaXQtZ3VpLnNoOjMxMjcKK21zZ2lkICJBcHBseS9SZXZlcnNlIExpbmUiCittc2dzdHIgIkJydWsvdGlsYmFrZXN0aWxsIGxpbmplIgorCisjOiBnaXQtZ3VpLnNoOjMxMzcKK21zZ2lkICJSdW4gTWVyZ2UgVG9vbCIKK21zZ3N0ciAiU3RhcnQgc2FtbWVuc2zDpWluZ3Nwcm9zZXNzIgorCisjOiBnaXQtZ3VpLnNoOjMxNDIKK21zZ2lkICJVc2UgUmVtb3RlIFZlcnNpb24iCittc2dzdHIgIkJydWsgdmVyc2pvbiBmcmEgZmplcm5hcmtpdiIKKworIzogZ2l0LWd1aS5zaDozMTQ2Cittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIkJydWsgbG9rYWwgdmVyc2pvbiIKKworIzogZ2l0LWd1aS5zaDozMTUwCittc2dpZCAiUmV2ZXJ0IFRvIEJhc2UiCittc2dzdHIgIlRpbGJha2VzdGlsbCB0aWwgYmFzZXZlcnNqb25lbiIKKworIzogZ2l0LWd1aS5zaDozMTY5Cittc2dpZCAiVW5zdGFnZSBIdW5rIEZyb20gQ29tbWl0IgorbXNnc3RyICJGamVybiBkZWxlbiBmcmEgaW5uc2pla2tpbmdza8O4ZW4iCisKKyM6IGdpdC1ndWkuc2g6MzE3MAorbXNnaWQgIlVuc3RhZ2UgTGluZSBGcm9tIENvbW1pdCIKK21zZ3N0ciAiRmplcm4gbGluamVuIGZyYSBpbm5zamVra2luZ3Nrw7hlbiIKKworIzogZ2l0LWd1aS5zaDozMTcyCittc2dpZCAiU3RhZ2UgSHVuayBGb3IgQ29tbWl0IgorbXNnc3RyICJMZWdnIGRlbCBpIGlubnNqZWtraW5nc2vDuGVuIgorCisjOiBnaXQtZ3VpLnNoOjMxNzMKK21zZ2lkICJTdGFnZSBMaW5lIEZvciBDb21taXQiCittc2dzdHIgIkxlZ2cgdGlsIGxpbmplIGkgaW5uc2pla2tpbmdza8O4ZW4iCisKKyM6IGdpdC1ndWkuc2g6MzE5NgorbXNnaWQgIkluaXRpYWxpemluZy4uLiIKK21zZ3N0ciAiSW5pdHNpYWxpc2VyZXIuLi4iCisKKyM6IGdpdC1ndWkuc2g6MzMwMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJQb3NzaWJsZSBlbnZpcm9ubWVudCBpc3N1ZXMgZXhpc3QuXG4iCisiXG4iCisiVGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHByb2JhYmx5XG4iCisiZ29pbmcgdG8gYmUgaWdub3JlZCBieSBhbnkgR2l0IHN1YnByb2Nlc3MgcnVuXG4iCisiYnkgJXM6XG4iCisiXG4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMzMxCittc2dpZCAiIgorIlxuIgorIlRoaXMgaXMgZHVlIHRvIGEga25vd24gaXNzdWUgd2l0aCB0aGVcbiIKKyJUY2wgYmluYXJ5IGRpc3RyaWJ1dGVkIGJ5IEN5Z3dpbi4iCittc2dzdHIgIiIKKworIzogZ2l0LWd1aS5zaDozMzM2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlxuIgorIkEgZ29vZCByZXBsYWNlbWVudCBmb3IgJXNcbiIKKyJpcyBwbGFjaW5nIHZhbHVlcyBmb3IgdGhlIHVzZXIubmFtZSBhbmRcbiIKKyJ1c2VyLmVtYWlsIHNldHRpbmdzIGludG8geW91ciBwZXJzb25hbFxuIgorIn4vLmdpdGNvbmZpZyBmaWxlLlxuIgorbXNnc3RyICIiCisKKyM6IGxpYi9hYm91dC50Y2w6MjYKK21zZ2lkICJnaXQtZ3VpIC0gYSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgZm9yIEdpdC4iCittc2dzdHIgImdpdC1ndWkgLSBFdCBncmFmaXNrIGJydWtlcmdyZW5zZXNuaXR0IGZvciBHaXQuIgorCisjOiBsaWIvYmxhbWUudGNsOjcyCittc2dpZCAiRmlsZSBWaWV3ZXIiCittc2dzdHIgIkZpbHZpc2VyIgorCisjOiBsaWIvYmxhbWUudGNsOjc4Cittc2dpZCAiQ29tbWl0OiIKK21zZ3N0ciAiSW5uc2pla2tpbmc6IgorCisjOiBsaWIvYmxhbWUudGNsOjI3MQorbXNnaWQgIkNvcHkgQ29tbWl0IgorbXNnc3RyICJLb3BpZXIgaW5uc2pla2tpbmciCisKKyM6IGxpYi9ibGFtZS50Y2w6Mjc1Cittc2dpZCAiRmluZCBUZXh0Li4uIgorbXNnc3RyICJTw7hrIGV0dGVyIHRla3N0Li4uIgorCisjOiBsaWIvYmxhbWUudGNsOjI4NAorbXNnaWQgIkRvIEZ1bGwgQ29weSBEZXRlY3Rpb24iCittc2dzdHIgIkdqZW5ub21mw7hyIGZ1bGwgZGV0ZWtzam9uIGF2IGtvcGllcmluZ2VyIgorCisjOiBsaWIvYmxhbWUudGNsOjI4OAorbXNnaWQgIlNob3cgSGlzdG9yeSBDb250ZXh0IgorbXNnc3RyICJWaXMgaGlzdG9yaWtrZW5zIGlubmhvbGQiCisKKyM6IGxpYi9ibGFtZS50Y2w6MjkxCittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjQ1MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJlYWRpbmcgJXMuLi4iCittc2dzdHIgIkxlc2VyICVzLi4uIgorCisjOiBsaWIvYmxhbWUudGNsOjU1NworbXNnaWQgIkxvYWRpbmcgY29weS9tb3ZlIHRyYWNraW5nIGFubm90YXRpb25zLi4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6NTc3Cittc2dpZCAibGluZXMgYW5ub3RhdGVkIgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6NzY5Cittc2dpZCAiTG9hZGluZyBvcmlnaW5hbCBsb2NhdGlvbiBhbm5vdGF0aW9ucy4uLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjc3MgorbXNnaWQgIkFubm90YXRpb24gY29tcGxldGUuIgorbXNnc3RyICIiCisKKyM6IGxpYi9ibGFtZS50Y2w6ODAyCittc2dpZCAiQnVzeSIKK21zZ3N0ciAiT3BwdGF0dCIKKworIzogbGliL2JsYW1lLnRjbDo4MDMKK21zZ2lkICJBbm5vdGF0aW9uIHByb2Nlc3MgaXMgYWxyZWFkeSBydW5uaW5nLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjg0MgorbXNnaWQgIlJ1bm5pbmcgdGhvcm91Z2ggY29weSBkZXRlY3Rpb24uLi4iCittc2dzdHIgIktqw7hyZXIga29waWRldGVrdGVyaW5nLi4uIgorCisjOiBsaWIvYmxhbWUudGNsOjkxMAorbXNnaWQgIkxvYWRpbmcgYW5ub3RhdGlvbi4uLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvYmxhbWUudGNsOjk2NAorbXNnaWQgIkF1dGhvcjoiCittc2dzdHIgIkZvcmZhdHRlcjoiCisKKyM6IGxpYi9ibGFtZS50Y2w6OTY4Cittc2dpZCAiQ29tbWl0dGVyOiIKK21zZ3N0ciAiSW5uc2pla2tlcjoiCisKKyM6IGxpYi9ibGFtZS50Y2w6OTczCittc2dpZCAiT3JpZ2luYWwgRmlsZToiCittc2dzdHIgIk9wcHJpbm5lbGlnIGZpbDoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTAyMQorbXNnaWQgIkNhbm5vdCBmaW5kIEhFQUQgY29tbWl0OiIKK21zZ3N0ciAiRmlubmVyIGlra2UgSEVBRCdzIGlubnNqZWtraW5nOiIKKworIzogbGliL2JsYW1lLnRjbDoxMDc2Cittc2dpZCAiQ2Fubm90IGZpbmQgcGFyZW50IGNvbW1pdDoiCittc2dzdHIgIkthbiBpa2tlIGZpbm5lIGlubnNqZWtraW5nZW5zIGZvcmVsZGVyOiIKKworIzogbGliL2JsYW1lLnRjbDoxMDkxCittc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgcGFyZW50IgorbXNnc3RyICJLYW4gaWtrZSB2aXNlIGZvcmVsZGVyIgorCisjOiBsaWIvYmxhbWUudGNsOjEwOTIgbGliL2RpZmYudGNsOjI5NworbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCittc2dzdHIgIkZlaWwgdmVkIGlubmxhc3RpbmcgYXYgZm9yc2tqZWxsOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjMyCittc2dpZCAiT3JpZ2luYWxseSBCeToiCittc2dzdHIgIk9wcHJpbm5lbGlnIGF2OiIKKworIzogbGliL2JsYW1lLnRjbDoxMjM4Cittc2dpZCAiSW4gRmlsZToiCittc2dzdHIgIkkgZmlsOiIKKworIzogbGliL2JsYW1lLnRjbDoxMjQzCittc2dpZCAiQ29waWVkIE9yIE1vdmVkIEhlcmUgQnk6IgorbXNnc3RyICJLb3BpZXJ0IGVsbGVyIGZseXR0ZXQgaGl0IGF2OiIKKworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MTQgbGliL2JyYW5jaF9jaGVja291dC50Y2w6MTkKK21zZ2lkICJDaGVja291dCBCcmFuY2giCittc2dzdHIgIlNqZWtrIHV0IGdyZW4iCisKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjIzCittc2dpZCAiQ2hlY2tvdXQiCittc2dzdHIgIlV0c2pla2tpbmciCisKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjI3IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozNQorIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjMyIGxpYi9icmFuY2hfcmVuYW1lLnRjbDozMCBsaWIvYnJvd3Nlci50Y2w6MjgyCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjU0NCBsaWIvY2hvb3NlX2ZvbnQudGNsOjQzIGxpYi9tZXJnZS50Y2w6MTcyCisjOiBsaWIvb3B0aW9uLnRjbDoxMjUgbGliL3JlbW90ZV9hZGQudGNsOjMyIGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDIKKyM6IGxpYi90b29sc19kbGcudGNsOjQwIGxpYi90b29sc19kbGcudGNsOjIwNCBsaWIvdG9vbHNfZGxnLnRjbDozNTIKKyM6IGxpYi90cmFuc3BvcnQudGNsOjk3Cittc2dpZCAiQ2FuY2VsIgorbXNnc3RyICJBdmJyeXQiCisKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjMyIGxpYi9icm93c2VyLnRjbDoyODcgbGliL3Rvb2xzX2RsZy50Y2w6MzI4Cittc2dpZCAiUmV2aXNpb24iCittc2dzdHIgIlJldmlzam9uIgorCisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDozNiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjkgbGliL29wdGlvbi50Y2w6MjgwCittc2dpZCAiT3B0aW9ucyIKK21zZ3N0ciAiVmFsZyIKKworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzkgbGliL2JyYW5jaF9jcmVhdGUudGNsOjkyCittc2dpZCAiRmV0Y2ggVHJhY2tpbmcgQnJhbmNoIgorbXNnc3RyICJIZW50IHNwb3JldCBncmVuIgorCisjOiBsaWIvYnJhbmNoX2NoZWNrb3V0LnRjbDo0NAorbXNnaWQgIkRldGFjaCBGcm9tIExvY2FsIEJyYW5jaCIKK21zZ3N0ciAiS29ibGUgYm9ydCBsb2thbCBncmVuIgorCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MjIKK21zZ2lkICJDcmVhdGUgQnJhbmNoIgorbXNnc3RyICJPcHByZXR0IGdyZW4iCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDoyNworbXNnaWQgIkNyZWF0ZSBOZXcgQnJhbmNoIgorbXNnc3RyICJPcHByZXR0IG55IGdyZW4iCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozMSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM3NworbXNnaWQgIkNyZWF0ZSIKK21zZ3N0ciAiT3BwcmV0dCIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjQwCittc2dpZCAiQnJhbmNoIE5hbWUiCittc2dzdHIgIk5hdm4gcMOlIGdyZW4iCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo0MyBsaWIvcmVtb3RlX2FkZC50Y2w6MzkgbGliL3Rvb2xzX2RsZy50Y2w6NTAKK21zZ2lkICJOYW1lOiIKK21zZ3N0ciAiTmF2bjoiCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo1OAorbXNnaWQgIk1hdGNoIFRyYWNraW5nIEJyYW5jaCBOYW1lIgorbXNnc3RyICJCcnVrIG5hdm4gcMOlIHNwb3JldCBncmVuIgorCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NjYKK21zZ2lkICJTdGFydGluZyBSZXZpc2lvbiIKK21zZ3N0ciAiU3RhcnRlciByZXZpc2pvbiIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjcyCittc2dpZCAiVXBkYXRlIEV4aXN0aW5nIEJyYW5jaDoiCittc2dzdHIgIk9wcGRhdGVyIGVrc2lzdGVyZW5kZSBncmVuOiIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjc1Cittc2dpZCAiTm8iCittc2dzdHIgIk5laSIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjgwCittc2dpZCAiRmFzdCBGb3J3YXJkIE9ubHkiCittc2dzdHIgIkt1biBodXJ0aWdmcmVtc3BvbGluZyIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjg1IGxpYi9jaGVja291dF9vcC50Y2w6NTM2Cittc2dpZCAiUmVzZXQiCittc2dzdHIgIlRpbGJha2VzdGlsbCIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjk3Cittc2dpZCAiQ2hlY2tvdXQgQWZ0ZXIgQ3JlYXRpb24iCittc2dzdHIgIlNqZWtrIHV0IGV0dGVyIG9wcHJldHRpbmciCisKKyM6IGxpYi9icmFuY2hfY3JlYXRlLnRjbDoxMzEKK21zZ2lkICJQbGVhc2Ugc2VsZWN0IGEgdHJhY2tpbmcgYnJhbmNoLiIKK21zZ3N0ciAiVmVsZyBlbiBncmVuIHNvbSBza2FsIGbDuGxnZXMuIgorCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MTQwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVHJhY2tpbmcgYnJhbmNoICVzIGlzIG5vdCBhIGJyYW5jaCBpbiB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuIgorbXNnc3RyICJEZW4gZnVsZ3RlIGdyZW5lbiAlcyBlciBpa2tlIGVuIGdyZW4gaSBmamVybmFya2l2ZXQuIgorCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MTUzIGxpYi9icmFuY2hfcmVuYW1lLnRjbDo4NgorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBicmFuY2ggbmFtZS4iCittc2dzdHIgIkFuZ2kgZXQgbmF2biBmb3IgZ3JlbmVuLiIKKworIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjE2NCBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MTA2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSBicmFuY2ggbmFtZS4iCittc2dzdHIgIiclcycga2FuIGlra2UgYnJ1a2VzIHNvbSBuYXZuIHDDpSBlbiBncmVuLiIKKworIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjE1Cittc2dpZCAiRGVsZXRlIEJyYW5jaCIKK21zZ3N0ciAiRmplcm4gZ3JlbiIKKworIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjIwCittc2dpZCAiRGVsZXRlIExvY2FsIEJyYW5jaCIKK21zZ3N0ciAiRmplcm4gbG9rYWwgZ3JlbiIKKworIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjM3Cittc2dpZCAiTG9jYWwgQnJhbmNoZXMiCittc2dzdHIgIkxva2FsZSBncmVuZXIiCisKKyM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDo1MgorbXNnaWQgIkRlbGV0ZSBPbmx5IElmIE1lcmdlZCBJbnRvIgorbXNnc3RyICJGamVybiBrdW4gdmVkIHNhbW1lbnNsw6VpbmciCisKKyM6IGxpYi9icmFuY2hfZGVsZXRlLnRjbDo1NAorbXNnaWQgIkFsd2F5cyAoRG8gbm90IHBlcmZvcm0gbWVyZ2UgdGVzdC4pIgorbXNnc3RyICJBbGx0aWQgKElra2UgdXRmw7hyIHNhbW1lbnNsw6VpbmdzdGVzdC4pIgorCisjOiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MTAzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVGhlIGZvbGxvd2luZyBicmFuY2hlcyBhcmUgbm90IGNvbXBsZXRlbHkgbWVyZ2VkIGludG8gJXM6IgorbXNnc3RyICJGw7hsZ2VuZGUgZ3JlbmVyIGVyIGlra2UgZnVsbHN0ZW5kaWcgc2zDpXR0IHNhbW1lbiBtZWQgJXM6IgorCisjOiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MTE1Cittc2dpZCAiIgorIlJlY292ZXJpbmcgZGVsZXRlZCBicmFuY2hlcyBpcyBkaWZmaWN1bHQuIFxuIgorIlxuIgorIiBEZWxldGUgdGhlIHNlbGVjdGVkIGJyYW5jaGVzPyIKK21zZ3N0ciAiIgorIkdqZW5vcHByZXR0aW5nIGF2IGZqZXJuZWRlIGdyZW5lciBlciB2YW5za2VsaWcuIFxuIgorIlxuIgorIiBGamVybiB2YWxndGUgZ3JlbmVyPyIKKworIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjE0MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJGYWlsZWQgdG8gZGVsZXRlIGJyYW5jaGVzOlxuIgorIiVzIgorbXNnc3RyICIiCisiS3VubmUgaWtrZSBmamVybmUgZ3JlbmVyOlxuIgorIiVzIgorCisjOiBsaWIvYnJhbmNoX3JlbmFtZS50Y2w6MTQgbGliL2JyYW5jaF9yZW5hbWUudGNsOjIyCittc2dpZCAiUmVuYW1lIEJyYW5jaCIKK21zZ3N0ciAiR2kgZ3JlbiBueXR0IG5hdm4iCisKKyM6IGxpYi9icmFuY2hfcmVuYW1lLnRjbDoyNgorbXNnaWQgIlJlbmFtZSIKK21zZ3N0ciAiRW5kcmUgbmF2biIKKworIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjM2Cittc2dpZCAiQnJhbmNoOiIKK21zZ3N0ciAiR3JlbjoiCisKKyM6IGxpYi9icmFuY2hfcmVuYW1lLnRjbDozOQorbXNnaWQgIk5ldyBOYW1lOiIKK21zZ3N0ciAiTnl0dCBuYXZuOiIKKworIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjc1Cittc2dpZCAiUGxlYXNlIHNlbGVjdCBhIGJyYW5jaCB0byByZW5hbWUuIgorbXNnc3RyICJWZW5ubGlnc3QgdmVsZyBncmVuZW4gZHUgdmlsIGVuZHJlIG5hdm4gcMOlLiIKKworIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjk2IGxpYi9jaGVja291dF9vcC50Y2w6MjAxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuIgorbXNnc3RyICJHcmVuZW4gJyVzJyBla3Npc3RlcmVyIGFsbGVyZWRlLiIKKworIzogbGliL2JyYW5jaF9yZW5hbWUudGNsOjExNworIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZW5hbWUgJyVzJy4iCittc2dzdHIgIkt1bm5lIGlra2UgZW5kcmUgbmF2bmV0ICclcycuIgorCisjOiBsaWIvYnJvd3Nlci50Y2w6MTcKK21zZ2lkICJTdGFydGluZy4uLiIKK21zZ3N0ciAiU3RhcnRlci4uLiIKKworIzogbGliL2Jyb3dzZXIudGNsOjI2Cittc2dpZCAiRmlsZSBCcm93c2VyIgorbXNnc3RyICJVdGZvcnNrZXIiCisKKyM6IGxpYi9icm93c2VyLnRjbDoxMjYgbGliL2Jyb3dzZXIudGNsOjE0MworIywgdGNsLWZvcm1hdAorbXNnaWQgIkxvYWRpbmcgJXMuLi4iCittc2dzdHIgIkxhc3RlciAlcy4uLiIKKworIzogbGliL2Jyb3dzZXIudGNsOjE4NworbXNnaWQgIltVcCBUbyBQYXJlbnRdIgorbXNnc3RyICJbT3BwIHRpbCBmb3JlbGRlcl0iCisKKyM6IGxpYi9icm93c2VyLnRjbDoyNjcgbGliL2Jyb3dzZXIudGNsOjI3MworbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMiCittc2dzdHIgIkJsYSBpZ2plbm5vbSBncmVuZW5zIGZpbGVyIgorCisjOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzk0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5OTUKK21zZ2lkICJCcm93c2UiCittc2dzdHIgIkJsYSBpZ2plbm5vbSIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZldGNoaW5nICVzIGZyb20gJXMiCittc2dzdHIgIkhlbnRlciAlcyBmcmEgJXMiCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MTMyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiZmF0YWw6IENhbm5vdCByZXNvbHZlICVzIgorbXNnc3RyICJrcml0aXNrOiBLYW4gaWtrZSDDpXBuZSAlcyIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDoxNDUgbGliL2NvbnNvbGUudGNsOjgxIGxpYi9kYXRhYmFzZS50Y2w6MzEKKyM6IGxpYi9zc2hrZXkudGNsOjUzCittc2dpZCAiQ2xvc2UiCittc2dzdHIgIkx1a2siCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MTc0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQnJhbmNoICclcycgZG9lcyBub3QgZXhpc3QuIgorbXNnc3RyICJHcmVuZW4gJyVzJyBla3Npc3RlcmVyIGlra2UuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjE5MworIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBjb25maWd1cmUgc2ltcGxpZmllZCBnaXQtcHVsbCBmb3IgJyVzJy4iCittc2dzdHIgIkt1bm5lIGlra2Uga29uZmlndXJlcmUgZm9yZW5rbGV0IGdpdC1wdWxsIGZvciAnJXMnLiIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDoyMjgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuXG4iCisiXG4iCisiSXQgY2Fubm90IGZhc3QtZm9yd2FyZCB0byAlcy5cbiIKKyJBIG1lcmdlIGlzIHJlcXVpcmVkLiIKK21zZ3N0ciAiIgorIkdyZW5lbiAnJXMnIGVrc2lzdGVyZXIgYWxsZXJlZGUuXG4iCisiXG4iCisiRGVuIGthbiBpa2tlIGh1cnRpZ2ZyZW1zcG9sZXMgdGlsICVzLlxuIgorIkVuIHNhbW1lbnNsw6VpbmcgZXIgcMOla3JldmQuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI0MgorIywgdGNsLWZvcm1hdAorbXNnaWQgIk1lcmdlIHN0cmF0ZWd5ICclcycgbm90IHN1cHBvcnRlZC4iCittc2dzdHIgIlNhbW1lbnNsw6Vpbmdzc3RyYXRlZ2llbiAnJXMnIGVyIGlra2Ugc3TDuHR0ZXQuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI2MQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byB1cGRhdGUgJyVzJy4iCittc2dzdHIgIkt1bm5lIGlra2Ugb3BwZGF0ZXJlICclcycuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjI3MworbXNnaWQgIlN0YWdpbmcgYXJlYSAoaW5kZXgpIGlzIGFscmVhZHkgbG9ja2VkLiIKK21zZ3N0ciAiS8O4b21yw6VkZXQgKGluZGV4KSBlciBhbGxlcmVkZSBsw6VzdC4iCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6Mjg4Cittc2dpZCAiIgorIkxhc3Qgc2Nhbm5lZCBzdGF0ZSBkb2VzIG5vdCBtYXRjaCByZXBvc2l0b3J5IHN0YXRlLlxuIgorIlxuIgorIkFub3RoZXIgR2l0IHByb2dyYW0gaGFzIG1vZGlmaWVkIHRoaXMgcmVwb3NpdG9yeSBzaW5jZSB0aGUgbGFzdCBzY2FuLiAgQSAiCisicmVzY2FuIG11c3QgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgY3VycmVudCBicmFuY2ggY2FuIGJlIGNoYW5nZWQuXG4iCisiXG4iCisiVGhlIHJlc2NhbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCBub3cuXG4iCittc2dzdHIgIiIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDozNDQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeSB0byAnJXMnLi4uIgorbXNnc3RyICJPcHBkYXRlcmVyIGFyYmVpZHNrYXRhbG9nZW4gdGlsICclcycuLi4iCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6MzQ1Cittc2dpZCAiZmlsZXMgY2hlY2tlZCBvdXQiCittc2dzdHIgImZpbGVyIHNqZWtrZXQgdXQiCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6Mzc1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQWJvcnRlZCBjaGVja291dCBvZiAnJXMnIChmaWxlIGxldmVsIG1lcmdpbmcgaXMgcmVxdWlyZWQpLiIKK21zZ3N0ciAiQXZicsO4dCB1dHNqZWtraW5nZW4gYXYgJyVzJyAoc2FtbWVuc2zDpWluZyBww6UgZmlsbml2w6Uga3JldmVzKS4iCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6Mzc2Cittc2dpZCAiRmlsZSBsZXZlbCBtZXJnZSByZXF1aXJlZC4iCittc2dzdHIgIlNhbW1lbnNsw6VpbmcgcMOlIGZpbG5pdsOlIGtyZXZlcyIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDozODAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTdGF5aW5nIG9uIGJyYW5jaCAnJXMnLiIKK21zZ3N0ciAiQmxpciBzdMOlZW5kZSBww6UgZ3JlbmVuICclcycuIgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjQ1MQorbXNnaWQgIiIKKyJZb3UgYXJlIG5vIGxvbmdlciBvbiBhIGxvY2FsIGJyYW5jaC5cbiIKKyJcbiIKKyJJZiB5b3Ugd2FudGVkIHRvIGJlIG9uIGEgYnJhbmNoLCBjcmVhdGUgb25lIG5vdyBzdGFydGluZyBmcm9tICdUaGlzIERldGFjaGVkICIKKyJDaGVja291dCcuIgorbXNnc3RyICIiCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NDY4IGxpYi9jaGVja291dF9vcC50Y2w6NDcyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ2hlY2tlZCBvdXQgJyVzJy4iCittc2dzdHIgIlNqZWtrZXQgdXQgJyVzJy4iCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NTAwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUmVzZXR0aW5nICclcycgdG8gJyVzJyB3aWxsIGxvc2UgdGhlIGZvbGxvd2luZyBjb21taXRzOiIKK21zZ3N0ciAiIgorIlRpbGJha2VzdGlsbGluZyBhdiAnJXMnIHRpbCAnJXMnIHZpbCBtZWRmw7hyZSB0YXAgYXYgZsO4bGdlbmRlIGlubnNqZWtraW5nZXI6IgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUyMgorbXNnaWQgIlJlY292ZXJpbmcgbG9zdCBjb21taXRzIG1heSBub3QgYmUgZWFzeS4iCittc2dzdHIgIiIKKyJEZXQgdmlsIGthbnNramUgaWtrZSB2w6ZyZSBzw6UgZW5rZWx0IMOlIGdqZW5vcHByZXR0ZSBlbiB0YXB0IGlubnNqZWtraW5nLiIKKworIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MjcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSZXNldCAnJXMnPyIKK21zZ3N0ciAiVGlsYmFrZXN0aWxsICclcyc/IgorCisjOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2NCBsaWIvdG9vbHNfZGxnLnRjbDozNDMKK21zZ2lkICJWaXN1YWxpemUiCittc2dzdHIgIlZpc3VhbGlzZXIiCisKKyM6IGxpYi9jaGVja291dF9vcC50Y2w6NjAwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkZhaWxlZCB0byBzZXQgY3VycmVudCBicmFuY2guXG4iCisiXG4iCisiVGhpcyB3b3JraW5nIGRpcmVjdG9yeSBpcyBvbmx5IHBhcnRpYWxseSBzd2l0Y2hlZC4gIFdlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkICIKKyJ5b3VyIGZpbGVzLCBidXQgZmFpbGVkIHRvIHVwZGF0ZSBhbiBpbnRlcm5hbCBHaXQgZmlsZS5cbiIKKyJcbiIKKyJUaGlzIHNob3VsZCBub3QgaGF2ZSBvY2N1cnJlZC4gICVzIHdpbGwgbm93IGNsb3NlIGFuZCBnaXZlIHVwLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY2hvb3NlX2ZvbnQudGNsOjM5Cittc2dpZCAiU2VsZWN0IgorbXNnc3RyICJWZWxnIgorCisjOiBsaWIvY2hvb3NlX2ZvbnQudGNsOjUzCittc2dpZCAiRm9udCBGYW1pbHkiCittc2dzdHIgIlNrcmlmdHR5cGUtZmFtaWxpZSIKKworIzogbGliL2Nob29zZV9mb250LnRjbDo3NAorbXNnaWQgIkZvbnQgU2l6ZSIKK21zZ3N0ciAiU2tyaWZ0c3TDuHJyZWxzZSIKKworIzogbGliL2Nob29zZV9mb250LnRjbDo5MQorbXNnaWQgIkZvbnQgRXhhbXBsZSIKK21zZ3N0ciAiU2tyaWZ0ZWtzZW1wZWwiCisKKyM6IGxpYi9jaG9vc2VfZm9udC50Y2w6MTAzCittc2dpZCAiIgorIlRoaXMgaXMgZXhhbXBsZSB0ZXh0LlxuIgorIklmIHlvdSBsaWtlIHRoaXMgdGV4dCwgaXQgY2FuIGJlIHlvdXIgZm9udC4iCittc2dzdHIgIiIKKyJEZXR0ZSBlciBlbiBla3NlbXBlbHRla3N0LlxuIgorIkh2aXMgZHUgbGlrZXIgaHZvcmRhbiB0ZWtzdGVuIHNlciB1dCwga2FuIGR1IHZlbGdlIGRldHRlIHNvbSBkaW4gc2tyaWZ0dHlwZS4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MjgKK21zZ2lkICJHaXQgR3VpIgorbXNnc3RyICJHaXQgR3VpIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgyCittc2dpZCAiQ3JlYXRlIE5ldyBSZXBvc2l0b3J5IgorbXNnc3RyICJPcHByZXR0IG55dHQgYXJraXYiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTMKK21zZ2lkICJOZXcuLi4iCittc2dzdHIgIk55Li4uIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQorbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCittc2dzdHIgIktsb24gZWtzaXN0ZXJlcmVuZGUgYXJraXYiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTA2Cittc2dpZCAiQ2xvbmUuLi4iCittc2dzdHIgIktsb24uLi4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgzCittc2dpZCAiT3BlbiBFeGlzdGluZyBSZXBvc2l0b3J5IgorbXNnc3RyICLDhXBuZSBla3Npc3RlcmVyZW5kZSBhcmtpdiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTkKK21zZ2lkICJPcGVuLi4uIgorbXNnc3RyICLDhXBuZS4uLiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzIKK21zZ2lkICJSZWNlbnQgUmVwb3NpdG9yaWVzIgorbXNnc3RyICJOeWxpZyBicnVrdGUgYXJraXYiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTM4Cittc2dpZCAiT3BlbiBSZWNlbnQgUmVwb3NpdG9yeToiCittc2dzdHIgIsOFcG5lIG55bGlnIGJydWt0IGFya2l2OiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDIgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMDkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzE2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSByZXBvc2l0b3J5ICVzOiIKK21zZ3N0ciAiS3VubmUgaWtrZSBvcHByZXR0ZSBhcmtpdmV0ICVzOiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozODcKK21zZ2lkICJEaXJlY3Rvcnk6IgorbXNnc3RyICJNYXBwZToiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDE3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTQ0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMTcKK21zZ2lkICJHaXQgUmVwb3NpdG9yeSIKK21zZ3N0ciAiR2l0IGFya2l2IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ0MgorIywgdGNsLWZvcm1hdAorbXNnaWQgIkRpcmVjdG9yeSAlcyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIk1hcHBlbiAlcyBla3Npc3RlcmVyIGFsbGVyZWRlLiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGaWxlICVzIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAiRmlsZW4gJXMgZWtzaXN0ZXJlciBhbGxlcmVkZS4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDYwCittc2dpZCAiQ2xvbmUiCittc2dzdHIgIktsb24iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDczCittc2dpZCAiU291cmNlIExvY2F0aW9uOiIKK21zZ3N0ciAiS2lsZGVwbGFzc2VyaW5nOiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODQKK21zZ2lkICJUYXJnZXQgRGlyZWN0b3J5OiIKK21zZ3N0ciAiRGVzdGluYXNqb25zbWFwcGU6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgorbXNnaWQgIkNsb25lIFR5cGU6IgorbXNnc3RyICJLbG9udHlwZToiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTAyCittc2dpZCAiU3RhbmRhcmQgKEZhc3QsIFNlbWktUmVkdW5kYW50LCBIYXJkbGlua3MpIgorbXNnc3RyICJTdGFuZGFyZCAocmFzaywgZGVsdmlzIHJlZHVuZGFudCwgaGFyZGxpbmtlcikiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTA4Cittc2dpZCAiRnVsbCBDb3B5IChTbG93ZXIsIFJlZHVuZGFudCBCYWNrdXApIgorbXNnc3RyICJGdWxsIGtvcGkgKHRyZWdlcmUsIHJlZHVuZGFudCBzaWtrZXJoZXRza29waSkiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0Cittc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCittc2dzdHIgIkRlbHQgKHJhc2tlc3QsIGlra2UgYW5iZWZhbHQsIGluZ2VuIHNpa2tlcmhldHNrb3BpZXJpbmcpIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU1MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJOb3QgYSBHaXQgcmVwb3NpdG9yeTogJXMiCittc2dzdHIgIklra2UgZXQgR2l0LWFya2l2OiAlcyIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1ODYKK21zZ2lkICJTdGFuZGFyZCBvbmx5IGF2YWlsYWJsZSBmb3IgbG9jYWwgcmVwb3NpdG9yeS4iCittc2dzdHIgIlN0YW5kYXJkIGVyIGt1biB0aWxnamVuZ2VsaWcgZm9yIGxva2FsdCBhcmtpdi4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTkwCittc2dpZCAiU2hhcmVkIG9ubHkgYXZhaWxhYmxlIGZvciBsb2NhbCByZXBvc2l0b3J5LiIKK21zZ3N0ciAiRGVsdCBlciBrdW4gdGlsZ2plbmdlbGlnIGZvciBsb2thbHQgYXJraXYuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkxvY2F0aW9uICVzIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAiU3RlZGV0ICVzIGVrc2lzdGVyZXIgYWxsZXJlZGUuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYyMgorbXNnaWQgIkZhaWxlZCB0byBjb25maWd1cmUgb3JpZ2luIgorbXNnc3RyICJLdW5uZSBpa2tlIGtvbmZpZ3VyZXJlIGtpbGRlb3BwZsO4cmluZyIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MzQKK21zZ2lkICJDb3VudGluZyBvYmplY3RzIgorbXNnc3RyICJUZWxsZXIgb2JqZWt0ZXIiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM1Cittc2dpZCAiYnVja2V0cyIKK21zZ3N0ciAiYsO4dHRlciIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3RzL2luZm8vYWx0ZXJuYXRlczogJXMiCittc2dzdHIgIkt1bm5lIGlra2Uga29waWVyZSBvYmpla3Rlci9pbmZvcm1hc2pvbi9hbHRlcm5hdGl2dDogJXMiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTm90aGluZyB0byBjbG9uZSBmcm9tICVzLiIKK21zZ3N0ciAiSW5nZW50aW5nIMOlIGtsb25lIGZyYSAlcy4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMworbXNnaWQgIlRoZSAnbWFzdGVyJyBicmFuY2ggaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiIKK21zZ3N0ciAiR3JlbmVuICdtYXN0ZXInIGhhciBpa2tlIGJsaXR0IGluaXRzaWFsaXNlcnQuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMAorbXNnaWQgIkhhcmRsaW5rcyBhcmUgdW5hdmFpbGFibGUuICBGYWxsaW5nIGJhY2sgdG8gY29weWluZy4iCittc2dzdHIgIkhhcmRlIGxpbmtlciBlciB1dGlsZ2plbmdlbGlnLiBHw6VyIHRpbGJha2UgdGlsIGtvcGllcmluZy4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzIyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ2xvbmluZyBmcm9tICVzIgorbXNnc3RyICJLbG9uZXIgZnJhICVzIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1MworbXNnaWQgIkNvcHlpbmcgb2JqZWN0cyIKK21zZ3N0ciAiS29waWVyZXIgb2JqZWt0ZXIiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzU0Cittc2dpZCAiS2lCIgorbXNnc3RyICJrQiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NzgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gY29weSBvYmplY3Q6ICVzIgorbXNnc3RyICJLdW5uZSBpa2tlIGtvcGllcmUgb2JqZWt0OiAlcyIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKK21zZ2lkICJMaW5raW5nIG9iamVjdHMiCittc2dzdHIgIkxlbmtlciBvYmpla3RlciIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODkKK21zZ2lkICJvYmplY3RzIgorbXNnc3RyICJvYmpla3RlciIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3OTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gaGFyZGxpbmsgb2JqZWN0OiAlcyIKK21zZ3N0ciAiS3VubmUgaWtrZSBvcHByZXR0ZSBoYXJkbGluayBtZWQgb2JqZWt0ZXQ6ICVzIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg1MgorbXNnaWQgIkNhbm5vdCBmZXRjaCBicmFuY2hlcyBhbmQgb2JqZWN0cy4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCittc2dzdHIgIkt1bm5lIGlra2UgaGVudGUgZ3JlbmVyIG9nIG9iamVrdGVyLiBTZSB1dGRhdGEgaSBrb25zb2xsIGZvciBkZXRhbGplci4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODYzCittc2dpZCAiQ2Fubm90IGZldGNoIHRhZ3MuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgorbXNnc3RyICJLdW5uZSBpa2tlIGhlbnRlIHRhZ2dlci4gU2UgdXRkYXRhIGkga29uc29sbCBmb3IgZGV0YWxqZXIuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg4NworbXNnaWQgIkNhbm5vdCBkZXRlcm1pbmUgSEVBRC4gIFNlZSBjb25zb2xlIG91dHB1dCBmb3IgZGV0YWlscy4iCittc2dzdHIgIkthbiBpa2tlIGJlc3RlbW1lIEhFQUQuIFNlIHV0ZGF0YSBpIGtvbnNvbGwgZm9yIGRldGFsamVyLiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gY2xlYW51cCAlcyIKK21zZ3N0ciAiS3VubmUgaWtrZSByeWRkZSBvcHAgJXMiCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCittc2dpZCAiQ2xvbmUgZmFpbGVkLiIKK21zZ3N0ciAiS2xvbmluZyBmZWlsZXQuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwOQorbXNnaWQgIk5vIGRlZmF1bHQgYnJhbmNoIG9idGFpbmVkLiIKK21zZ3N0ciAiSW5nZW4gc3RhbmRhcmRncmVuIGhlbnRldC4iCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHJlc29sdmUgJXMgYXMgYSBjb21taXQuIgorbXNnc3RyICJLYW4gaWtrZSBmaW5uZSAlcyBzb20gZW4gaW5uc2pla2tpbmcuIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMgorbXNnaWQgIkNyZWF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJPcHByZXR0ZXIgYXJiZWlkc2thdGFsb2ciCisKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTMzIGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjgKKyM6IGxpYi9pbmRleC50Y2w6MTk2Cittc2dpZCAiZmlsZXMiCittc2dzdHIgImZpbGVyIgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk2MgorbXNnaWQgIkluaXRpYWwgZmlsZSBjaGVja291dCBmYWlsZWQuIgorbXNnc3RyICJJbml0c2lhbGlzZXJlbmRlIHV0c2pla2tpbmcgZmVpbGV0LiIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzgKK21zZ2lkICJPcGVuIgorbXNnc3RyICLDhXBuZSIKKworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODgKK21zZ2lkICJSZXBvc2l0b3J5OiIKK21zZ3N0ciAiQXJraXY6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3BlbiByZXBvc2l0b3J5ICVzOiIKK21zZ3N0ciAiS3VubmUgaWtrZSDDpXBuZSBhcmtpdmV0ICVzOiIKKworIzogbGliL2Nob29zZV9yZXYudGNsOjUzCittc2dpZCAiVGhpcyBEZXRhY2hlZCBDaGVja291dCIKK21zZ3N0ciAiRGVubmUgZnJha29ibGVkZSB1dHNqZWtraW5nZW4iCisKKyM6IGxpYi9jaG9vc2VfcmV2LnRjbDo2MAorbXNnaWQgIlJldmlzaW9uIEV4cHJlc3Npb246IgorbXNnc3RyICJSZXZpc2pvbnN1dHRyeWtrOiIKKworIzogbGliL2Nob29zZV9yZXYudGNsOjc0Cittc2dpZCAiTG9jYWwgQnJhbmNoIgorbXNnc3RyICJMb2thbCBncmVuIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6NzkKK21zZ2lkICJUcmFja2luZyBCcmFuY2giCittc2dzdHIgIlNwb3JldCBncmVuIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6ODQgbGliL2Nob29zZV9yZXYudGNsOjUzOAorbXNnaWQgIlRhZyIKK21zZ3N0ciAiVGFnIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6MzE3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXZpc2lvbjogJXMiCittc2dzdHIgIlVneWxkaWcgcmV2aXNqb246ICVzIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6MzM4Cittc2dpZCAiTm8gcmV2aXNpb24gc2VsZWN0ZWQuIgorbXNnc3RyICJJbmdlbiByZXZpc2pvbmVyIHZhbGd0LiIKKworIzogbGliL2Nob29zZV9yZXYudGNsOjM0NgorbXNnaWQgIlJldmlzaW9uIGV4cHJlc3Npb24gaXMgZW1wdHkuIgorbXNnc3RyICJSZXZpc2pvbnN1dHRyeWtrIGVyIHRvbXQuIgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6NTMxCittc2dpZCAiVXBkYXRlZCIKK21zZ3N0ciAiT3BwZGF0ZXJ0IgorCisjOiBsaWIvY2hvb3NlX3Jldi50Y2w6NTU5Cittc2dpZCAiVVJMIgorbXNnc3RyICJVUkwiCisKKyM6IGxpYi9jb21taXQudGNsOjkKK21zZ2lkICIiCisiVGhlcmUgaXMgbm90aGluZyB0byBhbWVuZC5cbiIKKyJcbiIKKyJZb3UgYXJlIGFib3V0IHRvIGNyZWF0ZSB0aGUgaW5pdGlhbCBjb21taXQuICBUaGVyZSBpcyBubyBjb21taXQgYmVmb3JlIHRoaXMgIgorInRvIGFtZW5kLlxuIgorbXNnc3RyICIiCisiRGV0IGVyIGluZ2VudGluZyDDpSBsZWdnZSB0aWwuXG4iCisiXG4iCisiRHUgZXIgaSBmZXJkIG1lZCDDpSBsYWdlIGRlbiBpbml0c2lhbGlzZXJlbmRlIHJldmlzam9uZW4uIERldCBlciBpbmdlbiAiCisidGlkbGlnZXJlIHJldmlzam9uZXIgw6UgdGlsZsO4eWUuXG4iCisKKyM6IGxpYi9jb21taXQudGNsOjE4Cittc2dpZCAiIgorIkNhbm5vdCBhbWVuZCB3aGlsZSBtZXJnaW5nLlxuIgorIlxuIgorIllvdSBhcmUgY3VycmVudGx5IGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSB0aGF0IGhhcyBub3QgYmVlbiBmdWxseSAiCisiY29tcGxldGVkLiAgWW91IGNhbm5vdCBhbWVuZCB0aGUgcHJpb3IgY29tbWl0IHVubGVzcyB5b3UgZmlyc3QgYWJvcnQgdGhlICIKKyJjdXJyZW50IG1lcmdlIGFjdGl2aXR5LlxuIgorbXNnc3RyICIiCisiS2FuIGlra2UgdGlsZsO4eWUgdW5kZXIgc2FtbWVuc2zDpWluZy5cbiIKKyJcbiIKKyJEdSBlciBmb3Igw7h5ZWJsaWtrZXQgdW5kZXIgZW4gcMOlZ8OlZW5kZSBzYW1tZW5zbMOlaW5nIHNvbSBpa2tlIGVyIGZ1bGxmw7hydC4gRHUgIgorImthbiBpa2tlIHRpbGbDuHllIGVuIHRpZGxpZ2VyZSByZXZpc2pvbiBtZWQgbWluZHJlIGR1IGbDuHJzdCBhdmJyeXRlciBkZW5uZSAiCisic2FtbWVuc2zDpWluZ2VuLlxuIgorCisjOiBsaWIvY29tbWl0LnRjbDo0OQorbXNnaWQgIkVycm9yIGxvYWRpbmcgY29tbWl0IGRhdGEgZm9yIGFtZW5kOiIKK21zZ3N0ciAiRmVpbCB2ZWQgaW5uaGVudGluZyBhdiByZXZpc2pvbnNkYXRhIGZvciB0aWxmw7h5aW5nOiIKKworIzogbGliL2NvbW1pdC50Y2w6NzYKK21zZ2lkICJVbmFibGUgdG8gb2J0YWluIHlvdXIgaWRlbnRpdHk6IgorbXNnc3RyICJLdW5uZSBpa2tlIGF2Z2rDuHJlIGRpbiBpZGVudGl0ZXQ6IgorCisjOiBsaWIvY29tbWl0LnRjbDo4MQorbXNnaWQgIkludmFsaWQgR0lUX0NPTU1JVFRFUl9JREVOVDoiCittc2dzdHIgIlVneWxkaWcgR0lUX0NPTU1JVFRFUl9JREVOVDoiCisKKyM6IGxpYi9jb21taXQudGNsOjEzMworbXNnaWQgIiIKKyJMYXN0IHNjYW5uZWQgc3RhdGUgZG9lcyBub3QgbWF0Y2ggcmVwb3NpdG9yeSBzdGF0ZS5cbiIKKyJcbiIKKyJBbm90aGVyIEdpdCBwcm9ncmFtIGhhcyBtb2RpZmllZCB0aGlzIHJlcG9zaXRvcnkgc2luY2UgdGhlIGxhc3Qgc2Nhbi4gIEEgIgorInJlc2NhbiBtdXN0IGJlIHBlcmZvcm1lZCBiZWZvcmUgYW5vdGhlciBjb21taXQgY2FuIGJlIGNyZWF0ZWQuXG4iCisiXG4iCisiVGhlIHJlc2NhbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCBub3cuXG4iCittc2dzdHIgIiIKKworIzogbGliL2NvbW1pdC50Y2w6MTU2CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlVubWVyZ2VkIGZpbGVzIGNhbm5vdCBiZSBjb21taXR0ZWQuXG4iCisiXG4iCisiRmlsZSAlcyBoYXMgbWVyZ2UgY29uZmxpY3RzLiAgWW91IG11c3QgcmVzb2x2ZSB0aGVtIGFuZCBzdGFnZSB0aGUgZmlsZSAiCisiYmVmb3JlIGNvbW1pdHRpbmcuXG4iCittc2dzdHIgIiIKKworIzogbGliL2NvbW1pdC50Y2w6MTY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlVua25vd24gZmlsZSBzdGF0ZSAlcyBkZXRlY3RlZC5cbiIKKyJcbiIKKyJGaWxlICVzIGNhbm5vdCBiZSBjb21taXR0ZWQgYnkgdGhpcyBwcm9ncmFtLlxuIgorbXNnc3RyICIiCisiVWtqZW50IGZpbHN0YXR1cyAlcyBlciBmdW5uZXQuXG4iCisiXG4iCisiRmlsZW4gJXMga2FuIGlra2Ugc2pla2tlcyBpbm4gYXYgZGV0dGUgcHJvZ3JhbW1ldC5cbiIKKworIzogbGliL2NvbW1pdC50Y2w6MTcyCittc2dpZCAiIgorIk5vIGNoYW5nZXMgdG8gY29tbWl0LlxuIgorIlxuIgorIllvdSBtdXN0IHN0YWdlIGF0IGxlYXN0IDEgZmlsZSBiZWZvcmUgeW91IGNhbiBjb21taXQuXG4iCittc2dzdHIgIiIKKyJJbmdlbiBlbmRyaW5nZXIgw6Ugc2pla2tlIGlubi5cbiIKKyJcbiIKKyJEdSBtw6Uga8O4ZSBtaW5zdCBlbiBmaWwgZsO4ciBkdSBrYW4gc2pla2tlIGlubiBub2UuXG4iCisKKyM6IGxpYi9jb21taXQudGNsOjE4NworbXNnaWQgIiIKKyJQbGVhc2Ugc3VwcGx5IGEgY29tbWl0IG1lc3NhZ2UuXG4iCisiXG4iCisiQSBnb29kIGNvbW1pdCBtZXNzYWdlIGhhcyB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiIKKyJcbiIKKyItIEZpcnN0IGxpbmU6IERlc2NyaWJlIGluIG9uZSBzZW50ZW5jZSB3aGF0IHlvdSBkaWQuXG4iCisiLSBTZWNvbmQgbGluZTogQmxhbmtcbiIKKyItIFJlbWFpbmluZyBsaW5lczogRGVzY3JpYmUgd2h5IHRoaXMgY2hhbmdlIGlzIGdvb2QuXG4iCittc2dzdHIgIiIKKyJWZW5ubGlnc3QgYW5naSBlbiByZXZpc2pvbnNtZWxkaW5nLlxuIgorIlxuIgorIkVuIGdvZCBtZWxkaW5nIGhhciBmw7hsZ2VuZGUgZm9ybWF0OlxuIgorIlxuIgorIi0gRsO4cnN0ZSBsaW5qZTogRW4gYmVza3JpdmVsc2UgYXYgaHZhIGR1IGhhciBnam9ydCBpIMOpbiBzZXRuaW5nLlxuIgorIi0gQW5kcmUgbGluamU6IEJsYW5rXG4iCisiLSBSZXN0ZXJlbmRlIGxpbmplcjogRm9ya2xhciBodm9yZm9yIGRlbm5lIGVuZHJpbmdlbiBlciBicmEuXG4iCisKKyM6IGxpYi9jb21taXQudGNsOjIxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIndhcm5pbmc6IFRjbCBkb2VzIG5vdCBzdXBwb3J0IGVuY29kaW5nICclcycuIgorbXNnc3RyICJhZHZhcnNlbDogVGNsIHN0w7h0dGVyIGlra2UgZGVubmUgdGVnbmtvZGluZ2VuICclcycuIgorCisjOiBsaWIvY29tbWl0LnRjbDoyMjcKK21zZ2lkICJDYWxsaW5nIHByZS1jb21taXQgaG9vay4uLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY29tbWl0LnRjbDoyNDIKK21zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY29tbWl0LnRjbDoyNjUKK21zZ2lkICJDYWxsaW5nIGNvbW1pdC1tc2cgaG9vay4uLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY29tbWl0LnRjbDoyODAKK21zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgY29tbWl0LW1zZyBob29rLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvY29tbWl0LnRjbDoyOTMKK21zZ2lkICJDb21taXR0aW5nIGNoYW5nZXMuLi4iCittc2dzdHIgIlNqZWtrZXIgaW5uIGVuZHJpbmdlci4uLiIKKworIzogbGliL2NvbW1pdC50Y2w6MzA5Cittc2dpZCAid3JpdGUtdHJlZSBmYWlsZWQ6IgorbXNnc3RyICJTa3JpdmluZyB0aWwgdHJlIGZlaWxldDoiCisKKyM6IGxpYi9jb21taXQudGNsOjMxMCBsaWIvY29tbWl0LnRjbDozNTQgbGliL2NvbW1pdC50Y2w6Mzc0Cittc2dpZCAiQ29tbWl0IGZhaWxlZC4iCittc2dzdHIgIklubnNqZWtraW5nIGZlaWxldC4iCisKKyM6IGxpYi9jb21taXQudGNsOjMyNworIywgdGNsLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQiCittc2dzdHIgIlJldmlzam9uICVzIHNlciB1dCB0aWwgw6UgdsOmcmUga29ycnVwdCIKKworIzogbGliL2NvbW1pdC50Y2w6MzMyCittc2dpZCAiIgorIk5vIGNoYW5nZXMgdG8gY29tbWl0LlxuIgorIlxuIgorIk5vIGZpbGVzIHdlcmUgbW9kaWZpZWQgYnkgdGhpcyBjb21taXQgYW5kIGl0IHdhcyBub3QgYSBtZXJnZSBjb21taXQuXG4iCisiXG4iCisiQSByZXNjYW4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHN0YXJ0ZWQgbm93LlxuIgorbXNnc3RyICIiCisiSW5nZW4gZW5kcmluZ2VyIHRpbCBpbm5zamVra2luZy5cbiIKKyJcbiIKKyJJbmdlbiBmaWxlciBibGUgZW5kcmV0IGF2IGRlbm5lIHJldmlzam9uZW4sIG9nIGRldCB2YXIgaWtrZSBlbiByZXZpc2pvbiBmcmEgIgorImVuIHNhbW1lbnNsw6VpbmcuXG4iCisiXG4iCisiRXQgbnl0dCBzw7hrIHZpbCBibGkgc3RhcnRldCBhdXRvbWF0aXNrLlxuIgorCisjOiBsaWIvY29tbWl0LnRjbDozMzkKK21zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCittc2dzdHIgIkluZ2VuIGVuZHJpbmdlciB0aWwgaW5uc2Vra2luZy4iCisKKyM6IGxpYi9jb21taXQudGNsOjM1MworbXNnaWQgImNvbW1pdC10cmVlIGZhaWxlZDoiCittc2dzdHIgImNvbW1pdC10cmVlIGZlaWxldDoiCisKKyM6IGxpYi9jb21taXQudGNsOjM3MworbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKK21zZ3N0ciAidXBkYXRlLXJlZiBmZWlsZXQ6IgorCisjOiBsaWIvY29tbWl0LnRjbDo0NjEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJDcmVhdGVkIGNvbW1pdCAlczogJXMiCittc2dzdHIgIk9wcHJldHRldCBpbm5zamVra2luZyAlczogJXMiCisKKyM6IGxpYi9jb25zb2xlLnRjbDo1OQorbXNnaWQgIldvcmtpbmcuLi4gcGxlYXNlIHdhaXQuLi4iCittc2dzdHIgIkpvYmJlci4uLiBWZW5ubGlnc3QgdmVudC4uLiIKKworIzogbGliL2NvbnNvbGUudGNsOjE4NgorbXNnaWQgIlN1Y2Nlc3MiCittc2dzdHIgIlN1a3Nlc3MiCisKKyM6IGxpYi9jb25zb2xlLnRjbDoyMDAKK21zZ2lkICJFcnJvcjogQ29tbWFuZCBGYWlsZWQiCittc2dzdHIgIkZlaWw6IEtvbW1hbmRvZW4gZmVpbGV0IgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjQzCittc2dpZCAiTnVtYmVyIG9mIGxvb3NlIG9iamVjdHMiCittc2dzdHIgIkFudGFsbCBsw7hzZSBvYmpla3RlciIKKworIzogbGliL2RhdGFiYXNlLnRjbDo0NAorbXNnaWQgIkRpc2sgc3BhY2UgdXNlZCBieSBsb29zZSBvYmplY3RzIgorbXNnc3RyICJEaXNrcGxhc3MgYnJ1a3QgYXYgbMO4c2Ugb2JqZWt0ZXIiCisKKyM6IGxpYi9kYXRhYmFzZS50Y2w6NDUKK21zZ2lkICJOdW1iZXIgb2YgcGFja2VkIG9iamVjdHMiCittc2dzdHIgIkFudGFsbCBwYWtrZWRlIG9iamVrdGVyIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjQ2Cittc2dpZCAiTnVtYmVyIG9mIHBhY2tzIgorbXNnc3RyICJBbnRhbGwgcGFra2VyIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjQ3Cittc2dpZCAiRGlzayBzcGFjZSB1c2VkIGJ5IHBhY2tlZCBvYmplY3RzIgorbXNnc3RyICJEaXNrcGxhc3MgYnJ1a3QgYXYgcGFra2VkZSBvYmpla3RlciIKKworIzogbGliL2RhdGFiYXNlLnRjbDo0OAorbXNnaWQgIlBhY2tlZCBvYmplY3RzIHdhaXRpbmcgZm9yIHBydW5pbmciCittc2dzdHIgIlBha2tlZGUgb2JqZWt0ZXIgc29tIGF2dmVudGVyIGZqZXJuaW5nIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjQ5Cittc2dpZCAiR2FyYmFnZSBmaWxlcyIKK21zZ3N0ciAiQXZmYWxsc2ZpbGVyIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjcyCittc2dpZCAiQ29tcHJlc3NpbmcgdGhlIG9iamVjdCBkYXRhYmFzZSIKK21zZ3N0ciAiS29tcHJpbWVyZXIgb2JqZWt0ZGF0YWJhc2VuIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjgzCittc2dpZCAiVmVyaWZ5aW5nIHRoZSBvYmplY3QgZGF0YWJhc2Ugd2l0aCBmc2NrLW9iamVjdHMiCittc2dzdHIgIlZlcmlmaXNlcmVyIG9iamVrdGRhdGFiYXNlbiBtZWQgZnNjay1vYmplY3RzIgorCisjOiBsaWIvZGF0YWJhc2UudGNsOjEwOAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIHJlcG9zaXRvcnkgY3VycmVudGx5IGhhcyBhcHByb3hpbWF0ZWx5ICVpIGxvb3NlIG9iamVjdHMuXG4iCisiXG4iCisiVG8gbWFpbnRhaW4gb3B0aW1hbCBwZXJmb3JtYW5jZSBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IHlvdSBjb21wcmVzcyAiCisidGhlIGRhdGFiYXNlIHdoZW4gbW9yZSB0aGFuICVpIGxvb3NlIG9iamVjdHMgZXhpc3QuXG4iCisiXG4iCisiQ29tcHJlc3MgdGhlIGRhdGFiYXNlIG5vdz8iCittc2dzdHIgIiIKKyJEZXR0ZSBhcmtpdmV0IGlubmVob2xkZXIgb210cmVudCAlaSAnbMO4c2UnIG9iamVrdGVyLlxuIgorIlxuIgorIkZvciDDpSBzaWtyZSBlbiBvcHRpbWFsIHl0ZWxzZSBlciBkZXQgc3Rlcmt0IGFuYmVmYWx0IGF0IGR1IGtvbXByaW1lcmVyICIKKyJkYXRhYmFzZW4gbsOlciBkZXQgZXIgZmxlcmUgZW5uICVpICdsw7hzZScgb2JqZWt0ZXIgaSBkZW4uXG4iCisiXG4iCisiS29tcHJpbWVyZSBkYXRhYmFzZW4gbsOlPyIKKworIzogbGliL2RhdGUudGNsOjI1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBkYXRlIGZyb20gR2l0OiAlcyIKK21zZ3N0ciAiVWd5bGRpZyBkYXRvIGZyYSBHaXQ6ICVzIgorCisjOiBsaWIvZGlmZi50Y2w6NTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiTm8gZGlmZmVyZW5jZXMgZGV0ZWN0ZWQuXG4iCisiXG4iCisiJXMgaGFzIG5vIGNoYW5nZXMuXG4iCisiXG4iCisiVGhlIG1vZGlmaWNhdGlvbiBkYXRlIG9mIHRoaXMgZmlsZSB3YXMgdXBkYXRlZCBieSBhbm90aGVyIGFwcGxpY2F0aW9uLCBidXQgIgorInRoZSBjb250ZW50IHdpdGhpbiB0aGUgZmlsZSB3YXMgbm90IGNoYW5nZWQuXG4iCisiXG4iCisiQSByZXNjYW4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHN0YXJ0ZWQgdG8gZmluZCBvdGhlciBmaWxlcyB3aGljaCBtYXkgaGF2ZSAiCisidGhlIHNhbWUgc3RhdGUuIgorbXNnc3RyICIiCisiSW5nZW4gZm9yYW5kcmluZ2VyIGZ1bm5ldC5cbiIKKyJcbiIKKyIlcyBoYXIgaW5nZW4gZW5kcmluZ2VyLlxuIgorIlxuIgorIlRpZHNzdGVtcGVsZXQgZm9yIGVuZHJpbmcgcMOlIGRlbm5lIGZpbGVuIGJsZSBvcHBkYXRlcnQgYXYgZW4gYW5uZW4gIgorIiBhcHBsaWthc2pvbiwgbWVuIGlubmhvbGRldCBlciB1ZW5kcmV0LlxuIgorIlxuIgorIkVuIGdqZW5ub21zw7hraW5nIHZpbCBuw6Ugc3RhcnRlIGF1dG9tYXRpc2sgZm9yIMOlIHNlIG9tIGFuZHJlIGZpbGVyIGhhciAiCisic3RhdHVzLiIKKworIzogbGliL2RpZmYudGNsOjk5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTG9hZGluZyBkaWZmIG9mICVzLi4uIgorbXNnc3RyICJMYXN0ZXIgaW5uIGZvcnNramVsbGVuZSBhdiAlcy4uLiIKKworIzogbGliL2RpZmYudGNsOjEyMAorbXNnaWQgIiIKKyJMT0NBTDogZGVsZXRlZFxuIgorIlJFTU9URTpcbiIKK21zZ3N0ciAiTE9LQUw6IHNsZXR0ZXRcbiIKKyJGSkVSTjpcbiIKKworIzogbGliL2RpZmYudGNsOjEyNQorbXNnaWQgIiIKKyJSRU1PVEU6IGRlbGV0ZWRcbiIKKyJMT0NBTDpcbiIKK21zZ3N0ciAiRkpFUk46IHNsZXR0ZXRcbiIKKyJMT0tBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzMgorbXNnaWQgIkxPQ0FMOlxuIgorbXNnc3RyICJMT0tBTDpcbiIKKworIzogbGliL2RpZmYudGNsOjEzNQorbXNnaWQgIlJFTU9URTpcbiIKK21zZ3N0ciAiRkpFUk46XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxOTcgbGliL2RpZmYudGNsOjI5NgorIywgdGNsLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5ICVzIgorbXNnc3RyICJLYW4gaWtrZSB2aXNlICVzIgorCisjOiBsaWIvZGlmZi50Y2w6MTk4Cittc2dpZCAiRXJyb3IgbG9hZGluZyBmaWxlOiIKK21zZ3N0ciAiRmVpbCB2ZWQgbGVzaW5nIGF2IGZpbDogJXMiCisKKyM6IGxpYi9kaWZmLnRjbDoyMDUKK21zZ2lkICJHaXQgUmVwb3NpdG9yeSAoc3VicHJvamVjdCkiCittc2dzdHIgIkdpdC1hcmtpdiAodW5kZXJwcm9zamVrdCkiCisKKyM6IGxpYi9kaWZmLnRjbDoyMTcKK21zZ2lkICIqIEJpbmFyeSBmaWxlIChub3Qgc2hvd2luZyBjb250ZW50KS4iCittc2dzdHIgIiogQmluw6ZyZmlsICh2aXNlciBpa2tlIGlubmhvbGQpIgorCisjOiBsaWIvZGlmZi50Y2w6MjIyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIiogVW50cmFja2VkIGZpbGUgaXMgJWQgYnl0ZXMuXG4iCisiKiBTaG93aW5nIG9ubHkgZmlyc3QgJWQgYnl0ZXMuXG4iCittc2dzdHIgIiIKKyIqIFVzcG9yZXQgZmlsIGVyICVkIGJ5dGVzLlxuIgorIiogVmlzZXIgYmFyZSAlZCBmw7hyc3RlIGJ5dGVzLlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MjI4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiogVW50cmFja2VkIGZpbGUgY2xpcHBlZCBoZXJlIGJ5ICVzLlxuIgorIiogVG8gc2VlIHRoZSBlbnRpcmUgZmlsZSwgdXNlIGFuIGV4dGVybmFsIGVkaXRvci5cbiIKK21zZ3N0ciAiIgorIlxuIgorIiogVXNwb3JlZGUgZmlsZXIga2xpcHBldCBoZXIgYXYgJXMuXG4iCisiKiBGb3Igw6Ugc2UgaGVsZSBmaWxlbiwgYnJ1ayBldCBla3N0ZXJudCByZWRpZ2VyaW5nc3Zlcmt0w7h5LlxuIgorCisjOiBsaWIvZGlmZi50Y2w6NDM2Cittc2dpZCAiRmFpbGVkIHRvIHVuc3RhZ2Ugc2VsZWN0ZWQgaHVuay4iCittc2dzdHIgIkt1bm5lIGlra2UgZmplcm5lIGRlbiB2YWxndGUgZGVsZW4gZnJhIGlubnNqZWtraW5nc2vDuGVuLiIKKworIzogbGliL2RpZmYudGNsOjQ0MworbXNnaWQgIkZhaWxlZCB0byBzdGFnZSBzZWxlY3RlZCBodW5rLiIKK21zZ3N0ciAiS3VubmUgaWtrZSBsZWdnZSB0aWwgZGVuIHZhbGd0ZSBkZWxlbiBpIGlubnNqZWtraW5nc2vDuGVuLiIKKworIzogbGliL2RpZmYudGNsOjUwOQorbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGxpbmUuIgorbXNnc3RyICJLdW5uZSBpa2tlIGZqZXJuZSBkZW4gdmFsZ3RlIGxpbmplbiBmcmEgaW5uc2pla2tpbmdza8O4ZW4uIgorCisjOiBsaWIvZGlmZi50Y2w6NTE3Cittc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgorbXNnc3RyICJLdW5uZSBpa2tlIGxlZ2dlIHRpbCBkZW4gdmFsZ3RlIGxpbmplbiBpIGlubnNqZWtraW5nc2vDuGVuLiIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NDMKK21zZ2lkICJEZWZhdWx0IgorbXNnc3RyICJTdGFuZGFyZCIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NDgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTeXN0ZW0gKCVzKSIKK21zZ3N0ciAiU3lzdGVtZXRzICglcykiCisKKyM6IGxpYi9lbmNvZGluZy50Y2w6NDU5IGxpYi9lbmNvZGluZy50Y2w6NDY1Cittc2dpZCAiT3RoZXIiCittc2dzdHIgIkFuZHJlIgorCisjOiBsaWIvZXJyb3IudGNsOjIwIGxpYi9lcnJvci50Y2w6MTE0Cittc2dpZCAiZXJyb3IiCittc2dzdHIgImZlaWwiCisKKyM6IGxpYi9lcnJvci50Y2w6MzYKK21zZ2lkICJ3YXJuaW5nIgorbXNnc3RyICJhZHZhcnNlbCIKKworIzogbGliL2Vycm9yLnRjbDo5NAorbXNnaWQgIllvdSBtdXN0IGNvcnJlY3QgdGhlIGFib3ZlIGVycm9ycyBiZWZvcmUgY29tbWl0dGluZy4iCittc2dzdHIgIkR1IG3DpSByZXR0ZSBkZSBvdmVuc3TDpWVuZGUgZmVpbGVuZSBmw7hyIGlubnNqZWtraW5nLiIKKworIzogbGliL2luZGV4LnRjbDo2Cittc2dpZCAiVW5hYmxlIHRvIHVubG9jayB0aGUgaW5kZXguIgorbXNnc3RyICJLdW5uZSBpa2tlIGzDpXNlIG9wcCBpbmRleGVuLiIKKworIzogbGliL2luZGV4LnRjbDoxNQorbXNnaWQgIkluZGV4IEVycm9yIgorbXNnc3RyICJGZWlsIHDDpSBpbmRleCIKKworIzogbGliL2luZGV4LnRjbDoyMQorbXNnaWQgIiIKKyJVcGRhdGluZyB0aGUgR2l0IGluZGV4IGZhaWxlZC4gIEEgcmVzY2FuIHdpbGwgYmUgYXV0b21hdGljYWxseSBzdGFydGVkIHRvICIKKyJyZXN5bmNocm9uaXplIGdpdC1ndWkuIgorbXNnc3RyICIiCisiT3BwZGF0ZXJpbmcgYXYgR2l0J3MgaW5kZXggbWlzbHlrdGVzLiBFdCBueXR0IHPDuGsgdmlsIGJsaSBzdGFydGV0IGZvciDDpSAiCisicmVzeW5rcm9uaXNlcmUgZ2l0LWd1aS4iCisKKyM6IGxpYi9pbmRleC50Y2w6MjcKK21zZ2lkICJDb250aW51ZSIKK21zZ3N0ciAiRm9ydHNldHQiCisKKyM6IGxpYi9pbmRleC50Y2w6MzEKK21zZ2lkICJVbmxvY2sgSW5kZXgiCittc2dzdHIgIkzDpXMgb3BwIGluZGV4IgorCisjOiBsaWIvaW5kZXgudGNsOjI4NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlVuc3RhZ2luZyAlcyBmcm9tIGNvbW1pdCIKK21zZ3N0ciAiRmplcm5lciAlcyBmcmEgaW5uc2pla2tpbmdza8O4ZW4iCisKKyM6IGxpYi9pbmRleC50Y2w6MzI2Cittc2dpZCAiUmVhZHkgdG8gY29tbWl0LiIKK21zZ3N0ciAiS2xhciB0aWwgaW5uc2pla2tpbmcuIgorCisjOiBsaWIvaW5kZXgudGNsOjMzOQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyAlcyIKK21zZ3N0ciAiTGVnZ2VyIHRpbCAlcyIKKworIzogbGliL2luZGV4LnRjbDozOTYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiBmaWxlICVzPyIKK21zZ3N0ciAiUmV2ZXJ0ZXIgZW5kcmluZ2VuZSBpIGZpbGVuICVzPyIKKworIzogbGliL2luZGV4LnRjbDozOTgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSZXZlcnQgY2hhbmdlcyBpbiB0aGVzZSAlaSBmaWxlcz8iCittc2dzdHIgIlJldmVydGVyIGVuZHJpbmdlbmUgaSBkaXNzZSAlaSBmaWxlbmU/IgorCisjOiBsaWIvaW5kZXgudGNsOjQwNgorbXNnaWQgIkFueSB1bnN0YWdlZCBjaGFuZ2VzIHdpbGwgYmUgcGVybWFuZW50bHkgbG9zdCBieSB0aGUgcmV2ZXJ0LiIKK21zZ3N0ciAiRW5kcmluZ2VyIHNvbSBpa2tlIGxpZ2dlciBpIGlubnNqZWtraW5nc2vDuGVuIHZpbCBibGkgdGFwdCBhdiBkZW5uZSAiCisicmV2ZXJ0ZXJpbmdlbiIKKworIzogbGliL2luZGV4LnRjbDo0MDkKK21zZ2lkICJEbyBOb3RoaW5nIgorbXNnc3RyICJJa2tlIGdqw7hyIG5vZSIKKworIzogbGliL2luZGV4LnRjbDo0MjcKK21zZ2lkICJSZXZlcnRpbmcgc2VsZWN0ZWQgZmlsZXMiCittc2dzdHIgIlJldmVydGVyZXIgdmFsZ3RlIGZpbGVyIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiUmV2ZXJ0ZXJlciAlcyIKKworIzogbGliL21lcmdlLnRjbDoxMworbXNnaWQgIiIKKyJDYW5ub3QgbWVyZ2Ugd2hpbGUgYW1lbmRpbmcuXG4iCisiXG4iCisiWW91IG11c3QgZmluaXNoIGFtZW5kaW5nIHRoaXMgY29tbWl0IGJlZm9yZSBzdGFydGluZyBhbnkgdHlwZSBvZiBtZXJnZS5cbiIKK21zZ3N0ciAiIgorIkt1bm5lIGlra2Ugc2zDpSBzYW1tZW4gdW5kZXIgdXR2aWRlbHNlLlxuIgorIlxuIgorIkR1IG3DpSBmw7hyc3QgZnVsbGbDuHJlIHV0dmlkZWxzZW4gYXYgZGVubmUgcmV2aXNqb25lbiBmw7hyIGR1IGthbiBzdGFydGUgZW4gIgorInNhbW1lbnNsw6VpbmcuXG4iCisKKyM6IGxpYi9tZXJnZS50Y2w6MjcKK21zZ2lkICIiCisiTGFzdCBzY2FubmVkIHN0YXRlIGRvZXMgbm90IG1hdGNoIHJlcG9zaXRvcnkgc3RhdGUuXG4iCisiXG4iCisiQW5vdGhlciBHaXQgcHJvZ3JhbSBoYXMgbW9kaWZpZWQgdGhpcyByZXBvc2l0b3J5IHNpbmNlIHRoZSBsYXN0IHNjYW4uICBBICIKKyJyZXNjYW4gbXVzdCBiZSBwZXJmb3JtZWQgYmVmb3JlIGEgbWVyZ2UgY2FuIGJlIHBlcmZvcm1lZC5cbiIKKyJcbiIKKyJUaGUgcmVzY2FuIHdpbGwgYmUgYXV0b21hdGljYWxseSBzdGFydGVkIG5vdy5cbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvbWVyZ2UudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbmZsaWN0ZWQgbWVyZ2UuXG4iCisiXG4iCisiRmlsZSAlcyBoYXMgbWVyZ2UgY29uZmxpY3RzLlxuIgorIlxuIgorIllvdSBtdXN0IHJlc29sdmUgdGhlbSwgc3RhZ2UgdGhlIGZpbGUsIGFuZCBjb21taXQgdG8gY29tcGxldGUgdGhlIGN1cnJlbnQgIgorIm1lcmdlLiAgT25seSB0aGVuIGNhbiB5b3UgYmVnaW4gYW5vdGhlciBtZXJnZS5cbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvbWVyZ2UudGNsOjU1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoYW5nZS5cbiIKKyJcbiIKKyJGaWxlICVzIGlzIG1vZGlmaWVkLlxuIgorIlxuIgorIllvdSBzaG91bGQgY29tcGxldGUgdGhlIGN1cnJlbnQgY29tbWl0IGJlZm9yZSBzdGFydGluZyBhIG1lcmdlLiAgRG9pbmcgc28gIgorIndpbGwgaGVscCB5b3UgYWJvcnQgYSBmYWlsZWQgbWVyZ2UsIHNob3VsZCB0aGUgbmVlZCBhcmlzZS5cbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvbWVyZ2UudGNsOjEwNworIywgdGNsLWZvcm1hdAorbXNnaWQgIiVzIG9mICVzIgorbXNnc3RyICIlcyBhdiAlcyIKKworIzogbGliL21lcmdlLnRjbDoxMjAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJNZXJnaW5nICVzIGFuZCAlcy4uLiIKK21zZ3N0ciAiU2zDpXIgc2FtbWVuICVzIG9nICVzIgorCisjOiBsaWIvbWVyZ2UudGNsOjEzMQorbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgorbXNnc3RyICJWZWxseWtrZXQgc2FtbWVuc2zDpWluZyBmdWxsZsO4cnQuIgorCisjOiBsaWIvbWVyZ2UudGNsOjEzMworbXNnaWQgIk1lcmdlIGZhaWxlZC4gIENvbmZsaWN0IHJlc29sdXRpb24gaXMgcmVxdWlyZWQuIgorbXNnc3RyICJTYW1tZW5zbMOlaW5nIGZlaWxldC4gSMOlbmR0ZXJpbmcgYXYga29uZmxpa3RlbiBrcmV2ZXMuIgorCisjOiBsaWIvbWVyZ2UudGNsOjE1OAorIywgdGNsLWZvcm1hdAorbXNnaWQgIk1lcmdlIEludG8gJXMiCittc2dzdHIgIlNsw6Ugc2FtbWVuIGlubiBpICVzIgorCisjOiBsaWIvbWVyZ2UudGNsOjE3NworbXNnaWQgIlJldmlzaW9uIFRvIE1lcmdlIgorbXNnc3RyICJSZXZpc2pvbiB0aWwgc2FtbWVuc2zDpWluZyIKKworIzogbGliL21lcmdlLnRjbDoyMTIKK21zZ2lkICIiCisiQ2Fubm90IGFib3J0IHdoaWxlIGFtZW5kaW5nLlxuIgorIlxuIgorIllvdSBtdXN0IGZpbmlzaCBhbWVuZGluZyB0aGlzIGNvbW1pdC5cbiIKK21zZ3N0ciAiIgorIkthbiBpa2tlIGF2YnJ5dGUgdW5kZXIgdXR2aWRlbHNlIGF2IHJldmlzam9uLlxuIgorIlxuIgorIkR1IG3DpSBmdWxsZsO4cmUgdXR2aWRlbHNlbiBhdiBkZW5uZSByZXZpc2pvbmVuLlxuIgorCisjOiBsaWIvbWVyZ2UudGNsOjIyMgorbXNnaWQgIiIKKyJBYm9ydCBtZXJnZT9cbiIKKyJcbiIKKyJBYm9ydGluZyB0aGUgY3VycmVudCBtZXJnZSB3aWxsIGNhdXNlICpBTEwqIHVuY29tbWl0dGVkIGNoYW5nZXMgdG8gYmUgbG9zdC5cbiIKKyJcbiIKKyJDb250aW51ZSB3aXRoIGFib3J0aW5nIHRoZSBjdXJyZW50IG1lcmdlPyIKK21zZ3N0ciAiIgorIkF2YnJ5dCBzYW1tZW5zbMOlaW5nP1xuIgorIlxuIgorIkF2YnJ5dGluZyBhdiBww6Vnw6VlbmRlIHNhbW1lbnNsw6VpbmcgdmlsIGbDuHJlIHRpbCBhdCAqYWxsZSogZW5kcmluZ2VyIHNvbSBpa2tlICIKKyIgZXIgc2pla2tldCBpbm4sIHZpbCBnw6UgdGFwdC5cbiIKKyJcbiIKKyJGb3J0c2V0dGUgbWVkIMOlIGF2YnJ5dGUgZGVuIHDDpWfDpWVuZGUgc2FtbWVuc2zDpWluZ2VuPyIKKworIzogbGliL21lcmdlLnRjbDoyMjgKK21zZ2lkICIiCisiUmVzZXQgY2hhbmdlcz9cbiIKKyJcbiIKKyJSZXNldHRpbmcgdGhlIGNoYW5nZXMgd2lsbCBjYXVzZSAqQUxMKiB1bmNvbW1pdHRlZCBjaGFuZ2VzIHRvIGJlIGxvc3QuXG4iCisiXG4iCisiQ29udGludWUgd2l0aCByZXNldHRpbmcgdGhlIGN1cnJlbnQgY2hhbmdlcz8iCittc2dzdHIgIiIKKyJOdWxsc3RpbGwgZW5kcmluZ2VyP1xuIgorIlxuIgorIk51bGxzdGlsbGluZyBhdiBlbmRyaW5nZXIgdmlsIGbDuHJlIHRpbCBhdCAqYWxsZSogZW5kcmluZ2VyIHNvbSBpa2tlIGVyICIKKyJzamVra2V0IGlubiBnw6VyIHRhcHQuXG4iCisiXG4iCisiRm9ydHNldHRlIG1lZCBudWxsc3RpbGxpbmcgYXYgZW5kcmluZ2VyPyIKKworIzogbGliL21lcmdlLnRjbDoyMzkKK21zZ2lkICJBYm9ydGluZyIKK21zZ3N0ciAiQXZicnl0ZXIiCisKKyM6IGxpYi9tZXJnZS50Y2w6MjM5Cittc2dpZCAiZmlsZXMgcmVzZXQiCittc2dzdHIgImZpbGVyIHRpbGJha2VzdGlsdCIKKworIzogbGliL21lcmdlLnRjbDoyNjcKK21zZ2lkICJBYm9ydCBmYWlsZWQuIgorbXNnc3RyICJBdmJyeXRpbmcgZmVpbGV0LiIKKworIzogbGliL21lcmdlLnRjbDoyNjkKK21zZ2lkICJBYm9ydCBjb21wbGV0ZWQuICBSZWFkeS4iCittc2dzdHIgIkF2YnJ5dGluZyBmdWxsZsO4cnQuIEtsYXIuIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo4Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgYmFzZSB2ZXJzaW9uPyIKK21zZ3N0ciAiVHZpbmcgaMOlbmR0ZXJpbmcgdGlsIG9wcHJpbm5lbGlnIHZlcnNqb24/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo5Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGlzIGJyYW5jaD8iCittc2dzdHIgIlR2aW5nIGjDpW5kdGVyaW5nIGkgZGVubmUgZ3JlbmVuPyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTAKK21zZ2lkICJGb3JjZSByZXNvbHV0aW9uIHRvIHRoZSBvdGhlciBicmFuY2g/IgorbXNnc3RyICJUdmluZyBow6VuZHRlcmluZyBpIGRlbiBhbmRyZSBncmVuZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoxNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlIHRoYXQgdGhlIGRpZmYgc2hvd3Mgb25seSBjb25mbGljdGluZyBjaGFuZ2VzLlxuIgorIlxuIgorIiVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4iCisiXG4iCisiVGhpcyBvcGVyYXRpb24gY2FuIGJlIHVuZG9uZSBvbmx5IGJ5IHJlc3RhcnRpbmcgdGhlIG1lcmdlLiIKK21zZ3N0ciAiIgorIk1lcmsgZGVnIGF0IGVuZHJpbmdzdmlzbmluZ2VuIGt1biB2aXNlciBtb3RzdHJpZGVuZGUgZW5kcmluZ2VyLlxuIgorIlxuIgorIiVzIHZpbCBibGkgb3ZlcnNrcmV2ZXQuXG4iCisiXG4iCisiRGVubmUgb3BlcmFzam9uZW4ga2FuIGt1biBibGkgYW5ncmV0IHZlZCDDpSBzdGFydGUgc2FtbWVuc2zDpWluZ2VuIHDDpSBueS4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iCittc2dzdHIgIkZpbGVuICVzIHNlciB1dCB0aWwgw6UgaGEgdWzDuHN0ZSBrb25mbGlrdGVyLCBza2FsIGZpbGVuIGxpa2V2ZWwga8O4ZXM/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo2MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFkZGluZyByZXNvbHV0aW9uIGZvciAlcyIKK21zZ3N0ciAiTGVnZ2VyIHRpbCBsw7hzbmluZ2UgcMOlIGtvbmZsaWt0IGZvciAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQxCittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0NgorbXNnaWQgIkNvbmZsaWN0IGZpbGUgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIktvbmZsaWt0ZmlsIGVrc2lzdGVyZXIgaWtrZSIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTm90IGEgR1VJIG1lcmdlIHRvb2w6ICclcyciCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisiS3VubmUgaWtrZSBoZW50ZSB2ZXJzam9uZXI6XG4iCisiJXMiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM0MworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgdGhlIG1lcmdlIHRvb2w6XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKworIzogbGliL21lcmdldG9vbC50Y2w6MzQ3Cittc2dpZCAiUnVubmluZyBtZXJnZSB0b29sLi4uIgorbXNnc3RyICIiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjM3NSBsaWIvbWVyZ2V0b29sLnRjbDozODMKK21zZ2lkICJNZXJnZSB0b29sIGZhaWxlZC4iCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGdsb2JhbCBlbmNvZGluZyAnJXMnIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIiIKKworIzogbGliL29wdGlvbi50Y2w6MTE3Cittc2dpZCAiUmVzdG9yZSBEZWZhdWx0cyIKK21zZ3N0ciAiR2plbm5vcHByZXR0IHN0YW5kYXJkdmVyZGllciIKKworIzogbGliL29wdGlvbi50Y2w6MTIxCittc2dpZCAiU2F2ZSIKK21zZ3N0ciAiTGFncmUiCisKKyM6IGxpYi9vcHRpb24udGNsOjEzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiVzIFJlcG9zaXRvcnkiCittc2dzdHIgIiVzIGFya2l2IgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMzIKK21zZ2lkICJHbG9iYWwgKEFsbCBSZXBvc2l0b3JpZXMpIgorbXNnc3RyICJHbG9iYWx0IChhbGxlIGFya2l2KSIKKworIzogbGliL29wdGlvbi50Y2w6MTM4Cittc2dpZCAiVXNlciBOYW1lIgorbXNnc3RyICJOYXZuIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMzkKK21zZ2lkICJFbWFpbCBBZGRyZXNzIgorbXNnc3RyICJFcG9zdC1hZHJlc3NlIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNDEKK21zZ2lkICJTdW1tYXJpemUgTWVyZ2UgQ29tbWl0cyIKK21zZ3N0ciAiT3Bwc3VtbWVyIGlubnNqZWtraW5nZXIgZnJhIHNhbW1lbnNsw6VpbmdlciIKKworIzogbGliL29wdGlvbi50Y2w6MTQyCittc2dpZCAiTWVyZ2UgVmVyYm9zaXR5IgorbXNnc3RyICJEZXRhbGplbml2w6UgcMOlIHNhbW1lbnNsw6VpbmciCisKKyM6IGxpYi9vcHRpb24udGNsOjE0MworbXNnaWQgIlNob3cgRGlmZnN0YXQgQWZ0ZXIgTWVyZ2UiCittc2dzdHIgIlZpcyBlbmRyaW5nc3N0YXRpc3Rpa2sgZXR0ZXIgc2FtbWVuc2zDpWluZyIKKworIzogbGliL29wdGlvbi50Y2w6MTQ0Cittc2dpZCAiVXNlIE1lcmdlIFRvb2wiCittc2dzdHIgIkJydWsgc2FtbWVuc2zDpWluZ3N2ZXJrdMO4eSIKKworIzogbGliL29wdGlvbi50Y2w6MTQ2Cittc2dpZCAiVHJ1c3QgRmlsZSBNb2RpZmljYXRpb24gVGltZXN0YW1wcyIKK21zZ3N0ciAiU3RvbCBww6UgZmlsZXJzIHRpZCBmb3IgZW5kcmluZyIKKworIzogbGliL29wdGlvbi50Y2w6MTQ3Cittc2dpZCAiUHJ1bmUgVHJhY2tpbmcgQnJhbmNoZXMgRHVyaW5nIEZldGNoIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE0OAorbXNnaWQgIk1hdGNoIFRyYWNraW5nIEJyYW5jaGVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE0OQorbXNnaWQgIkJsYW1lIENvcHkgT25seSBPbiBDaGFuZ2VkIEZpbGVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MAorbXNnaWQgIk1pbmltdW0gTGV0dGVycyBUbyBCbGFtZSBDb3B5IE9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MQorbXNnaWQgIkJsYW1lIEhpc3RvcnkgQ29udGV4dCBSYWRpdXMgKGRheXMpIgorbXNnc3RyICIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1MgorbXNnaWQgIk51bWJlciBvZiBEaWZmIENvbnRleHQgTGluZXMiCittc2dzdHIgIkFudGFsbCBsaW5qZXIgc2FtbWVuaGVuZ2VuZGUgZW5kcmluZ2VyIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTMKK21zZ2lkICJDb21taXQgTWVzc2FnZSBUZXh0IFdpZHRoIgorbXNnc3RyICJUZWtzdGJyZWRkZSBmb3IgdmluZHUgdGlsIGlubnNqZWtraW5nc21lbGRpbmdlciIKKworIzogbGliL29wdGlvbi50Y2w6MTU0Cittc2dpZCAiTmV3IEJyYW5jaCBOYW1lIFRlbXBsYXRlIgorbXNnc3RyICJNYWwgZm9yIG5hdm4gcMOlIG55ZSBncmVuZXIiCisKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiU3RhbmRhcmQgdGVrc3RlbmtvZGluZyBmb3IgaW5uaG9sZCBpIGZpbGVyIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIkVuZHJlIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMzAKK21zZ2lkICJTcGVsbGluZyBEaWN0aW9uYXJ5OiIKK21zZ3N0ciAiU3RhdmVib2tvcmRsaXN0ZXI6IgorCisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKK21zZ2lkICJDaGFuZ2UgRm9udCIKK21zZ3N0ciAiRW5kcmUgc2tyaWZ0dHlwZSIKKworIzogbGliL29wdGlvbi50Y2w6MjU4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ2hvb3NlICVzIgorbXNnc3RyICJWZWxnICVzIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyNjQKK21zZ2lkICJwdC4iCittc2dzdHIgInB0LiIKKworIzogbGliL29wdGlvbi50Y2w6Mjc4Cittc2dpZCAiUHJlZmVyZW5jZXMiCittc2dzdHIgIkVnZW5za2FwZXIiCisKKyM6IGxpYi9vcHRpb24udGNsOjMxNAorbXNnaWQgIkZhaWxlZCB0byBjb21wbGV0ZWx5IHNhdmUgb3B0aW9uczoiCittc2dzdHIgIkt1bm5lIGlra2UgbGFncmUgYWx0ZXJuYXRpdjoiCisKKyM6IGxpYi9yZW1vdGUudGNsOjE2MworbXNnaWQgIlJlbW92ZSBSZW1vdGUiCittc2dzdHIgIkZqZXJuIGZqZXJuYXJraXYiCisKKyM6IGxpYi9yZW1vdGUudGNsOjE2OAorbXNnaWQgIlBydW5lIGZyb20iCittc2dzdHIgIkZqZXJuIGZyYSIKKworIzogbGliL3JlbW90ZS50Y2w6MTczCittc2dpZCAiRmV0Y2ggZnJvbSIKK21zZ3N0ciAiSGVudCBmcmEiCisKKyM6IGxpYi9yZW1vdGUudGNsOjIxNQorbXNnaWQgIlB1c2ggdG8iCittc2dzdHIgIlNlbmQgdGlsIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTkKK21zZ2lkICJBZGQgUmVtb3RlIgorbXNnc3RyICJMZWdnIHRpbCBmamVybmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjQKK21zZ2lkICJBZGQgTmV3IFJlbW90ZSIKK21zZ3N0ciAiTGVnZyB0aWwgbnl0dCBmamVybmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjggbGliL3Rvb2xzX2RsZy50Y2w6MzYKK21zZ2lkICJBZGQiCittc2dzdHIgIkxlZ2cgdGlsIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MzcKK21zZ2lkICJSZW1vdGUgRGV0YWlscyIKK21zZ3N0ciAiRGV0YWxqZXIgZm9yIGZqZXJuYXJraXYiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo1MAorbXNnaWQgIkxvY2F0aW9uOiIKK21zZ3N0ciAiTG9rYXNqb246IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjIKK21zZ2lkICJGdXJ0aGVyIEFjdGlvbiIKK21zZ3N0ciAiVmlkZXJlIGhhbmRsaW5nIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAiSGVudCB1bWlkZGVsYmFydCIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjcxCittc2dpZCAiSW5pdGlhbGl6ZSBSZW1vdGUgUmVwb3NpdG9yeSBhbmQgUHVzaCIKK21zZ3N0ciAiSW5pdHNpYWxpc2VyIG9nIHNlbmQgdGlsIGZqZXJuYXJraXYiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3NworbXNnaWQgIkRvIE5vdGhpbmcgRWxzZSBOb3ciCittc2dzdHIgIklra2UgZ2rDuHIgbWVyIG7DpSIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjEwMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSByZW1vdGUgbmFtZS4iCittc2dzdHIgIlZlbm5saWdzdCBhbmdpIGV0IG5hdm4gZm9yIGZqZXJuYXJraXZldC4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIHJlbW90ZSBuYW1lLiIKK21zZ3N0ciAiJyVzJyBlciBpa2tlIGV0IHRpbGxhdHQgbmF2biBmb3IgZXQgZmplcm5hcmtpdi4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICJLdW5uZSBpa2tlIGxlZ2dlIHRpbCBmamVybmFya2l2ZXQgJyVzJyBww6UgJyVzJy4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzMgbGliL3RyYW5zcG9ydC50Y2w6NgorIywgdGNsLWZvcm1hdAorbXNnaWQgImZldGNoICVzIgorbXNnc3RyICJoZW50ICVzIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTM0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmV0Y2hpbmcgdGhlICVzIgorbXNnc3RyICJIZW50ZXIgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJEbyBub3Qga25vdyBob3cgdG8gaW5pdGlhbGl6ZSByZXBvc2l0b3J5IGF0IGxvY2F0aW9uICclcycuIgorbXNnc3RyICJWZXQgaWtrZSBodm9yZGFuIGFya2l2IHDDpSAnJXMnIHNrYWwgb3BwcmV0dGVzLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo3MQorIywgdGNsLWZvcm1hdAorbXNnaWQgInB1c2ggJXMiCittc2dzdHIgInNlbmQgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHVwIHRoZSAlcyAoYXQgJXMpIgorbXNnc3RyICJJbml0c2lhbGlzZXJlciAlcyAocMOlICVzKSIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoyOSBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjM0Cittc2dpZCAiRGVsZXRlIEJyYW5jaCBSZW1vdGVseSIKK21zZ3N0ciAiRmplcm4gZ3JlbiBmcmEgZmplcm5hcmtpdiIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0NworbXNnaWQgIkZyb20gUmVwb3NpdG9yeSIKK21zZ3N0ciAiRnJhIGFya2l2IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjUwIGxpYi90cmFuc3BvcnQudGNsOjEyMworbXNnaWQgIlJlbW90ZToiCittc2dzdHIgIkZqZXJuYXJraXY6IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjY2IGxpYi90cmFuc3BvcnQudGNsOjEzOAorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCittc2dzdHIgIlZpbGvDpXJsaWcgbG9rYXNqb246IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0Cittc2dpZCAiQnJhbmNoZXMiCittc2dzdHIgIkdyZW5lciIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoxMDkKK21zZ2lkICJEZWxldGUgT25seSBJZiIKK21zZ3N0ciAiU2xldHQga3VuIGh2aXMiCisKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MTExCittc2dpZCAiTWVyZ2VkIEludG86IgorbXNnc3RyICJTbMOldHQgc2FtbWVuIGk6IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjExOQorbXNnaWQgIkFsd2F5cyAoRG8gbm90IHBlcmZvcm0gbWVyZ2UgY2hlY2tzKSIKK21zZ3N0ciAiQWxsdGlkIChJa2tlIHV0ZsO4ciBzYW1tZW5zbMOlaW5nc2tvbnRyb2xsKSIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoxNTIKK21zZ2lkICJBIGJyYW5jaCBpcyByZXF1aXJlZCBmb3IgJ01lcmdlZCBJbnRvJy4iCittc2dzdHIgIkVuIGdyZW4ga3JldmVzIGZvciAnc2FtbWVuc2zDpWluZyBpJy4iCisKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MTg0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmb2xsb3dpbmcgYnJhbmNoZXMgYXJlIG5vdCBjb21wbGV0ZWx5IG1lcmdlZCBpbnRvICVzOlxuIgorIlxuIgorIiAtICVzIgorbXNnc3RyICIiCisiRsO4bGdlbmRlIGdyZW5lciBlciBpa2tlIGZ1bGxlc3RlbmRpZyBzYW1tZW5zbMOldHQgbWVkICVzOlxuIgorIlxuIgorIiAtICVzIgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjE4OQorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJPbmUgb3IgbW9yZSBvZiB0aGUgbWVyZ2UgdGVzdHMgZmFpbGVkIGJlY2F1c2UgeW91IGhhdmUgbm90IGZldGNoZWQgdGhlICIKKyJuZWNlc3NhcnkgY29tbWl0cy4gIFRyeSBmZXRjaGluZyBmcm9tICVzIGZpcnN0LiIKK21zZ3N0ciAiIgorIkVuIGVsbGVyIGZsZXJlIGF2IHRlc3RlbmUgc29tIGJsaXIga2rDuHJ0IHVuZGVyIHNhbW1lbnNsw6VpbmcgZmVpbGV0IGZvcmRpIGR1IgorImlra2UgaGFyIGhlbnRldCBpbm4gZGUgbsO4ZHZlbmRpZ2UgaW5uc2pla2tpbmdlbmUuIFByw7h2IMOlIGhlbnQgZGlzc2UgZnJhICVzIgorImbDuHJzdCIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoyMDcKK21zZ2lkICJQbGVhc2Ugc2VsZWN0IG9uZSBvciBtb3JlIGJyYW5jaGVzIHRvIGRlbGV0ZS4iCittc2dzdHIgIlZlbGcgZW4gZWxsZXIgZmxlcmUgZ3JlbmVyIHNvbSBza2FsIGZqZXJuZXMuIgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjIxNgorbXNnaWQgIiIKKyJSZWNvdmVyaW5nIGRlbGV0ZWQgYnJhbmNoZXMgaXMgZGlmZmljdWx0LlxuIgorIlxuIgorIkRlbGV0ZSB0aGUgc2VsZWN0ZWQgYnJhbmNoZXM/IgorbXNnc3RyICIiCisiR2plbm9wcHJldHRpbmcgYXYgZmplcm5lZGUgZ3JlbmVyIGVyIHZhbnNrZWxpZy5cbiIKKyJcbiIKKyJGamVybiBkZW4gbWVya2VkZSBncmVuZW4/IgorCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjIyNgorIywgdGNsLWZvcm1hdAorbXNnaWQgIkRlbGV0aW5nIGJyYW5jaGVzIGZyb20gJXMiCittc2dzdHIgIkZqZXJuZXIgZ3JlbmVuZSBmcmEgJXMiCisKKyM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6Mjg2Cittc2dpZCAiTm8gcmVwb3NpdG9yeSBzZWxlY3RlZC4iCittc2dzdHIgIkluZ2VuIGFya2l2IHZhbGd0LiIKKworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoyOTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJTY2FubmluZyAlcy4uLiIKK21zZ3N0ciAiU8O4a2VyICVzLi4uIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyMQorbXNnaWQgIkZpbmQ6IgorbXNnc3RyICJGaW5uOiIKKworIzogbGliL3NlYXJjaC50Y2w6MjMKK21zZ2lkICJOZXh0IgorbXNnc3RyICJOZXN0ZSIKKworIzogbGliL3NlYXJjaC50Y2w6MjQKK21zZ2lkICJQcmV2IgorbXNnc3RyICJGb3JyaWdlIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyNQorbXNnaWQgIkNhc2UtU2Vuc2l0aXZlIgorbXNnc3RyICJTa2lsbGVyIHDDpSBzdG9yZSBvZyBzbcOlIGJva3N0YXZlciIKKworIzogbGliL3Nob3J0Y3V0LnRjbDoyMCBsaWIvc2hvcnRjdXQudGNsOjYxCittc2dpZCAiQ2Fubm90IHdyaXRlIHNob3J0Y3V0OiIKK21zZ3N0ciAiS2FuIGlra2Ugb3BwcmV0dGUgc25hcnZlaToiCisKKyM6IGxpYi9zaG9ydGN1dC50Y2w6MTM2Cittc2dpZCAiQ2Fubm90IHdyaXRlIGljb246IgorbXNnc3RyICJLYW4gaWtrZSBvcHByZXR0ZSBpa29uOiIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjU3Cittc2dpZCAiVW5zdXBwb3J0ZWQgc3BlbGwgY2hlY2tlciIKK21zZ3N0ciAiU3RhdmVrb250cm9sbGVyZW4gZXIgaWtrZSBzdMO4dHRldCIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjY1Cittc2dpZCAiU3BlbGwgY2hlY2tpbmcgaXMgdW5hdmFpbGFibGUiCittc2dzdHIgIlN0YXZla29udHJvbGwgZXIgaWtrZSB0aWxnamVuZ2VsaWciCisKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDo2OAorbXNnaWQgIkludmFsaWQgc3BlbGwgY2hlY2tpbmcgY29uZmlndXJhdGlvbiIKK21zZ3N0ciAiVWd5bGRpZyBzdGF2ZWtvbnRyb2xsLWtvbmZpZ3VyYXNqb24iCisKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDo3MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyBkaWN0aW9uYXJ5IHRvICVzLiIKK21zZ3N0ciAiUmV2ZXJ0ZXJlciBvcmRib2sgdGlsICVzLiIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjczCittc2dpZCAiU3BlbGwgY2hlY2tlciBzaWxlbnRseSBmYWlsZWQgb24gc3RhcnR1cCIKK21zZ3N0ciAiU3RhdmVrb250cm9sbGVuIGZlaWxldCBzdGlsbGUgdW5kZXIgb3Bwc3RhcnQiCisKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDo4MAorbXNnaWQgIlVucmVjb2duaXplZCBzcGVsbCBjaGVja2VyIgorbXNnc3RyICJTdGF2ZWtvbnRyb2xsZXJlbiBlciB1a2plbnQiCisKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDoxODYKK21zZ2lkICJObyBTdWdnZXN0aW9ucyIKK21zZ3N0ciAiSW5nZW4gZm9yc2xhZyIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjM4OAorbXNnaWQgIlVuZXhwZWN0ZWQgRU9GIGZyb20gc3BlbGwgY2hlY2tlciIKK21zZ3N0ciAiVXZlbnRldCBzbHV0dCBww6UgZmlsZW4gZnJhIHN0YXZla29udHJvbGxlbiIKKworIzogbGliL3NwZWxsY2hlY2sudGNsOjM5MgorbXNnaWQgIlNwZWxsIENoZWNrZXIgRmFpbGVkIgorbXNnc3RyICJTdGF2ZWtvbnRyb2xsIG1pc2x5a3RlcyIKKworIzogbGliL3NzaGtleS50Y2w6MzEKK21zZ2lkICJObyBrZXlzIGZvdW5kLiIKK21zZ3N0ciAiSW5nZW4gbsO4a2xlciBmdW5uZXQuIgorCisjOiBsaWIvc3Noa2V5LnRjbDozNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgcHVibGljIGtleSBpbjogJXMiCittc2dzdHIgIkZ1bm5ldCBlbiBvZmZlbnRsaWcgbsO4a2tlbCBpOiAlcyIKKworIzogbGliL3NzaGtleS50Y2w6NDAKK21zZ2lkICJHZW5lcmF0ZSBLZXkiCittc2dzdHIgIkdlbmVyZXIgbsO4a2tlbCIKKworIzogbGliL3NzaGtleS50Y2w6NTYKK21zZ2lkICJDb3B5IFRvIENsaXBib2FyZCIKK21zZ3N0ciAiS29waWVyIHRpbCB1dGtsaXBwc3RhdmxlbiIKKworIzogbGliL3NzaGtleS50Y2w6NzAKK21zZ2lkICJZb3VyIE9wZW5TU0ggUHVibGljIEtleSIKK21zZ3N0ciAiRGluIG9mZmVudGxpZ2UgT3BlblNTSC1uw7hra2VsIgorCisjOiBsaWIvc3Noa2V5LnRjbDo3OAorbXNnaWQgIkdlbmVyYXRpbmcuLi4iCittc2dzdHIgIkdlbmVyZXJlci4uLiIKKworIzogbGliL3NzaGtleS50Y2w6ODQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCittc2dzdHIgIiIKKyJLdW5uZSBpa2tlIHN0YXJ0ZSBzc2gta2V5Z2VuOlxuIgorIlxuIgorIiVzIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTEKK21zZ2lkICJHZW5lcmF0aW9uIGZhaWxlZC4iCittc2dzdHIgIkdlbmVyZXJpbmcgZmVpbGV0LiIKKworIzogbGliL3NzaGtleS50Y2w6MTE4Cittc2dpZCAiR2VuZXJhdGlvbiBzdWNjZWRlZCwgYnV0IG5vIGtleXMgZm91bmQuIgorbXNnc3RyICJHZW5lcmVyaW5nIHZlbGx5a2tldCwgbWVuIGluZ2VuIG7DuGtsZXIgZXIgZnVubmV0LiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICJOw7hra2VsZW4gZGluIGxpZ2dlciBpOiAlcyIKKworIzogbGliL3N0YXR1c19iYXIudGNsOjgzCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiJXMgLi4uICUqaSBvZiAlKmkgJXMgKCUzaSUlKSIKK21zZ3N0ciAiJXMgLi4uICUqaSBhdiAlKmkgJXMgKCUzaSUlKSIKKworIzogbGliL3Rvb2xzLnRjbDo3NQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgJXMgcmVxdWlyZXMgYSBzZWxlY3RlZCBmaWxlLiIKK21zZ3N0ciAiw4Uga2rDuHJlICVzIGtyZXZlciBhdCBlbiBmaWwgZXIgdmFsZ3QiCisKKyM6IGxpYi90b29scy50Y2w6OTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcnVuICVzPyIKK21zZ3N0ciAiRXIgZHUgc2lra2VyIHDDpSBhdCBkdSB2aWwga2rDuHJlICVzPyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTAKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sOiAlcyIKK21zZ3N0ciAiVmVya3TDuHk6ICVzIgorCisjOiBsaWIvdG9vbHMudGNsOjExMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmc6ICVzIgorbXNnc3RyICJLasO4cmVyOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNDkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGNvbXBsZXRlZCBzdWNjZXNmdWxseTogJXMiCittc2dzdHIgIlZlcmt0w7h5ZXQgYmxlIGZ1bGxmw7hydCBtZWQgc3Vrc2VzczogJXMiCisKKyM6IGxpYi90b29scy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVG9vbCBmYWlsZWQ6ICVzIgorbXNnc3RyICJWZXJrdMO4eSBmZWlsZXQ6ICVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMgorbXNnaWQgIkFkZCBUb29sIgorbXNnc3RyICJMZWdnIHRpbCB2ZXJrdMO4eSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjgKK21zZ2lkICJBZGQgTmV3IFRvb2wgQ29tbWFuZCIKK21zZ3N0ciAiTGVnZyB0aWwgbnkgdmVya3TDuHlrb21tYW5kbyIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzMKK21zZ2lkICJBZGQgZ2xvYmFsbHkiCittc2dzdHIgIkxlZ2cgdGlsIGdsb2JhbHQiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjQ1Cittc2dpZCAiVG9vbCBEZXRhaWxzIgorbXNnc3RyICJWZXJrdMO4eWRldGFsamVyIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0OAorbXNnaWQgIlVzZSAnLycgc2VwYXJhdG9ycyB0byBjcmVhdGUgYSBzdWJtZW51IHRyZWU6IgorbXNnc3RyICJCcnVrICcvJy1zZXBhcmF0b3IgZm9yIMOlIGxhZ2UgdW5kZXJtZW55ZXI6IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo2MQorbXNnaWQgIkNvbW1hbmQ6IgorbXNnc3RyICJLb21tYW5kbzoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjc0Cittc2dpZCAiU2hvdyBhIGRpYWxvZyBiZWZvcmUgcnVubmluZyIKK21zZ3N0ciAiVmlzIGVuIGRpYWxvZyBmw7hyIHN0YXJ0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo4MAorbXNnaWQgIkFzayB0aGUgdXNlciB0byBzZWxlY3QgYSByZXZpc2lvbiAoc2V0cyAkUkVWSVNJT04pIgorbXNnc3RyICJTcMO4ciBicnVrZXJlbiBvbSDDpSB2ZWxnZSBlbiByZXZpc2pvbiAoc2V0dGVyICRSRVZJU0lPTikiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIlNww7hyIGJydWtlcmVuIGZvciB5dHRlcmxpZ2VyZSBwYXJhbXRlcmUgKHNldHRlciAkQVJHUykiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjkyCittc2dpZCAiRG9uJ3Qgc2hvdyB0aGUgY29tbWFuZCBvdXRwdXQgd2luZG93IgorbXNnc3RyICJJa2tlIHZpcyBrb21tYW5kb2VucyB1dGRhdGEgaSB2aW5kdWV0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5NworbXNnaWQgIlJ1biBvbmx5IGlmIGEgZGlmZiBpcyBzZWxlY3RlZCAoJEZJTEVOQU1FIG5vdCBlbXB0eSkiCittc2dzdHIgIktqw7hyIGt1biBvbSBmb3Jza2plbGxlbmUgZXIgbWFya2VydCAoJEZJTEVOQU1FIGVyIGlra2UgdG9tKSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTIxCittc2dpZCAiUGxlYXNlIHN1cHBseSBhIG5hbWUgZm9yIHRoZSB0b29sLiIKK21zZ3N0ciAiVmVubmxpZ3N0IGFuZ2kgZXQgbmF2biBmb3IgZGV0dGUgdmVya3TDuHlldC4iCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyOQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2wgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIlZlcmt0w7h5ZXQgJyVzJyBla3Npc3RlcmVyIGFsbGVyZWRlLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBhZGQgdG9vbDpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkt1bm5lIGlra2UgbGVnZ2UgdGlsIHZlcmt0w7h5ZXQ6XG4iCisiJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjE5MAorbXNnaWQgIlJlbW92ZSBUb29sIgorbXNnc3RyICJGamVybiB2ZXJrdMO4eWV0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTYKK21zZ2lkICJSZW1vdmUgVG9vbCBDb21tYW5kcyIKK21zZ3N0ciAiRmplcm4gdmVya3TDuHlza29tbWFuZG9lbiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJGamVybiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjM2Cittc2dpZCAiKEJsdWUgZGVub3RlcyByZXBvc2l0b3J5LWxvY2FsIHRvb2xzKSIKK21zZ3N0ciAiKEJsdWUgYW5naXIgbG9rYWxlIHZlcmt0w7h5IHRpbCBhcmtpdmV0KSIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6Mjk3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUnVuIENvbW1hbmQ6ICVzIgorbXNnc3RyICJLasO4ciBrb21tYW5kbzogJXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjMxMQorbXNnaWQgIkFyZ3VtZW50cyIKK21zZ3N0ciAiQXJndW1lbnRlciIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MzQ4Cittc2dpZCAiT0siCittc2dzdHIgIk9LIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDo3CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmV0Y2hpbmcgbmV3IGNoYW5nZXMgZnJvbSAlcyIKK21zZ3N0ciAiSGVudGVyIG55ZSBlbmRyaW5nZXIgZnJhICVzIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxOAorIywgdGNsLWZvcm1hdAorbXNnaWQgInJlbW90ZSBwcnVuZSAlcyIKK21zZ3N0ciAic2xldHQgZmplcm5hcmtpdiAlcyIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6MTkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJQcnVuaW5nIHRyYWNraW5nIGJyYW5jaGVzIGRlbGV0ZWQgZnJvbSAlcyIKK21zZ3N0ciAiRmpybmVyIHNwb3JpbmcgYXYgZ3JlbmVyIHNsZXR0ZXQgZnJhICVzIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoyNgorIywgdGNsLWZvcm1hdAorbXNnaWQgIlB1c2hpbmcgY2hhbmdlcyB0byAlcyIKK21zZ3N0ciAiU2VuZGVyIGVuZHJpbmdlciB0aWwgJXMiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjcyCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiUHVzaGluZyAlcyAlcyB0byAlcyIKK21zZ3N0ciAiU2VuZGVyICVzICVzIHRpbCAlcyIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6ODkKK21zZ2lkICJQdXNoIEJyYW5jaGVzIgorbXNnc3RyICJTZW5kIGdyZW5lciIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCittc2dpZCAiU291cmNlIEJyYW5jaGVzIgorbXNnc3RyICJLaWxkZWdyZW5lciIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6MTIwCittc2dpZCAiRGVzdGluYXRpb24gUmVwb3NpdG9yeSIKK21zZ3N0ciAiRGVzdGluYXNqb25zYXJraXYiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE1OAorbXNnaWQgIlRyYW5zZmVyIE9wdGlvbnMiCittc2dzdHIgIk92ZXJmw7hyaW5nc2FsdGVybmF0aXZlciIKKworIzogbGliL3RyYW5zcG9ydC50Y2w6MTYwCittc2dpZCAiRm9yY2Ugb3ZlcndyaXRlIGV4aXN0aW5nIGJyYW5jaCAobWF5IGRpc2NhcmQgY2hhbmdlcykiCittc2dzdHIgIlR2aW5nIG92ZXJza3Jpdm5pbmcgYXYgZWtzaXN0ZXJlbmRlIGdyZW4gKGthbiBmb3JrYXN0ZSBlbmRyaW5nZXIpIgorCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjQKK21zZ2lkICJVc2UgdGhpbiBwYWNrIChmb3Igc2xvdyBuZXR3b3JrIGNvbm5lY3Rpb25zKSIKK21zZ3N0ciAiQnJ1ayB0eW5uZSBwYWtrZXIgKGZvciB0cmVnZXJlIG5ldHR2ZXJrc3RpbGtvYmxpbmdlcikiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE2OAorbXNnaWQgIkluY2x1ZGUgdGFncyIKK21zZ3N0ciAiSW5rbHVkZXIgdGFnZ2VyIgpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9zdi5wbyBiL2dpdC1ndWkvcG8vc3YucG8KaW5kZXggMDE5NmJhOC4uMTY3NjU0YyAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9wby9zdi5wbworKysgYi9naXQtZ3VpL3BvL3N2LnBvCkBAIC0xLDQ4ICsxLDQ4IEBACiAjIFN3ZWRpc2ggdHJhbnNsYXRpb24gb2YgZ2l0LWd1aS4KLSMgQ29weXJpZ2h0IChDKSAyMDA3IFNoYXduIFBlYXJjZSwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFNoYXduIFBlYXJjZSwgZXQgYWwuCiAjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBnaXQtZ3VpIHBhY2thZ2UuCiAjCi0jIFBldGVyIEthcmxzc29uIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPiwgMjAwNy0yMDA4LgorIyBQZXRlciBLcmVmdGluZyA8cGV0ZXJAc29mdHdvbHZlcy5wcC5zZT4sIDIwMDctMjAwOC4KICMgTWlrYWVsIE1hZ251c3NvbiA8bWlrYWNodUBnbWFpbC5jb20+LCAyMDA4LgogbXNnaWQgIiIKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogc3ZcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMDgtMDMgMDE6MzQrMDIwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMDgtMDMgMDE6NDUrMDIwMFxuIgotIkxhc3QtVHJhbnNsYXRvcjogTWlrYWVsIE1hZ251c3NvbiA8bWlrYWNodUBnbWFpbC5jb20+XG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTItMDggMDg6MzEtMDgwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTItMTAgMDk6NDkrMDEwMFxuIgorIkxhc3QtVHJhbnNsYXRvcjogUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU3dlZGlzaCA8dHAtc3ZAbGlzdG9yLnRwLXN2LnNlPlxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBnaXQtZ3VpLnNoOjQxIGdpdC1ndWkuc2g6Njg4IGdpdC1ndWkuc2g6NzAyIGdpdC1ndWkuc2g6NzE1IGdpdC1ndWkuc2g6Nzk4Ci0jOiBnaXQtZ3VpLnNoOjgxNworIzogZ2l0LWd1aS5zaDo0MSBnaXQtZ3VpLnNoOjczNyBnaXQtZ3VpLnNoOjc1MSBnaXQtZ3VpLnNoOjc2NCBnaXQtZ3VpLnNoOjg0NworIzogZ2l0LWd1aS5zaDo4NjYKIG1zZ2lkICJnaXQtZ3VpOiBmYXRhbCBlcnJvciIKIG1zZ3N0ciAiZ2l0LWd1aTogw7ZkZXNkaWdlcnQgZmVsIgogCi0jOiBnaXQtZ3VpLnNoOjY0NAorIzogZ2l0LWd1aS5zaDo2ODkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGZvbnQgc3BlY2lmaWVkIGluICVzOiIKIG1zZ3N0ciAiT2dpbHRpZ3QgdGVja2Vuc25pdHQgYW5naXZldCBpICVzOiIKIAotIzogZ2l0LWd1aS5zaDo2NzQKKyM6IGdpdC1ndWkuc2g6NzIzCiBtc2dpZCAiTWFpbiBGb250IgogbXNnc3RyICJIdXZ1ZHRlY2tlbnNuaXR0IgogCi0jOiBnaXQtZ3VpLnNoOjY3NQorIzogZ2l0LWd1aS5zaDo3MjQKIG1zZ2lkICJEaWZmL0NvbnNvbGUgRm9udCIKIG1zZ3N0ciAiRGlmZi9rb25zb2x0ZWNrZW5zbml0dCIKIAotIzogZ2l0LWd1aS5zaDo2ODkKKyM6IGdpdC1ndWkuc2g6NzM4CiBtc2dpZCAiQ2Fubm90IGZpbmQgZ2l0IGluIFBBVEguIgogbXNnc3RyICJIaXR0YXIgaW50ZSBnaXQgaSBQQVRILiIKIAotIzogZ2l0LWd1aS5zaDo3MTYKKyM6IGdpdC1ndWkuc2g6NzY1CiBtc2dpZCAiQ2Fubm90IHBhcnNlIEdpdCB2ZXJzaW9uIHN0cmluZzoiCiBtc2dzdHIgIkthbiBpbnRlIHRvbGthIHZlcnNpb25zc3Ryw6RuZyBmcsOlbiBHaXQ6IgogCi0jOiBnaXQtZ3VpLnNoOjczNAorIzogZ2l0LWd1aS5zaDo3ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiR2l0IHZlcnNpb24gY2Fubm90IGJlIGRldGVybWluZWQuXG4iCkBAIC02MSwzODAgKzYxLDQ0OSBAQAogIlxuIgogIkFudGEgYXR0IFwiJXNcIiDDpHIgdmVyc2lvbiAxLjUuMD9cbiIKIAotIzogZ2l0LWd1aS5zaDo5NzIKKyM6IGdpdC1ndWkuc2g6MTA2MgogbXNnaWQgIkdpdCBkaXJlY3Rvcnkgbm90IGZvdW5kOiIKIG1zZ3N0ciAiR2l0LWthdGFsb2dlbiBoaXR0YWRlcyBpbnRlOiIKIAotIzogZ2l0LWd1aS5zaDo5NzkKKyM6IGdpdC1ndWkuc2g6MTA2OQogbXNnaWQgIkNhbm5vdCBtb3ZlIHRvIHRvcCBvZiB3b3JraW5nIGRpcmVjdG9yeToiCiBtc2dzdHIgIkthbiBpbnRlIGfDpSB0aWxsIGLDtnJqYW4gcMOlIGFyYmV0c2thdGFsb2dlbjoiCiAKLSM6IGdpdC1ndWkuc2g6OTg2CisjOiBnaXQtZ3VpLnNoOjEwNzYKIG1zZ2lkICJDYW5ub3QgdXNlIGZ1bm55IC5naXQgZGlyZWN0b3J5OiIKIG1zZ3N0ciAiS2FuIGludGUgYW52w6RuZGEgdW5kZXJsaWcgLmdpdC1rYXRhbG9nOiIKIAotIzogZ2l0LWd1aS5zaDo5OTEKKyM6IGdpdC1ndWkuc2g6MTA4MQogbXNnaWQgIk5vIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICJJbmdlbiBhcmJldHNrYXRhbG9nIgogCi0jOiBnaXQtZ3VpLnNoOjExMzggbGliL2NoZWNrb3V0X29wLnRjbDozMDUKKyM6IGdpdC1ndWkuc2g6MTI0NyBsaWIvY2hlY2tvdXRfb3AudGNsOjMwNQogbXNnaWQgIlJlZnJlc2hpbmcgZmlsZSBzdGF0dXMuLi4iCiBtc2dzdHIgIlVwcGRhdGVyYXIgZmlsc3RhdHVzLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjExOTQKKyM6IGdpdC1ndWkuc2g6MTMwMwogbXNnaWQgIlNjYW5uaW5nIGZvciBtb2RpZmllZCBmaWxlcyAuLi4iCiBtc2dzdHIgIlPDtmtlciBlZnRlciDDpG5kcmFkZSBmaWxlci4uLiIKIAotIzogZ2l0LWd1aS5zaDoxMzY5IGxpYi9icm93c2VyLnRjbDoyNDYKKyM6IGdpdC1ndWkuc2g6MTM2NworbXNnaWQgIkNhbGxpbmcgcHJlcGFyZS1jb21taXQtbXNnIGhvb2suLi4iCittc2dzdHIgIiIKKyJBbnJvcGFyIGtyb2tlbiBmw7ZyIGbDtnJiZXJlZGVsc2UgYXYgaW5jaGVja25pbmdzbWVkZGVsYW5kZSAocHJlcGFyZS1jb21taXQtIgorIm1zZykuLi4iCisKKyM6IGdpdC1ndWkuc2g6MTM4NAorbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vay4iCittc2dzdHIgIiIKKyJJbmNoZWNrbmluZ2VuIGF2dmlzYWRlcyBhdiBrcm9rZW4gZsO2ciBmw7ZyYmVyZWRlbHNlIGF2IGluY2hlY2tuaW5nc21lZGRlbGFuZGUgIgorIihwcmVwYXJlLWNvbW1pdC1tc2cpLiIKKworIzogZ2l0LWd1aS5zaDoxNTQyIGxpYi9icm93c2VyLnRjbDoyNDYKIG1zZ2lkICJSZWFkeS4iCiBtc2dzdHIgIktsYXIuIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzUKKyM6IGdpdC1ndWkuc2g6MTgxOQogbXNnaWQgIlVubW9kaWZpZWQiCiBtc2dzdHIgIk9mw7Zyw6RuZHJhZGUiCiAKLSM6IGdpdC1ndWkuc2g6MTYzNworIzogZ2l0LWd1aS5zaDoxODIxCiBtc2dpZCAiTW9kaWZpZWQsIG5vdCBzdGFnZWQiCiBtc2dzdHIgIkbDtnLDpG5kcmFkZSwgZWoga8O2YWRlIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzggZ2l0LWd1aS5zaDoxNjQzCisjOiBnaXQtZ3VpLnNoOjE4MjIgZ2l0LWd1aS5zaDoxODMwCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIkvDtmFkZSBmw7ZyIGluY2hlY2tuaW5nIgogCi0jOiBnaXQtZ3VpLnNoOjE2MzkgZ2l0LWd1aS5zaDoxNjQ0CisjOiBnaXQtZ3VpLnNoOjE4MjMgZ2l0LWd1aS5zaDoxODMxCiBtc2dpZCAiUG9ydGlvbnMgc3RhZ2VkIGZvciBjb21taXQiCiBtc2dzdHIgIkRlbGFyIGvDtmFkZSBmw7ZyIGluY2hlY2tuaW5nIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDAgZ2l0LWd1aS5zaDoxNjQ1CisjOiBnaXQtZ3VpLnNoOjE4MjQgZ2l0LWd1aS5zaDoxODMyCiBtc2dpZCAiU3RhZ2VkIGZvciBjb21taXQsIG1pc3NpbmciCiBtc2dzdHIgIkvDtmFkZSBmw7ZyIGluY2hlY2tuaW5nLCBzYWtuYWRlIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDIKKyM6IGdpdC1ndWkuc2g6MTgyNgorbXNnaWQgIkZpbGUgdHlwZSBjaGFuZ2VkLCBub3Qgc3RhZ2VkIgorbXNnc3RyICJGaWx0eXAgw6RuZHJhZCwgZWoga8O2YWRlIgorCisjOiBnaXQtZ3VpLnNoOjE4MjcKK21zZ2lkICJGaWxlIHR5cGUgY2hhbmdlZCwgc3RhZ2VkIgorbXNnc3RyICJGaWx0eXAgw6RuZHJhZCwga8O2YWRlIgorCisjOiBnaXQtZ3VpLnNoOjE4MjkKIG1zZ2lkICJVbnRyYWNrZWQsIG5vdCBzdGFnZWQiCiBtc2dzdHIgIkVqIHNww6VyYWRlLCBlaiBrw7ZhZGUiCiAKLSM6IGdpdC1ndWkuc2g6MTY0NworIzogZ2l0LWd1aS5zaDoxODM0CiBtc2dpZCAiTWlzc2luZyIKIG1zZ3N0ciAiU2FrbmFkZSIKIAotIzogZ2l0LWd1aS5zaDoxNjQ4CisjOiBnaXQtZ3VpLnNoOjE4MzUKIG1zZ2lkICJTdGFnZWQgZm9yIHJlbW92YWwiCiBtc2dzdHIgIkvDtmFkZSBmw7ZyIGJvcnR0YWduaW5nIgogCi0jOiBnaXQtZ3VpLnNoOjE2NDkKKyM6IGdpdC1ndWkuc2g6MTgzNgogbXNnaWQgIlN0YWdlZCBmb3IgcmVtb3ZhbCwgc3RpbGwgcHJlc2VudCIKIG1zZ3N0ciAiS8O2YWRlIGbDtnIgYm9ydHRhZ25pbmcsIGZvcnRmYXJhbmRlIG7DpHJ2YXJhbmRlIgogCi0jOiBnaXQtZ3VpLnNoOjE2NTEgZ2l0LWd1aS5zaDoxNjUyIGdpdC1ndWkuc2g6MTY1MyBnaXQtZ3VpLnNoOjE2NTQKKyM6IGdpdC1ndWkuc2g6MTgzOCBnaXQtZ3VpLnNoOjE4MzkgZ2l0LWd1aS5zaDoxODQwIGdpdC1ndWkuc2g6MTg0MQorIzogZ2l0LWd1aS5zaDoxODQyIGdpdC1ndWkuc2g6MTg0MwogbXNnaWQgIlJlcXVpcmVzIG1lcmdlIHJlc29sdXRpb24iCiBtc2dzdHIgIktyw6R2ZXIga29uZmxpa3RoYW50ZXJpbmcgZWZ0ZXIgc2FtbWFuc2xhZ25pbmciCiAKLSM6IGdpdC1ndWkuc2g6MTY4OQorIzogZ2l0LWd1aS5zaDoxODc4CiBtc2dpZCAiU3RhcnRpbmcgZ2l0ay4uLiBwbGVhc2Ugd2FpdC4uLiIKIG1zZ3N0ciAiU3RhcnRhciBnaXRrLi4uIHbDpG50YS4uLiIKIAotIzogZ2l0LWd1aS5zaDoxNjk4CisjOiBnaXQtZ3VpLnNoOjE4ODcKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGdpdGsgaW4gUEFUSCIKIG1zZ3N0ciAiSGl0dGFyIGludGUgZ2l0ayBpIFBBVEguIgogCi0jOiBnaXQtZ3VpLnNoOjE5NDggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNgorIzogZ2l0LWd1aS5zaDoyMjgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzYKIG1zZ2lkICJSZXBvc2l0b3J5IgogbXNnc3RyICJBcmtpdiIKIAotIzogZ2l0LWd1aS5zaDoxOTQ5CisjOiBnaXQtZ3VpLnNoOjIyODEKIG1zZ2lkICJFZGl0IgogbXNnc3RyICJSZWRpZ2VyYSIKIAotIzogZ2l0LWd1aS5zaDoxOTUxIGxpYi9jaG9vc2VfcmV2LnRjbDo1NjEKKyM6IGdpdC1ndWkuc2g6MjI4MyBsaWIvY2hvb3NlX3Jldi50Y2w6NTYxCiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJHcmVuIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTQgbGliL2Nob29zZV9yZXYudGNsOjU0OAorIzogZ2l0LWd1aS5zaDoyMjg2IGxpYi9jaG9vc2VfcmV2LnRjbDo1NDgKIG1zZ2lkICJDb21taXRAQG5vdW4iCiBtc2dzdHIgIkluY2hlY2tuaW5nIgogCi0jOiBnaXQtZ3VpLnNoOjE5NTcgbGliL21lcmdlLnRjbDoxMjAgbGliL21lcmdlLnRjbDoxNDkgbGliL21lcmdlLnRjbDoxNjcKKyM6IGdpdC1ndWkuc2g6MjI4OSBsaWIvbWVyZ2UudGNsOjEyMSBsaWIvbWVyZ2UudGNsOjE1MCBsaWIvbWVyZ2UudGNsOjE2OAogbXNnaWQgIk1lcmdlIgogbXNnc3RyICJTbMOlIGlob3AiCiAKLSM6IGdpdC1ndWkuc2g6MTk1OCBsaWIvY2hvb3NlX3Jldi50Y2w6NTU3CisjOiBnaXQtZ3VpLnNoOjIyOTAgbGliL2Nob29zZV9yZXYudGNsOjU1NwogbXNnaWQgIlJlbW90ZSIKLW1zZ3N0ciAiRmrDpHJyIgorbXNnc3RyICJGasOkcnJhcmtpdiIKIAotIzogZ2l0LWd1aS5zaDoxOTY3CisjOiBnaXQtZ3VpLnNoOjIyOTMKK21zZ2lkICJUb29scyIKK21zZ3N0ciAiVmVya3R5ZyIKKworIzogZ2l0LWd1aS5zaDoyMzAyCittc2dpZCAiRXhwbG9yZSBXb3JraW5nIENvcHkiCittc2dzdHIgIlV0Zm9yc2thIGFyYmV0c2tvcGlhIgorCisjOiBnaXQtZ3VpLnNoOjIzMDcKIG1zZ2lkICJCcm93c2UgQ3VycmVudCBCcmFuY2gncyBGaWxlcyIKIG1zZ3N0ciAiQmzDpGRkcmEgaSBncmVuZW5zIGZpbGVyIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzEKKyM6IGdpdC1ndWkuc2g6MjMxMQogbXNnaWQgIkJyb3dzZSBCcmFuY2ggRmlsZXMuLi4iCiBtc2dzdHIgIkJsw6RkZHJhIGZpbGVyIHDDpSBncmVuLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjE5NzYKKyM6IGdpdC1ndWkuc2g6MjMxNgogbXNnaWQgIlZpc3VhbGl6ZSBDdXJyZW50IEJyYW5jaCdzIEhpc3RvcnkiCiBtc2dzdHIgIlZpc3VhbGlzZXJhIGdyZW5lbnMgaGlzdG9yaWsiCiAKLSM6IGdpdC1ndWkuc2g6MTk4MAorIzogZ2l0LWd1aS5zaDoyMzIwCiBtc2dpZCAiVmlzdWFsaXplIEFsbCBCcmFuY2ggSGlzdG9yeSIKIG1zZ3N0ciAiVmlzdWFsaXNlcmEgYWxsYSBncmVuYXJzIGhpc3RvcmlrIgogCi0jOiBnaXQtZ3VpLnNoOjE5ODcKKyM6IGdpdC1ndWkuc2g6MjMyNwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkJyb3dzZSAlcydzIEZpbGVzIgogbXNnc3RyICJCbMOkZGRyYSBpIGZpbGVyIGbDtnIgJXMiCiAKLSM6IGdpdC1ndWkuc2g6MTk4OQorIzogZ2l0LWd1aS5zaDoyMzI5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVmlzdWFsaXplICVzJ3MgSGlzdG9yeSIKIG1zZ3N0ciAiVmlzdWFsaXNlcmEgaGlzdG9yaWsgZsO2ciAlcyIKIAotIzogZ2l0LWd1aS5zaDoxOTk0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NworIzogZ2l0LWd1aS5zaDoyMzM0IGxpYi9kYXRhYmFzZS50Y2w6MjcgbGliL2RhdGFiYXNlLnRjbDo2NwogbXNnaWQgIkRhdGFiYXNlIFN0YXRpc3RpY3MiCiBtc2dzdHIgIkRhdGFiYXNzdGF0aXN0aWsiCiAKLSM6IGdpdC1ndWkuc2g6MTk5NyBsaWIvZGF0YWJhc2UudGNsOjM0CisjOiBnaXQtZ3VpLnNoOjIzMzcgbGliL2RhdGFiYXNlLnRjbDozNAogbXNnaWQgIkNvbXByZXNzIERhdGFiYXNlIgogbXNnc3RyICJLb21wcmltZXJhIGRhdGFiYXMiCiAKLSM6IGdpdC1ndWkuc2g6MjAwMAorIzogZ2l0LWd1aS5zaDoyMzQwCiBtc2dpZCAiVmVyaWZ5IERhdGFiYXNlIgogbXNnc3RyICJWZXJpZmllcmEgZGF0YWJhcyIKIAotIzogZ2l0LWd1aS5zaDoyMDA3IGdpdC1ndWkuc2g6MjAxMSBnaXQtZ3VpLnNoOjIwMTUgbGliL3Nob3J0Y3V0LnRjbDo3CisjOiBnaXQtZ3VpLnNoOjIzNDcgZ2l0LWd1aS5zaDoyMzUxIGdpdC1ndWkuc2g6MjM1NSBsaWIvc2hvcnRjdXQudGNsOjcKICM6IGxpYi9zaG9ydGN1dC50Y2w6MzkgbGliL3Nob3J0Y3V0LnRjbDo3MQogbXNnaWQgIkNyZWF0ZSBEZXNrdG9wIEljb24iCiBtc2dzdHIgIlNrYXBhIHNrcml2Ym9yZHNpa29uIgogCi0jOiBnaXQtZ3VpLnNoOjIwMjMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxNzcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxODUKKyM6IGdpdC1ndWkuc2g6MjM2MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE4MyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjE5MQogbXNnaWQgIlF1aXQiCiBtc2dzdHIgIkF2c2x1dGEiCiAKLSM6IGdpdC1ndWkuc2g6MjAzMQorIzogZ2l0LWd1aS5zaDoyMzcxCiBtc2dpZCAiVW5kbyIKIG1zZ3N0ciAiw4VuZ3JhIgogCi0jOiBnaXQtZ3VpLnNoOjIwMzQKKyM6IGdpdC1ndWkuc2g6MjM3NAogbXNnaWQgIlJlZG8iCiBtc2dzdHIgIkfDtnIgb20iCiAKLSM6IGdpdC1ndWkuc2g6MjAzOCBnaXQtZ3VpLnNoOjI1NDUKKyM6IGdpdC1ndWkuc2g6MjM3OCBnaXQtZ3VpLnNoOjI5MzcKIG1zZ2lkICJDdXQiCiBtc2dzdHIgIktsaXBwIHV0IgogCi0jOiBnaXQtZ3VpLnNoOjIwNDEgZ2l0LWd1aS5zaDoyNTQ4IGdpdC1ndWkuc2g6MjYyMiBnaXQtZ3VpLnNoOjI3MTUKKyM6IGdpdC1ndWkuc2g6MjM4MSBnaXQtZ3VpLnNoOjI5NDAgZ2l0LWd1aS5zaDozMDE0IGdpdC1ndWkuc2g6MzA5NgogIzogbGliL2NvbnNvbGUudGNsOjY5CiBtc2dpZCAiQ29weSIKIG1zZ3N0ciAiS29waWVyYSIKIAotIzogZ2l0LWd1aS5zaDoyMDQ0IGdpdC1ndWkuc2g6MjU1MQorIzogZ2l0LWd1aS5zaDoyMzg0IGdpdC1ndWkuc2g6Mjk0MwogbXNnaWQgIlBhc3RlIgogbXNnc3RyICJLbGlzdHJhIGluIgogCi0jOiBnaXQtZ3VpLnNoOjIwNDcgZ2l0LWd1aS5zaDoyNTU0IGxpYi9icmFuY2hfZGVsZXRlLnRjbDoyNgorIzogZ2l0LWd1aS5zaDoyMzg3IGdpdC1ndWkuc2g6Mjk0NiBsaWIvYnJhbmNoX2RlbGV0ZS50Y2w6MjYKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6MzgKIG1zZ2lkICJEZWxldGUiCiBtc2dzdHIgIlRhIGJvcnQiCiAKLSM6IGdpdC1ndWkuc2g6MjA1MSBnaXQtZ3VpLnNoOjI1NTggZ2l0LWd1aS5zaDoyNzE5IGxpYi9jb25zb2xlLnRjbDo3MQorIzogZ2l0LWd1aS5zaDoyMzkxIGdpdC1ndWkuc2g6Mjk1MCBnaXQtZ3VpLnNoOjMxMDAgbGliL2NvbnNvbGUudGNsOjcxCiBtc2dpZCAiU2VsZWN0IEFsbCIKIG1zZ3N0ciAiTWFya2VyYSBhbGxhIgogCi0jOiBnaXQtZ3VpLnNoOjIwNjAKKyM6IGdpdC1ndWkuc2g6MjQwMAogbXNnaWQgIkNyZWF0ZS4uLiIKIG1zZ3N0ciAiU2thcGEuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA2NgorIzogZ2l0LWd1aS5zaDoyNDA2CiBtc2dpZCAiQ2hlY2tvdXQuLi4iCiBtc2dzdHIgIkNoZWNrYSB1dC4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMDcyCisjOiBnaXQtZ3VpLnNoOjI0MTIKIG1zZ2lkICJSZW5hbWUuLi4iCiBtc2dzdHIgIkJ5dCBuYW1uLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwNzcgZ2l0LWd1aS5zaDoyMTg3CisjOiBnaXQtZ3VpLnNoOjI0MTcKIG1zZ2lkICJEZWxldGUuLi4iCiBtc2dzdHIgIlRhIGJvcnQuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjA4MgorIzogZ2l0LWd1aS5zaDoyNDIyCiBtc2dpZCAiUmVzZXQuLi4iCiBtc2dzdHIgIsOFdGVyc3TDpGxsLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIwOTQgZ2l0LWd1aS5zaDoyNDkxCi1tc2dpZCAiTmV3IENvbW1pdCIKLW1zZ3N0ciAiTnkgaW5jaGVja25pbmciCisjOiBnaXQtZ3VpLnNoOjI0MzIKK21zZ2lkICJEb25lIgorbXNnc3RyICJGw6RyZGlnIgogCi0jOiBnaXQtZ3VpLnNoOjIxMDIgZ2l0LWd1aS5zaDoyNDk4Ci1tc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCi1tc2dzdHIgIkzDpGdnIHRpbGwgZsO2cmVnw6VlbmRlIGluY2hlY2tuaW5nIgotCi0jOiBnaXQtZ3VpLnNoOjIxMTEgZ2l0LWd1aS5zaDoyNDU4IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKLW1zZ2lkICJSZXNjYW4iCi1tc2dzdHIgIlPDtmsgcMOlIG55dHQiCi0KLSM6IGdpdC1ndWkuc2g6MjExNwotbXNnaWQgIlN0YWdlIFRvIENvbW1pdCIKLW1zZ3N0ciAiS8O2YSBmw7ZyIGluY2hlY2tuaW5nIgotCi0jOiBnaXQtZ3VpLnNoOjIxMjMKLW1zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKLW1zZ3N0ciAiS8O2YSDDpG5kcmFkZSBmaWxlciBmw7ZyIGluY2hlY2tuaW5nIgotCi0jOiBnaXQtZ3VpLnNoOjIxMjkKLW1zZ2lkICJVbnN0YWdlIEZyb20gQ29tbWl0IgotbXNnc3RyICJUYSBib3J0IGZyw6VuIGluY2hlY2tuaW5nc2vDtiIKLQotIzogZ2l0LWd1aS5zaDoyMTM0IGxpYi9pbmRleC50Y2w6Mzk1Ci1tc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCi1tc2dzdHIgIsOFdGVyc3TDpGxsIMOkbmRyaW5nYXIiCi0KLSM6IGdpdC1ndWkuc2g6MjE0MSBnaXQtZ3VpLnNoOjI3MDIKLW1zZ2lkICJTaG93IExlc3MgQ29udGV4dCIKLW1zZ3N0ciAiVmlzYSBtaW5kcmUgc2FtbWFuaGFuZyIKLQotIzogZ2l0LWd1aS5zaDoyMTQ1IGdpdC1ndWkuc2g6MjcwNgotbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgotbXNnc3RyICJWaXNhIG1lciBzYW1tYW5oYW5nIgotCi0jOiBnaXQtZ3VpLnNoOjIxNTEgZ2l0LWd1aS5zaDoyNDcwIGdpdC1ndWkuc2g6MjU2OQotbXNnaWQgIlNpZ24gT2ZmIgotbXNnc3RyICJTa3JpdiB1bmRlciIKLQotIzogZ2l0LWd1aS5zaDoyMTU1IGdpdC1ndWkuc2g6MjQ3NAorIzogZ2l0LWd1aS5zaDoyNDM0CiBtc2dpZCAiQ29tbWl0QEB2ZXJiIgogbXNnc3RyICJDaGVja2EgaW4iCiAKLSM6IGdpdC1ndWkuc2g6MjE2NgorIzogZ2l0LWd1aS5zaDoyNDQzIGdpdC1ndWkuc2g6Mjg3OAorbXNnaWQgIk5ldyBDb21taXQiCittc2dzdHIgIk55IGluY2hlY2tuaW5nIgorCisjOiBnaXQtZ3VpLnNoOjI0NTEgZ2l0LWd1aS5zaDoyODg1Cittc2dpZCAiQW1lbmQgTGFzdCBDb21taXQiCittc2dzdHIgIkzDpGdnIHRpbGwgZsO2cmVnw6VlbmRlIGluY2hlY2tuaW5nIgorCisjOiBnaXQtZ3VpLnNoOjI0NjEgZ2l0LWd1aS5zaDoyODM5IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6OTkKK21zZ2lkICJSZXNjYW4iCittc2dzdHIgIlPDtmsgcMOlIG55dHQiCisKKyM6IGdpdC1ndWkuc2g6MjQ2NworbXNnaWQgIlN0YWdlIFRvIENvbW1pdCIKK21zZ3N0ciAiS8O2YSBmw7ZyIGluY2hlY2tuaW5nIgorCisjOiBnaXQtZ3VpLnNoOjI0NzMKK21zZ2lkICJTdGFnZSBDaGFuZ2VkIEZpbGVzIFRvIENvbW1pdCIKK21zZ3N0ciAiS8O2YSDDpG5kcmFkZSBmaWxlciBmw7ZyIGluY2hlY2tuaW5nIgorCisjOiBnaXQtZ3VpLnNoOjI0NzkKK21zZ2lkICJVbnN0YWdlIEZyb20gQ29tbWl0IgorbXNnc3RyICJUYSBib3J0IGZyw6VuIGluY2hlY2tuaW5nc2vDtiIKKworIzogZ2l0LWd1aS5zaDoyNDg0IGxpYi9pbmRleC50Y2w6NDEwCittc2dpZCAiUmV2ZXJ0IENoYW5nZXMiCittc2dzdHIgIsOFdGVyc3TDpGxsIMOkbmRyaW5nYXIiCisKKyM6IGdpdC1ndWkuc2g6MjQ5MSBnaXQtZ3VpLnNoOjMwODMKK21zZ2lkICJTaG93IExlc3MgQ29udGV4dCIKK21zZ3N0ciAiVmlzYSBtaW5kcmUgc2FtbWFuaGFuZyIKKworIzogZ2l0LWd1aS5zaDoyNDk1IGdpdC1ndWkuc2g6MzA4NworbXNnaWQgIlNob3cgTW9yZSBDb250ZXh0IgorbXNnc3RyICJWaXNhIG1lciBzYW1tYW5oYW5nIgorCisjOiBnaXQtZ3VpLnNoOjI1MDIgZ2l0LWd1aS5zaDoyODUyIGdpdC1ndWkuc2g6Mjk2MQorbXNnaWQgIlNpZ24gT2ZmIgorbXNnc3RyICJTa3JpdiB1bmRlciIKKworIzogZ2l0LWd1aS5zaDoyNTE4CiBtc2dpZCAiTG9jYWwgTWVyZ2UuLi4iCiBtc2dzdHIgIkxva2FsIHNhbW1hbnNsYWduaW5nLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjIxNzEKKyM6IGdpdC1ndWkuc2g6MjUyMwogbXNnaWQgIkFib3J0IE1lcmdlLi4uIgogbXNnc3RyICJBdmJyeXQgc2FtbWFuc2xhZ25pbmcuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjE4MworIzogZ2l0LWd1aS5zaDoyNTM1IGdpdC1ndWkuc2g6MjU3NQorbXNnaWQgIkFkZC4uLiIKK21zZ3N0ciAiTMOkZ2cgdGlsbC4uLiIKKworIzogZ2l0LWd1aS5zaDoyNTM5CiBtc2dpZCAiUHVzaC4uLiIKIG1zZ3N0ciAiU8OkbmQuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjE5NyBnaXQtZ3VpLnNoOjIyMTkgbGliL2Fib3V0LnRjbDoxNAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCisjOiBnaXQtZ3VpLnNoOjI1NDMKK21zZ2lkICJEZWxldGUgQnJhbmNoLi4uIgorbXNnc3RyICJUYSBib3J0IGdyZW4uLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU1MyBnaXQtZ3VpLnNoOjI1ODkgbGliL2Fib3V0LnRjbDoxNAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQWJvdXQgJXMiCiBtc2dzdHIgIk9tICVzIgogCi0jOiBnaXQtZ3VpLnNoOjIyMDEKKyM6IGdpdC1ndWkuc2g6MjU1NwogbXNnaWQgIlByZWZlcmVuY2VzLi4uIgogbXNnc3RyICJJbnN0w6RsbG5pbmdhci4uLiIKIAotIzogZ2l0LWd1aS5zaDoyMjA5IGdpdC1ndWkuc2g6Mjc0MAorIzogZ2l0LWd1aS5zaDoyNTY1IGdpdC1ndWkuc2g6MzEyOQogbXNnaWQgIk9wdGlvbnMuLi4iCiBtc2dzdHIgIkFsdGVybmF0aXYuLi4iCiAKLSM6IGdpdC1ndWkuc2g6MjIxNSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3CisjOiBnaXQtZ3VpLnNoOjI1NzYKK21zZ2lkICJSZW1vdmUuLi4iCittc2dzdHIgIlRhIGJvcnQuLi4iCisKKyM6IGdpdC1ndWkuc2g6MjU4NSBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwCiBtc2dpZCAiSGVscCIKIG1zZ3N0ciAiSGrDpGxwIgogCi0jOiBnaXQtZ3VpLnNoOjIyNTYKKyM6IGdpdC1ndWkuc2g6MjYxMQogbXNnaWQgIk9ubGluZSBEb2N1bWVudGF0aW9uIgogbXNnc3RyICJXZWJiZG9rdW1lbnRhdGlvbiIKIAotIzogZ2l0LWd1aS5zaDoyMzQwCisjOiBnaXQtZ3VpLnNoOjI2MTQgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU2Cittc2dpZCAiU2hvdyBTU0ggS2V5IgorbXNnc3RyICJWaXNhIFNTSC1ueWNrZWwiCisKKyM6IGdpdC1ndWkuc2g6MjcyMQogIywgdGNsLWZvcm1hdAogbXNnaWQgImZhdGFsOiBjYW5ub3Qgc3RhdCBwYXRoICVzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAiw7ZkZXNkaWdlcnQ6IGt1bmRlIGludGUgdGEgc3RhdHVzIHDDpSBzw7ZrdsOkZ2VuICVzOiBGaWwgZWxsZXIga2F0YWxvZyBzYWtuYXMiCiAKLSM6IGdpdC1ndWkuc2g6MjM3MworIzogZ2l0LWd1aS5zaDoyNzU0CiBtc2dpZCAiQ3VycmVudCBCcmFuY2g6IgogbXNnc3RyICJBa3R1ZWxsIGdyZW46IgogCi0jOiBnaXQtZ3VpLnNoOjIzOTQKKyM6IGdpdC1ndWkuc2g6Mjc3NQogbXNnaWQgIlN0YWdlZCBDaGFuZ2VzIChXaWxsIENvbW1pdCkiCiBtc2dzdHIgIkvDtmFkZSDDpG5kcmluZ2FyIChrb21tZXIgYXR0IGNoZWNrYXMgaW4pIgogCi0jOiBnaXQtZ3VpLnNoOjI0MTQKKyM6IGdpdC1ndWkuc2g6Mjc5NQogbXNnaWQgIlVuc3RhZ2VkIENoYW5nZXMiCiBtc2dzdHIgIk9rw7ZhZGUgw6RuZHJpbmdhciIKIAotIzogZ2l0LWd1aS5zaDoyNDY0CisjOiBnaXQtZ3VpLnNoOjI4NDUKIG1zZ2lkICJTdGFnZSBDaGFuZ2VkIgogbXNnc3RyICJLw7ZhIMOkbmRyYWRlIgogCi0jOiBnaXQtZ3VpLnNoOjI0ODAgbGliL3RyYW5zcG9ydC50Y2w6OTMgbGliL3RyYW5zcG9ydC50Y2w6MTgyCisjOiBnaXQtZ3VpLnNoOjI4NjQgbGliL3RyYW5zcG9ydC50Y2w6MTA0IGxpYi90cmFuc3BvcnQudGNsOjE5MwogbXNnaWQgIlB1c2giCiBtc2dzdHIgIlPDpG5kIgogCi0jOiBnaXQtZ3VpLnNoOjI1MTAKKyM6IGdpdC1ndWkuc2g6Mjg5OQogbXNnaWQgIkluaXRpYWwgQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJJbmxlZGFuZGUgaW5jaGVja25pbmdzbWVkZGVsYW5kZToiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMQorIzogZ2l0LWd1aS5zaDoyOTAwCiBtc2dpZCAiQW1lbmRlZCBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIlV0w7ZrYXQgaW5jaGVja25pbmdzbWVkZGVsYW5kZToiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMgorIzogZ2l0LWd1aS5zaDoyOTAxCiBtc2dpZCAiQW1lbmRlZCBJbml0aWFsIENvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiVXTDtmthdCBpbmxlZGFuZGUgaW5jaGVja25pbmdzbWVkZGVsYW5kZToiCiAKLSM6IGdpdC1ndWkuc2g6MjUxMworIzogZ2l0LWd1aS5zaDoyOTAyCiBtc2dpZCAiQW1lbmRlZCBNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIlV0w7ZrYXQgaW5jaGVja25pbmdzbWVkZGVsYW5kZSBmw7ZyIHNhbW1hbnNsYWduaW5nOiIKIAotIzogZ2l0LWd1aS5zaDoyNTE0CisjOiBnaXQtZ3VpLnNoOjI5MDMKIG1zZ2lkICJNZXJnZSBDb21taXQgTWVzc2FnZToiCiBtc2dzdHIgIkluY2hlY2tuaW5nc21lZGRlbGFuZGUgZsO2ciBzYW1tYW5zbGFnbmluZzoiCiAKLSM6IGdpdC1ndWkuc2g6MjUxNQorIzogZ2l0LWd1aS5zaDoyOTA0CiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2U6IgogbXNnc3RyICJJbmNoZWNrbmluZ3NtZWRkZWxhbmRlOiIKIAotIzogZ2l0LWd1aS5zaDoyNTYxIGdpdC1ndWkuc2g6MjcyMyBsaWIvY29uc29sZS50Y2w6NzMKKyM6IGdpdC1ndWkuc2g6Mjk1MyBnaXQtZ3VpLnNoOjMxMDQgbGliL2NvbnNvbGUudGNsOjczCiBtc2dpZCAiQ29weSBBbGwiCiBtc2dzdHIgIktvcGllcmEgYWxsYSIKIAotIzogZ2l0LWd1aS5zaDoyNTg1IGxpYi9ibGFtZS50Y2w6MTAwCisjOiBnaXQtZ3VpLnNoOjI5NzcgbGliL2JsYW1lLnRjbDoxMDQKIG1zZ2lkICJGaWxlOiIKIG1zZ3N0ciAiRmlsOiIKIAotIzogZ2l0LWd1aS5zaDoyNjkxCi1tc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgotbXNnc3RyICJBbnbDpG5kL8OldGVyc3TDpGxsIGRlbCIKLQotIzogZ2l0LWd1aS5zaDoyNjk2Ci1tc2dpZCAiQXBwbHkvUmV2ZXJzZSBMaW5lIgotbXNnc3RyICJBbnbDpG5kL8OldGVyc3TDpGxsIHJhZCIKLQotIzogZ2l0LWd1aS5zaDoyNzExCisjOiBnaXQtZ3VpLnNoOjMwOTIKIG1zZ2lkICJSZWZyZXNoIgogbXNnc3RyICJVcHBkYXRlcmEiCiAKLSM6IGdpdC1ndWkuc2g6MjczMgorIzogZ2l0LWd1aS5zaDozMTEzCiBtc2dpZCAiRGVjcmVhc2UgRm9udCBTaXplIgogbXNnc3RyICJNaW5za2EgdGVja2Vuc25pdHRzc3RvcmxlayIKIAotIzogZ2l0LWd1aS5zaDoyNzM2CisjOiBnaXQtZ3VpLnNoOjMxMTcKIG1zZ2lkICJJbmNyZWFzZSBGb250IFNpemUiCiBtc2dzdHIgIsOWa2EgdGVja2Vuc25pdHRzc3RvcmxlayIKIAotIzogZ2l0LWd1aS5zaDoyNzQ3CisjOiBnaXQtZ3VpLnNoOjMxMjUgbGliL2JsYW1lLnRjbDoyODEKK21zZ2lkICJFbmNvZGluZyIKK21zZ3N0ciAiVGVja2Vua29kbmluZyIKKworIzogZ2l0LWd1aS5zaDozMTM2Cittc2dpZCAiQXBwbHkvUmV2ZXJzZSBIdW5rIgorbXNnc3RyICJBbnbDpG5kL8OldGVyc3TDpGxsIGRlbCIKKworIzogZ2l0LWd1aS5zaDozMTQxCittc2dpZCAiQXBwbHkvUmV2ZXJzZSBMaW5lIgorbXNnc3RyICJBbnbDpG5kL8OldGVyc3TDpGxsIHJhZCIKKworIzogZ2l0LWd1aS5zaDozMTUxCittc2dpZCAiUnVuIE1lcmdlIFRvb2wiCittc2dzdHIgIlN0YXJ0YSB2ZXJrdHlnIGbDtnIgc2FtbWFuc2xhZ25pbmciCisKKyM6IGdpdC1ndWkuc2g6MzE1NgorbXNnaWQgIlVzZSBSZW1vdGUgVmVyc2lvbiIKK21zZ3N0ciAiQW52w6RuZCB2ZXJzaW9uZW4gZnLDpW4gZmrDpHJyYXJraXZldCIKKworIzogZ2l0LWd1aS5zaDozMTYwCittc2dpZCAiVXNlIExvY2FsIFZlcnNpb24iCittc2dzdHIgIkFudsOkbmQgbG9rYWxhIHZlcnNpb25lbiIKKworIzogZ2l0LWd1aS5zaDozMTY0Cittc2dpZCAiUmV2ZXJ0IFRvIEJhc2UiCittc2dzdHIgIsOFdGVyc3TDpGxsIHRpbGwgYmFzdmVyc2lvbmVuIgorCisjOiBnaXQtZ3VpLnNoOjMxODMKIG1zZ2lkICJVbnN0YWdlIEh1bmsgRnJvbSBDb21taXQiCiBtc2dzdHIgIlRhIGJvcnQgZGVsIHVyIGluY2hlY2tuaW5nc2vDtiIKIAotIzogZ2l0LWd1aS5zaDoyNzQ4CisjOiBnaXQtZ3VpLnNoOjMxODQKIG1zZ2lkICJVbnN0YWdlIExpbmUgRnJvbSBDb21taXQiCiBtc2dzdHIgIlRhIGJvcnQgcmFkIHVyIGluY2hlY2tuaW5nc2vDtiIKIAotIzogZ2l0LWd1aS5zaDoyNzUwCisjOiBnaXQtZ3VpLnNoOjMxODYKIG1zZ2lkICJTdGFnZSBIdW5rIEZvciBDb21taXQiCiBtc2dzdHIgIlN0w6RsbCBkZWwgaSBpbmNoZWNrbmluZ3Nrw7YiCiAKLSM6IGdpdC1ndWkuc2g6Mjc1MQorIzogZ2l0LWd1aS5zaDozMTg3CiBtc2dpZCAiU3RhZ2UgTGluZSBGb3IgQ29tbWl0IgogbXNnc3RyICJTdMOkbGwgcmFkIGkgaW5jaGVja25pbmdza8O2IgogCi0jOiBnaXQtZ3VpLnNoOjI3NzEKKyM6IGdpdC1ndWkuc2g6MzIxMAogbXNnaWQgIkluaXRpYWxpemluZy4uLiIKIG1zZ3N0ciAiSW5pdGllcmFyLi4uIgogCi0jOiBnaXQtZ3VpLnNoOjI4NzYKKyM6IGdpdC1ndWkuc2g6MzMxNQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJQb3NzaWJsZSBlbnZpcm9ubWVudCBpc3N1ZXMgZXhpc3QuXG4iCkBAIC00NTEsNyArNTIwLDcgQEAKICJhdiAlczpcbiIKICJcbiIKIAotIzogZ2l0LWd1aS5zaDoyOTA2CisjOiBnaXQtZ3VpLnNoOjMzNDUKIG1zZ2lkICIiCiAiXG4iCiAiVGhpcyBpcyBkdWUgdG8gYSBrbm93biBpc3N1ZSB3aXRoIHRoZVxuIgpAQCAtNDYxLDcgKzUzMCw3IEBACiAiRGV0dGEgYmVyb3IgcMOlIGV0dCBrw6RudCBwcm9ibGVtIG1lZFxuIgogIlRjbC1iaW7DpHJlbiBzb20gZsO2bGplciBtZWQgQ3lnd2luLiIKIAotIzogZ2l0LWd1aS5zaDoyOTExCisjOiBnaXQtZ3VpLnNoOjMzNTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC00ODIsODAgKzU1MSwxMDggQEAKIG1zZ2lkICJnaXQtZ3VpIC0gYSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgZm9yIEdpdC4iCiBtc2dzdHIgImdpdC1ndWkgLSBldHQgZ3JhZmlza3QgYW52w6RuZGFyZ3LDpG5zc25pdHQgZsO2ciBHaXQuIgogCi0jOiBsaWIvYmxhbWUudGNsOjcwCisjOiBsaWIvYmxhbWUudGNsOjcyCiBtc2dpZCAiRmlsZSBWaWV3ZXIiCiBtc2dzdHIgIkZpbHZpc2FyZSIKIAotIzogbGliL2JsYW1lLnRjbDo3NAorIzogbGliL2JsYW1lLnRjbDo3OAogbXNnaWQgIkNvbW1pdDoiCiBtc2dzdHIgIkluY2hlY2tuaW5nOiIKIAotIzogbGliL2JsYW1lLnRjbDoyNTcKKyM6IGxpYi9ibGFtZS50Y2w6MjcxCiBtc2dpZCAiQ29weSBDb21taXQiCiBtc2dzdHIgIktvcGllcmEgaW5jaGVja25pbmciCiAKLSM6IGxpYi9ibGFtZS50Y2w6MjYwCisjOiBsaWIvYmxhbWUudGNsOjI3NQorbXNnaWQgIkZpbmQgVGV4dC4uLiIKK21zZ3N0ciAiU8O2ayB0ZXh0Li4uIgorCisjOiBsaWIvYmxhbWUudGNsOjI4NAogbXNnaWQgIkRvIEZ1bGwgQ29weSBEZXRlY3Rpb24iCiBtc2dzdHIgIkfDtnIgZnVsbCBrb3BpZXJpbmdzaWdlbmvDpG5uaW5nIgogCi0jOiBsaWIvYmxhbWUudGNsOjM4OAorIzogbGliL2JsYW1lLnRjbDoyODgKK21zZ2lkICJTaG93IEhpc3RvcnkgQ29udGV4dCIKK21zZ3N0ciAiVmlzYSBoaXN0b3Jpa3NhbW1hbmhhbmciCisKKyM6IGxpYi9ibGFtZS50Y2w6MjkxCittc2dpZCAiQmxhbWUgUGFyZW50IENvbW1pdCIKK21zZ3N0ciAiS2xhbmRyYSBmw7Zyw6RsZHJhaW5jaGVja25pbmciCisKKyM6IGxpYi9ibGFtZS50Y2w6NDUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVhZGluZyAlcy4uLiIKIG1zZ3N0ciAiTMOkc2VyICVzLi4uIgogCi0jOiBsaWIvYmxhbWUudGNsOjQ5MgorIzogbGliL2JsYW1lLnRjbDo1NTcKIG1zZ2lkICJMb2FkaW5nIGNvcHkvbW92ZSB0cmFja2luZyBhbm5vdGF0aW9ucy4uLiIKIG1zZ3N0ciAiTMOkc2VyIGFubm90ZXJpbmdhciBmw7ZyIGtvcGllcmluZy9mbHl0dG5pbmcuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NTEyCisjOiBsaWIvYmxhbWUudGNsOjU3NwogbXNnaWQgImxpbmVzIGFubm90YXRlZCIKIG1zZ3N0ciAicmFkZXIgYW5ub3RlcmFkZSIKIAotIzogbGliL2JsYW1lLnRjbDo3MDQKKyM6IGxpYi9ibGFtZS50Y2w6NzY5CiBtc2dpZCAiTG9hZGluZyBvcmlnaW5hbCBsb2NhdGlvbiBhbm5vdGF0aW9ucy4uLiIKIG1zZ3N0ciAiTMOkc2VyIGluIGFubm90ZXJpbmcgYXYgb3JpZ2luYWxwbGFjZXJpbmcuLi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6NzA3CisjOiBsaWIvYmxhbWUudGNsOjc3MgogbXNnaWQgIkFubm90YXRpb24gY29tcGxldGUuIgogbXNnc3RyICJBbm5vdGVyaW5nIGZ1bGxib3JkYWQuIgogCi0jOiBsaWIvYmxhbWUudGNsOjczNworIzogbGliL2JsYW1lLnRjbDo4MDIKIG1zZ2lkICJCdXN5IgogbXNnc3RyICJVcHB0YWdlbiIKIAotIzogbGliL2JsYW1lLnRjbDo3MzgKKyM6IGxpYi9ibGFtZS50Y2w6ODAzCiBtc2dpZCAiQW5ub3RhdGlvbiBwcm9jZXNzIGlzIGFscmVhZHkgcnVubmluZy4iCiBtc2dzdHIgIkFubm90ZXJpbmdzcHJvY2VzcyBrw7ZycyByZWRhbi4iCiAKLSM6IGxpYi9ibGFtZS50Y2w6Nzc3CisjOiBsaWIvYmxhbWUudGNsOjg0MgogbXNnaWQgIlJ1bm5pbmcgdGhvcm91Z2ggY29weSBkZXRlY3Rpb24uLi4iCiBtc2dzdHIgIkvDtnIgZ3J1bmRsaWcga29waWVyaW5nc2lnZW5rw6RubmluZy4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo4MjcKKyM6IGxpYi9ibGFtZS50Y2w6OTEwCiBtc2dpZCAiTG9hZGluZyBhbm5vdGF0aW9uLi4uIgogbXNnc3RyICJMw6RzZXIgaW4gYW5ub3RlcmluZy4uLiIKIAotIzogbGliL2JsYW1lLnRjbDo4ODMKKyM6IGxpYi9ibGFtZS50Y2w6OTYzCiBtc2dpZCAiQXV0aG9yOiIKIG1zZ3N0ciAiRsO2cmZhdHRhcmU6IgogCi0jOiBsaWIvYmxhbWUudGNsOjg4NworIzogbGliL2JsYW1lLnRjbDo5NjcKIG1zZ2lkICJDb21taXR0ZXI6IgogbXNnc3RyICJJbmNoZWNrYXJlOiIKIAotIzogbGliL2JsYW1lLnRjbDo4OTIKKyM6IGxpYi9ibGFtZS50Y2w6OTcyCiBtc2dpZCAiT3JpZ2luYWwgRmlsZToiCiBtc2dzdHIgIlVyc3BydW5nbGlnIGZpbDoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAwNgorIzogbGliL2JsYW1lLnRjbDoxMDIwCittc2dpZCAiQ2Fubm90IGZpbmQgSEVBRCBjb21taXQ6IgorbXNnc3RyICJIaXR0YXIgaW50ZSBpbmNoZWNrbmluZyBmw7ZyIEhFQUQ6IgorCisjOiBsaWIvYmxhbWUudGNsOjEwNzUKK21zZ2lkICJDYW5ub3QgZmluZCBwYXJlbnQgY29tbWl0OiIKK21zZ3N0ciAiSGl0dGFyIGludGUgZsO2csOkbGRyYWluY2hlY2tuaW5nOiIKKworIzogbGliL2JsYW1lLnRjbDoxMDkwCittc2dpZCAiVW5hYmxlIHRvIGRpc3BsYXkgcGFyZW50IgorbXNnc3RyICJLYW4gaW50ZSB2aXNhIGbDtnLDpGxkZXIiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTA5MSBsaWIvZGlmZi50Y2w6Mjk3Cittc2dpZCAiRXJyb3IgbG9hZGluZyBkaWZmOiIKK21zZ3N0ciAiRmVsIHZpZCBpbmzDpHNuaW5nIGF2IGRpZmZlcmVuczoiCisKKyM6IGxpYi9ibGFtZS50Y2w6MTIzMQogbXNnaWQgIk9yaWdpbmFsbHkgQnk6IgogbXNnc3RyICJVcnNwcnVuZ2xpZ2VuIGF2OiIKIAotIzogbGliL2JsYW1lLnRjbDoxMDEyCisjOiBsaWIvYmxhbWUudGNsOjEyMzcKIG1zZ2lkICJJbiBGaWxlOiIKIG1zZ3N0ciAiSSBmaWxlbjoiCiAKLSM6IGxpYi9ibGFtZS50Y2w6MTAxNworIzogbGliL2JsYW1lLnRjbDoxMjQyCiBtc2dpZCAiQ29waWVkIE9yIE1vdmVkIEhlcmUgQnk6IgogbXNnc3RyICJLb3BpZXJhZCBlbGxlciBmbHl0dGFkIGhpdCBhdjoiCiAKQEAgLTU2OSwxNiArNjY2LDE4IEBACiAKICM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjI3IGxpYi9icmFuY2hfY3JlYXRlLnRjbDozNQogIzogbGliL2JyYW5jaF9kZWxldGUudGNsOjMyIGxpYi9icmFuY2hfcmVuYW1lLnRjbDozMCBsaWIvYnJvd3Nlci50Y2w6MjgyCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjU0NCBsaWIvY2hvb3NlX2ZvbnQudGNsOjQzIGxpYi9tZXJnZS50Y2w6MTcxCi0jOiBsaWIvb3B0aW9uLnRjbDoxMDMgbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo0MiBsaWIvdHJhbnNwb3J0LnRjbDo5NworIzogbGliL2NoZWNrb3V0X29wLnRjbDo1NDQgbGliL2Nob29zZV9mb250LnRjbDo0MyBsaWIvbWVyZ2UudGNsOjE3MgorIzogbGliL29wdGlvbi50Y2w6MTI1IGxpYi9yZW1vdGVfYWRkLnRjbDozMiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjQyCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0MCBsaWIvdG9vbHNfZGxnLnRjbDoyMDQgbGliL3Rvb2xzX2RsZy50Y2w6MzUyCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMDgKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIkF2YnJ5dCIKIAotIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NworIzogbGliL2JyYW5jaF9jaGVja291dC50Y2w6MzIgbGliL2Jyb3dzZXIudGNsOjI4NyBsaWIvdG9vbHNfZGxnLnRjbDozMjgKIG1zZ2lkICJSZXZpc2lvbiIKIG1zZ3N0ciAiUmV2aXNpb24iCiAKLSM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjM2IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo2OSBsaWIvb3B0aW9uLnRjbDoyNDQKKyM6IGxpYi9icmFuY2hfY2hlY2tvdXQudGNsOjM2IGxpYi9icmFuY2hfY3JlYXRlLnRjbDo2OSBsaWIvb3B0aW9uLnRjbDoyODAKIG1zZ2lkICJPcHRpb25zIgogbXNnc3RyICJBbHRlcm5hdGl2IgogCkBAIC01OTgsNyArNjk3LDcgQEAKIG1zZ2lkICJDcmVhdGUgTmV3IEJyYW5jaCIKIG1zZ3N0ciAiU2thcGEgbnkgZ3JlbiIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjMxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzcxCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6MzEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozNzcKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIlNrYXBhIgogCkBAIC02MDYsNyArNzA1LDcgQEAKIG1zZ2lkICJCcmFuY2ggTmFtZSIKIG1zZ3N0ciAiTmFtbiBww6UgZ3JlbiIKIAotIzogbGliL2JyYW5jaF9jcmVhdGUudGNsOjQzCisjOiBsaWIvYnJhbmNoX2NyZWF0ZS50Y2w6NDMgbGliL3JlbW90ZV9hZGQudGNsOjM5IGxpYi90b29sc19kbGcudGNsOjUwCiBtc2dpZCAiTmFtZToiCiBtc2dzdHIgIk5hbW46IgogCkBAIC03NTEsOSArODUwLDkgQEAKIG1zZ2lkICJCcm93c2UgQnJhbmNoIEZpbGVzIgogbXNnc3RyICJCbMOkZGRyYSBmaWxlciBww6UgZ3JlbmVuIgogCi0jOiBsaWIvYnJvd3Nlci50Y2w6Mjc4IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzg3Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4MgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5ODUKKyM6IGxpYi9icm93c2VyLnRjbDoyNzggbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozOTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDgwIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk5NQogbXNnaWQgIkJyb3dzZSIKIG1zZ3N0ciAiQmzDpGRkcmEiCiAKQEAgLTc2OCw2ICs4NjcsNyBAQAogbXNnc3RyICLDtmRlc2RpZ2VydDogS3VuZGUgaW50ZSBzbMOlIHVwcCAlcyIKIAogIzogbGliL2NoZWNrb3V0X29wLnRjbDoxNDUgbGliL2NvbnNvbGUudGNsOjgxIGxpYi9kYXRhYmFzZS50Y2w6MzEKKyM6IGxpYi9zc2hrZXkudGNsOjUzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIlN0w6RuZyIKIApAQCAtODc5LDcgKzk3OSw3IEBACiBtc2dpZCAiUmVzZXQgJyVzJz8iCiBtc2dzdHIgIsOFdGVyc3TDpGxsYSBcIiVzXCI/IgogCi0jOiBsaWIvY2hlY2tvdXRfb3AudGNsOjUzMiBsaWIvbWVyZ2UudGNsOjE2MworIzogbGliL2NoZWNrb3V0X29wLnRjbDo1MzIgbGliL21lcmdlLnRjbDoxNjQgbGliL3Rvb2xzX2RsZy50Y2w6MzQzCiBtc2dpZCAiVmlzdWFsaXplIgogbXNnc3RyICJWaXN1YWxpc2VyYSIKIApAQCAtOTI4LDIyMSArMTAyOCwyMjUgQEAKIG1zZ2lkICJHaXQgR3VpIgogbXNnc3RyICJHaXQgR3VpIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Mzc2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgyCiBtc2dpZCAiQ3JlYXRlIE5ldyBSZXBvc2l0b3J5IgogbXNnc3RyICJTa2FwYSBueXR0IGFya2l2IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjg3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzCiBtc2dpZCAiTmV3Li4uIgogbXNnc3RyICJOeXR0Li4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDU4CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ2NQogbXNnaWQgIkNsb25lIEV4aXN0aW5nIFJlcG9zaXRvcnkiCiBtc2dzdHIgIktsb25hIGJlZmludGxpZ3QgYXJraXYiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwNgogbXNnaWQgIkNsb25lLi4uIgogbXNnc3RyICJLbG9uYS4uLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDcgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTEzIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTgzCiBtc2dpZCAiT3BlbiBFeGlzdGluZyBSZXBvc2l0b3J5IgogbXNnc3RyICLDlnBwbmEgYmVmaW50bGlndCBhcmtpdiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTE5CiBtc2dpZCAiT3Blbi4uLiIKIG1zZ3N0ciAiw5ZwcG5hLi4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEyNgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMzIKIG1zZ2lkICJSZWNlbnQgUmVwb3NpdG9yaWVzIgogbXNnc3RyICJTZW5hc3RlIGFya2l2ZW4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTMyCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEzOAogbXNnaWQgIk9wZW4gUmVjZW50IFJlcG9zaXRvcnk6IgogbXNnc3RyICLDlnBwbmEgdGlkaWdhcmUgYXJraXY6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjI5NiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMwMwotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDozMTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzAyIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzA5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjMxNgogIywgdGNsLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgcmVwb3NpdG9yeSAlczoiCiBtc2dzdHIgIkt1bmRlIGludGUgc2thcGEgYXJraXZldCAlczoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MzgxIGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDc2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjM4NwogbXNnaWQgIkRpcmVjdG9yeToiCiBtc2dzdHIgIkthdGFsb2c6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxMCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUzNQotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDA3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQxNyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU0NAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDE3CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkiCiBtc2dzdHIgIkdpdGFya2l2IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQzNQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJEaXJlY3RvcnkgJXMgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJLYXRhbG9nZW4gJXMgZmlubnMgcmVkYW4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQzOQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGaWxlICVzIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiRmlsZW4gJXMgZmlubnMgcmVkYW4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0NjAKIG1zZ2lkICJDbG9uZSIKIG1zZ3N0ciAiS2xvbmEiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDY2Ci1tc2dpZCAiVVJMOiIKLW1zZ3N0ciAiV2ViYmFkcmVzczoiCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ3MworbXNnaWQgIlNvdXJjZSBMb2NhdGlvbjoiCittc2dzdHIgIlBsYXRzIGbDtnIga8OkbGxrb2Q6IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ4NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo0ODQKK21zZ2lkICJUYXJnZXQgRGlyZWN0b3J5OiIKK21zZ3N0ciAiTcOlbGthdGFsb2c6IgorCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjQ5NgogbXNnaWQgIkNsb25lIFR5cGU6IgogbXNnc3RyICJUeXAgYXYga2xvbjoiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDkzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwMgogbXNnaWQgIlN0YW5kYXJkIChGYXN0LCBTZW1pLVJlZHVuZGFudCwgSGFyZGxpbmtzKSIKIG1zZ3N0ciAiU3RhbmRhcmQgKHNuYWJiLCBzZW1pcmVkdW5kYW50LCBow6VyZGEgbMOkbmthcikiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NDk5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUwOAogbXNnaWQgIkZ1bGwgQ29weSAoU2xvd2VyLCBSZWR1bmRhbnQgQmFja3VwKSIKIG1zZ3N0ciAiRnVsbCBrb3BpYSAobMOlbmdzYW1tYXJlLCByZWR1bmRhbnQgc8Oka2VyaGV0c2tvcGlhKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MDUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0CiBtc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCiBtc2dzdHIgIkRlbGFkIChzbmFiYmFzdCwgcmVrb21tZW5kZXJhcyBlaiwgaW5nZW4gc8Oka2VyaGV0c2tvcGlhKSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NDEgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1ODgKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzM0IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODA0Ci0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMTMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDIxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU1MCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU5NworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NDMgbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6MTAyMyBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJOb3QgYSBHaXQgcmVwb3NpdG9yeTogJXMiCiBtc2dzdHIgIkludGUgZXR0IEdpdGFya2l2OiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1NzcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTg2CiBtc2dpZCAiU3RhbmRhcmQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICJTdGFuZGFyZCDDpHIgZW5kYXN0IHRpbGxnw6RuZ2xpZ3QgZsO2ciBsb2thbGEgYXJraXYuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjU4MQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1OTAKIG1zZ2lkICJTaGFyZWQgb25seSBhdmFpbGFibGUgZm9yIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICJEZWxhdCDDpHIgZW5kYXN0IHRpbGxnw6RuZ2xpZ3QgZsO2ciBsb2thbGEgYXJraXYuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYwMgorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJMb2NhdGlvbiAlcyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIlBsYXRzZW4gJXMgZmlubnMgcmVkYW4uIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYxMworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjIKIG1zZ2lkICJGYWlsZWQgdG8gY29uZmlndXJlIG9yaWdpbiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBrb25maWd1cmVyYSB1cnNwcnVuZyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2MjUKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjM0CiBtc2dpZCAiQ291bnRpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiUsOka25hciBvYmpla3QiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjI2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjYzNQogbXNnaWQgImJ1Y2tldHMiCiBtc2dzdHIgImhpbmthciIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo2NTAKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NjU5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNvcHkgb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXM6ICVzIgogbXNnc3RyICJLdW5kZSBpbnRlIGtvcGllcmEgb2JqZWt0L2luZm8vYWx0ZXJuYXRpdjogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njg2CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY5NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgdG8gY2xvbmUgZnJvbSAlcy4iCiBtc2dzdHIgIkluZ2VudGluZyBhdHQga2xvbmEgZnLDpW4gJXMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjY4OCBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMgotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Njk3IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMwogbXNnaWQgIlRoZSAnbWFzdGVyJyBicmFuY2ggaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiIKIG1zZ3N0ciAiR3JlbmVuIFwibWFzdGVyXCIgaGFyIGludGUgaW5pdGllcmF0cy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzAxCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjcxMAogbXNnaWQgIkhhcmRsaW5rcyBhcmUgdW5hdmFpbGFibGUuICBGYWxsaW5nIGJhY2sgdG8gY29weWluZy4iCiBtc2dzdHIgIkjDpXJkYSBsw6Rua2FyIMOkciBpbnRlIHRpbGxnw6RuZ2xpZ2EuIEZhbGxlciB0aWxsYmFrYSBww6Uga29waWVyaW5nLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3MTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzIyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2xvbmluZyBmcm9tICVzIgogbXNnc3RyICJLbG9uYXIgZnLDpW4gJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzQ0CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc1MwogbXNnaWQgIkNvcHlpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiS29waWVyYXIgb2JqZWt0IgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc0NQorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NTQKIG1zZ2lkICJLaUIiCiBtc2dzdHIgIktpQiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3NjkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzc4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNvcHkgb2JqZWN0OiAlcyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBrb3BpZXJhIG9iamVrdDogJXMiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzc5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OAogbXNnaWQgIkxpbmtpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiTMOkbmthciBvYmpla3QiCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NzgwCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjc4OQogbXNnaWQgIm9iamVjdHMiCiBtc2dzdHIgIm9iamVrdCIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo3ODgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6Nzk3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGhhcmRsaW5rIG9iamVjdDogJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgaMOlcmRsw6Rua2Egb2JqZWt0OiAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NDMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODUyCiBtc2dpZCAiQ2Fubm90IGZldGNoIGJyYW5jaGVzIGFuZCBvYmplY3RzLiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBow6RtdGEgZ3JlbmFyIG9jaCBvYmpla3QuIFNlIGtvbnNvbHV0ZGF0YSBmw7ZyIGRldGFsamVyLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NTQKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODYzCiBtc2dpZCAiQ2Fubm90IGZldGNoIHRhZ3MuICBTZWUgY29uc29sZSBvdXRwdXQgZm9yIGRldGFpbHMuIgogbXNnc3RyICJLdW5kZSBpbnRlIGjDpG10YSB0YWdnYXIuIFNlIGtvbnNvbHV0ZGF0YSBmw7ZyIGRldGFsamVyLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4NzgKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODg3CiBtc2dpZCAiQ2Fubm90IGRldGVybWluZSBIRUFELiAgU2VlIGNvbnNvbGUgb3V0cHV0IGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBhdmfDtnJhIEhFQUQuIFNlIGtvbnNvbHV0ZGF0YSBmw7ZyIGRldGFsamVyLiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4ODcKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6ODk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNsZWFudXAgJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgc3TDpGRhIHVwcCAlcyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo4OTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTAyCiBtc2dpZCAiQ2xvbmUgZmFpbGVkLiIKIG1zZ3N0ciAiS2xvbmluZyBtaXNzbHlja2FkZXMuIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkwMAorIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MDkKIG1zZ2lkICJObyBkZWZhdWx0IGJyYW5jaCBvYnRhaW5lZC4iCiBtc2dzdHIgIkjDpG10YWRlIGluZ2VuIHN0YW5kYXJkZ3Jlbi4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTExCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkyMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNhbm5vdCByZXNvbHZlICVzIGFzIGEgY29tbWl0LiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBzbMOlIHVwcCAlcyB0aWxsIG7DpWdvbiBpbmNoZWNrbmluZy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTIzCisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjkzMgogbXNnaWQgIkNyZWF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICJTa2FwYXIgYXJiZXRza2F0YWxvZyIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5MjQgbGliL2luZGV4LnRjbDo2NSBsaWIvaW5kZXgudGNsOjEyNwotIzogbGliL2luZGV4LnRjbDoxOTMKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTMzIGxpYi9pbmRleC50Y2w6NjUgbGliL2luZGV4LnRjbDoxMjgKKyM6IGxpYi9pbmRleC50Y2w6MTk2CiBtc2dpZCAiZmlsZXMiCiBtc2dzdHIgImZpbGVyIgogCi0jOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk1MworIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NjIKIG1zZ2lkICJJbml0aWFsIGZpbGUgY2hlY2tvdXQgZmFpbGVkLiIKIG1zZ3N0ciAiSW5sZWRhbmRlIGZpbHV0Y2hlY2tuaW5nIG1pc3NseWNrYWRlcy4iCiAKLSM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTY5CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjk3OAogbXNnaWQgIk9wZW4iCiBtc2dzdHIgIsOWcHBuYSIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo5NzkKKyM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6OTg4CiBtc2dpZCAiUmVwb3NpdG9yeToiCiBtc2dzdHIgIkFya2l2OiIKIAotIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDoxMDI3CisjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjEwMzcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gb3BlbiByZXBvc2l0b3J5ICVzOiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSDDtnBwbmEgYXJraXZldCAlczoiCkBAIC0xMjE0LDE5ICsxMzE4LDE5IEBACiAidXTDtmthIHRpZGlnYXJlIGluY2hlY2tuaW5nYXIgb20gZHUgaW50ZSBmw7Zyc3QgYXZicnl0ZXIgZGVuIHDDpWfDpWVuZGUgIgogInNhbW1hbnNsYWduaW5nZW4uXG4iCiAKLSM6IGxpYi9jb21taXQudGNsOjQ5CisjOiBsaWIvY29tbWl0LnRjbDo0OAogbXNnaWQgIkVycm9yIGxvYWRpbmcgY29tbWl0IGRhdGEgZm9yIGFtZW5kOiIKIG1zZ3N0ciAiRmVsIHZpZCBpbmzDpHNuaW5nIGF2IGluY2hlY2tuaW5nc2RhdGEgZsO2ciB1dMO2a25pbmc6IgogCi0jOiBsaWIvY29tbWl0LnRjbDo3NgorIzogbGliL2NvbW1pdC50Y2w6NzUKIG1zZ2lkICJVbmFibGUgdG8gb2J0YWluIHlvdXIgaWRlbnRpdHk6IgogbXNnc3RyICJLdW5kZSBpbnRlIGjDpG10YSBkaW4gaWRlbnRpdGV0OiIKIAotIzogbGliL2NvbW1pdC50Y2w6ODEKKyM6IGxpYi9jb21taXQudGNsOjgwCiBtc2dpZCAiSW52YWxpZCBHSVRfQ09NTUlUVEVSX0lERU5UOiIKIG1zZ3N0ciAiRmVsYWt0aWcgR0lUX0NPTU1JVFRFUl9JREVOVDoiCiAKLSM6IGxpYi9jb21taXQudGNsOjEzMworIzogbGliL2NvbW1pdC50Y2w6MTMyCiBtc2dpZCAiIgogIkxhc3Qgc2Nhbm5lZCBzdGF0ZSBkb2VzIG5vdCBtYXRjaCByZXBvc2l0b3J5IHN0YXRlLlxuIgogIlxuIgpAQCAtMTI0Miw3ICsxMzQ2LDcgQEAKICJcbiIKICJTw7ZrbmluZ2VuIGtvbW1lciBhdHQgc3RhcnRhcyBhdXRvbWF0aXNrdCBudS5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTU0CisjOiBsaWIvY29tbWl0LnRjbDoxNTUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVW5tZXJnZWQgZmlsZXMgY2Fubm90IGJlIGNvbW1pdHRlZC5cbiIKQEAgLTEyNTUsNyArMTM1OSw3IEBACiAiRmlsZW4gJXMgaGFyIHNhbW1hbnNsYWduaW5nc2tvbmZsaWt0ZXIuIER1IG3DpXN0ZSBsw7ZzYSBkZW0gb2NoIGvDtmEgZmlsZW4gIgogImlubmFuIGR1IGNoZWNrYXIgaW4gZGVuLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxNjIKKyM6IGxpYi9jb21taXQudGNsOjE2MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJVbmtub3duIGZpbGUgc3RhdGUgJXMgZGV0ZWN0ZWQuXG4iCkBAIC0xMjY2LDcgKzEzNzAsNyBAQAogIlxuIgogIkZpbGVuICVzIGthbiBpbnRlIGNoZWNrYXMgaW4gYXYgcHJvZ3JhbW1ldC5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MTcwCisjOiBsaWIvY29tbWl0LnRjbDoxNzEKIG1zZ2lkICIiCiAiTm8gY2hhbmdlcyB0byBjb21taXQuXG4iCiAiXG4iCkBAIC0xMjc2LDcgKzEzODAsNyBAQAogIlxuIgogIkR1IG3DpXN0ZSBrw7ZhIMOldG1pbnN0b25lIGVuIGZpbCBpbm5hbiBkdSBrYW4gY2hlY2thIGluLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoxODMKKyM6IGxpYi9jb21taXQudGNsOjE4NgogbXNnaWQgIiIKICJQbGVhc2Ugc3VwcGx5IGEgY29tbWl0IG1lc3NhZ2UuXG4iCiAiXG4iCkBAIC0xMjk0LDQ1ICsxMzk4LDQ1IEBACiAiLSBBbmRyYSByYWRlbjogVG9tXG4iCiAiLSBGw7ZsamFuZGUgcmFkZXI6IEJlc2tyaXYgdmFyZsO2ciBkZXQgaMOkciDDpHIgZW4gYnJhIMOkbmRyaW5nLlxuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMDcKKyM6IGxpYi9jb21taXQudGNsOjIxMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIndhcm5pbmc6IFRjbCBkb2VzIG5vdCBzdXBwb3J0IGVuY29kaW5nICclcycuIgogbXNnc3RyICJ2YXJuaW5nOiBUY2wgc3TDtmRlciBpbnRlIHRlY2tlbmtvZG5pbmdlbiBcIiVzXCIuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyMjEKKyM6IGxpYi9jb21taXQudGNsOjIyNgogbXNnaWQgIkNhbGxpbmcgcHJlLWNvbW1pdCBob29rLi4uIgotbXNnc3RyICJBbnJvcGFyIGtyb2sgZsO2cmUgaW5jaGVja25pbmcuLi4iCittc2dzdHIgIkFucm9wYXIga3Jva2VuIGbDtnJlIGluY2hlY2tuaW5nIChwcmUtY29tbWl0KS4uLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MjM2CisjOiBsaWIvY29tbWl0LnRjbDoyNDEKIG1zZ2lkICJDb21taXQgZGVjbGluZWQgYnkgcHJlLWNvbW1pdCBob29rLiIKLW1zZ3N0ciAiSW5jaGVja25pbmdlbiBhdnZpc2FkZXMgYXYga3JvayBmw7ZyZSBpbmNoZWNrbmluZy4iCittc2dzdHIgIkluY2hlY2tuaW5nZW4gYXZ2aXNhZGVzIGF2IGtyb2tlbiBmw7ZyZSBpbmNoZWNrbmluZyAocHJlLWNvbW1pdCkuIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyNTkKKyM6IGxpYi9jb21taXQudGNsOjI2NAogbXNnaWQgIkNhbGxpbmcgY29tbWl0LW1zZyBob29rLi4uIgotbXNnc3RyICJBbnJvcGFyIGtyb2sgZsO2ciBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlLi4uIgorbXNnc3RyICJBbnJvcGFyIGtyb2tlbiBmw7ZyIGluY2hlY2tuaW5nc21lZGRlbGFuZGUgKGNvbW1pdC1tc2cpLi4uIgogCi0jOiBsaWIvY29tbWl0LnRjbDoyNzQKKyM6IGxpYi9jb21taXQudGNsOjI3OQogbXNnaWQgIkNvbW1pdCBkZWNsaW5lZCBieSBjb21taXQtbXNnIGhvb2suIgotbXNnc3RyICJJbmNoZWNrbmluZyBhdnZpc2FkIGF2IGtyb2sgZsO2ciBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlLiIKK21zZ3N0ciAiSW5jaGVja25pbmcgYXZ2aXNhZCBhdiBrcm9rZW4gZsO2ciBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlIChjb21taXQtbXNnKS4iCiAKLSM6IGxpYi9jb21taXQudGNsOjI4NworIzogbGliL2NvbW1pdC50Y2w6MjkyCiBtc2dpZCAiQ29tbWl0dGluZyBjaGFuZ2VzLi4uIgogbXNnc3RyICJDaGVja2FyIGluIMOkbmRyaW5nYXIuLi4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMwMworIzogbGliL2NvbW1pdC50Y2w6MzA4CiBtc2dpZCAid3JpdGUtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJ3cml0ZS10cmVlIG1pc3NseWNrYWRlczoiCiAKLSM6IGxpYi9jb21taXQudGNsOjMwNCBsaWIvY29tbWl0LnRjbDozNDggbGliL2NvbW1pdC50Y2w6MzY4CisjOiBsaWIvY29tbWl0LnRjbDozMDkgbGliL2NvbW1pdC50Y2w6MzUzIGxpYi9jb21taXQudGNsOjM3MwogbXNnaWQgIkNvbW1pdCBmYWlsZWQuIgogbXNnc3RyICJJbmNoZWNrbmluZ2VuIG1pc3NseWNrYWRlcy4iCiAKLSM6IGxpYi9jb21taXQudGNsOjMyMQorIzogbGliL2NvbW1pdC50Y2w6MzI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGFwcGVhcnMgdG8gYmUgY29ycnVwdCIKIG1zZ3N0ciAiSW5jaGVja25pbmdlbiAlcyB2ZXJrYXIgdmFyYSB0cmFzaWciCiAKLSM6IGxpYi9jb21taXQudGNsOjMyNgorIzogbGliL2NvbW1pdC50Y2w6MzMxCiBtc2dpZCAiIgogIk5vIGNoYW5nZXMgdG8gY29tbWl0LlxuIgogIlxuIgpAQCAtMTM0NiwxOSArMTQ1MCwxOSBAQAogIlxuIgogIkVuIHPDtmtuaW5nIGtvbW1lciBhdHQgc3RhcnRhcyBhdXRvbWF0aXNrdCBudS5cbiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzMzCisjOiBsaWIvY29tbWl0LnRjbDozMzgKIG1zZ2lkICJObyBjaGFuZ2VzIHRvIGNvbW1pdC4iCiBtc2dzdHIgIkluZ2Egw6RuZHJpbmdhciBhdHQgY2hlY2thIGluLiIKIAotIzogbGliL2NvbW1pdC50Y2w6MzQ3CisjOiBsaWIvY29tbWl0LnRjbDozNTIKIG1zZ2lkICJjb21taXQtdHJlZSBmYWlsZWQ6IgogbXNnc3RyICJjb21taXQtdHJlZSBtaXNzbHlja2FkZXM6IgogCi0jOiBsaWIvY29tbWl0LnRjbDozNjcKKyM6IGxpYi9jb21taXQudGNsOjM3MgogbXNnaWQgInVwZGF0ZS1yZWYgZmFpbGVkOiIKIG1zZ3N0ciAidXBkYXRlLXJlZiBtaXNzbHlja2FkZXM6IgogCi0jOiBsaWIvY29tbWl0LnRjbDo0NTQKKyM6IGxpYi9jb21taXQudGNsOjQ2MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNyZWF0ZWQgY29tbWl0ICVzOiAlcyIKIG1zZ3N0ciAiU2thcGFkZSBpbmNoZWNrbmluZ2VuICVzOiAlcyIKQEAgLTE0MzMsNyArMTUzNyw3IEBACiBtc2dpZCAiSW52YWxpZCBkYXRlIGZyb20gR2l0OiAlcyIKIG1zZ3N0ciAiT2dpbHRpZ3QgZGF0dW0gZnLDpW4gR2l0OiAlcyIKIAotIzogbGliL2RpZmYudGNsOjQ0CisjOiBsaWIvZGlmZi50Y2w6NTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gZGlmZmVyZW5jZXMgZGV0ZWN0ZWQuXG4iCkBAIC0xNDU2LDQ4ICsxNTYwLDEwMSBAQAogIkVuIHPDtmtuaW5nIGtvbW1lciBhdXRvbWF0aXNrdCBhdHQgc3RhcnRhcyBmw7ZyIGF0dCBoaXR0YSBhbmRyYSBmaWxlciBzb20ga2FuICIKICJ2YXJhIGkgc2FtbWEgdGlsbHN0w6VuZC4iCiAKLSM6IGxpYi9kaWZmLnRjbDo4MworIzogbGliL2RpZmYudGNsOjk5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTG9hZGluZyBkaWZmIG9mICVzLi4uIgogbXNnc3RyICJMw6RzZXIgZGlmZmVyZW5zIGbDtnIgJXMuLi4iCiAKLSM6IGxpYi9kaWZmLnRjbDoxMTYgbGliL2RpZmYudGNsOjE5MAorIzogbGliL2RpZmYudGNsOjEyMAorbXNnaWQgIiIKKyJMT0NBTDogZGVsZXRlZFxuIgorIlJFTU9URTpcbiIKK21zZ3N0ciAiIgorIkxPS0FMOiBib3J0dGFnZW5cbiIKKyJGSsOEUlI6XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxMjUKK21zZ2lkICIiCisiUkVNT1RFOiBkZWxldGVkXG4iCisiTE9DQUw6XG4iCittc2dzdHIgIiIKKyJGSsOEUlI6IGJvcnR0YWdlblxuIgorIkxPS0FMOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTMyCittc2dpZCAiTE9DQUw6XG4iCittc2dzdHIgIkxPS0FMOlxuIgorCisjOiBsaWIvZGlmZi50Y2w6MTM1Cittc2dpZCAiUkVNT1RFOlxuIgorbXNnc3RyICJGSsOEUlI6XG4iCisKKyM6IGxpYi9kaWZmLnRjbDoxOTcgbGliL2RpZmYudGNsOjI5NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBkaXNwbGF5ICVzIgogbXNnc3RyICJLYW4gaW50ZSB2aXNhICVzIgogCi0jOiBsaWIvZGlmZi50Y2w6MTE3CisjOiBsaWIvZGlmZi50Y2w6MTk4CiBtc2dpZCAiRXJyb3IgbG9hZGluZyBmaWxlOiIKIG1zZ3N0ciAiRmVsIHZpZCBsw6RzbmluZyBhdiBmaWw6IgogCi0jOiBsaWIvZGlmZi50Y2w6MTI0CisjOiBsaWIvZGlmZi50Y2w6MjA1CiBtc2dpZCAiR2l0IFJlcG9zaXRvcnkgKHN1YnByb2plY3QpIgogbXNnc3RyICJHaXRhcmtpdiAodW5kZXJwcm9qZWt0KSIKIAotIzogbGliL2RpZmYudGNsOjEzNgorIzogbGliL2RpZmYudGNsOjIxNwogbXNnaWQgIiogQmluYXJ5IGZpbGUgKG5vdCBzaG93aW5nIGNvbnRlbnQpLiIKIG1zZ3N0ciAiKiBCaW7DpHJmaWwgKHZpc2FyIGludGUgaW5uZWjDpWxsZXQpLiIKIAotIzogbGliL2RpZmYudGNsOjE5MQotbXNnaWQgIkVycm9yIGxvYWRpbmcgZGlmZjoiCi1tc2dzdHIgIkZlbCB2aWQgaW5sw6RzbmluZyBhdiBkaWZmZXJlbnM6IgorIzogbGliL2RpZmYudGNsOjIyMgorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyIqIFVudHJhY2tlZCBmaWxlIGlzICVkIGJ5dGVzLlxuIgorIiogU2hvd2luZyBvbmx5IGZpcnN0ICVkIGJ5dGVzLlxuIgorbXNnc3RyICIiCisiKiBEZW4gb3Nww6VyYWRlIGZpbGVuIMOkciAlZCBieXRlLlxuIgorIiogVmlzYXIgZW5kYXN0IGlubGVkYW5kZSAlZCBieXRlLlxuIgogCi0jOiBsaWIvZGlmZi50Y2w6MzEzCisjOiBsaWIvZGlmZi50Y2w6MjI4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiogVW50cmFja2VkIGZpbGUgY2xpcHBlZCBoZXJlIGJ5ICVzLlxuIgorIiogVG8gc2VlIHRoZSBlbnRpcmUgZmlsZSwgdXNlIGFuIGV4dGVybmFsIGVkaXRvci5cbiIKK21zZ3N0ciAiIgorIlxuIgorIiogRGVuIG9zcMOlcmFkZSBmaWxlbiBrbGlwcHRlcyBow6RyIGF2ICVzLlxuIgorIiogRsO2ciBhdHQgc2UgaGVsYSBmaWxlbiwgYW52w6RuZCBldHQgZXh0ZXJudCByZWRpZ2VyaW5nc3Byb2dyYW0uXG4iCisKKyM6IGxpYi9kaWZmLnRjbDo0MzYKIG1zZ2lkICJGYWlsZWQgdG8gdW5zdGFnZSBzZWxlY3RlZCBodW5rLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSB0YSBib3J0IGRlbiB2YWxkYSBkZWxlbiBmcsOlbiBrw7ZuLiIKIAotIzogbGliL2RpZmYudGNsOjMyMAorIzogbGliL2RpZmYudGNsOjQ0MwogbXNnaWQgIkZhaWxlZCB0byBzdGFnZSBzZWxlY3RlZCBodW5rLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBsw6RnZ2EgdGlsbCBkZW4gdmFsZGEgZGVsZW4gdGlsbCBrw7ZuLiIKIAotIzogbGliL2RpZmYudGNsOjM4NgorIzogbGliL2RpZmYudGNsOjUwOQogbXNnaWQgIkZhaWxlZCB0byB1bnN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICJLdW5kZSBpbnRlIHRhIGJvcnQgZGVuIHZhbGRhIHJhZGVuIGZyw6VuIGvDtm4uIgogCi0jOiBsaWIvZGlmZi50Y2w6Mzk0CisjOiBsaWIvZGlmZi50Y2w6NTE3CiBtc2dpZCAiRmFpbGVkIHRvIHN0YWdlIHNlbGVjdGVkIGxpbmUuIgogbXNnc3RyICJLdW5kZSBpbnRlIGzDpGdnYSB0aWxsIGRlbiB2YWxkYSByYWRlbiB0aWxsIGvDtm4uIgogCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0MworbXNnaWQgIkRlZmF1bHQiCittc2dzdHIgIlN0YW5kYXJkIgorCisjOiBsaWIvZW5jb2RpbmcudGNsOjQ0OAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlN5c3RlbSAoJXMpIgorbXNnc3RyICJTeXN0ZW1ldHMgKCVzKSIKKworIzogbGliL2VuY29kaW5nLnRjbDo0NTkgbGliL2VuY29kaW5nLnRjbDo0NjUKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAiQW5uYW4iCisKICM6IGxpYi9lcnJvci50Y2w6MjAgbGliL2Vycm9yLnRjbDoxMTQKIG1zZ2lkICJlcnJvciIKIG1zZ3N0ciAiZmVsIgpAQCAtMTUzNCwzOSArMTY5MSw0OCBAQAogbXNnaWQgIlVubG9jayBJbmRleCIKIG1zZ3N0ciAiTMOlcyB1cHAgaW5kZXgiCiAKLSM6IGxpYi9pbmRleC50Y2w6MjgyCisjOiBsaWIvaW5kZXgudGNsOjI4NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlVuc3RhZ2luZyAlcyBmcm9tIGNvbW1pdCIKIG1zZ3N0ciAiVGFyIGJvcnQgJXMgZsO2ciBpbmNoZWNrbmluZ3Nrw7ZuIgogCi0jOiBsaWIvaW5kZXgudGNsOjMxMworIzogbGliL2luZGV4LnRjbDozMjYKIG1zZ2lkICJSZWFkeSB0byBjb21taXQuIgogbXNnc3RyICJSZWRvIGF0dCBjaGVja2EgaW4uIgogCi0jOiBsaWIvaW5kZXgudGNsOjMyNgorIzogbGliL2luZGV4LnRjbDozMzkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJBZGRpbmcgJXMiCiBtc2dzdHIgIkzDpGdnZXIgdGlsbCAlcyIKIAotIzogbGliL2luZGV4LnRjbDozODEKKyM6IGxpYi9pbmRleC50Y2w6Mzk2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gZmlsZSAlcz8iCiBtc2dzdHIgIsOFdGVyc3TDpGxsIMOkbmRyaW5nYXJuYSBpIGZpbGVuICVzPyIKIAotIzogbGliL2luZGV4LnRjbDozODMKKyM6IGxpYi9pbmRleC50Y2w6Mzk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2ZXJ0IGNoYW5nZXMgaW4gdGhlc2UgJWkgZmlsZXM/IgogbXNnc3RyICLDhXRlcnN0w6RsbCDDpG5kcmluZ2FybmEgaSBkZXNzYSAlaSBmaWxlcj8iCiAKLSM6IGxpYi9pbmRleC50Y2w6MzkxCisjOiBsaWIvaW5kZXgudGNsOjQwNgogbXNnaWQgIkFueSB1bnN0YWdlZCBjaGFuZ2VzIHdpbGwgYmUgcGVybWFuZW50bHkgbG9zdCBieSB0aGUgcmV2ZXJ0LiIKIG1zZ3N0ciAiIgogIkFsbGEgb2vDtmFkZSDDpG5kcmluZ2FyIGtvbW1lciBwZXJtYW5lbnQgZ8OlIGbDtnJsb3JhZGUgdmlkIMOldGVyc3TDpGxsbmluZ2VuLiIKIAotIzogbGliL2luZGV4LnRjbDozOTQKKyM6IGxpYi9pbmRleC50Y2w6NDA5CiBtc2dpZCAiRG8gTm90aGluZyIKIG1zZ3N0ciAiR8O2ciBpbmdlbnRpbmciCiAKKyM6IGxpYi9pbmRleC50Y2w6NDI3Cittc2dpZCAiUmV2ZXJ0aW5nIHNlbGVjdGVkIGZpbGVzIgorbXNnc3RyICLDhXRlcnN0w6RsbGVyIHZhbGRhIGZpbGVyIgorCisjOiBsaWIvaW5kZXgudGNsOjQzMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIlJldmVydGluZyAlcyIKK21zZ3N0ciAiw4V0ZXJzdMOkbGxlciAlcyIKKwogIzogbGliL21lcmdlLnRjbDoxMwogbXNnaWQgIiIKICJDYW5ub3QgbWVyZ2Ugd2hpbGUgYW1lbmRpbmcuXG4iCkBAIC0xNTk0LDcgKzE3NjAsNyBAQAogIlxuIgogIlPDtmtuaW5nZW4ga29tbWVyIGF0dCBzdGFydGFzIGF1dG9tYXRpc2t0IG51LlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjQ0CisjOiBsaWIvbWVyZ2UudGNsOjQ1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbmZsaWN0ZWQgbWVyZ2UuXG4iCkBAIC0xNjExLDcgKzE3NzcsNyBAQAogIkR1IG3DpXN0ZSBsw7ZzYSBkZW0sIGvDtmEgZmlsZW4gb2NoIGNoZWNrYSBpbiBmw7ZyIGF0dCBmdWxsYm9yZGEgZGVuIGFrdHVlbGxhICIKICJzYW1tYW5zbGFnbmluZ2VuLiBOw6RyIGR1IGdqb3J0IGRldCBrYW4gZHUgcMOlYsO2cmphIGVuIG55IHNhbW1hbnNsYWduaW5nLlxuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjU0CisjOiBsaWIvbWVyZ2UudGNsOjU1CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoYW5nZS5cbiIKQEAgLTE2MjksMzQgKzE3OTUsMzQgQEAKICJzYW1tYW5zbGFnbmluZy4gT20gZHUgZ8O2ciBkZXQgYmxpciBkZXQgZW5rbGFyZSBhdHQgYXZicnl0YSBlbiBtaXNzbHlja2FkICIKICJzYW1tYW5zbGFnbmluZywgb20gZGV0IHNrdWxsZSB2YXJhIG7DtmR2w6RuZGlndC5cbiIKIAotIzogbGliL21lcmdlLnRjbDoxMDYKKyM6IGxpYi9tZXJnZS50Y2w6MTA3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiJXMgb2YgJXMiCiBtc2dzdHIgIiVzIGF2ICVzIgogCi0jOiBsaWIvbWVyZ2UudGNsOjExOQorIzogbGliL21lcmdlLnRjbDoxMjAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnaW5nICVzIGFuZCAlcy4uLiIKIG1zZ3N0ciAiU2zDpXIgaWhvcCAlcyBvY2ggJXMuLi4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MTMwCisjOiBsaWIvbWVyZ2UudGNsOjEzMQogbXNnaWQgIk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIgogbXNnc3RyICJTYW1tYW5zbGFnbmluZ2VuIGF2c2x1dGFkZXMgZnJhbWfDpW5nc3Jpa3QuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjEzMgorIzogbGliL21lcmdlLnRjbDoxMzMKIG1zZ2lkICJNZXJnZSBmYWlsZWQuICBDb25mbGljdCByZXNvbHV0aW9uIGlzIHJlcXVpcmVkLiIKIG1zZ3N0ciAiU2FtbWFuc2xhZ25pbmdlbiBtaXNzbHlja2FkZXMuIER1IG3DpXN0ZSBsw7ZzYSBrb25mbGlrdGVybmEuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjE1NworIzogbGliL21lcmdlLnRjbDoxNTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNZXJnZSBJbnRvICVzIgogbXNnc3RyICJTbMOlIGlob3AgaSAlcyIKIAotIzogbGliL21lcmdlLnRjbDoxNzYKKyM6IGxpYi9tZXJnZS50Y2w6MTc3CiBtc2dpZCAiUmV2aXNpb24gVG8gTWVyZ2UiCiBtc2dzdHIgIlJldmlzaW9uZXIgYXR0IHNsw6UgaWhvcCIKIAotIzogbGliL21lcmdlLnRjbDoyMTEKKyM6IGxpYi9tZXJnZS50Y2w6MjEyCiBtc2dpZCAiIgogIkNhbm5vdCBhYm9ydCB3aGlsZSBhbWVuZGluZy5cbiIKICJcbiIKQEAgLTE2NjYsNyArMTgzMiw3IEBACiAiXG4iCiAiRHUgbcOlc3RlIGfDtnJhIGRpZyBmw6RyZGlnIG1lZCBhdHQgdXTDtmthIGluY2hlY2tuaW5nZW4uXG4iCiAKLSM6IGxpYi9tZXJnZS50Y2w6MjIxCisjOiBsaWIvbWVyZ2UudGNsOjIyMgogbXNnaWQgIiIKICJBYm9ydCBtZXJnZT9cbiIKICJcbiIKQEAgLTE2ODEsNyArMTg0Nyw3IEBACiAiXG4iCiAiR8OlIHZpZGFyZSBtZWQgYXR0IGF2YnJ5dGEgZGVuIGFrdHVlbGxhIHNhbW1hbnNsYWduaW5nZW4/IgogCi0jOiBsaWIvbWVyZ2UudGNsOjIyNworIzogbGliL21lcmdlLnRjbDoyMjgKIG1zZ2lkICIiCiAiUmVzZXQgY2hhbmdlcz9cbiIKICJcbiIKQEAgLTE2OTYsMTMxICsxODYyLDMzNiBAQAogIlxuIgogIkfDpSB2aWRhcmUgbWVkIGF0dCDDpXRlcnN0w6RsbGEgZGUgYWt0dWVsbGEgw6RuZHJpbmdhcm5hPyIKIAotIzogbGliL21lcmdlLnRjbDoyMzgKKyM6IGxpYi9tZXJnZS50Y2w6MjM5CiBtc2dpZCAiQWJvcnRpbmciCiBtc2dzdHIgIkF2YnJ5dGVyIgogCi0jOiBsaWIvbWVyZ2UudGNsOjIzOAorIzogbGliL21lcmdlLnRjbDoyMzkKIG1zZ2lkICJmaWxlcyByZXNldCIKIG1zZ3N0ciAiZmlsZXIgw6V0ZXJzdMOkbGxkYSIKIAotIzogbGliL21lcmdlLnRjbDoyNjYKKyM6IGxpYi9tZXJnZS50Y2w6MjY3CiBtc2dpZCAiQWJvcnQgZmFpbGVkLiIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIGF2YnJ5dGEuIgogCi0jOiBsaWIvbWVyZ2UudGNsOjI2OAorIzogbGliL21lcmdlLnRjbDoyNjkKIG1zZ2lkICJBYm9ydCBjb21wbGV0ZWQuICBSZWFkeS4iCiBtc2dzdHIgIkF2YnJ5dG5pbmcgZnVsbGJvcmRhZC4gUmVkby4iCiAKLSM6IGxpYi9vcHRpb24udGNsOjk1CisjOiBsaWIvbWVyZ2V0b29sLnRjbDo4Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgYmFzZSB2ZXJzaW9uPyIKK21zZ3N0ciAiVHZpbmdhIGzDtnNuaW5nIGF0dCBhbnbDpG5kYSBiYXN2ZXJzaW9uZW4/IgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDo5Cittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGlzIGJyYW5jaD8iCittc2dzdHIgIlR2aW5nYSBsw7ZzbmluZyBhdHQgYW52w6RuZGEgZGVuIGFrdHVlbGxhIGdyZW5lbj8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjEwCittc2dpZCAiRm9yY2UgcmVzb2x1dGlvbiB0byB0aGUgb3RoZXIgYnJhbmNoPyIKK21zZ3N0ciAiVHZpbmdhIGzDtnNuaW5nIGF0dCBhbnbDpG5kYSBkZW4gYW5kcmEgZ3JlbmVuPyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiTm90ZSB0aGF0IHRoZSBkaWZmIHNob3dzIG9ubHkgY29uZmxpY3RpbmcgY2hhbmdlcy5cbiIKKyJcbiIKKyIlcyB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuIgorIlxuIgorIlRoaXMgb3BlcmF0aW9uIGNhbiBiZSB1bmRvbmUgb25seSBieSByZXN0YXJ0aW5nIHRoZSBtZXJnZS4iCittc2dzdHIgIiIKKyJPYnNlcnZlcmEgYXR0IGRpZmZlbiBlbmRhc3QgdmlzYXIgZGUgw6RuZHJpbmdhciBzb20gc3TDpXIgaSBrb25mbGlrdC5cbiIKKyJcbiIKKyIlcyBrb21tZXIgYXR0IHNrcml2YXMgw7Z2ZXIuXG4iCisiXG4iCisiRHUgbcOlc3RlIHN0YXJ0YSBvbSBzYW1tYW5zbGFnbmluZ2VuIGbDtnIgYXR0IGfDtnJhIGRlbiBow6RyIG9wZXJhdGlvbmVuIG9nam9yZC4iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRmlsZSAlcyBzZWVtcyB0byBoYXZlIHVucmVzb2x2ZWQgY29uZmxpY3RzLCBzdGlsbCBzdGFnZT8iCittc2dzdHIgIkZpbGVuICVzIHZlcmthciBpbm5laMOlbGxhIG9sw7ZzdGEga29uZmxpa3Rlci4gVmlsbCBkdSBrw7ZhIMOkbmTDpT8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjYwCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQWRkaW5nIHJlc29sdXRpb24gZm9yICVzIgorbXNnc3RyICJMw6RnZ2VyIHRpbGwgbMO2c25pbmcgZsO2ciAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MTQxCittc2dpZCAiQ2Fubm90IHJlc29sdmUgZGVsZXRpb24gb3IgbGluayBjb25mbGljdHMgdXNpbmcgYSB0b29sIgorbXNnc3RyICJLYW4gaW50ZSBsw7ZzYSBib3J0dGFnbmluZ3MtIGVsbGVyIGzDpG5ra29uZmxpa3RlciBtZWQgZXR0IHZlcmt0eWciCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjE0NgorbXNnaWQgIkNvbmZsaWN0IGZpbGUgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIktvbmZsaWt0ZmlsIGV4aXN0ZXJhciBpbnRlIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDoyNjQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJOb3QgYSBHVUkgbWVyZ2UgdG9vbDogJyVzJyIKK21zZ3N0ciAiSW50ZSBldHQgZ3JhZmlza3QgdmVya3R5ZyBmw7ZyIHNhbW1hbnNsYWduaW5nOiAlcyIKKworIzogbGliL21lcmdldG9vbC50Y2w6MjY4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiVW5zdXBwb3J0ZWQgbWVyZ2UgdG9vbCAnJXMnIgorbXNnc3RyICJWZXJrdHlnZXQgXCIlc1wiIGbDtnIgc2FtbWFuc2xhZ25pbmcgc3TDtmRzIGludGUiCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMwMworbXNnaWQgIk1lcmdlIHRvb2wgaXMgYWxyZWFkeSBydW5uaW5nLCB0ZXJtaW5hdGUgaXQ/IgorbXNnc3RyICJWZXJrdHlnZXQgZsO2ciBzYW1tYW5zbGFnbmluZyBrw7ZycyByZWRhbi4gVmlsbCBkdSBhdnNsdXRhIGRldD8iCisKKyM6IGxpYi9tZXJnZXRvb2wudGNsOjMyMworIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciByZXRyaWV2aW5nIHZlcnNpb25zOlxuIgorIiVzIgorbXNnc3RyICIiCisiRmVsIHZpZCBow6RtdG5pbmcgYXYgdmVyc2lvbmVyOlxuIgorIiVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozNDMKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiQ291bGQgbm90IHN0YXJ0IHRoZSBtZXJnZSB0b29sOlxuIgorIlxuIgorIiVzIgorbXNnc3RyICIiCisiS3VuZGUgaW50ZSBzdGFydGEgdmVya3R5ZyBmw7ZyIHNhbW1hbnNsYWduaW5nOlxuIgorIlxuIgorIiVzIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozNDcKK21zZ2lkICJSdW5uaW5nIG1lcmdlIHRvb2wuLi4iCittc2dzdHIgIkvDtnIgdmVya3R5ZyBmw7ZyIHNhbW1hbnNsYWduaW5nLi4uIgorCisjOiBsaWIvbWVyZ2V0b29sLnRjbDozNzUgbGliL21lcmdldG9vbC50Y2w6MzgzCittc2dpZCAiTWVyZ2UgdG9vbCBmYWlsZWQuIgorbXNnc3RyICJWZXJrdHlnZXQgZsO2ciBzYW1tYW5zbGFnbmluZyBtaXNzbHlja2FkZXMuIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZ2xvYmFsIGVuY29kaW5nICclcyciCittc2dzdHIgIkRlbiBnbG9iYWxhIHRlY2tlbmtvZG5pbmdlbiBcIiVzXCIgw6RyIG9naWx0aWciCisKKyM6IGxpYi9vcHRpb24udGNsOjE5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXBvIGVuY29kaW5nICclcyciCittc2dzdHIgIkFya2l2ZXRzIHRlY2tlbmtvZG5pbmcgXCIlc1wiIMOkciBvZ2lsdGlnIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxMTcKIG1zZ2lkICJSZXN0b3JlIERlZmF1bHRzIgogbXNnc3RyICLDhXRlcnN0w6RsbCBzdGFuZGFyZHbDpHJkZW4iCiAKLSM6IGxpYi9vcHRpb24udGNsOjk5CisjOiBsaWIvb3B0aW9uLnRjbDoxMjEKIG1zZ2lkICJTYXZlIgogbXNnc3RyICJTcGFyYSIKIAotIzogbGliL29wdGlvbi50Y2w6MTA5CisjOiBsaWIvb3B0aW9uLnRjbDoxMzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyBSZXBvc2l0b3J5IgogbXNnc3RyICJBcmtpdmV0ICVzIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTAKKyM6IGxpYi9vcHRpb24udGNsOjEzMgogbXNnaWQgIkdsb2JhbCAoQWxsIFJlcG9zaXRvcmllcykiCiBtc2dzdHIgIkdsb2JhbHQgKGFsbGEgYXJraXYpIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMTYKKyM6IGxpYi9vcHRpb24udGNsOjEzOAogbXNnaWQgIlVzZXIgTmFtZSIKIG1zZ3N0ciAiQW52w6RuZGFybmFtbiIKIAotIzogbGliL29wdGlvbi50Y2w6MTE3CisjOiBsaWIvb3B0aW9uLnRjbDoxMzkKIG1zZ2lkICJFbWFpbCBBZGRyZXNzIgogbXNnc3RyICJFLXBvc3RhZHJlc3MiCiAKLSM6IGxpYi9vcHRpb24udGNsOjExOQorIzogbGliL29wdGlvbi50Y2w6MTQxCiBtc2dpZCAiU3VtbWFyaXplIE1lcmdlIENvbW1pdHMiCiBtc2dzdHIgIlN1bW1lcmEgc2FtbWFuc2xhZ25pbmdzaW5jaGVja25pbmdhciIKIAotIzogbGliL29wdGlvbi50Y2w6MTIwCisjOiBsaWIvb3B0aW9uLnRjbDoxNDIKIG1zZ2lkICJNZXJnZSBWZXJib3NpdHkiCiBtc2dzdHIgIlByYXRzYW1oZXQgZsO2ciBzYW1tYW5zbGFnbmluZ2FyIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxMjEKKyM6IGxpYi9vcHRpb24udGNsOjE0MwogbXNnaWQgIlNob3cgRGlmZnN0YXQgQWZ0ZXIgTWVyZ2UiCiBtc2dzdHIgIlZpc2EgZGlmZnN0YXRpc3RpayBlZnRlciBzYW1tYW5zbGFnbmluZyIKIAotIzogbGliL29wdGlvbi50Y2w6MTIzCisjOiBsaWIvb3B0aW9uLnRjbDoxNDQKK21zZ2lkICJVc2UgTWVyZ2UgVG9vbCIKK21zZ3N0ciAiQW52w6RuZCB2ZXJrdHlnIGbDtnIgc2FtbWFuc2xhZ25pbmciCisKKyM6IGxpYi9vcHRpb24udGNsOjE0NgogbXNnaWQgIlRydXN0IEZpbGUgTW9kaWZpY2F0aW9uIFRpbWVzdGFtcHMiCiBtc2dzdHIgIkxpdGEgcMOlIGZpbMOkbmRyaW5nc3RpZHNzdMOkbXBsYXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNAorIzogbGliL29wdGlvbi50Y2w6MTQ3CiBtc2dpZCAiUHJ1bmUgVHJhY2tpbmcgQnJhbmNoZXMgRHVyaW5nIEZldGNoIgogbXNnc3RyICJTdMOkZGEgc3DDpXJhZGUgZ3JlbmFyIHZpZCBow6RtdG5pbmciCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNQorIzogbGliL29wdGlvbi50Y2w6MTQ4CiBtc2dpZCAiTWF0Y2ggVHJhY2tpbmcgQnJhbmNoZXMiCiBtc2dzdHIgIk1hdGNoYSBzcMOlcmFkZSBncmVuYXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyNgorIzogbGliL29wdGlvbi50Y2w6MTQ5CiBtc2dpZCAiQmxhbWUgQ29weSBPbmx5IE9uIENoYW5nZWQgRmlsZXMiCiBtc2dzdHIgIktsYW5kcmEga29waWVyaW5nIGJhcmEgaSDDpG5kcmFkZSBmaWxlciIKIAotIzogbGliL29wdGlvbi50Y2w6MTI3CisjOiBsaWIvb3B0aW9uLnRjbDoxNTAKIG1zZ2lkICJNaW5pbXVtIExldHRlcnMgVG8gQmxhbWUgQ29weSBPbiIKIG1zZ3N0ciAiTWluc3RhIGFudGFsIHRlY2tlbiBhdHQga2xhbmRyYSBrb3BpZXJpbmcgZsO2ciIKIAotIzogbGliL29wdGlvbi50Y2w6MTI4CisjOiBsaWIvb3B0aW9uLnRjbDoxNTEKK21zZ2lkICJCbGFtZSBIaXN0b3J5IENvbnRleHQgUmFkaXVzIChkYXlzKSIKK21zZ3N0ciAiSGlzdG9yaWtyYWRpZSBmw7ZyIGtsYW5kcmluZyAoZGFnYXIpIgorCisjOiBsaWIvb3B0aW9uLnRjbDoxNTIKIG1zZ2lkICJOdW1iZXIgb2YgRGlmZiBDb250ZXh0IExpbmVzIgogbXNnc3RyICJBbnRhbCByYWRlciBzYW1tYW5oYW5nIGkgZGlmZmVyZW5zZXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjEyOQorIzogbGliL29wdGlvbi50Y2w6MTUzCiBtc2dpZCAiQ29tbWl0IE1lc3NhZ2UgVGV4dCBXaWR0aCIKIG1zZ3N0ciAiVGV4dGJyZWRkIGbDtnIgaW5jaGVja25pbmdzbWVkZGVsYW5kZSIKIAotIzogbGliL29wdGlvbi50Y2w6MTMwCisjOiBsaWIvb3B0aW9uLnRjbDoxNTQKIG1zZ2lkICJOZXcgQnJhbmNoIE5hbWUgVGVtcGxhdGUiCiBtc2dzdHIgIk1hbGwgZsO2ciBuYW1uIHDDpSBueWEgZ3JlbmFyIgogCi0jOiBsaWIvb3B0aW9uLnRjbDoxOTQKKyM6IGxpYi9vcHRpb24udGNsOjE1NQorbXNnaWQgIkRlZmF1bHQgRmlsZSBDb250ZW50cyBFbmNvZGluZyIKK21zZ3N0ciAiU3RhbmRhcmR0ZWNrZW5rb2RuaW5nIGbDtnIgZmlsaW5uZWjDpWxsIgorCisjOiBsaWIvb3B0aW9uLnRjbDoyMDMKK21zZ2lkICJDaGFuZ2UiCittc2dzdHIgIsOEbmRyYSIKKworIzogbGliL29wdGlvbi50Y2w6MjMwCiBtc2dpZCAiU3BlbGxpbmcgRGljdGlvbmFyeToiCiBtc2dzdHIgIlN0YXZuaW5nc29yZGxpc3RhOiIKIAotIzogbGliL29wdGlvbi50Y2w6MjE4CisjOiBsaWIvb3B0aW9uLnRjbDoyNTQKIG1zZ2lkICJDaGFuZ2UgRm9udCIKIG1zZ3N0ciAiQnl0IHRlY2tlbnNuaXR0IgogCi0jOiBsaWIvb3B0aW9uLnRjbDoyMjIKKyM6IGxpYi9vcHRpb24udGNsOjI1OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNob29zZSAlcyIKIG1zZ3N0ciAiVsOkbGogJXMiCiAKLSM6IGxpYi9vcHRpb24udGNsOjIyOAorIzogbGliL29wdGlvbi50Y2w6MjY0CiBtc2dpZCAicHQuIgogbXNnc3RyICJwLiIKIAotIzogbGliL29wdGlvbi50Y2w6MjQyCisjOiBsaWIvb3B0aW9uLnRjbDoyNzgKIG1zZ2lkICJQcmVmZXJlbmNlcyIKIG1zZ3N0ciAiSW5zdMOkbGxuaW5nYXIiCiAKLSM6IGxpYi9vcHRpb24udGNsOjI3NworIzogbGliL29wdGlvbi50Y2w6MzE0CiBtc2dpZCAiRmFpbGVkIHRvIGNvbXBsZXRlbHkgc2F2ZSBvcHRpb25zOiIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIG1lZCBhdHQgaGVsdCBzcGFyYSBhbHRlcm5hdGl2OiIKIAorIzogbGliL3JlbW90ZS50Y2w6MTYzCittc2dpZCAiUmVtb3ZlIFJlbW90ZSIKK21zZ3N0ciAiVGEgYm9ydCBmasOkcnJhcmtpdiIKKworIzogbGliL3JlbW90ZS50Y2w6MTY4Cittc2dpZCAiUHJ1bmUgZnJvbSIKK21zZ3N0ciAiVGEgYm9ydCBmcsOlbiIKKworIzogbGliL3JlbW90ZS50Y2w6MTczCittc2dpZCAiRmV0Y2ggZnJvbSIKK21zZ3N0ciAiSMOkbXRhIGZyw6VuIgorCisjOiBsaWIvcmVtb3RlLnRjbDoyMTUKK21zZ2lkICJQdXNoIHRvIgorbXNnc3RyICJTw6RuZCB0aWxsIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MTkKK21zZ2lkICJBZGQgUmVtb3RlIgorbXNnc3RyICJMw6RnZyB0aWxsIGZqw6RycmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjQKK21zZ2lkICJBZGQgTmV3IFJlbW90ZSIKK21zZ3N0ciAiTMOkZ2cgdGlsbCBueXR0IGZqw6RycmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6MjggbGliL3Rvb2xzX2RsZy50Y2w6MzYKK21zZ2lkICJBZGQiCittc2dzdHIgIkzDpGdnIHRpbGwiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDozNworbXNnaWQgIlJlbW90ZSBEZXRhaWxzIgorbXNnc3RyICJEZXRhbGplciBmw7ZyIGZqw6RycmFya2l2IgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NTAKK21zZ2lkICJMb2NhdGlvbjoiCittc2dzdHIgIlBsYXRzOiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjYyCittc2dpZCAiRnVydGhlciBBY3Rpb24iCittc2dzdHIgIll0dGVybGlnYXJlIMOldGfDpHJkIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NjUKK21zZ2lkICJGZXRjaCBJbW1lZGlhdGVseSIKK21zZ3N0ciAiSMOkbXRhIG9tZWRlbGJhcnQiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDo3MQorbXNnaWQgIkluaXRpYWxpemUgUmVtb3RlIFJlcG9zaXRvcnkgYW5kIFB1c2giCittc2dzdHIgIkluaXRpZXJhIGZqw6RycmFya2l2IG9jaCBzw6RuZCB0aWxsIgorCisjOiBsaWIvcmVtb3RlX2FkZC50Y2w6NzcKK21zZ2lkICJEbyBOb3RoaW5nIEVsc2UgTm93IgorbXNnc3RyICJHw7ZyIGluZ2VudCBtZXIgbnUiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMDEKK21zZ2lkICJQbGVhc2Ugc3VwcGx5IGEgcmVtb3RlIG5hbWUuIgorbXNnc3RyICJBbmdlIGV0dCBuYW1uIGbDtnIgZmrDpHJyYXJraXZldC4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMTQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIHJlbW90ZSBuYW1lLiIKK21zZ3N0ciAiXCIlc1wiIGthbiBpbnRlIGFudsOkbmRhcyBzb20gbmFtbiBww6UgZmrDpHJyYXJraXZldC4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMjUKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gYWRkIHJlbW90ZSAnJXMnIG9mIGxvY2F0aW9uICclcycuIgorbXNnc3RyICJLdW5kZSBpbnRlIGzDpGdnYSB0aWxsIGZqw6RycmFya2l2ZXQgXCIlc1wiIHDDpSBwbGF0c2VuIFwiJXNcIi4iCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzMgbGliL3RyYW5zcG9ydC50Y2w6NgorIywgdGNsLWZvcm1hdAorbXNnaWQgImZldGNoICVzIgorbXNnc3RyICJow6RtdGEgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxMzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJGZXRjaGluZyB0aGUgJXMiCittc2dzdHIgIkjDpG10YXIgJXMiCisKKyM6IGxpYi9yZW1vdGVfYWRkLnRjbDoxNTcKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJEbyBub3Qga25vdyBob3cgdG8gaW5pdGlhbGl6ZSByZXBvc2l0b3J5IGF0IGxvY2F0aW9uICclcycuIgorbXNnc3RyICJWZXQgaW50ZSBodXIgYXJraXZldCBww6UgcGxhdHNlbiBcIiVzXCIgc2thbGwgaW5pdGllcmFzLiIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2MyBsaWIvdHJhbnNwb3J0LnRjbDoyNSBsaWIvdHJhbnNwb3J0LnRjbDo2MworIzogbGliL3RyYW5zcG9ydC50Y2w6ODEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJwdXNoICVzIgorbXNnc3RyICJzw6RuZCAlcyIKKworIzogbGliL3JlbW90ZV9hZGQudGNsOjE2NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgdXAgdGhlICVzIChhdCAlcykiCittc2dzdHIgIktvbmZpZ3VyZXJhciAlcyAocMOlICVzKSIKKwogIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDoyOSBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjM0Ci1tc2dpZCAiRGVsZXRlIFJlbW90ZSBCcmFuY2giCi1tc2dzdHIgIlRhIGJvcnQgZmrDpHJyZ3JlbiIKK21zZ2lkICJEZWxldGUgQnJhbmNoIFJlbW90ZWx5IgorbXNnc3RyICJUYSBib3J0IGdyZW4gZnLDpW4gZmrDpHJyYXJraXYiCiAKICM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NDcKIG1zZ2lkICJGcm9tIFJlcG9zaXRvcnkiCiBtc2dzdHIgIkZyw6VuIGFya2l2IgogCi0jOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjUwIGxpYi90cmFuc3BvcnQudGNsOjEyMworIzogbGliL3JlbW90ZV9icmFuY2hfZGVsZXRlLnRjbDo1MCBsaWIvdHJhbnNwb3J0LnRjbDoxMzQKIG1zZ2lkICJSZW1vdGU6IgotbXNnc3RyICJGasOkcnI6IgorbXNnc3RyICJGasOkcnJhcmtpdjoiCiAKLSM6IGxpYi9yZW1vdGVfYnJhbmNoX2RlbGV0ZS50Y2w6NjYgbGliL3RyYW5zcG9ydC50Y2w6MTM4Ci1tc2dpZCAiQXJiaXRyYXJ5IFVSTDoiCi1tc2dzdHIgIkdvZHR5Y2tsaWcgd2ViYmFkcmVzczoiCisjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjY2IGxpYi90cmFuc3BvcnQudGNsOjE0OQorbXNnaWQgIkFyYml0cmFyeSBMb2NhdGlvbjoiCittc2dzdHIgIkdvZHR5Y2tsaWcgcGxhdHM6IgogCiAjOiBsaWIvcmVtb3RlX2JyYW5jaF9kZWxldGUudGNsOjg0CiBtc2dpZCAiQnJhbmNoZXMiCkBAIC0xODkwLDE3ICsyMjYxLDIxIEBACiBtc2dpZCAiU2Nhbm5pbmcgJXMuLi4iCiBtc2dzdHIgIlPDtmtlciAlcy4uLiIKIAotIzogbGliL3JlbW90ZS50Y2w6MTY1Ci1tc2dpZCAiUHJ1bmUgZnJvbSIKLW1zZ3N0ciAiVGEgYm9ydCBmcsOlbiIKKyM6IGxpYi9zZWFyY2gudGNsOjIxCittc2dpZCAiRmluZDoiCittc2dzdHIgIlPDtms6IgogCi0jOiBsaWIvcmVtb3RlLnRjbDoxNzAKLW1zZ2lkICJGZXRjaCBmcm9tIgotbXNnc3RyICJIw6RtdGEgZnLDpW4iCisjOiBsaWIvc2VhcmNoLnRjbDoyMworbXNnaWQgIk5leHQiCittc2dzdHIgIk7DpHN0YSIKIAotIzogbGliL3JlbW90ZS50Y2w6MjEzCi1tc2dpZCAiUHVzaCB0byIKLW1zZ3N0ciAiU8OkbmQgdGlsbCIKKyM6IGxpYi9zZWFyY2gudGNsOjI0Cittc2dpZCAiUHJldiIKK21zZ3N0ciAiRsO2cmVnIgorCisjOiBsaWIvc2VhcmNoLnRjbDoyNQorbXNnaWQgIkNhc2UtU2Vuc2l0aXZlIgorbXNnc3RyICJTa2lsaiBww6UgVkVSU0FMRVIvZ2VtZW5lciIKIAogIzogbGliL3Nob3J0Y3V0LnRjbDoyMCBsaWIvc2hvcnRjdXQudGNsOjYxCiBtc2dpZCAiQ2Fubm90IHdyaXRlIHNob3J0Y3V0OiIKQEAgLTE5MzksMjMgKzIzMTQsMTg4IEBACiBtc2dpZCAiTm8gU3VnZ2VzdGlvbnMiCiBtc2dzdHIgIkluZ2EgZsO2cnNsYWciCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODcKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozODgKIG1zZ2lkICJVbmV4cGVjdGVkIEVPRiBmcm9tIHNwZWxsIGNoZWNrZXIiCiBtc2dzdHIgIk92w6RudGF0IGZpbHNsdXQgZnLDpW4gc3Rhdm5pbmdza29udHJvbGwiCiAKLSM6IGxpYi9zcGVsbGNoZWNrLnRjbDozOTEKKyM6IGxpYi9zcGVsbGNoZWNrLnRjbDozOTIKIG1zZ2lkICJTcGVsbCBDaGVja2VyIEZhaWxlZCIKIG1zZ3N0ciAiU3Rhdm5pbmdza29udHJvbGwgbWlzc2x5Y2thZGVzIgogCisjOiBsaWIvc3Noa2V5LnRjbDozMQorbXNnaWQgIk5vIGtleXMgZm91bmQuIgorbXNnc3RyICJJbmdhIG55Y2tsYXIgaGl0dGFkZXMuIgorCisjOiBsaWIvc3Noa2V5LnRjbDozNAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgcHVibGljIGtleSBpbjogJXMiCittc2dzdHIgIkhpdHRhZGUgw7ZwcGVuIG55Y2tlbCBpOiAlcyIKKworIzogbGliL3NzaGtleS50Y2w6NDAKK21zZ2lkICJHZW5lcmF0ZSBLZXkiCittc2dzdHIgIlNrYXBhIG55Y2tlbCIKKworIzogbGliL3NzaGtleS50Y2w6NTYKK21zZ2lkICJDb3B5IFRvIENsaXBib2FyZCIKK21zZ3N0ciAiS29waWVyYSB0aWxsIFVya2xpcHAiCisKKyM6IGxpYi9zc2hrZXkudGNsOjcwCittc2dpZCAiWW91ciBPcGVuU1NIIFB1YmxpYyBLZXkiCittc2dzdHIgIkRpbiDDtnBwbmEgT3BlblNTSC1ueWNrZWwiCisKKyM6IGxpYi9zc2hrZXkudGNsOjc4Cittc2dpZCAiR2VuZXJhdGluZy4uLiIKK21zZ3N0ciAiU2thcGFyLi4uIgorCisjOiBsaWIvc3Noa2V5LnRjbDo4NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZCBub3Qgc3RhcnQgc3NoLWtleWdlbjpcbiIKKyJcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkt1bmRlIGludGUgc3RhcnRhIHNzaC1rZXlnZW46XG4iCisiXG4iCisiJXMiCisKKyM6IGxpYi9zc2hrZXkudGNsOjExMQorbXNnaWQgIkdlbmVyYXRpb24gZmFpbGVkLiIKK21zZ3N0ciAiTWlzc2x5Y2thZGVzIG1lZCBhdHQgc2thcGEuIgorCisjOiBsaWIvc3Noa2V5LnRjbDoxMTgKK21zZ2lkICJHZW5lcmF0aW9uIHN1Y2NlZGVkLCBidXQgbm8ga2V5cyBmb3VuZC4iCittc2dzdHIgIkx5Y2thZGVzIHNrYXBhIG55Y2tlbG4sIG1lbiBoaXR0YXIgaW50ZSBuw6Vnb24gbnlja2VsLiIKKworIzogbGliL3NzaGtleS50Y2w6MTIxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiWW91ciBrZXkgaXMgaW46ICVzIgorbXNnc3RyICJEaW4gbnlja2VsIGZpbm5zIGk6ICVzIgorCiAjOiBsaWIvc3RhdHVzX2Jhci50Y2w6ODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIlcyAuLi4gJSppIG9mICUqaSAlcyAoJTNpJSUpIgogbXNnc3RyICIlcy4uLiAlKmkgYXYgJSppICVzICglM2klJSkiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjYKKyM6IGxpYi90b29scy50Y2w6NzUKICMsIHRjbC1mb3JtYXQKLW1zZ2lkICJmZXRjaCAlcyIKLW1zZ3N0ciAiaMOkbXRhICVzIgorbXNnaWQgIlJ1bm5pbmcgJXMgcmVxdWlyZXMgYSBzZWxlY3RlZCBmaWxlLiIKK21zZ3N0ciAiRsO2ciBhdHQgc3RhcnRhICVzIG3DpXN0ZSBkdSB2w6RsamEgZW4gZmlsLiIKKworIzogbGliL3Rvb2xzLnRjbDo5MAorIywgdGNsLWZvcm1hdAorbXNnaWQgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBydW4gJXM/IgorbXNnc3RyICLDhHIgZHUgc8Oka2VyIHDDpSBhdHQgZHUgdmlsbCBzdGFydGEgJXM/IgorCisjOiBsaWIvdG9vbHMudGNsOjExMAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRvb2w6ICVzIgorbXNnc3RyICJWZXJrdHlnOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxMTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJSdW5uaW5nOiAlcyIKK21zZ3N0ciAiRXhla3ZlcmFyOiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNDkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGNvbXBsZXRlZCBzdWNjZXNmdWxseTogJXMiCittc2dzdHIgIlZlcmt0eWdldCBhdnNsdXRhZGVzIGZyYW1nw6VuZ3NyaWt0OiAlcyIKKworIzogbGliL3Rvb2xzLnRjbDoxNTEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sIGZhaWxlZDogJXMiCittc2dzdHIgIlZlcmt0eWdldCBtaXNzbHlja2FkZXM6ICVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMgorbXNnaWQgIkFkZCBUb29sIgorbXNnc3RyICJMw6RnZyB0aWxsIHZlcmt0eWciCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI4Cittc2dpZCAiQWRkIE5ldyBUb29sIENvbW1hbmQiCittc2dzdHIgIkzDpGdnIHRpbGwgbnl0dCB2ZXJrdHlnc2tvbW1hbmRvIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMworbXNnaWQgIkFkZCBnbG9iYWxseSIKK21zZ3N0ciAiTMOkZ2cgdGlsbCBnbG9iYWx0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0NQorbXNnaWQgIlRvb2wgRGV0YWlscyIKK21zZ3N0ciAiRGV0YWxqZXIgZsO2ciB2ZXJrdHlnIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo0OAorbXNnaWQgIlVzZSAnLycgc2VwYXJhdG9ycyB0byBjcmVhdGUgYSBzdWJtZW51IHRyZWU6IgorbXNnc3RyICJBbnbDpG5kIFwiL1wiLWF2ZGVsYXJlIGbDtnIgYXR0IHNrYXBhIGV0dCB1bmRlcm1lbnl0csOkZDoiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjYxCittc2dpZCAiQ29tbWFuZDoiCittc2dzdHIgIktvbW1hbmRvOiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6NzQKK21zZ2lkICJTaG93IGEgZGlhbG9nIGJlZm9yZSBydW5uaW5nIgorbXNnc3RyICJWaXNhIGRpYWxvZyBpbm5hbiBwcm9ncmFtbWV0IHN0YXJ0YXMiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjgwCittc2dpZCAiQXNrIHRoZSB1c2VyIHRvIHNlbGVjdCBhIHJldmlzaW9uIChzZXRzICRSRVZJU0lPTikiCittc2dzdHIgIkJlIGFudsOkbmRhcmVuIHbDpGxqYSBlbiB2ZXJzaW9uIChzw6R0dGVyICRSRVZJU0lPTikiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjg1Cittc2dpZCAiQXNrIHRoZSB1c2VyIGZvciBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoc2V0cyAkQVJHUykiCittc2dzdHIgIkJlIGFudsOkbmRhcmVuIG9tIHl0dGVybGlnYXJlIHBhcmFtZXRyYXIgKHPDpHR0ZXIgJEFSR1MpIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDo5MgorbXNnaWQgIkRvbid0IHNob3cgdGhlIGNvbW1hbmQgb3V0cHV0IHdpbmRvdyIKK21zZ3N0ciAiVmlzYSBpbnRlIGtvbW1hbmRvdHMgdXRkYXRhZsO2bnN0ZXIiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjk3Cittc2dpZCAiUnVuIG9ubHkgaWYgYSBkaWZmIGlzIHNlbGVjdGVkICgkRklMRU5BTUUgbm90IGVtcHR5KSIKK21zZ3N0ciAiS8O2ciBlbmRhc3Qgb20gZW4gZGlmZiBoYXIgbWFya2VyYXRzICgkRklMRU5BTUUgw6RyIGludGUgdG9tdCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjEyMQorbXNnaWQgIlBsZWFzZSBzdXBwbHkgYSBuYW1lIGZvciB0aGUgdG9vbC4iCittc2dzdHIgIkFuZ2UgZXR0IG5hbW4gZsO2ciB2ZXJrdHlnZXQuIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxMjkKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJUb29sICclcycgYWxyZWFkeSBleGlzdHMuIgorbXNnc3RyICJWZXJrdHlnZXQgXCIlc1wiIGZpbm5zIHJlZGFuLiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MTUxCisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkIG5vdCBhZGQgdG9vbDpcbiIKKyIlcyIKK21zZ3N0ciAiIgorIkt1bmRlIGludGUgbMOkZ2dhIHRpbGwgdmVya3R5Z2V0OlxuIgorIiVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTAKK21zZ2lkICJSZW1vdmUgVG9vbCIKK21zZ3N0ciAiVGEgYm9ydCB2ZXJrdHlnIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoxOTYKK21zZ2lkICJSZW1vdmUgVG9vbCBDb21tYW5kcyIKK21zZ3N0ciAiVGEgYm9ydCB2ZXJrdHlnc2tvbW1hbmRvbiIKKworIzogbGliL3Rvb2xzX2RsZy50Y2w6MjAwCittc2dpZCAiUmVtb3ZlIgorbXNnc3RyICJUYSBib3J0IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDoyMzYKK21zZ2lkICIoQmx1ZSBkZW5vdGVzIHJlcG9zaXRvcnktbG9jYWwgdG9vbHMpIgorbXNnc3RyICIoQmzDpXR0IGFuZ2VyIHZlcmt0eWcgbG9rYWxhIGbDtnIgYXJraXZldCkiCisKKyM6IGxpYi90b29sc19kbGcudGNsOjI5NworIywgdGNsLWZvcm1hdAorbXNnaWQgIlJ1biBDb21tYW5kOiAlcyIKK21zZ3N0ciAiS8O2ciBrb21tYW5kb3Q6ICVzIgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozMTEKK21zZ2lkICJBcmd1bWVudHMiCittc2dzdHIgIkFyZ3VtZW50IgorCisjOiBsaWIvdG9vbHNfZGxnLnRjbDozNDgKK21zZ2lkICJPSyIKK21zZ3N0ciAiT0siCiAKICM6IGxpYi90cmFuc3BvcnQudGNsOjcKICMsIHRjbC1mb3JtYXQKQEAgLTE5NzIsNDkgKzI1MTIsNTUgQEAKIG1zZ2lkICJQcnVuaW5nIHRyYWNraW5nIGJyYW5jaGVzIGRlbGV0ZWQgZnJvbSAlcyIKIG1zZ3N0ciAiVGFyIGJvcnQgc3DDpXJhbmRlIGdyZW5hciBzb20gdGFnaXRzIGJvcnQgZnLDpW4gJXMiCiAKLSM6IGxpYi90cmFuc3BvcnQudGNsOjI1IGxpYi90cmFuc3BvcnQudGNsOjcxCi0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAicHVzaCAlcyIKLW1zZ3N0ciAic8OkbmQgJXMiCi0KICM6IGxpYi90cmFuc3BvcnQudGNsOjI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyBjaGFuZ2VzIHRvICVzIgogbXNnc3RyICJTw6RuZGVyIMOkbmRyaW5nYXIgdGlsbCAlcyIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6NzIKKyM6IGxpYi90cmFuc3BvcnQudGNsOjY0CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiTWlycm9yaW5nIHRvICVzIgorbXNnc3RyICJTcGVnbGFyIHRpbGwgJXMiCisKKyM6IGxpYi90cmFuc3BvcnQudGNsOjgyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyAlcyAlcyB0byAlcyIKIG1zZ3N0ciAiU8OkbmRlciAlcyAlcyB0aWxsICVzIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDo4OQorIzogbGliL3RyYW5zcG9ydC50Y2w6MTAwCiBtc2dpZCAiUHVzaCBCcmFuY2hlcyIKLW1zZ3N0ciAiU8OkbmRlciBncmVuYXIiCittc2dzdHIgIlPDpG5kIGdyZW5hciIKIAotIzogbGliL3RyYW5zcG9ydC50Y2w6MTAzCisjOiBsaWIvdHJhbnNwb3J0LnRjbDoxMTQKIG1zZ2lkICJTb3VyY2UgQnJhbmNoZXMiCiBtc2dzdHIgIkvDpGxsZ3JlbmFyIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxMjAKKyM6IGxpYi90cmFuc3BvcnQudGNsOjEzMQogbXNnaWQgIkRlc3RpbmF0aW9uIFJlcG9zaXRvcnkiCiBtc2dzdHIgIkRlc3RpbmF0aW9uc2Fya2l2IgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNTgKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE2OQogbXNnaWQgIlRyYW5zZmVyIE9wdGlvbnMiCiBtc2dzdHIgIsOWdmVyZsO2cmluZ3NhbHRlcm5hdGl2IgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjAKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3MQogbXNnaWQgIkZvcmNlIG92ZXJ3cml0ZSBleGlzdGluZyBicmFuY2ggKG1heSBkaXNjYXJkIGNoYW5nZXMpIgogbXNnc3RyICJUdmluZ2Egw7Z2ZXJza3Jpdm5pbmcgYXYgYmVmaW50bGlnIGdyZW4gKGthbiBrYXN0YSBib3J0IMOkbmRyaW5nYXIpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjQKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3NQogbXNnaWQgIlVzZSB0aGluIHBhY2sgKGZvciBzbG93IG5ldHdvcmsgY29ubmVjdGlvbnMpIgogbXNnc3RyICJBbnbDpG5kIHR1bnQgcGFrZXQgKGbDtnIgbMOlbmdzYW1tYSBuw6R0dmVya3NhbnNsdXRuaW5nYXIpIgogCi0jOiBsaWIvdHJhbnNwb3J0LnRjbDoxNjgKKyM6IGxpYi90cmFuc3BvcnQudGNsOjE3OQogbXNnaWQgIkluY2x1ZGUgdGFncyIKIG1zZ3N0ciAiVGEgbWVkIHRhZ2dhciIKIAorI34gbXNnaWQgIlVSTDoiCisjfiBtc2dzdHIgIldlYmJhZHJlc3M6IgorCisjfiBtc2dpZCAiRGVsZXRlIFJlbW90ZSBCcmFuY2giCisjfiBtc2dzdHIgIlRhIGJvcnQgZmrDpHJyZ3JlbiIKKwogI34gbXNnaWQgIiIKICN+ICJVbmFibGUgdG8gc3RhcnQgZ2l0azpcbiIKICN+ICJcbiIKZGlmZiAtLWdpdCBhL2dpdC1sb3N0LWZvdW5kLnNoIGIvZ2l0LWxvc3QtZm91bmQuc2gKaW5kZXggOWNlZGFmOC4uMGIzZThjNyAxMDA3NTUKLS0tIGEvZ2l0LWxvc3QtZm91bmQuc2gKKysrIGIvZ2l0LWxvc3QtZm91bmQuc2gKQEAgLTIwLDcgKzIwLDcgQEAKIGRvCiAJY2FzZSAiJGRhbmdsaW5nIiBpbgogCWRhbmdsaW5nKQotCQlpZiBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIkc2hhMV4wIiA+L2Rldi9udWxsIDI+L2Rldi9udWxsCisJCWlmIGdpdCByZXYtcGFyc2UgLXEgLS12ZXJpZnkgIiRzaGExXjAiID4vZGV2L251bGwKIAkJdGhlbgogCQkJZGlyPSIkbGFmL2NvbW1pdCIKIAkJCWdpdCBzaG93LWJyYW5jaCAiJHNoYTEiCmRpZmYgLS1naXQgYS9naXQtbWVyZ2Utb2N0b3B1cy5zaCBiL2dpdC1tZXJnZS1vY3RvcHVzLnNoCmluZGV4IDY0NWUxMTQuLjFkYWRiYjQgMTAwNzU1Ci0tLSBhL2dpdC1tZXJnZS1vY3RvcHVzLnNoCisrKyBiL2dpdC1tZXJnZS1vY3RvcHVzLnNoCkBAIC02MSw3ICs2MSw3IEBACiAJCWV4aXQgMgogCWVzYWMKIAotCWNvbW1vbj0kKGdpdCBtZXJnZS1iYXNlIC0tYWxsICRNUkMgJFNIQTEpIHx8CisJY29tbW9uPSQoZ2l0IG1lcmdlLWJhc2UgLS1hbGwgJFNIQTEgJE1SQykgfHwKIAkJZGllICJVbmFibGUgdG8gZmluZCBjb21tb24gY29tbWl0IHdpdGggJFNIQTEiCiAKIAljYXNlICIkTEYkY29tbW9uJExGIiBpbgpAQCAtMTAwLDE0ICsxMDAsNyBAQAogCQluZXh0PSQoZ2l0IHdyaXRlLXRyZWUgMj4vZGV2L251bGwpCiAJZmkKIAotCSMgV2UgaGF2ZSBtZXJnZWQgdGhlIG90aGVyIGJyYW5jaCBzdWNjZXNzZnVsbHkuICBJZGVhbGx5Ci0JIyB3ZSBjb3VsZCBpbXBsZW1lbnQgT1InZWQgaGVhZHMgaW4gbWVyZ2UtYmFzZSwgYW5kIGtlZXAKLQkjIGEgbGlzdCBvZiBjb21taXRzIHdlIGhhdmUgbWVyZ2VkIHNvIGZhciBpbiBNUkMgdG8gZmVlZAotCSMgdGhlbSB0byBtZXJnZS1iYXNlLCBidXQgd2UgYXBwcm94aW1hdGUgaXQgYnkga2VlcCB1c2luZwotCSMgdGhlIGN1cnJlbnQgTVJDLiAgV2UgdXNlZCB0byB1cGRhdGUgaXQgdG8gJGNvbW1vbiwgd2hpY2gKLQkjIHdhcyBpbmNvcnJlY3RseSBkb2luZyBBTkQnZWQgbWVyZ2UtYmFzZSBoZXJlLCB3aGljaCB3YXMKLQkjIHVubmVlZGVkLgotCisJTVJDPSIkTVJDICRTSEExIgogCU1SVD0kbmV4dAogZG9uZQogCmRpZmYgLS1naXQgYS9naXQtcHVsbC5zaCBiL2dpdC1wdWxsLnNoCmluZGV4IDY2NGZlMzQuLjJjN2Y0MzIgMTAwNzU1Ci0tLSBhL2dpdC1wdWxsLnNoCisrKyBiL2dpdC1wdWxsLnNoCkBAIC0xNiwxMyArMTYsMTcgQEAKIHRlc3QgLXogIiQoZ2l0IGxzLWZpbGVzIC11KSIgfHwKIAlkaWUgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbmZsaWN0ZWQgbWVyZ2UuIgogCi1zdHJhdGVneV9hcmdzPSBub19zdGF0PSBub19jb21taXQ9IHNxdWFzaD0gbm9fZmY9IGxvZ19hcmc9CitzdHJhdGVneV9hcmdzPSBub19zdGF0PSBub19jb21taXQ9IHNxdWFzaD0gbm9fZmY9IGxvZ19hcmc9IHZlcmJvc2l0eT0KIGN1cnJfYnJhbmNoPSQoZ2l0IHN5bWJvbGljLXJlZiAtcSBIRUFEKQogY3Vycl9icmFuY2hfc2hvcnQ9JChlY2hvICIkY3Vycl9icmFuY2giIHwgc2VkICJzfHJlZnMvaGVhZHMvfHwiKQogcmViYXNlPSQoZ2l0IGNvbmZpZyAtLWJvb2wgYnJhbmNoLiRjdXJyX2JyYW5jaF9zaG9ydC5yZWJhc2UpCiB3aGlsZSA6CiBkbwogCWNhc2UgIiQxIiBpbgorCS1xfC0tcXVpZXQpCisJCXZlcmJvc2l0eT0iJHZlcmJvc2l0eSAtcSIgOzsKKwktdnwtLXZlcmJvc2UpCisJCXZlcmJvc2l0eT0iJHZlcmJvc2l0eSAtdiIgOzsKIAktbnwtLW5vLXN0YXR8LS1uby1zdW1tYXJ5KQogCQlub19zdGF0PS1uIDs7CiAJLS1zdGF0fC0tc3VtbWFyeSkKQEAgLTExNywxMyArMTIxLDEzIEBACiAJdGVzdCAteiAiJG9yaWdpbiIgJiYgb3JpZ2luPSQoZ2V0X2RlZmF1bHRfcmVtb3RlKQogCXJlZmxpc3Q9IiQoZ2V0X3JlbW90ZV9yZWZzX2Zvcl9mZXRjaCAiJEAiIDI+L2Rldi9udWxsIHwKIAkJc2VkICJzfHJlZnMvaGVhZHMvXCguKlwpOnxcMXwiKSIgJiYKLQlvbGRyZW1vdGVyZWY9IiQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBcCi0JCSJyZWZzL3JlbW90ZXMvJG9yaWdpbi8kcmVmbGlzdCIgMj4vZGV2L251bGwpIgorCW9sZHJlbW90ZXJlZj0iJChnaXQgcmV2LXBhcnNlIC1xIC0tdmVyaWZ5IFwKKwkJInJlZnMvcmVtb3Rlcy8kb3JpZ2luLyRyZWZsaXN0IikiCiB9Ci1vcmlnX2hlYWQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgMj4vZGV2L251bGwpCi1naXQgZmV0Y2ggLS11cGRhdGUtaGVhZC1vayAiJEAiIHx8IGV4aXQgMQorb3JpZ19oZWFkPSQoZ2l0IHJldi1wYXJzZSAtcSAtLXZlcmlmeSBIRUFEKQorZ2l0IGZldGNoICR2ZXJib3NpdHkgLS11cGRhdGUtaGVhZC1vayAiJEAiIHx8IGV4aXQgMQogCi1jdXJyX2hlYWQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQgMj4vZGV2L251bGwpCitjdXJyX2hlYWQ9JChnaXQgcmV2LXBhcnNlIC1xIC0tdmVyaWZ5IEhFQUQpCiBpZiB0ZXN0IC1uICIkb3JpZ19oZWFkIiAmJiB0ZXN0ICIkY3Vycl9oZWFkIiAhPSAiJG9yaWdfaGVhZCIKIHRoZW4KIAkjIFRoZSBmZXRjaCBpbnZvbHZlZCB1cGRhdGluZyB0aGUgY3VycmVudCBicmFuY2guCkBAIC0xODIsNCArMTg2LDQgQEAKIAlleGVjIGdpdC1yZWJhc2UgJHN0cmF0ZWd5X2FyZ3MgLS1vbnRvICRtZXJnZV9oZWFkIFwKIAkke29sZHJlbW90ZXJlZjotJG1lcmdlX2hlYWR9CiBleGVjIGdpdC1tZXJnZSAkbm9fc3RhdCAkbm9fY29tbWl0ICRzcXVhc2ggJG5vX2ZmICRsb2dfYXJnICRzdHJhdGVneV9hcmdzIFwKLQkiJG1lcmdlX25hbWUiIEhFQUQgJG1lcmdlX2hlYWQKKwkiJG1lcmdlX25hbWUiIEhFQUQgJG1lcmdlX2hlYWQgJHZlcmJvc2l0eQpkaWZmIC0tZ2l0IGEvZ2l0LXJlYmFzZS0taW50ZXJhY3RpdmUuc2ggYi9naXQtcmViYXNlLS1pbnRlcmFjdGl2ZS5zaAppbmRleCA1OWMxNDhmLi44ZWQyMjQ0IDEwMDc1NQotLS0gYS9naXQtcmViYXNlLS1pbnRlcmFjdGl2ZS5zaAorKysgYi9naXQtcmViYXNlLS1pbnRlcmFjdGl2ZS5zaApAQCAtMjYsNiArMjYsNyBAQAogY29udGludWUgICAgICAgICAgIGNvbnRpbnVlIHJlYmFzaW5nIHByb2Nlc3MKIGFib3J0ICAgICAgICAgICAgICBhYm9ydCByZWJhc2luZyBwcm9jZXNzIGFuZCByZXN0b3JlIG9yaWdpbmFsIGJyYW5jaAogc2tpcCAgICAgICAgICAgICAgIHNraXAgY3VycmVudCBwYXRjaCBhbmQgY29udGludWUgcmViYXNpbmcgcHJvY2Vzcworbm8tdmVyaWZ5ICAgICAgICAgIG92ZXJyaWRlIHByZS1yZWJhc2UgaG9vayBmcm9tIHN0b3BwaW5nIHRoZSBvcGVyYXRpb24KICIKIAogLiBnaXQtc2gtc2V0dXAKQEAgLTM3LDEwICszOCwxMiBAQAogTVNHPSIkRE9URVNUIi9tZXNzYWdlCiBTUVVBU0hfTVNHPSIkRE9URVNUIi9tZXNzYWdlLXNxdWFzaAogUkVXUklUVEVOPSIkRE9URVNUIi9yZXdyaXR0ZW4KK0RST1BQRUQ9IiRET1RFU1QiL2Ryb3BwZWQKIFBSRVNFUlZFX01FUkdFUz0KIFNUUkFURUdZPQogT05UTz0KIFZFUkJPU0U9CitPS19UT19TS0lQX1BSRV9SRUJBU0U9CiAKIEdJVF9DSEVSUllfUElDS19IRUxQPSIgIEFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLAogbWFyayB0aGUgY29ycmVjdGVkIHBhdGhzIHdpdGggJ2dpdCBhZGQgPHBhdGhzPicsIGFuZApAQCAtNjYsNyArNjksOCBAQAogfQogCiBydW5fcHJlX3JlYmFzZV9ob29rICgpIHsKLQlpZiB0ZXN0IC14ICIkR0lUX0RJUi9ob29rcy9wcmUtcmViYXNlIgorCWlmIHRlc3QgLXogIiRPS19UT19TS0lQX1BSRV9SRUJBU0UiICYmCisJICAgdGVzdCAteCAiJEdJVF9ESVIvaG9va3MvcHJlLXJlYmFzZSIKIAl0aGVuCiAJCSIkR0lUX0RJUi9ob29rcy9wcmUtcmViYXNlIiAkezErIiRAIn0gfHwgewogCQkJZWNobyA+JjIgIlRoZSBwcmUtcmViYXNlIGhvb2sgcmVmdXNlZCB0byByZWJhc2UuIgpAQCAtMTExLDkgKzExNSwxOCBAQAogfQogCiBtYWtlX3BhdGNoICgpIHsKLQlwYXJlbnRfc2hhMT0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgIiQxIl4pIHx8Ci0JCWRpZSAiQ2Fubm90IGdldCBwYXRjaCBmb3IgJDFeIgotCWdpdCBkaWZmLXRyZWUgLXAgIiRwYXJlbnRfc2hhMSIuLiIkMSIgPiAiJERPVEVTVCIvcGF0Y2gKKwlzaGExX2FuZF9wYXJlbnRzPSIkKGdpdCByZXYtbGlzdCAtLXBhcmVudHMgLTEgIiQxIikiCisJY2FzZSAiJHNoYTFfYW5kX3BhcmVudHMiIGluCisJPyonICc/KicgJz8qKQorCQlnaXQgZGlmZiAtLWNjICRzaGExX2FuZF9wYXJlbnRzCisJCTs7CisJPyonICc/KikKKwkJZ2l0IGRpZmYtdHJlZSAtcCAiJDFeISIKKwkJOzsKKwkqKQorCQllY2hvICJSb290IGNvbW1pdCIKKwkJOzsKKwllc2FjID4gIiRET1RFU1QiL3BhdGNoCiAJdGVzdCAtZiAiJERPVEVTVCIvbWVzc2FnZSB8fAogCQlnaXQgY2F0LWZpbGUgY29tbWl0ICIkMSIgfCBzZWQgIjEsL14kL2QiID4gIiRET1RFU1QiL21lc3NhZ2UKIAl0ZXN0IC1mICIkRE9URVNUIi9hdXRob3Itc2NyaXB0IHx8CkBAIC0xNjksMjEgKzE4MiwzOSBAQAogCiAJaWYgdGVzdCAtZiAiJERPVEVTVCIvY3VycmVudC1jb21taXQKIAl0aGVuCi0JCWN1cnJlbnRfY29tbWl0PSQoY2F0ICIkRE9URVNUIi9jdXJyZW50LWNvbW1pdCkgJiYKLQkJZ2l0IHJldi1wYXJzZSBIRUFEID4gIiRSRVdSSVRURU4iLyRjdXJyZW50X2NvbW1pdCAmJgotCQlybSAiJERPVEVTVCIvY3VycmVudC1jb21taXQgfHwKLQkJZGllICJDYW5ub3Qgd3JpdGUgY3VycmVudCBjb21taXQncyByZXBsYWNlbWVudCBzaGExIgorCQlpZiB0ZXN0ICIkZmFzdF9mb3J3YXJkIiA9IHQKKwkJdGhlbgorCQkJY2F0ICIkRE9URVNUIi9jdXJyZW50LWNvbW1pdCB8IHdoaWxlIHJlYWQgY3VycmVudF9jb21taXQKKwkJCWRvCisJCQkJZ2l0IHJldi1wYXJzZSBIRUFEID4gIiRSRVdSSVRURU4iLyRjdXJyZW50X2NvbW1pdAorCQkJZG9uZQorCQkJcm0gIiRET1RFU1QiL2N1cnJlbnQtY29tbWl0IHx8CisJCQlkaWUgIkNhbm5vdCB3cml0ZSBjdXJyZW50IGNvbW1pdCdzIHJlcGxhY2VtZW50IHNoYTEiCisJCWZpCiAJZmkKIAotCWVjaG8gJHNoYTEgPiAiJERPVEVTVCIvY3VycmVudC1jb21taXQKKwllY2hvICRzaGExID4+ICIkRE9URVNUIi9jdXJyZW50LWNvbW1pdAogCiAJIyByZXdyaXRlIHBhcmVudHM7IGlmIG5vbmUgd2VyZSByZXdyaXR0ZW4sIHdlIGNhbiBmYXN0LWZvcndhcmQuCiAJbmV3X3BhcmVudHM9Ci0JZm9yIHAgaW4gJChnaXQgcmV2LWxpc3QgLS1wYXJlbnRzIC0xICRzaGExIHwgY3V0IC1kJyAnIC1mMi0pCisJcGVuZD0iICQoZ2l0IHJldi1saXN0IC0tcGFyZW50cyAtMSAkc2hhMSB8IGN1dCAtZCcgJyAtZjItKSIKKwl3aGlsZSBbICIkcGVuZCIgIT0gIiIgXQogCWRvCisJCXA9JChleHByICIkcGVuZCIgOiAnIFwoW14gXSpcKScpCisJCXBlbmQ9IiR7cGVuZCMgJHB9IgorCiAJCWlmIHRlc3QgLWYgIiRSRVdSSVRURU4iLyRwCiAJCXRoZW4KIAkJCW5ld19wPSQoY2F0ICIkUkVXUklUVEVOIi8kcCkKKworCQkJIyBJZiB0aGUgdG9kbyByZW9yZGVyZWQgY29tbWl0cywgYW5kIG91ciBwYXJlbnQgaXMgbWFya2VkIGZvcgorCQkJIyByZXdyaXRpbmcsIGJ1dCBoYXNuJ3QgYmVlbiBnb3R0ZW4gdG8geWV0LCBhc3N1bWUgdGhlIHVzZXIgbWVhbnQgdG8KKwkJCSMgZHJvcCBpdCBvbiB0b3Agb2YgdGhlIGN1cnJlbnQgSEVBRAorCQkJaWYgdGVzdCAteiAiJG5ld19wIgorCQkJdGhlbgorCQkJCW5ld19wPSQoZ2l0IHJldi1wYXJzZSBIRUFEKQorCQkJZmkKKwogCQkJdGVzdCAkcCAhPSAkbmV3X3AgJiYgZmFzdF9mb3J3YXJkPWYKIAkJCWNhc2UgIiRuZXdfcGFyZW50cyIgaW4KIAkJCSokbmV3X3AqKQpAQCAtMTkzLDcgKzIyNCwxMyBAQAogCQkJCTs7CiAJCQllc2FjCiAJCWVsc2UKLQkJCW5ld19wYXJlbnRzPSIkbmV3X3BhcmVudHMgJHAiCisJCQlpZiB0ZXN0IC1mICIkRFJPUFBFRCIvJHAKKwkJCXRoZW4KKwkJCQlmYXN0X2ZvcndhcmQ9ZgorCQkJCXBlbmQ9IiAkKGNhdCAiJERST1BQRUQiLyRwKSRwZW5kIgorCQkJZWxzZQorCQkJCW5ld19wYXJlbnRzPSIkbmV3X3BhcmVudHMgJHAiCisJCQlmaQogCQlmaQogCWRvbmUKIAljYXNlICRmYXN0X2ZvcndhcmQgaW4KQEAgLTIwMywxNSArMjQwLDE5IEBACiAJCQlkaWUgIkNhbm5vdCBmYXN0IGZvcndhcmQgdG8gJHNoYTEiCiAJCTs7CiAJZikKLQkJdGVzdCAiYSQxIiA9IGEtbiAmJiBkaWUgIlJlZnVzaW5nIHRvIHNxdWFzaCBhIG1lcmdlOiAkc2hhMSIKLQogCQlmaXJzdF9wYXJlbnQ9JChleHByICIkbmV3X3BhcmVudHMiIDogJyBcKFteIF0qXCknKQotCQkjIGRldGFjaCBIRUFEIHRvIGN1cnJlbnQgcGFyZW50Ci0JCW91dHB1dCBnaXQgY2hlY2tvdXQgJGZpcnN0X3BhcmVudCAyPiAvZGV2L251bGwgfHwKLQkJCWRpZSAiQ2Fubm90IG1vdmUgSEVBRCB0byAkZmlyc3RfcGFyZW50IgorCisJCWlmIFsgIiQxIiAhPSAiLW4iIF0KKwkJdGhlbgorCQkJIyBkZXRhY2ggSEVBRCB0byBjdXJyZW50IHBhcmVudAorCQkJb3V0cHV0IGdpdCBjaGVja291dCAkZmlyc3RfcGFyZW50IDI+IC9kZXYvbnVsbCB8fAorCQkJCWRpZSAiQ2Fubm90IG1vdmUgSEVBRCB0byAkZmlyc3RfcGFyZW50IgorCQlmaQogCiAJCWNhc2UgIiRuZXdfcGFyZW50cyIgaW4KIAkJJyAnKicgJyopCisJCQl0ZXN0ICJhJDEiID0gYS1uICYmIGRpZSAiUmVmdXNpbmcgdG8gc3F1YXNoIGEgbWVyZ2U6ICRzaGExIgorCiAJCQkjIHJlZG8gbWVyZ2UKIAkJCWF1dGhvcl9zY3JpcHQ9JChnZXRfYXV0aG9yX2lkZW50X2Zyb21fY29tbWl0ICRzaGExKQogCQkJZXZhbCAiJGF1dGhvcl9zY3JpcHQiCkBAIC0yMjQsOSArMjY1LDggQEAKIAkJCQlvdXRwdXQgZ2l0IG1lcmdlICRTVFJBVEVHWSAtbSAiJG1zZyIgXAogCQkJCQkkbmV3X3BhcmVudHMKIAkJCXRoZW4KLQkJCQlnaXQgcmVyZXJlCiAJCQkJcHJpbnRmICIlc1xuIiAiJG1zZyIgPiAiJEdJVF9ESVIiL01FUkdFX01TRwotCQkJCWRpZSBFcnJvciByZWRvaW5nIG1lcmdlICRzaGExCisJCQkJZGllX3dpdGhfcGF0Y2ggJHNoYTEgIkVycm9yIHJlZG9pbmcgbWVyZ2UgJHNoYTEiCiAJCQlmaQogCQkJOzsKIAkJKikKQEAgLTM2NSwyMCArNDA1LDcgQEAKIAlIRUFETkFNRT0kKGNhdCAiJERPVEVTVCIvaGVhZC1uYW1lKSAmJgogCU9MREhFQUQ9JChjYXQgIiRET1RFU1QiL2hlYWQpICYmCiAJU0hPUlRPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoY2F0ICIkRE9URVNUIi9vbnRvKSkgJiYKLQlpZiB0ZXN0IC1kICIkUkVXUklUVEVOIgotCXRoZW4KLQkJdGVzdCAtZiAiJERPVEVTVCIvY3VycmVudC1jb21taXQgJiYKLQkJCWN1cnJlbnRfY29tbWl0PSQoY2F0ICIkRE9URVNUIi9jdXJyZW50LWNvbW1pdCkgJiYKLQkJCWdpdCByZXYtcGFyc2UgSEVBRCA+ICIkUkVXUklUVEVOIi8kY3VycmVudF9jb21taXQKLQkJaWYgdGVzdCAtZiAiJFJFV1JJVFRFTiIvJE9MREhFQUQKLQkJdGhlbgotCQkJTkVXSEVBRD0kKGNhdCAiJFJFV1JJVFRFTiIvJE9MREhFQUQpCi0JCWVsc2UKLQkJCU5FV0hFQUQ9JE9MREhFQUQKLQkJZmkKLQllbHNlCi0JCU5FV0hFQUQ9JChnaXQgcmV2LXBhcnNlIEhFQUQpCi0JZmkgJiYKKwlORVdIRUFEPSQoZ2l0IHJldi1wYXJzZSBIRUFEKSAmJgogCWNhc2UgJEhFQUROQU1FIGluCiAJcmVmcy8qKQogCQltZXNzYWdlPSIkR0lUX1JFRkxPR19BQ1RJT046ICRIRUFETkFNRSBvbnRvICRTSE9SVE9OVE8pIiAmJgpAQCAtNDIxLDYgKzQ0OCwxMSBAQAogd2hpbGUgdGVzdCAkIyAhPSAwCiBkbwogCWNhc2UgIiQxIiBpbgorCS0tbm8tdmVyaWZ5KQorCQlPS19UT19TS0lQX1BSRV9SRUJBU0U9eWVzCisJCTs7CisJLS12ZXJpZnkpCisJCTs7CiAJLS1jb250aW51ZSkKIAkJaXNfc3RhbmRhbG9uZSAiJEAiIHx8IHVzYWdlCiAJCWdldF9zYXZlZF9vcHRpb25zCkBAIC01NzIsMTggKzYwNCw2OSBAQAogCQkJCWVjaG8gJE9OVE8gPiAiJFJFV1JJVFRFTiIvJGMgfHwKIAkJCQkJZGllICJDb3VsZCBub3QgaW5pdCByZXdyaXR0ZW4gY29tbWl0cyIKIAkJCWRvbmUKKwkJCSMgTm8gY2hlcnJ5LXBpY2sgYmVjYXVzZSBvdXIgZmlyc3QgcGFzcyBpcyB0byBkZXRlcm1pbmUKKwkJCSMgcGFyZW50cyB0byByZXdyaXRlIGFuZCBza2lwcGluZyBkcm9wcGVkIGNvbW1pdHMgd291bGQKKwkJCSMgcHJlbWF0dXJlbHkgZW5kIG91ciBwcm9iZQogCQkJTUVSR0VTX09QVElPTj0KKwkJCWZpcnN0X2FmdGVyX3Vwc3RyZWFtPSIkKGdpdCByZXYtbGlzdCAtLXJldmVyc2UgLS1maXJzdC1wYXJlbnQgJFVQU1RSRUFNLi4kSEVBRCB8IGhlYWQgLW4gMSkiCiAJCWVsc2UKLQkJCU1FUkdFU19PUFRJT049LS1uby1tZXJnZXMKKwkJCU1FUkdFU19PUFRJT049Ii0tbm8tbWVyZ2VzIC0tY2hlcnJ5LXBpY2siCiAJCWZpCiAKIAkJU0hPUlRVUFNUUkVBTT0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkVVBTVFJFQU0pCiAJCVNIT1JUSEVBRD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkSEVBRCkKIAkJU0hPUlRPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICRPTlRPKQogCQlnaXQgcmV2LWxpc3QgJE1FUkdFU19PUFRJT04gLS1wcmV0dHk9b25lbGluZSAtLWFiYnJldi1jb21taXQgXAotCQkJLS1hYmJyZXY9NyAtLXJldmVyc2UgLS1sZWZ0LXJpZ2h0IC0tY2hlcnJ5LXBpY2sgXAorCQkJLS1hYmJyZXY9NyAtLXJldmVyc2UgLS1sZWZ0LXJpZ2h0IC0tdG9wby1vcmRlciBcCiAJCQkkVVBTVFJFQU0uLi4kSEVBRCB8IFwKLQkJCXNlZCAtbiAicy9ePi9waWNrIC9wIiA+ICIkVE9ETyIKKwkJCXNlZCAtbiAicy9ePi8vcCIgfCB3aGlsZSByZWFkIHNob3J0c2hhMSByZXN0CisJCWRvCisJCQlpZiB0ZXN0IHQgIT0gIiRQUkVTRVJWRV9NRVJHRVMiCisJCQl0aGVuCisJCQkJZWNobyAicGljayAkc2hvcnRzaGExICRyZXN0IiA+PiAiJFRPRE8iCisJCQllbHNlCisJCQkJc2hhMT0kKGdpdCByZXYtcGFyc2UgJHNob3J0c2hhMSkKKwkJCQlwcmVzZXJ2ZT10CisJCQkJZm9yIHAgaW4gJChnaXQgcmV2LWxpc3QgLS1wYXJlbnRzIC0xICRzaGExIHwgY3V0IC1kJyAnIC1mMi0pCisJCQkJZG8KKwkJCQkJaWYgdGVzdCAtZiAiJFJFV1JJVFRFTiIvJHAgLWEgXCggJHAgIT0gJFVQU1RSRUFNIC1vICRzaGExID0gJGZpcnN0X2FmdGVyX3Vwc3RyZWFtIFwpCisJCQkJCXRoZW4KKwkJCQkJCXByZXNlcnZlPWYKKwkJCQkJZmkKKwkJCQlkb25lCisJCQkJaWYgdGVzdCBmID0gIiRwcmVzZXJ2ZSIKKwkJCQl0aGVuCisJCQkJCXRvdWNoICIkUkVXUklUVEVOIi8kc2hhMQorCQkJCQllY2hvICJwaWNrICRzaG9ydHNoYTEgJHJlc3QiID4+ICIkVE9ETyIKKwkJCQlmaQorCQkJZmkKKwkJZG9uZQorCisJCSMgV2F0Y2ggZm9yIGNvbW1pdHMgdGhhdCBiZWVuIGRyb3BwZWQgYnkgLS1jaGVycnktcGljaworCQlpZiB0ZXN0IHQgPSAiJFBSRVNFUlZFX01FUkdFUyIKKwkJdGhlbgorCQkJbWtkaXIgIiREUk9QUEVEIgorCQkJIyBTYXZlIGFsbCBub24tY2hlcnJ5LXBpY2tlZCBjaGFuZ2VzCisJCQlnaXQgcmV2LWxpc3QgJFVQU1RSRUFNLi4uJEhFQUQgLS1sZWZ0LXJpZ2h0IC0tY2hlcnJ5LXBpY2sgfCBcCisJCQkJc2VkIC1uICJzL14+Ly9wIiA+ICIkRE9URVNUIi9ub3QtY2hlcnJ5LXBpY2tzCisJCQkjIE5vdyBhbGwgY29tbWl0cyBhbmQgbm90ZSB3aGljaCBvbmVzIGFyZSBtaXNzaW5nIGluCisJCQkjIG5vdC1jaGVycnktcGlja3MgYW5kIGhlbmNlIGJlaW5nIGRyb3BwZWQKKwkJCWdpdCByZXYtbGlzdCAkVVBTVFJFQU0uLiRIRUFEIHwKKwkJCXdoaWxlIHJlYWQgcmV2CisJCQlkbworCQkJCWlmIHRlc3QgLWYgIiRSRVdSSVRURU4iLyRyZXYgLWEgIiQoZ3JlcCAiJHJldiIgIiRET1RFU1QiL25vdC1jaGVycnktcGlja3MpIiA9ICIiCisJCQkJdGhlbgorCQkJCQkjIFVzZSAtZjIgYmVjYXVzZSBpZiByZXYtbGlzdCBpcyB0ZWxsaW5nIHVzIHRoaXMgY29tbWl0IGlzCisJCQkJCSMgbm90IHdvcnRod2hpbGUsIHdlIGRvbid0IHdhbnQgdG8gdHJhY2sgaXRzIG11bHRpcGxlIGhlYWRzLAorCQkJCQkjIGp1c3QgdGhlIGhpc3Rvcnkgb2YgaXRzIGZpcnN0LXBhcmVudCBmb3Igb3RoZXJzIHRoYXQgd2lsbAorCQkJCQkjIGJlIHJlYmFzaW5nIG9uIHRvcCBvZiBpdAorCQkJCQlnaXQgcmV2LWxpc3QgLS1wYXJlbnRzIC0xICRyZXYgfCBjdXQgLWQnICcgLWYyID4gIiREUk9QUEVEIi8kcmV2CisJCQkJCXNob3J0PSQoZ2l0IHJldi1saXN0IC0xIC0tYWJicmV2LWNvbW1pdCAtLWFiYnJldj03ICRyZXYpCisJCQkJCWdyZXAgLXYgIl5bYS16XVthLXpdKiAkc2hvcnQiIDwiJFRPRE8iID4gIiR7VE9ET30yIiA7IG12ICIke1RPRE99MiIgIiRUT0RPIgorCQkJCQlybSAiJFJFV1JJVFRFTiIvJHJldgorCQkJCWZpCisJCQlkb25lCisJCWZpCiAJCXRlc3QgLXMgIiRUT0RPIiB8fCBlY2hvIG5vb3AgPj4gIiRUT0RPIgogCQljYXQgPj4gIiRUT0RPIiA8PCBFT0YKIApkaWZmIC0tZ2l0IGEvZ2l0LXJlYmFzZS5zaCBiL2dpdC1yZWJhc2Uuc2gKaW5kZXggYTMwZDQwYy4uZWJkNGRmMyAxMDA3NTUKLS0tIGEvZ2l0LXJlYmFzZS5zaAorKysgYi9naXQtcmViYXNlLnNoCkBAIC0zNCw2ICszNCw3IEBACiByZXF1aXJlX3dvcmtfdHJlZQogY2RfdG9fdG9wbGV2ZWwKIAorT0tfVE9fU0tJUF9QUkVfUkVCQVNFPQogUkVTT0xWRU1TRz0iCiBXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIi4KIElmIHlvdSB3b3VsZCBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBpbnN0ZWFkIHJ1biBcImdpdCByZWJhc2UgLS1za2lwXCIuCkBAIC0xMzgsMTQgKzEzOSwzMSBAQAogfQogCiBpc19pbnRlcmFjdGl2ZSAoKSB7Ci0JdGVzdCAtZiAiJGRvdGVzdCIvaW50ZXJhY3RpdmUgfHwKLQl3aGlsZSA6OyBkbyBjYXNlICQjLCIkMSIgaW4gMCx8KiwtaXwqLC0taW50ZXJhY3RpdmUpIGJyZWFrIDs7IGVzYWMKKwl3aGlsZSB0ZXN0ICQjICE9IDAKKwlkbworCQljYXNlICIkMSIgaW4KKwkJCS1pfC0taW50ZXJhY3RpdmUpCisJCQkJaW50ZXJhY3RpdmVfcmViYXNlPWV4cGxpY2l0CisJCQkJYnJlYWsKKwkJCTs7CisJCQktcHwtLXByZXNlcnZlLW1lcmdlcykKKwkJCQlpbnRlcmFjdGl2ZV9yZWJhc2U9aW1wbGllZAorCQkJOzsKKwkJZXNhYwogCQlzaGlmdAotCWRvbmUgJiYgdGVzdCAtbiAiJDEiCisJZG9uZQorCisJaWYgWyAiJGludGVyYWN0aXZlX3JlYmFzZSIgPSBpbXBsaWVkIF07IHRoZW4KKwkJR0lUX0VESVRPUj06CisJCWV4cG9ydCBHSVRfRURJVE9SCisJZmkKKworCXRlc3QgLW4gIiRpbnRlcmFjdGl2ZV9yZWJhc2UiIHx8IHRlc3QgLWYgIiRkb3Rlc3QiL2ludGVyYWN0aXZlCiB9CiAKIHJ1bl9wcmVfcmViYXNlX2hvb2sgKCkgewotCWlmIHRlc3QgLXggIiRHSVRfRElSL2hvb2tzL3ByZS1yZWJhc2UiCisJaWYgdGVzdCAteiAiJE9LX1RPX1NLSVBfUFJFX1JFQkFTRSIgJiYKKwkgICB0ZXN0IC14ICIkR0lUX0RJUi9ob29rcy9wcmUtcmViYXNlIgogCXRoZW4KIAkJIiRHSVRfRElSL2hvb2tzL3ByZS1yZWJhc2UiICR7MSsiJEAifSB8fCB7CiAJCQllY2hvID4mMiAiVGhlIHByZS1yZWJhc2UgaG9vayByZWZ1c2VkIHRvIHJlYmFzZS4iCkBAIC0xNzAsNiArMTg4LDkgQEAKIHdoaWxlIHRlc3QgJCMgIT0gMAogZG8KIAljYXNlICIkMSIgaW4KKwktLW5vLXZlcmlmeSkKKwkJT0tfVE9fU0tJUF9QUkVfUkVCQVNFPXllcworCQk7OwogCS0tY29udGludWUpCiAJCXRlc3QgLWQgIiRkb3Rlc3QiIC1vIC1kICIkR0lUX0RJUiIvcmViYXNlLWFwcGx5IHx8CiAJCQlkaWUgIk5vIHJlYmFzZSBpbiBwcm9ncmVzcz8iCkBAIC0zMTEsMTEgKzMzMiwxNCBAQAogZmkKIAogIyBUaGUgdHJlZSBtdXN0IGJlIHJlYWxseSByZWFsbHkgY2xlYW4uCi1naXQgdXBkYXRlLWluZGV4IC0taWdub3JlLXN1Ym1vZHVsZXMgLS1yZWZyZXNoIHx8IGV4aXQKK2lmICEgZ2l0IHVwZGF0ZS1pbmRleCAtLWlnbm9yZS1zdWJtb2R1bGVzIC0tcmVmcmVzaDsgdGhlbgorCWVjaG8gPiYyICJjYW5ub3QgcmViYXNlOiB5b3UgaGF2ZSB1bnN0YWdlZCBjaGFuZ2VzIgorCWV4aXQgMQorZmkKIGRpZmY9JChnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCAtLW5hbWUtc3RhdHVzIC1yIC0taWdub3JlLXN1Ym1vZHVsZXMgSEVBRCAtLSkKIGNhc2UgIiRkaWZmIiBpbgotPyopCWVjaG8gImNhbm5vdCByZWJhc2U6IHlvdXIgaW5kZXggaXMgbm90IHVwLXRvLWRhdGUiCi0JZWNobyAiJGRpZmYiCis/KikJZWNobyA+JjIgImNhbm5vdCByZWJhc2U6IHlvdXIgaW5kZXggY29udGFpbnMgdW5jb21taXR0ZWQgY2hhbmdlcyIKKwllY2hvID4mMiAiJGRpZmYiCiAJZXhpdCAxCiAJOzsKIGVzYWMKQEAgLTM0NCwxMCArMzY4LDEwIEBACiAJc3dpdGNoX3RvPSIkMiIKIAogCWlmIGdpdCBzaG93LXJlZiAtLXZlcmlmeSAtLXF1aWV0IC0tICJyZWZzL2hlYWRzLyQyIiAmJgotCSAgIGJyYW5jaD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgInJlZnMvaGVhZHMvJDIiIDI+L2Rldi9udWxsKQorCSAgIGJyYW5jaD0kKGdpdCByZXYtcGFyc2UgLXEgLS12ZXJpZnkgInJlZnMvaGVhZHMvJDIiKQogCXRoZW4KIAkJaGVhZF9uYW1lPSJyZWZzL2hlYWRzLyQyIgotCWVsaWYgYnJhbmNoPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJDIiIDI+L2Rldi9udWxsKQorCWVsaWYgYnJhbmNoPSQoZ2l0IHJldi1wYXJzZSAtcSAtLXZlcmlmeSAiJDIiKQogCXRoZW4KIAkJaGVhZF9uYW1lPSJkZXRhY2hlZCBIRUFEIgogCWVsc2UKZGlmZiAtLWdpdCBhL2dpdC1zZW5kLWVtYWlsLnBlcmwgYi9naXQtc2VuZC1lbWFpbC5wZXJsCmluZGV4IDQ0OWQ5MzguLjc3Y2E4ZmUgMTAwNzU1Ci0tLSBhL2dpdC1zZW5kLWVtYWlsLnBlcmwKKysrIGIvZ2l0LXNlbmQtZW1haWwucGVybApAQCAtMjMsOCArMjMsMTIgQEAKIHVzZSBUZXh0OjpQYXJzZVdvcmRzOwogdXNlIERhdGE6OkR1bXBlcjsKIHVzZSBUZXJtOjpBTlNJQ29sb3I7Cit1c2UgRmlsZTo6VGVtcCBxdy8gdGVtcGRpciAvOwordXNlIEVycm9yIHF3KDp0cnkpOwogdXNlIEdpdDsKIAorR2V0b3B0OjpMb25nOjpDb25maWd1cmUgcXcvIHBhc3NfdGhyb3VnaCAvOworCiBwYWNrYWdlIEZha2VUZXJtOwogc3ViIG5ldyB7CiAJbXkgKCRjbGFzcywgJHJlYXNvbikgPSBAXzsKQEAgLTM5LDc2ICs0Myw0NCBAQAogCiBzdWIgdXNhZ2UgewogCXByaW50IDw8RU9UOwotZ2l0IHNlbmQtZW1haWwgW29wdGlvbnNdIDxmaWxlIHwgZGlyZWN0b3J5Pi4uLgotT3B0aW9uczoKLSAgIC0tZnJvbSAgICAgICAgIFNwZWNpZnkgdGhlICJGcm9tOiIgbGluZSBvZiB0aGUgZW1haWwgdG8gYmUgc2VudC4KK2dpdCBzZW5kLWVtYWlsIFtvcHRpb25zXSA8ZmlsZSB8IGRpcmVjdG9yeSB8IHJldi1saXN0IG9wdGlvbnMgPgogCi0gICAtLXRvICAgICAgICAgICBTcGVjaWZ5IHRoZSBwcmltYXJ5ICJUbzoiIGxpbmUgb2YgdGhlIGVtYWlsLgorICBDb21wb3Npbmc6CisgICAgLS1mcm9tICAgICAgICAgICAgICAgICAgPHN0cj4gICogRW1haWwgRnJvbToKKyAgICAtLXRvICAgICAgICAgICAgICAgICAgICA8c3RyPiAgKiBFbWFpbCBUbzoKKyAgICAtLWNjICAgICAgICAgICAgICAgICAgICA8c3RyPiAgKiBFbWFpbCBDYzoKKyAgICAtLWJjYyAgICAgICAgICAgICAgICAgICA8c3RyPiAgKiBFbWFpbCBCY2M6CisgICAgLS1zdWJqZWN0ICAgICAgICAgICAgICAgPHN0cj4gICogRW1haWwgIlN1YmplY3Q6IgorICAgIC0taW4tcmVwbHktdG8gICAgICAgICAgIDxzdHI+ICAqIEVtYWlsICJJbi1SZXBseS1UbzoiCisgICAgLS1hbm5vdGF0ZSAgICAgICAgICAgICAgICAgICAgICogUmV2aWV3IGVhY2ggcGF0Y2ggdGhhdCB3aWxsIGJlIHNlbnQgaW4gYW4gZWRpdG9yLgorICAgIC0tY29tcG9zZSAgICAgICAgICAgICAgICAgICAgICAqIE9wZW4gYW4gZWRpdG9yIGZvciBpbnRyb2R1Y3Rpb24uCiAKLSAgIC0tY2MgICAgICAgICAgIFNwZWNpZnkgYW4gaW5pdGlhbCAiQ2M6IiBsaXN0IGZvciB0aGUgZW50aXJlIHNlcmllcwotICAgICAgICAgICAgICAgICAgb2YgZW1haWxzLgorICBTZW5kaW5nOgorICAgIC0tZW52ZWxvcGUtc2VuZGVyICAgICAgIDxzdHI+ICAqIEVtYWlsIGVudmVsb3BlIHNlbmRlci4KKyAgICAtLXNtdHAtc2VydmVyICAgICAgIDxzdHI6aW50PiAgKiBPdXRnb2luZyBTTVRQIHNlcnZlciB0byB1c2UuIFRoZSBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgb3B0aW9uYWwuIERlZmF1bHQgJ2xvY2FsaG9zdCcuCisgICAgLS1zbXRwLXNlcnZlci1wb3J0ICAgICAgPGludD4gICogT3V0Z29pbmcgU01UUCBzZXJ2ZXIgcG9ydC4KKyAgICAtLXNtdHAtdXNlciAgICAgICAgICAgICA8c3RyPiAgKiBVc2VybmFtZSBmb3IgU01UUC1BVVRILgorICAgIC0tc210cC1wYXNzICAgICAgICAgICAgIDxzdHI+ICAqIFBhc3N3b3JkIGZvciBTTVRQLUFVVEg7IG5vdCBuZWNlc3NhcnkuCisgICAgLS1zbXRwLWVuY3J5cHRpb24gICAgICAgPHN0cj4gICogdGxzIG9yIHNzbDsgYW55dGhpbmcgZWxzZSBkaXNhYmxlcy4KKyAgICAtLXNtdHAtc3NsICAgICAgICAgICAgICAgICAgICAgKiBEZXByZWNhdGVkLiBVc2UgJy0tc210cC1lbmNyeXB0aW9uIHNzbCcuCiAKLSAgIC0tY2MtY21kICAgICAgIFNwZWNpZnkgYSBjb21tYW5kIHRvIGV4ZWN1dGUgcGVyIGZpbGUgd2hpY2ggYWRkcwotICAgICAgICAgICAgICAgICAgcGVyIGZpbGUgc3BlY2lmaWMgY2MgYWRkcmVzcyBlbnRyaWVzCisgIEF1dG9tYXRpbmc6CisgICAgLS1pZGVudGl0eSAgICAgICAgICAgICAgPHN0cj4gICogVXNlIHRoZSBzZW5kZW1haWwuPGlkPiBvcHRpb25zLgorICAgIC0tY2MtY21kICAgICAgICAgICAgICAgIDxzdHI+ICAqIEVtYWlsIENjOiB2aWEgYDxzdHI+IFwkcGF0Y2hfcGF0aGAKKyAgICAtLXN1cHByZXNzLWNjICAgICAgICAgICA8c3RyPiAgKiBhdXRob3IsIHNlbGYsIHNvYiwgY2NjbWQsIGFsbC4KKyAgICAtLVtuby1dc2lnbmVkLW9mZi1ieS1jYyAgICAgICAgKiBTZW5kIHRvIENjOiBhbmQgU2lnbmVkLW9mZi1ieToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXMuIERlZmF1bHQgb24uCisgICAgLS1bbm8tXXN1cHByZXNzLWZyb20gICAgICAgICAgICogU2VuZCB0byBzZWxmLiBEZWZhdWx0IG9mZi4KKyAgICAtLVtuby1dY2hhaW4tcmVwbHktdG8gICAgICAgICAgKiBDaGFpbiBJbi1SZXBseS1UbzogZmllbGRzLiBEZWZhdWx0IG9uLgorICAgIC0tW25vLV10aHJlYWQgICAgICAgICAgICAgICAgICAqIFVzZSBJbi1SZXBseS1UbzogZmllbGQuIERlZmF1bHQgb24uCiAKLSAgIC0tYmNjICAgICAgICAgIFNwZWNpZnkgYSBsaXN0IG9mIGVtYWlsIGFkZHJlc3NlcyB0aGF0IHNob3VsZCBiZSBCY2M6Ci0JCSAgb24gYWxsIHRoZSBlbWFpbHMuCi0KLSAgIC0tY29tcG9zZSAgICAgIFVzZSBcJEdJVF9FRElUT1IsIGNvcmUuZWRpdG9yLCBcJEVESVRPUiwgb3IgXCRWSVNVQUwgdG8gZWRpdAotCQkgIGFuIGludHJvZHVjdG9yeSBtZXNzYWdlIGZvciB0aGUgcGF0Y2ggc2VyaWVzLgotCi0gICAtLXN1YmplY3QgICAgICBTcGVjaWZ5IHRoZSBpbml0aWFsICJTdWJqZWN0OiIgbGluZS4KLSAgICAgICAgICAgICAgICAgIE9ubHkgbmVjZXNzYXJ5IGlmIC0tY29tcG9zZSBpcyBhbHNvIHNldC4gIElmIC0tY29tcG9zZQotCQkgIGlzIG5vdCBzZXQsIHRoaXMgd2lsbCBiZSBwcm9tcHRlZCBmb3IuCi0KLSAgIC0taW4tcmVwbHktdG8gIFNwZWNpZnkgdGhlIGZpcnN0ICJJbi1SZXBseS1UbzoiIGhlYWRlciBsaW5lLgotICAgICAgICAgICAgICAgICAgT25seSB1c2VkIGlmIC0tY29tcG9zZSBpcyBhbHNvIHNldC4gIElmIC0tY29tcG9zZSBpcyBub3QKLQkJICBzZXQsIHRoaXMgd2lsbCBiZSBwcm9tcHRlZCBmb3IuCi0KLSAgIC0tY2hhaW4tcmVwbHktdG8gSWYgc2V0LCB0aGUgcmVwbGllcyB3aWxsIGFsbCBiZSB0byB0aGUgcHJldmlvdXMKLSAgICAgICAgICAgICAgICAgIGVtYWlsIHNlbnQsIHJhdGhlciB0aGFuIHRvIHRoZSBmaXJzdCBlbWFpbCBzZW50LgotICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gb24uCi0KLSAgIC0tc2lnbmVkLW9mZi1jYyBBdXRvbWF0aWNhbGx5IGFkZCBlbWFpbCBhZGRyZXNzZXMgdGhhdCBhcHBlYXIgaW4KLSAgICAgICAgICAgICAgICAgU2lnbmVkLW9mZi1ieTogb3IgQ2M6IGxpbmVzIHRvIHRoZSBjYzogbGlzdC4gRGVmYXVsdHMgdG8gb24uCi0KLSAgIC0taWRlbnRpdHkgICAgIFRoZSBjb25maWd1cmF0aW9uIGlkZW50aXR5LCBhIHN1YnNlY3Rpb24gdG8gcHJpb3JpdGlzZSBvdmVyCi0gICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBzZWN0aW9uLgotCi0gICAtLXNtdHAtc2VydmVyICBJZiBzZXQsIHNwZWNpZmllcyB0aGUgb3V0Z29pbmcgU01UUCBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gbG9jYWxob3N0LiAgUG9ydCBudW1iZXIgY2FuIGJlIHNwZWNpZmllZCBoZXJlIHdpdGgKLSAgICAgICAgICAgICAgICAgIGhvc3RuYW1lOnBvcnQgZm9ybWF0IG9yIGJ5IHVzaW5nIC0tc210cC1zZXJ2ZXItcG9ydCBvcHRpb24uCi0KLSAgIC0tc210cC1zZXJ2ZXItcG9ydCBTcGVjaWZ5IGEgcG9ydCBvbiB0aGUgb3V0Z29pbmcgU01UUCBzZXJ2ZXIgdG8gY29ubmVjdCB0by4KLQotICAgLS1zbXRwLXVzZXIgICAgVGhlIHVzZXJuYW1lIGZvciBTTVRQLUFVVEguCi0KLSAgIC0tc210cC1wYXNzICAgIFRoZSBwYXNzd29yZCBmb3IgU01UUC1BVVRILgotCi0gICAtLXNtdHAtZW5jcnlwdGlvbiBTcGVjaWZ5ICd0bHMnIGZvciBTVEFSVFRMUyBlbmNyeXB0aW9uLCBvciAnc3NsJyBmb3IgU1NMLgotICAgICAgICAgICAgICAgICAgQW55IG90aGVyIHZhbHVlIGRpc2FibGVzIHRoZSBmZWF0dXJlLgotCi0gICAtLXNtdHAtc3NsICAgICBTeW5vbnltIGZvciAnLS1zbXRwLWVuY3J5cHRpb249c3NsJy4gIERlcHJlY2F0ZWQuCi0KLSAgIC0tc3VwcHJlc3MtY2MgIFN1cHByZXNzIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkgb2YgYXV0by1DQy4gIFRoZSBjYXRlZ29yeQotCQkgIGNhbiBiZSBvbmUgb2YgJ2F1dGhvcicgZm9yIHRoZSBwYXRjaCBhdXRob3IsICdzZWxmJyB0bwotCQkgIGF2b2lkIGNvcHlpbmcgeW91cnNlbGYsICdzb2InIGZvciBTaWduZWQtb2ZmLWJ5IGxpbmVzLAotCQkgICdjY2NtZCcgZm9yIHRoZSBvdXRwdXQgb2YgdGhlIGNjY21kLCBvciAnYWxsJyB0byBzdXBwcmVzcwotCQkgIGFsbCBvZiB0aGVzZS4KLQotICAgLS1zdXBwcmVzcy1mcm9tIFN1cHByZXNzIHNlbmRpbmcgZW1haWxzIHRvIHlvdXJzZWxmLiBEZWZhdWx0cyB0byBvZmYuCi0KLSAgIC0tdGhyZWFkICAgICAgIFNwZWNpZnkgdGhhdCB0aGUgIkluLVJlcGx5LVRvOiIgaGVhZGVyIHNob3VsZCBiZSBzZXQgb24gYWxsCi0gICAgICAgICAgICAgICAgICBlbWFpbHMuIERlZmF1bHRzIHRvIG9uLgotCi0gICAtLXF1aWV0CSAgTWFrZSBnaXQtc2VuZC1lbWFpbCBsZXNzIHZlcmJvc2UuICBPbmUgbGluZSBwZXIgZW1haWwKLSAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSBhbGwgdGhhdCBpcyBvdXRwdXQuCi0KLSAgIC0tZHJ5LXJ1bgkgIERvIGV2ZXJ5dGhpbmcgZXhjZXB0IGFjdHVhbGx5IHNlbmQgdGhlIGVtYWlscy4KLQotICAgLS1lbnZlbG9wZS1zZW5kZXIJU3BlY2lmeSB0aGUgZW52ZWxvcGUgc2VuZGVyIHVzZWQgdG8gc2VuZCB0aGUgZW1haWxzLgotCi0gICAtLW5vLXZhbGlkYXRlCURvbid0IHBlcmZvcm0gYW55IHNhbml0eSBjaGVja3Mgb24gcGF0Y2hlcy4KKyAgQWRtaW5pc3RlcmluZzoKKyAgICAtLXF1aWV0ICAgICAgICAgICAgICAgICAgICAgICAgKiBPdXRwdXQgb25lIGxpbmUgb2YgaW5mbyBwZXIgZW1haWwuCisgICAgLS1kcnktcnVuICAgICAgICAgICAgICAgICAgICAgICogRG9uJ3QgYWN0dWFsbHkgc2VuZCB0aGUgZW1haWxzLgorICAgIC0tW25vLV12YWxpZGF0ZSAgICAgICAgICAgICAgICAqIFBlcmZvcm0gcGF0Y2ggc2FuaXR5IGNoZWNrcy4gRGVmYXVsdCBvbi4KKyAgICAtLVtuby1dZm9ybWF0LXBhdGNoICAgICAgICAgICAgKiB1bmRlcnN0YW5kIGFueSBub24gb3B0aW9uYWwgYXJndW1lbnRzIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGdpdCBmb3JtYXQtcGF0Y2hgIG9uZXMuCiAKIEVPVAogCWV4aXQoMSk7CkBAIC0xNjAsMTIgKzEzMiwxMCBAQAogc3ViIHVuaXF1ZV9lbWFpbF9saXN0KEApOwogc3ViIGNsZWFudXBfY29tcG9zZV9maWxlcygpOwogCi0jIENvbnN0YW50cyAoZXNzZW50aWFsbHkpCi1teSAkY29tcG9zZV9maWxlbmFtZSA9ICIubXNnLiQkIjsKLQogIyBWYXJpYWJsZXMgd2UgZmlsbCBpbiBhdXRvbWF0aWNhbGx5LCBvciB2aWEgcHJvbXB0aW5nOgogbXkgKEB0byxAY2MsQGluaXRpYWxfY2MsQGJjY2xpc3QsQHhoLAotCSRpbml0aWFsX3JlcGx5X3RvLCRpbml0aWFsX3N1YmplY3QsQGZpbGVzLCRhdXRob3IsJHNlbmRlciwkc210cF9hdXRocGFzcywkY29tcG9zZSwkdGltZSk7CisJJGluaXRpYWxfcmVwbHlfdG8sJGluaXRpYWxfc3ViamVjdCxAZmlsZXMsCisJJGF1dGhvciwkc2VuZGVyLCRzbXRwX2F1dGhwYXNzLCRhbm5vdGF0ZSwkY29tcG9zZSwkdGltZSk7CiAKIG15ICRlbnZlbG9wZV9zZW5kZXI7CiAKQEAgLTE4NSwxOSArMTU1LDQyIEBACiAKICMgQmVoYXZpb3IgbW9kaWZpY2F0aW9uIHZhcmlhYmxlcwogbXkgKCRxdWlldCwgJGRyeV9ydW4pID0gKDAsIDApOworbXkgJGZvcm1hdF9wYXRjaDsKK215ICRjb21wb3NlX2ZpbGVuYW1lID0gJHJlcG8tPnJlcG9fcGF0aCgpIC4gIi8uZ2l0c2VuZGVtYWlsLm1zZy4kJCI7CisKKyMgSGFuZGxlIGludGVyYWN0aXZlIGVkaXRpb24gb2YgZmlsZXMuCitteSAkbXVsdGllZGl0OworbXkgJGVkaXRvciA9ICRFTlZ7R0lUX0VESVRPUn0gfHwgR2l0Ojpjb25maWcoQHJlcG8sICJjb3JlLmVkaXRvciIpIHx8ICRFTlZ7VklTVUFMfSB8fCAkRU5We0VESVRPUn0gfHwgInZpIjsKK3N1YiBkb19lZGl0IHsKKwlpZiAoZGVmaW5lZCgkbXVsdGllZGl0KSAmJiAhJG11bHRpZWRpdCkgeworCQltYXAgeworCQkJc3lzdGVtKCdzaCcsICctYycsICRlZGl0b3IuJyAiJEAiJywgJGVkaXRvciwgJF8pOworCQkJaWYgKCgkPyAmIDEyNykgfHwgKCQ/ID4+IDgpKSB7CisJCQkJZGllKCJ0aGUgZWRpdG9yIGV4aXRlZCB1bmNsZWFubHksIGFib3J0aW5nIGV2ZXJ5dGhpbmciKTsKKwkJCX0KKwkJfSBAXzsKKwl9IGVsc2UgeworCQlzeXN0ZW0oJ3NoJywgJy1jJywgJGVkaXRvci4nICIkQCInLCAkZWRpdG9yLCBAXyk7CisJCWlmICgoJD8gJiAxMjcpIHx8ICgkPyA+PiA4KSkgeworCQkJZGllKCJ0aGUgZWRpdG9yIGV4aXRlZCB1bmNsZWFubHksIGFib3J0aW5nIGV2ZXJ5dGhpbmciKTsKKwkJfQorCX0KK30KIAogIyBWYXJpYWJsZXMgd2l0aCBjb3JyZXNwb25kaW5nIGNvbmZpZyBzZXR0aW5ncwotbXkgKCR0aHJlYWQsICRjaGFpbl9yZXBseV90bywgJHN1cHByZXNzX2Zyb20sICRzaWduZWRfb2ZmX2NjLCAkY2NfY21kKTsKK215ICgkdGhyZWFkLCAkY2hhaW5fcmVwbHlfdG8sICRzdXBwcmVzc19mcm9tLCAkc2lnbmVkX29mZl9ieV9jYywgJGNjX2NtZCk7CiBteSAoJHNtdHBfc2VydmVyLCAkc210cF9zZXJ2ZXJfcG9ydCwgJHNtdHBfYXV0aHVzZXIsICRzbXRwX2VuY3J5cHRpb24pOwogbXkgKCRpZGVudGl0eSwgJGFsaWFzZmlsZXR5cGUsIEBhbGlhc19maWxlcywgQHNtdHBfaG9zdF9wYXJ0cyk7Ci1teSAoJG5vX3ZhbGlkYXRlKTsKK215ICgkdmFsaWRhdGUpOwogbXkgKEBzdXBwcmVzc19jYyk7CiAKIG15ICVjb25maWdfYm9vbF9zZXR0aW5ncyA9ICgKICAgICAidGhyZWFkIiA9PiBbXCR0aHJlYWQsIDFdLAogICAgICJjaGFpbnJlcGx5dG8iID0+IFtcJGNoYWluX3JlcGx5X3RvLCAxXSwKICAgICAic3VwcHJlc3Nmcm9tIiA9PiBbXCRzdXBwcmVzc19mcm9tLCB1bmRlZl0sCi0gICAgInNpZ25lZG9mZmNjIiA9PiBbXCRzaWduZWRfb2ZmX2NjLCB1bmRlZl0sCisgICAgInNpZ25lZG9mZmJ5Y2MiID0+IFtcJHNpZ25lZF9vZmZfYnlfY2MsIHVuZGVmXSwKKyAgICAic2lnbmVkb2ZmY2MiID0+IFtcJHNpZ25lZF9vZmZfYnlfY2MsIHVuZGVmXSwgICAgICAjIERlcHJlY2F0ZWQKKyAgICAidmFsaWRhdGUiID0+IFtcJHZhbGlkYXRlLCAxXSwKICk7CiAKIG15ICVjb25maWdfc2V0dGluZ3MgPSAoCkBAIC0yMTMsNiArMjA2LDcgQEAKICAgICAiYWxpYXNlc2ZpbGUiID0+IFxAYWxpYXNfZmlsZXMsCiAgICAgInN1cHByZXNzY2MiID0+IFxAc3VwcHJlc3NfY2MsCiAgICAgImVudmVsb3Blc2VuZGVyIiA9PiBcJGVudmVsb3BlX3NlbmRlciwKKyAgICAibXVsdGllZGl0IiA9PiBcJG11bHRpZWRpdCwKICk7CiAKICMgSGFuZGxlIFVuY291dGggVGVybWluYXRpb24KQEAgLTI1NSwxNiArMjQ5LDE4IEBACiAJCSAgICAic210cC1zc2wiID0+IHN1YiB7ICRzbXRwX2VuY3J5cHRpb24gPSAnc3NsJyB9LAogCQkgICAgInNtdHAtZW5jcnlwdGlvbj1zIiA9PiBcJHNtdHBfZW5jcnlwdGlvbiwKIAkJICAgICJpZGVudGl0eT1zIiA9PiBcJGlkZW50aXR5LAorCQkgICAgImFubm90YXRlIiA9PiBcJGFubm90YXRlLAogCQkgICAgImNvbXBvc2UiID0+IFwkY29tcG9zZSwKIAkJICAgICJxdWlldCIgPT4gXCRxdWlldCwKIAkJICAgICJjYy1jbWQ9cyIgPT4gXCRjY19jbWQsCiAJCSAgICAic3VwcHJlc3MtZnJvbSEiID0+IFwkc3VwcHJlc3NfZnJvbSwKIAkJICAgICJzdXBwcmVzcy1jYz1zIiA9PiBcQHN1cHByZXNzX2NjLAotCQkgICAgInNpZ25lZC1vZmYtY2N8c2lnbmVkLW9mZi1ieS1jYyEiID0+IFwkc2lnbmVkX29mZl9jYywKKwkJICAgICJzaWduZWQtb2ZmLWNjfHNpZ25lZC1vZmYtYnktY2MhIiA9PiBcJHNpZ25lZF9vZmZfYnlfY2MsCiAJCSAgICAiZHJ5LXJ1biIgPT4gXCRkcnlfcnVuLAogCQkgICAgImVudmVsb3BlLXNlbmRlcj1zIiA9PiBcJGVudmVsb3BlX3NlbmRlciwKIAkJICAgICJ0aHJlYWQhIiA9PiBcJHRocmVhZCwKLQkJICAgICJuby12YWxpZGF0ZSIgPT4gXCRub192YWxpZGF0ZSwKKwkJICAgICJ2YWxpZGF0ZSEiID0+IFwkdmFsaWRhdGUsCisJCSAgICAiZm9ybWF0LXBhdGNoISIgPT4gXCRmb3JtYXRfcGF0Y2gsCiAJICk7CiAKIHVubGVzcyAoJHJjKSB7CkBAIC0zMzYsNyArMzMyLDcgQEAKIAogIyBJZiBleHBsaWNpdCBvbGQtc3R5bGUgb25lcyBhcmUgc3BlY2lmaWVkLCB0aGV5IHRydW1wIC0tc3VwcHJlc3MtY2MuCiAkc3VwcHJlc3NfY2N7J3NlbGYnfSA9ICRzdXBwcmVzc19mcm9tIGlmIGRlZmluZWQgJHN1cHByZXNzX2Zyb207Ci0kc3VwcHJlc3NfY2N7J3NvYid9ID0gISRzaWduZWRfb2ZmX2NjIGlmIGRlZmluZWQgJHNpZ25lZF9vZmZfY2M7Ciskc3VwcHJlc3NfY2N7J3NvYid9ID0gISRzaWduZWRfb2ZmX2J5X2NjIGlmIGRlZmluZWQgJHNpZ25lZF9vZmZfYnlfY2M7CiAKICMgRGVidWdnaW5nLCBwcmludCBvdXQgdGhlIHN1cHByZXNzaW9ucy4KIGlmICgwKSB7CkBAIC0zNjUsNyArMzYxLDcgQEAKIH0KIAogc3ViIHNwbGl0X2FkZHJzIHsKLQlyZXR1cm4gcGFyc2VfbGluZSgnXHMqLFxzKicsIDEsIEBfKTsKKwlyZXR1cm4gcXVvdGV3b3JkcygnXHMqLFxzKicsIDEsIEBfKTsKIH0KIAogbXkgJWFsaWFzZXM7CkBAIC0zODMsMTAgKzM3OSwxMyBAQAogCQkJIyBzcGFjZXMgZGVsaW1pdCBtdWx0aXBsZSBhZGRyZXNzZXMKIAkJCSRhbGlhc2VzeyQxfSA9IFsgc3BsaXQoL1xzKy8sICQyKSBdOwogCQl9fX0sCi0JcGluZSA9PiBzdWIgeyBteSAkZmggPSBzaGlmdDsgd2hpbGUgKDwkZmg+KSB7Ci0JCWlmICgvXihcUyspXHQuKlx0KC4qKSQvKSB7CisJcGluZSA9PiBzdWIgeyBteSAkZmggPSBzaGlmdDsgbXkgJGY9J1x0W15cdF0qJzsKKwkgICAgICAgIGZvciAobXkgJHggPSAnJzsgZGVmaW5lZCgkeCk7ICR4ID0gJF8pIHsKKwkJCWNob21wICR4OworCQkgICAgICAgICR4IC49ICQxIHdoaWxlKGRlZmluZWQoJF8gPSA8JGZoPikgJiYgL14gKyguKikkLyk7CisJCQkkeCA9fiAvXihcUyspJGZcdFwoPyhbXlx0XSs/KVwpPyg6PyRmKXswLDJ9JC8gb3IgbmV4dDsKIAkJCSRhbGlhc2VzeyQxfSA9IFsgc3BsaXRfYWRkcnMoJDIpIF07Ci0JCX19fSwKKwkJfX0sCiAJZ251cyA9PiBzdWIgeyBteSAkZmggPSBzaGlmdDsgd2hpbGUgKDwkZmg+KSB7CiAJCWlmICgvXChkZWZpbmUtbWFpbC1hbGlhc1xzKyIoXFMrPykiXHMrIihcUys/KSJcKS8pIHsKIAkJCSRhbGlhc2VzeyQxfSA9IFsgJDIgXTsKQEAgLTQwMywyNCArNDAyLDUzIEBACiAKICgkc2VuZGVyKSA9IGV4cGFuZF9hbGlhc2VzKCRzZW5kZXIpIGlmIGRlZmluZWQgJHNlbmRlcjsKIAorIyByZXR1cm5zIDEgaWYgdGhlIGNvbmZsaWN0IG11c3QgYmUgc29sdmVkIHVzaW5nIGl0IGFzIGEgZm9ybWF0LXBhdGNoIGFyZ3VtZW50CitzdWIgY2hlY2tfZmlsZV9yZXZfY29uZmxpY3QoJCkgeworCW15ICRmID0gc2hpZnQ7CisJdHJ5IHsKKwkJJHJlcG8tPmNvbW1hbmQoJ3Jldi1wYXJzZScsICctLXZlcmlmeScsICctLXF1aWV0JywgJGYpOworCQlpZiAoZGVmaW5lZCgkZm9ybWF0X3BhdGNoKSkgeworCQkJcHJpbnQgImZvb1xuIjsKKwkJCXJldHVybiAkZm9ybWF0X3BhdGNoOworCQl9CisJCWRpZSg8PEVPRik7CitGaWxlICckZicgZXhpc3RzIGJ1dCBpdCBjb3VsZCBhbHNvIGJlIHRoZSByYW5nZSBvZiBjb21taXRzCit0byBwcm9kdWNlIHBhdGNoZXMgZm9yLiAgUGxlYXNlIGRpc2FtYmlndWF0ZSBieS4uLgorCisgICAgKiBTYXlpbmcgIi4vJGYiIGlmIHlvdSBtZWFuIGEgZmlsZTsgb3IKKyAgICAqIEdpdmluZyAtLWZvcm1hdC1wYXRjaCBvcHRpb24gaWYgeW91IG1lYW4gYSByYW5nZS4KK0VPRgorCX0gY2F0Y2ggR2l0OjpFcnJvcjo6Q29tbWFuZCB3aXRoIHsKKwkJcmV0dXJuIDA7CisJfQorfQorCiAjIE5vdyB0aGF0IGFsbCB0aGUgZGVmYXVsdHMgYXJlIHNldCwgcHJvY2VzcyB0aGUgcmVzdCBvZiB0aGUgY29tbWFuZCBsaW5lCiAjIGFyZ3VtZW50cyBhbmQgY29sbGVjdCB1cCB0aGUgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHByb2Nlc3NlZC4KLWZvciBteSAkZiAoQEFSR1YpIHsKLQlpZiAoLWQgJGYpIHsKK215IEByZXZfbGlzdF9vcHRzOword2hpbGUgKGRlZmluZWQobXkgJGYgPSBzaGlmdCBAQVJHVikpIHsKKwlpZiAoJGYgZXEgIi0tIikgeworCQlwdXNoIEByZXZfbGlzdF9vcHRzLCAiLS0iLCBAQVJHVjsKKwkJQEFSR1YgPSAoKTsKKwl9IGVsc2lmICgtZCAkZiBhbmQgIWNoZWNrX2ZpbGVfcmV2X2NvbmZsaWN0KCRmKSkgewogCQlvcGVuZGlyKERILCRmKQogCQkJb3IgZGllICJGYWlsZWQgdG8gb3BlbmRpciAkZjogJCEiOwogCiAJCXB1c2ggQGZpbGVzLCBncmVwIHsgLWYgJF8gfSBtYXAgeyArJGYgLiAiLyIgLiAkXyB9CiAJCQkJc29ydCByZWFkZGlyKERIKTsKIAkJY2xvc2VkaXIoREgpOwotCX0gZWxzaWYgKC1mICRmIG9yIC1wICRmKSB7CisJfSBlbHNpZiAoKC1mICRmIG9yIC1wICRmKSBhbmQgIWNoZWNrX2ZpbGVfcmV2X2NvbmZsaWN0KCRmKSkgewogCQlwdXNoIEBmaWxlcywgJGY7CiAJfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICJTa2lwcGluZyAkZiAtIG5vdCBmb3VuZC5cbiI7CisJCXB1c2ggQHJldl9saXN0X29wdHMsICRmOwogCX0KIH0KIAotaWYgKCEkbm9fdmFsaWRhdGUpIHsKK2lmIChAcmV2X2xpc3Rfb3B0cykgeworCXB1c2ggQGZpbGVzLCAkcmVwby0+Y29tbWFuZCgnZm9ybWF0LXBhdGNoJywgJy1vJywgdGVtcGRpcihDTEVBTlVQID0+IDEpLCBAcmV2X2xpc3Rfb3B0cyk7Cit9CisKK2lmICgkdmFsaWRhdGUpIHsKIAlmb3JlYWNoIG15ICRmIChAZmlsZXMpIHsKIAkJdW5sZXNzICgtcCAkZikgewogCQkJbXkgJGVycm9yID0gdmFsaWRhdGVfcGF0Y2goJGYpOwpAQCAtNDM4LDYgKzQ2NiwxMDggQEAKIAl1c2FnZSgpOwogfQogCitzdWIgZ2V0X3BhdGNoX3N1YmplY3QoJCkgeworCW15ICRmbiA9IHNoaWZ0OworCW9wZW4gKG15ICRmaCwgJzwnLCAkZm4pOworCXdoaWxlIChteSAkbGluZSA9IDwkZmg+KSB7CisJCW5leHQgdW5sZXNzICgkbGluZSA9fiAvXlN1YmplY3Q6ICguKikkLyk7CisJCWNsb3NlICRmaDsKKwkJcmV0dXJuICJHSVQ6ICQxXG4iOworCX0KKwljbG9zZSAkZmg7CisJZGllICJObyBzdWJqZWN0IGxpbmUgaW4gJGZuID8iOworfQorCitpZiAoJGNvbXBvc2UpIHsKKwkjIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgc2VjdXJlLCBidXQgd2Ugd2lsbCBtYWtlIGEgc21hbGwKKwkjIGVmZm9ydCB0byBoYXZlIGl0IGJlIHVuaXF1ZQorCW9wZW4oQywiPiIsJGNvbXBvc2VfZmlsZW5hbWUpCisJCW9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gZm9yIHdyaXRpbmcgJGNvbXBvc2VfZmlsZW5hbWU6ICQhIjsKKworCisJbXkgJHRwbF9zZW5kZXIgPSAkc2VuZGVyIHx8ICRyZXBvYXV0aG9yIHx8ICRyZXBvY29tbWl0dGVyIHx8ICcnOworCW15ICR0cGxfc3ViamVjdCA9ICRpbml0aWFsX3N1YmplY3QgfHwgJyc7CisJbXkgJHRwbF9yZXBseV90byA9ICRpbml0aWFsX3JlcGx5X3RvIHx8ICcnOworCisJcHJpbnQgQyA8PEVPVDsKK0Zyb20gJHRwbF9zZW5kZXIgIyBUaGlzIGxpbmUgaXMgaWdub3JlZC4KK0dJVDogTGluZXMgYmVnaW5uaW5nIGluICJHSVQ6ICIgd2lsbCBiZSByZW1vdmVkLgorR0lUOiBDb25zaWRlciBpbmNsdWRpbmcgYW4gb3ZlcmFsbCBkaWZmc3RhdCBvciB0YWJsZSBvZiBjb250ZW50cworR0lUOiBmb3IgdGhlIHBhdGNoIHlvdSBhcmUgd3JpdGluZy4KK0dJVDoKK0dJVDogQ2xlYXIgdGhlIGJvZHkgY29udGVudCBpZiB5b3UgZG9uJ3Qgd2lzaCB0byBzZW5kIGEgc3VtbWFyeS4KK0Zyb206ICR0cGxfc2VuZGVyCitTdWJqZWN0OiAkdHBsX3N1YmplY3QKK0luLVJlcGx5LVRvOiAkdHBsX3JlcGx5X3RvCisKK0VPVAorCWZvciBteSAkZiAoQGZpbGVzKSB7CisJCXByaW50IEMgZ2V0X3BhdGNoX3N1YmplY3QoJGYpOworCX0KKwljbG9zZShDKTsKKworCW15ICRlZGl0b3IgPSAkRU5We0dJVF9FRElUT1J9IHx8IEdpdDo6Y29uZmlnKEByZXBvLCAiY29yZS5lZGl0b3IiKSB8fCAkRU5We1ZJU1VBTH0gfHwgJEVOVntFRElUT1J9IHx8ICJ2aSI7CisKKwlpZiAoJGFubm90YXRlKSB7CisJCWRvX2VkaXQoJGNvbXBvc2VfZmlsZW5hbWUsIEBmaWxlcyk7CisJfSBlbHNlIHsKKwkJZG9fZWRpdCgkY29tcG9zZV9maWxlbmFtZSk7CisJfQorCisJb3BlbihDMiwiPiIsJGNvbXBvc2VfZmlsZW5hbWUgLiAiLmZpbmFsIikKKwkJb3IgZGllICJGYWlsZWQgdG8gb3BlbiAkY29tcG9zZV9maWxlbmFtZS5maW5hbCA6ICIgLiAkITsKKworCW9wZW4oQywiPCIsJGNvbXBvc2VfZmlsZW5hbWUpCisJCW9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gJGNvbXBvc2VfZmlsZW5hbWUgOiAiIC4gJCE7CisKKwlteSAkbmVlZF84Yml0X2N0ZSA9IGZpbGVfaGFzX25vbmFzY2lpKCRjb21wb3NlX2ZpbGVuYW1lKTsKKwlteSAkaW5fYm9keSA9IDA7CisJbXkgJHN1bW1hcnlfZW1wdHkgPSAxOworCXdoaWxlKDxDPikgeworCQluZXh0IGlmIG0vXkdJVDogLzsKKwkJaWYgKCRpbl9ib2R5KSB7CisJCQkkc3VtbWFyeV9lbXB0eSA9IDAgdW5sZXNzICgvXlxuJC8pOworCQl9IGVsc2lmICgvXlxuJC8pIHsKKwkJCSRpbl9ib2R5ID0gMTsKKwkJCWlmICgkbmVlZF84Yml0X2N0ZSkgeworCQkJCXByaW50IEMyICJNSU1FLVZlcnNpb246IDEuMFxuIiwKKwkJCQkJICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47ICIsCisJCQkJCSAgICJjaGFyc2V0PXV0Zi04XG4iLAorCQkJCQkgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiI7CisJCQl9CisJCX0gZWxzaWYgKC9eTUlNRS1WZXJzaW9uOi9pKSB7CisJCQkkbmVlZF84Yml0X2N0ZSA9IDA7CisJCX0gZWxzaWYgKC9eU3ViamVjdDpccyooLispXHMqJC9pKSB7CisJCQkkaW5pdGlhbF9zdWJqZWN0ID0gJDE7CisJCQlteSAkc3ViamVjdCA9ICRpbml0aWFsX3N1YmplY3Q7CisJCQkkXyA9ICJTdWJqZWN0OiAiIC4KKwkJCQkoJHN1YmplY3QgPX4gL1teWzphc2NpaTpdXS8gPworCQkJCSBxdW90ZV9yZmMyMDQ3KCRzdWJqZWN0KSA6CisJCQkJICRzdWJqZWN0KSAuCisJCQkJIlxuIjsKKwkJfSBlbHNpZiAoL15Jbi1SZXBseS1UbzpccyooLispXHMqJC9pKSB7CisJCQkkaW5pdGlhbF9yZXBseV90byA9ICQxOworCQkJbmV4dDsKKwkJfSBlbHNpZiAoL15Gcm9tOlxzKiguKylccyokL2kpIHsKKwkJCSRzZW5kZXIgPSAkMTsKKwkJCW5leHQ7CisJCX0gZWxzaWYgKC9eKD86VG98Q2N8QmNjKTovaSkgeworCQkJcHJpbnQgIlRvL0NjL0JjYyBmaWVsZHMgYXJlIG5vdCBpbnRlcnByZXRlZCB5ZXQsIHRoZXkgaGF2ZSBiZWVuIGlnbm9yZWRcbiI7CisJCQluZXh0OworCQl9CisJCXByaW50IEMyICRfOworCX0KKwljbG9zZShDKTsKKwljbG9zZShDMik7CisKKwlpZiAoJHN1bW1hcnlfZW1wdHkpIHsKKwkJcHJpbnQgIlN1bW1hcnkgZW1haWwgaXMgZW1wdHksIHNraXBwaW5nIGl0XG4iOworCQkkY29tcG9zZSA9IC0xOworCX0KK30gZWxzaWYgKCRhbm5vdGF0ZSkgeworCWRvX2VkaXQoQGZpbGVzKTsKK30KKwogbXkgJHByb21wdGluZyA9IDA7CiBpZiAoIWRlZmluZWQgJHNlbmRlcikgewogCSRzZW5kZXIgPSAkcmVwb2F1dGhvciB8fCAkcmVwb2NvbW1pdHRlciB8fCAnJzsKQEAgLTQ4MiwxNyArNjEyLDYgQEAKIEBpbml0aWFsX2NjID0gZXhwYW5kX2FsaWFzZXMoQGluaXRpYWxfY2MpOwogQGJjY2xpc3QgPSBleHBhbmRfYWxpYXNlcyhAYmNjbGlzdCk7CiAKLWlmICghZGVmaW5lZCAkaW5pdGlhbF9zdWJqZWN0ICYmICRjb21wb3NlKSB7Ci0Jd2hpbGUgKDEpIHsKLQkJJF8gPSAkdGVybS0+cmVhZGxpbmUoIldoYXQgc3ViamVjdCBzaG91bGQgdGhlIGluaXRpYWwgZW1haWwgc3RhcnQgd2l0aD8gIiwgJGluaXRpYWxfc3ViamVjdCk7Ci0JCWxhc3QgaWYgZGVmaW5lZCAkXzsKLQkJcHJpbnQgIlxuIjsKLQl9Ci0KLQkkaW5pdGlhbF9zdWJqZWN0ID0gJF87Ci0JJHByb21wdGluZysrOwotfQotCiBpZiAoJHRocmVhZCAmJiAhZGVmaW5lZCAkaW5pdGlhbF9yZXBseV90byAmJiAkcHJvbXB0aW5nKSB7CiAJd2hpbGUgKDEpIHsKIAkJJF89ICR0ZXJtLT5yZWFkbGluZSgiTWVzc2FnZS1JRCB0byBiZSB1c2VkIGFzIEluLVJlcGx5LVRvIGZvciB0aGUgZmlyc3QgZW1haWw/ICIsICRpbml0aWFsX3JlcGx5X3RvKTsKQEAgLTUxOSw1OSArNjM4LDYgQEAKIH0KIAogaWYgKCRjb21wb3NlKSB7Ci0JIyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIHNlY3VyZSwgYnV0IHdlIHdpbGwgbWFrZSBhIHNtYWxsCi0JIyBlZmZvcnQgdG8gaGF2ZSBpdCBiZSB1bmlxdWUKLQlvcGVuKEMsIj4iLCRjb21wb3NlX2ZpbGVuYW1lKQotCQlvciBkaWUgIkZhaWxlZCB0byBvcGVuIGZvciB3cml0aW5nICRjb21wb3NlX2ZpbGVuYW1lOiAkISI7Ci0JcHJpbnQgQyAiRnJvbSAkc2VuZGVyICMgVGhpcyBsaW5lIGlzIGlnbm9yZWQuXG4iOwotCXByaW50ZiBDICJTdWJqZWN0OiAlc1xuXG4iLCAkaW5pdGlhbF9zdWJqZWN0OwotCXByaW50ZiBDIDw8RU9UOwotR0lUOiBQbGVhc2UgZW50ZXIgeW91ciBlbWFpbCBiZWxvdy4KLUdJVDogTGluZXMgYmVnaW5uaW5nIGluICJHSVQ6ICIgd2lsbCBiZSByZW1vdmVkLgotR0lUOiBDb25zaWRlciBpbmNsdWRpbmcgYW4gb3ZlcmFsbCBkaWZmc3RhdCBvciB0YWJsZSBvZiBjb250ZW50cwotR0lUOiBmb3IgdGhlIHBhdGNoIHlvdSBhcmUgd3JpdGluZy4KLQotRU9UCi0JY2xvc2UoQyk7Ci0KLQlteSAkZWRpdG9yID0gJEVOVntHSVRfRURJVE9SfSB8fCBHaXQ6OmNvbmZpZyhAcmVwbywgImNvcmUuZWRpdG9yIikgfHwgJEVOVntWSVNVQUx9IHx8ICRFTlZ7RURJVE9SfSB8fCAidmkiOwotCXN5c3RlbSgnc2gnLCAnLWMnLCAkZWRpdG9yLicgIiRAIicsICRlZGl0b3IsICRjb21wb3NlX2ZpbGVuYW1lKTsKLQotCW9wZW4oQzIsIj4iLCRjb21wb3NlX2ZpbGVuYW1lIC4gIi5maW5hbCIpCi0JCW9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gJGNvbXBvc2VfZmlsZW5hbWUuZmluYWwgOiAiIC4gJCE7Ci0KLQlvcGVuKEMsIjwiLCRjb21wb3NlX2ZpbGVuYW1lKQotCQlvciBkaWUgIkZhaWxlZCB0byBvcGVuICRjb21wb3NlX2ZpbGVuYW1lIDogIiAuICQhOwotCi0JbXkgJG5lZWRfOGJpdF9jdGUgPSBmaWxlX2hhc19ub25hc2NpaSgkY29tcG9zZV9maWxlbmFtZSk7Ci0JbXkgJGluX2JvZHkgPSAwOwotCXdoaWxlKDxDPikgewotCQluZXh0IGlmIG0vXkdJVDogLzsKLQkJaWYgKCEkaW5fYm9keSAmJiAvXlxuJC8pIHsKLQkJCSRpbl9ib2R5ID0gMTsKLQkJCWlmICgkbmVlZF84Yml0X2N0ZSkgewotCQkJCXByaW50IEMyICJNSU1FLVZlcnNpb246IDEuMFxuIiwKLQkJCQkJICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47ICIsCi0JCQkJCSAgICJjaGFyc2V0PXV0Zi04XG4iLAotCQkJCQkgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiI7Ci0JCQl9Ci0JCX0KLQkJaWYgKCEkaW5fYm9keSAmJiAvXk1JTUUtVmVyc2lvbjovaSkgewotCQkJJG5lZWRfOGJpdF9jdGUgPSAwOwotCQl9Ci0JCWlmICghJGluX2JvZHkgJiYgL15TdWJqZWN0OiA/KC4qKS9pKSB7Ci0JCQlteSAkc3ViamVjdCA9ICQxOwotCQkJJF8gPSAiU3ViamVjdDogIiAuCi0JCQkJKCRzdWJqZWN0ID1+IC9bXls6YXNjaWk6XV0vID8KLQkJCQkgcXVvdGVfcmZjMjA0Nygkc3ViamVjdCkgOgotCQkJCSAkc3ViamVjdCkgLgotCQkJCSJcbiI7Ci0JCX0KLQkJcHJpbnQgQzIgJF87Ci0JfQotCWNsb3NlKEMpOwotCWNsb3NlKEMyKTsKLQogCXdoaWxlICgxKSB7CiAJCSRfID0gJHRlcm0tPnJlYWRsaW5lKCJTZW5kIHRoaXMgZW1haWw/ICh5fG4pICIpOwogCQlsYXN0IGlmIGRlZmluZWQgJF87CkBAIC01ODMsNyArNjQ5LDkgQEAKIAkJZXhpdCgwKTsKIAl9CiAKLQlAZmlsZXMgPSAoJGNvbXBvc2VfZmlsZW5hbWUgLiAiLmZpbmFsIiwgQGZpbGVzKTsKKwlpZiAoJGNvbXBvc2UgPiAwKSB7CisJCUBmaWxlcyA9ICgkY29tcG9zZV9maWxlbmFtZSAuICIuZmluYWwiLCBAZmlsZXMpOworCX0KIH0KIAogIyBWYXJpYWJsZXMgd2Ugc2V0IGFzIHBhcnQgb2YgdGhlIGxvb3Agb3ZlciBmaWxlcwpkaWZmIC0tZ2l0IGEvZ2l0LXNoLXNldHVwLnNoIGIvZ2l0LXNoLXNldHVwLnNoCmluZGV4IGRiZGYyMDkuLjIxNDIzMDggMTAwNzU1Ci0tLSBhL2dpdC1zaC1zZXR1cC5zaAorKysgYi9naXQtc2gtc2V0dXAuc2gKQEAgLTg1LDggKzg1LDI3IEBACiAJY2R1cD0kKGdpdCByZXYtcGFyc2UgLS1zaG93LWNkdXApCiAJaWYgdGVzdCAhIC16ICIkY2R1cCIKIAl0aGVuCi0JCWNkICIkY2R1cCIgfHwgewotCQkJZWNobyA+JjIgIkNhbm5vdCBjaGRpciB0byAkY2R1cCwgdGhlIHRvcGxldmVsIG9mIHRoZSB3b3JraW5nIHRyZWUiCisJCWNhc2UgIiRjZHVwIiBpbgorCQkvKikKKwkJCSMgTm90IHF1aXRlIHRoZSBzYW1lIGFzIGlmIHdlIGRpZCAiY2QgLVAgJyRjZHVwJyIgd2hlbgorCQkJIyAkY2R1cCBjb250YWlucyAiLi4iIGFmdGVyIHN5bWxpbmsgcGF0aCBjb21wb25lbnRzLgorCQkJIyBEb24ndCBmaXggdGhhdCBjYXNlIGF0IGxlYXN0IHVudGlsIEdpdCBzd2l0Y2hlcyB0bworCQkJIyAiY2QgLVAiIGFjcm9zcyB0aGUgYm9hcmQuCisJCQlwaHlzPSIkY2R1cCIKKwkJCTs7CisJCS4ufC4uLyp8Ki8uLnwqLy4uLyopCisJCQkjIEludGVycHJldCAkY2R1cCByZWxhdGl2ZSB0byB0aGUgcGh5c2ljYWwsIG5vdCBsb2dpY2FsLCBjd2QuCisJCQkjIFByb2JhYmx5IC9iaW4vcHdkIGlzIG1vcmUgcG9ydGFibGUgdGhhbiBwYXNzaW5nIC1QIHRvIGNkIG9yIHB3ZC4KKwkJCXBoeXM9IiQodW5zZXQgUFdEOyAvYmluL3B3ZCkvJGNkdXAiCisJCQk7OworCQkqKQorCQkJIyBUaGVyZSdzIG5vICIuLiIsIHNvIG5vIG5lZWQgdG8gbWFrZSB0aGluZ3MgYWJzb2x1dGUuCisJCQlwaHlzPSIkY2R1cCIKKwkJCTs7CisJCWVzYWMKKworCQljZCAiJHBoeXMiIHx8IHsKKwkJCWVjaG8gPiYyICJDYW5ub3QgY2hkaXIgdG8gJHBoeXMsIHRoZSB0b3BsZXZlbCBvZiB0aGUgd29ya2luZyB0cmVlIgogCQkJZXhpdCAxCiAJCX0KIAlmaQpkaWZmIC0tZ2l0IGEvZ2l0LXN1Ym1vZHVsZS5zaCBiL2dpdC1zdWJtb2R1bGUuc2gKaW5kZXggOTdlNGQ5YS4uMmY0N2UwNiAxMDA3NTUKLS0tIGEvZ2l0LXN1Ym1vZHVsZS5zaAorKysgYi9naXQtc3VibW9kdWxlLnNoCkBAIC02LDkgKzYsMTAgQEAKIAogVVNBR0U9IlstLXF1aWV0XSBbLS1jYWNoZWRdIFwKIFthZGQgPHJlcG8+IFstYiBicmFuY2hdIDxwYXRoPl18W3N0YXR1c3xpbml0fHVwZGF0ZSBbLWl8LS1pbml0XXxzdW1tYXJ5IFstbnwtLXN1bW1hcnktbGltaXQgPG4+XSBbPGNvbW1pdD5dXSBcCi1bLS1dIFs8cGF0aD4uLi5dIgorWy0tXSBbPHBhdGg+Li4uXXxbZm9yZWFjaCA8Y29tbWFuZD5dfFtzeW5jIFstLV0gWzxwYXRoPi4uLl1dIgogT1BUSU9OU19TUEVDPQogLiBnaXQtc2gtc2V0dXAKKy4gZ2l0LXBhcnNlLXJlbW90ZQogcmVxdWlyZV93b3JrX3RyZWUKIAogY29tbWFuZD0KQEAgLTMwLDEyICszMSwxMSBAQAogIyBSZXNvbHZlIHJlbGF0aXZlIHVybCBieSBhcHBlbmRpbmcgdG8gcGFyZW50J3MgdXJsCiByZXNvbHZlX3JlbGF0aXZlX3VybCAoKQogewotCWJyYW5jaD0iJChnaXQgc3ltYm9saWMtcmVmIEhFQUQgMj4vZGV2L251bGwpIgotCXJlbW90ZT0iJChnaXQgY29uZmlnIGJyYW5jaC4ke2JyYW5jaCNyZWZzL2hlYWRzL30ucmVtb3RlKSIKLQlyZW1vdGU9IiR7cmVtb3RlOi1vcmlnaW59IgorCXJlbW90ZT0kKGdldF9kZWZhdWx0X3JlbW90ZSkKIAlyZW1vdGV1cmw9JChnaXQgY29uZmlnICJyZW1vdGUuJHJlbW90ZS51cmwiKSB8fAogCQlkaWUgInJlbW90ZSAoJHJlbW90ZSkgZG9lcyBub3QgaGF2ZSBhIHVybCBkZWZpbmVkIGluIC5naXQvY29uZmlnIgogCXVybD0iJDEiCisJcmVtb3RldXJsPSR7cmVtb3RldXJsJS99CiAJd2hpbGUgdGVzdCAtbiAiJHVybCIKIAlkbwogCQljYXNlICIkdXJsIiBpbgpAQCAtNTAsNyArNTAsMTYgQEAKIAkJCWJyZWFrOzsKIAkJZXNhYwogCWRvbmUKLQllY2hvICIkcmVtb3RldXJsLyR1cmwiCisJZWNobyAiJHJlbW90ZXVybC8ke3VybCUvfSIKK30KKworIworIyBHZXQgc3VibW9kdWxlIGluZm8gZm9yIHJlZ2lzdGVyZWQgc3VibW9kdWxlcworIyAkQCA9IHBhdGggdG8gbGltaXQgc3VibW9kdWxlIGxpc3QKKyMKK21vZHVsZV9saXN0KCkKK3sKKwlnaXQgbHMtZmlsZXMgLS1zdGFnZSAtLSAiJEAiIHwgZ3JlcCAnXjE2MDAwMCAnCiB9CiAKICMKQEAgLTE5OSw2ICsyMDgsMjYgQEAKIH0KIAogIworIyBFeGVjdXRlIGFuIGFyYml0cmFyeSBjb21tYW5kIHNlcXVlbmNlIGluIGVhY2ggY2hlY2tlZCBvdXQKKyMgc3VibW9kdWxlCisjCisjICRAID0gY29tbWFuZCB0byBleGVjdXRlCisjCitjbWRfZm9yZWFjaCgpCit7CisJbW9kdWxlX2xpc3QgfAorCXdoaWxlIHJlYWQgbW9kZSBzaGExIHN0YWdlIHBhdGgKKwlkbworCQlpZiB0ZXN0IC1lICIkcGF0aCIvLmdpdAorCQl0aGVuCisJCQlzYXkgIkVudGVyaW5nICckcGF0aCciCisJCQkoY2QgIiRwYXRoIiAmJiBldmFsICIkQCIpIHx8CisJCQlkaWUgIlN0b3BwaW5nIGF0ICckcGF0aCc7IHNjcmlwdCByZXR1cm5lZCBub24temVybyBzdGF0dXMuIgorCQlmaQorCWRvbmUKK30KKworIwogIyBSZWdpc3RlciBzdWJtb2R1bGVzIGluIC5naXQvY29uZmlnCiAjCiAjICRAID0gcmVxdWVzdGVkIHBhdGhzIChkZWZhdWx0IHRvIGFsbCkKQEAgLTIyNiw3ICsyNTUsNyBAQAogCQlzaGlmdAogCWRvbmUKIAotCWdpdCBscy1maWxlcyAtLXN0YWdlIC0tICIkQCIgfCBncmVwICdeMTYwMDAwICcgfAorCW1vZHVsZV9saXN0ICIkQCIgfAogCXdoaWxlIHJlYWQgbW9kZSBzaGExIHN0YWdlIHBhdGgKIAlkbwogCQkjIFNraXAgYWxyZWFkeSByZWdpc3RlcmVkIHBhdGhzCkBAIC0yODQsNyArMzEzLDcgQEAKIAkJZXNhYwogCWRvbmUKIAotCWdpdCBscy1maWxlcyAtLXN0YWdlIC0tICIkQCIgfCBncmVwICdeMTYwMDAwICcgfAorCW1vZHVsZV9saXN0ICIkQCIgfAogCXdoaWxlIHJlYWQgbW9kZSBzaGExIHN0YWdlIHBhdGgKIAlkbwogCQluYW1lPSQobW9kdWxlX25hbWUgIiRwYXRoIikgfHwgZXhpdApAQCAtMzg0LDcgKzQxMyw3IEBACiAKIAl0ZXN0ICRzdW1tYXJ5X2xpbWl0ID0gMCAmJiByZXR1cm4KIAotCWlmIHJldj0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgIiQxXjAiIDI+L2Rldi9udWxsKQorCWlmIHJldj0kKGdpdCByZXYtcGFyc2UgLXEgLS12ZXJpZnkgIiQxXjAiKQogCXRoZW4KIAkJaGVhZD0kcmV2CiAJCXNoaWZ0CkBAIC0zOTUsNyArNDI0LDcgQEAKIAljZF90b190b3BsZXZlbAogCSMgR2V0IG1vZGlmaWVkIG1vZHVsZXMgY2FyZWQgYnkgdXNlcgogCW1vZHVsZXM9JChnaXQgZGlmZi1pbmRleCAkY2FjaGVkIC0tcmF3ICRoZWFkIC0tICIkQCIgfAotCQlncmVwIC1lICdeOjE2MDAwMCcgLWUgJ146WzAtN10qIDE2MDAwMCcgfAorCQllZ3JlcCAnXjooWzAtN10qICk/MTYwMDAwJyB8CiAJCXdoaWxlIHJlYWQgbW9kX3NyYyBtb2RfZHN0IHNoYTFfc3JjIHNoYTFfZHN0IHN0YXR1cyBuYW1lCiAJCWRvCiAJCQkjIEFsd2F5cyBzaG93IG1vZHVsZXMgZGVsZXRlZCBvciB0eXBlLWNoYW5nZWQgKGJsb2I8LT5tb2R1bGUpCkBAIC00MDksNyArNDM4LDcgQEAKIAl0ZXN0IC16ICIkbW9kdWxlcyIgJiYgcmV0dXJuCiAKIAlnaXQgZGlmZi1pbmRleCAkY2FjaGVkIC0tcmF3ICRoZWFkIC0tICRtb2R1bGVzIHwKLQlncmVwIC1lICdeOjE2MDAwMCcgLWUgJ146WzAtN10qIDE2MDAwMCcgfAorCWVncmVwICdeOihbMC03XSogKT8xNjAwMDAnIHwKIAljdXQgLWMyLSB8CiAJd2hpbGUgcmVhZCBtb2Rfc3JjIG1vZF9kc3Qgc2hhMV9zcmMgc2hhMV9kc3Qgc3RhdHVzIG5hbWUKIAlkbwpAQCAtNDM1LDExICs0NjQsMTEgQEAKIAkJbWlzc2luZ19kc3Q9CiAKIAkJdGVzdCAkbW9kX3NyYyA9IDE2MDAwMCAmJgotCQkhIEdJVF9ESVI9IiRuYW1lLy5naXQiIGdpdC1yZXYtcGFyc2UgLS12ZXJpZnkgJHNoYTFfc3JjXjAgPi9kZXYvbnVsbCAyPiYxICYmCisJCSEgR0lUX0RJUj0iJG5hbWUvLmdpdCIgZ2l0LXJldi1wYXJzZSAtcSAtLXZlcmlmeSAkc2hhMV9zcmNeMCA+L2Rldi9udWxsICYmCiAJCW1pc3Npbmdfc3JjPXQKIAogCQl0ZXN0ICRtb2RfZHN0ID0gMTYwMDAwICYmCi0JCSEgR0lUX0RJUj0iJG5hbWUvLmdpdCIgZ2l0LXJldi1wYXJzZSAtLXZlcmlmeSAkc2hhMV9kc3ReMCA+L2Rldi9udWxsIDI+JjEgJiYKKwkJISBHSVRfRElSPSIkbmFtZS8uZ2l0IiBnaXQtcmV2LXBhcnNlIC1xIC0tdmVyaWZ5ICRzaGExX2RzdF4wID4vZGV2L251bGwgJiYKIAkJbWlzc2luZ19kc3Q9dAogCiAJCXRvdGFsX2NvbW1pdHM9CkBAIC01NTQsNyArNTgzLDcgQEAKIAkJc2hpZnQKIAlkb25lCiAKLQlnaXQgbHMtZmlsZXMgLS1zdGFnZSAtLSAiJEAiIHwgZ3JlcCAnXjE2MDAwMCAnIHwKKwltb2R1bGVfbGlzdCAiJEAiIHwKIAl3aGlsZSByZWFkIG1vZGUgc2hhMSBzdGFnZSBwYXRoCiAJZG8KIAkJbmFtZT0kKG1vZHVsZV9uYW1lICIkcGF0aCIpIHx8IGV4aXQKQEAgLTU3OCw2ICs2MDcsNTggQEAKIAkJZmkKIAlkb25lCiB9CisjCisjIFN5bmMgcmVtb3RlIHVybHMgZm9yIHN1Ym1vZHVsZXMKKyMgVGhpcyBtYWtlcyB0aGUgdmFsdWUgZm9yIHJlbW90ZS4kcmVtb3RlLnVybCBtYXRjaCB0aGUgdmFsdWUKKyMgc3BlY2lmaWVkIGluIC5naXRtb2R1bGVzLgorIworY21kX3N5bmMoKQoreworCXdoaWxlIHRlc3QgJCMgLW5lIDAKKwlkbworCQljYXNlICIkMSIgaW4KKwkJLXF8LS1xdWlldCkKKwkJCXF1aWV0PTEKKwkJCXNoaWZ0CisJCQk7OworCQktLSkKKwkJCXNoaWZ0CisJCQlicmVhaworCQkJOzsKKwkJLSopCisJCQl1c2FnZQorCQkJOzsKKwkJKikKKwkJCWJyZWFrCisJCQk7OworCQllc2FjCisJZG9uZQorCWNkX3RvX3RvcGxldmVsCisJbW9kdWxlX2xpc3QgIiRAIiB8CisJd2hpbGUgcmVhZCBtb2RlIHNoYTEgc3RhZ2UgcGF0aAorCWRvCisJCW5hbWU9JChtb2R1bGVfbmFtZSAiJHBhdGgiKQorCQl1cmw9JChnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIC0tZ2V0IHN1Ym1vZHVsZS4iJG5hbWUiLnVybCkKKworCQkjIFBvc3NpYmx5IGEgdXJsIHJlbGF0aXZlIHRvIHBhcmVudAorCQljYXNlICIkdXJsIiBpbgorCQkuLyp8Li4vKikKKwkJCXVybD0kKHJlc29sdmVfcmVsYXRpdmVfdXJsICIkdXJsIikgfHwgZXhpdAorCQkJOzsKKwkJZXNhYworCisJCWlmIHRlc3QgLWUgIiRwYXRoIi8uZ2l0CisJCXRoZW4KKwkJKAorCQkJdW5zZXQgR0lUX0RJUgorCQkJY2QgIiRwYXRoIgorCQkJcmVtb3RlPSQoZ2V0X2RlZmF1bHRfcmVtb3RlKQorCQkJc2F5ICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckbmFtZSciCisJCQlnaXQgY29uZmlnIHJlbW90ZS4iJHJlbW90ZSIudXJsICIkdXJsIgorCQkpCisJCWZpCisJZG9uZQorfQogCiAjIFRoaXMgbG9vcCBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gZmluZCB0aGUKICMgc3ViY29tbWFuZCBuYW1lIHRvIGRpc3BhdGNoLiAgUGFyc2luZyBvZiB0aGUgc3ViY29tbWFuZCBzcGVjaWZpYwpAQCAtNTg4LDcgKzY2OSw3IEBACiB3aGlsZSB0ZXN0ICQjICE9IDAgJiYgdGVzdCAteiAiJGNvbW1hbmQiCiBkbwogCWNhc2UgIiQxIiBpbgotCWFkZCB8IGluaXQgfCB1cGRhdGUgfCBzdGF0dXMgfCBzdW1tYXJ5KQorCWFkZCB8IGZvcmVhY2ggfCBpbml0IHwgdXBkYXRlIHwgc3RhdHVzIHwgc3VtbWFyeSB8IHN5bmMpCiAJCWNvbW1hbmQ9JDEKIAkJOzsKIAktcXwtLXF1aWV0KQpkaWZmIC0tZ2l0IGEvZ2l0LXN2bi5wZXJsIGIvZ2l0LXN2bi5wZXJsCmluZGV4IDI1ZWQyZjQuLmFkMDFlMTggMTAwNzU1Ci0tLSBhL2dpdC1zdm4ucGVybAorKysgYi9naXQtc3ZuLnBlcmwKQEAgLTY2LDcgKzY2LDcgQEAKIAkkX3ZlcnNpb24sICRfZmV0Y2hfYWxsLCAkX25vX3JlYmFzZSwKIAkkX21lcmdlLCAkX3N0cmF0ZWd5LCAkX2RyeV9ydW4sICRfbG9jYWwsCiAJJF9wcmVmaXgsICRfbm9fY2hlY2tvdXQsICRfdXJsLCAkX3ZlcmJvc2UsCi0JJF9naXRfZm9ybWF0LCAkX2NvbW1pdF91cmwpOworCSRfZ2l0X2Zvcm1hdCwgJF9jb21taXRfdXJsLCAkX3RhZyk7CiAkR2l0OjpTVk46Ol9mb2xsb3dfcGFyZW50ID0gMTsKIG15ICVyZW1vdGVfb3B0cyA9ICggJ3VzZXJuYW1lPXMnID0+IFwkR2l0OjpTVk46OlByb21wdDo6X3VzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAnY29uZmlnLWRpcj1zJyA9PiBcJEdpdDo6U1ZOOjpSYTo6Y29uZmlnX2RpciwKQEAgLTEzMSw2ICsxMzEsMTUgQEAKIAkJCSAgJ3JldmlzaW9ufHI9aScgPT4gXCRfcmV2aXNpb24sCiAJCQkgICduby1yZWJhc2UnID0+IFwkX25vX3JlYmFzZSwKIAkJCSVjbXRfb3B0cywgJWZjX29wdHMgfSBdLAorCWJyYW5jaCA9PiBbIFwmY21kX2JyYW5jaCwKKwkgICAgICAgICAgICAnQ3JlYXRlIGEgYnJhbmNoIGluIHRoZSBTVk4gcmVwb3NpdG9yeScsCisJICAgICAgICAgICAgeyAnbWVzc2FnZXxtPXMnID0+IFwkX21lc3NhZ2UsCisJICAgICAgICAgICAgICAnZHJ5LXJ1bnxuJyA9PiBcJF9kcnlfcnVuLAorCQkgICAgICAndGFnfHQnID0+IFwkX3RhZyB9IF0sCisJdGFnID0+IFsgc3ViIHsgJF90YWcgPSAxOyBjbWRfYnJhbmNoKEBfKSB9LAorCSAgICAgICAgICdDcmVhdGUgYSB0YWcgaW4gdGhlIFNWTiByZXBvc2l0b3J5JywKKwkgICAgICAgICB7ICdtZXNzYWdlfG09cycgPT4gXCRfbWVzc2FnZSwKKwkgICAgICAgICAgICdkcnktcnVufG4nID0+IFwkX2RyeV9ydW4gfSBdLAogCSdzZXQtdHJlZScgPT4gWyBcJmNtZF9zZXRfdHJlZSwKIAkgICAgICAgICAgICAgICAgIlNldCBhbiBTVk4gcmVwb3NpdG9yeSB0byBhIGdpdCB0cmVlLWlzaCIsCiAJCQl7ICdzdGRpbnwnID0+IFwkX3N0ZGluLCAlY210X29wdHMsICVmY19vcHRzLCB9IF0sCkBAIC0yMTQsMTEgKzIyMywxMyBAQAogCQkJICAgICJidXQgaXQgaXMgbm90IGEgZGlyZWN0b3J5XG4iOwogCQl9CiAJCW15ICRnaXRfZGlyID0gZGVsZXRlICRFTlZ7R0lUX0RJUn07Ci0JCWNob21wKG15ICRjZHVwID0gY29tbWFuZF9vbmVsaW5lKHF3L3Jldi1wYXJzZSAtLXNob3ctY2R1cC8pKTsKLQkJdW5sZXNzIChsZW5ndGggJGNkdXApIHsKLQkJCWRpZSAiQWxyZWFkeSBhdCB0b3BsZXZlbCwgYnV0ICRnaXRfZGlyICIsCi0JCQkgICAgIm5vdCBmb3VuZCAnJGNkdXAnXG4iOwotCQl9CisJCW15ICRjZHVwID0gdW5kZWY7CisJCWdpdF9jbWRfdHJ5IHsKKwkJCSRjZHVwID0gY29tbWFuZF9vbmVsaW5lKHF3L3Jldi1wYXJzZSAtLXNob3ctY2R1cC8pOworCQkJJGdpdF9kaXIgPSAnLicgdW5sZXNzICgkY2R1cCk7CisJCQljaG9tcCAkY2R1cCBpZiAoJGNkdXApOworCQkJJGNkdXAgPSAiLiIgdW5sZXNzICgkY2R1cCAmJiBsZW5ndGggJGNkdXApOworCQl9ICJBbHJlYWR5IGF0IHRvcGxldmVsLCBidXQgJGdpdF9kaXIgbm90IGZvdW5kXG4iOwogCQljaGRpciAkY2R1cCBvciBkaWUgIlVuYWJsZSB0byBjaGRpciB1cCB0byAnJGNkdXAnXG4iOwogCQl1bmxlc3MgKC1kICRnaXRfZGlyKSB7CiAJCQlkaWUgIiRnaXRfZGlyIHN0aWxsIG5vdCBmb3VuZCBhZnRlciBnb2luZyB0byAiLApAQCAtNDIxLDE1ICs0MzIsMTUgQEAKIAkkaGVhZCB8fD0gJ0hFQUQnOwogCW15IEByZWZzOwogCW15ICgkdXJsLCAkcmV2LCAkdXVpZCwgJGdzKSA9IHdvcmtpbmdfaGVhZF9pbmZvKCRoZWFkLCBcQHJlZnMpOworCXVubGVzcyAoJGdzKSB7CisJCWRpZSAiVW5hYmxlIHRvIGRldGVybWluZSB1cHN0cmVhbSBTVk4gaW5mb3JtYXRpb24gZnJvbSAiLAorCQkgICAgIiRoZWFkIGhpc3RvcnkuXG5QZXJoYXBzIHRoZSByZXBvc2l0b3J5IGlzIGVtcHR5LiI7CisJfQogCSR1cmwgPSBkZWZpbmVkICRfY29tbWl0X3VybCA/ICRfY29tbWl0X3VybCA6ICRncy0+ZnVsbF91cmw7CiAJbXkgJGxhc3RfcmV2ID0gJF9yZXZpc2lvbiBpZiBkZWZpbmVkICRfcmV2aXNpb247CiAJaWYgKCR1cmwpIHsKIAkJcHJpbnQgIkNvbW1pdHRpbmcgdG8gJHVybCAuLi5cbiI7CiAJfQotCXVubGVzcyAoJGdzKSB7Ci0JCWRpZSAiVW5hYmxlIHRvIGRldGVybWluZSB1cHN0cmVhbSBTVk4gaW5mb3JtYXRpb24gZnJvbSAiLAotCQkgICAgIiRoZWFkIGhpc3RvcnkuXG5QZXJoYXBzIHRoZSByZXBvc2l0b3J5IGlzIGVtcHR5LiI7Ci0JfQogCW15ICgkbGluZWFyX3JlZnMsICRwYXJlbnRzKSA9IGxpbmVhcml6ZV9oaXN0b3J5KCRncywgXEByZWZzKTsKIAlpZiAoJF9ub19yZWJhc2UgJiYgc2NhbGFyKEAkbGluZWFyX3JlZnMpID4gMSkgewogCQl3YXJuICJBdHRlbXB0aW5nIHRvIGNvbW1pdCBtb3JlIHRoYW4gb25lIGNoYW5nZSB3aGlsZSAiLApAQCAtNTM3LDYgKzU0OCw0MiBAQAogCXVubGluayAkZ3MtPntpbmRleH07CiB9CiAKK3N1YiBjbWRfYnJhbmNoIHsKKwlteSAoJGJyYW5jaF9uYW1lLCAkaGVhZCkgPSBAXzsKKworCXVubGVzcyAoZGVmaW5lZCAkYnJhbmNoX25hbWUgJiYgbGVuZ3RoICRicmFuY2hfbmFtZSkgeworCQlkaWUoKCRfdGFnID8gInRhZyIgOiAiYnJhbmNoIikgLiAiIG5hbWUgcmVxdWlyZWRcbiIpOworCX0KKwkkaGVhZCB8fD0gJ0hFQUQnOworCisJbXkgKCRzcmMsICRyZXYsIHVuZGVmLCAkZ3MpID0gd29ya2luZ19oZWFkX2luZm8oJGhlYWQpOworCisJbXkgJHJlbW90ZSA9IEdpdDo6U1ZOOjpyZWFkX2FsbF9yZW1vdGVzKCktPnskZ3MtPntyZXBvX2lkfX07CisJbXkgJGdsb2IgPSAkcmVtb3RlLT57ICRfdGFnID8gJ3RhZ3MnIDogJ2JyYW5jaGVzJyB9OworCW15ICgkbGZ0LCAkcmd0KSA9IEB7ICRnbG9iLT57cGF0aH0gfXtxdy9sZWZ0IHJpZ2h0L307CisJbXkgJGRzdCA9IGpvaW4gJy8nLCAkcmVtb3RlLT57dXJsfSwgJGxmdCwgJGJyYW5jaF9uYW1lLCAoJHJndCB8fCAoKSk7CisKKwlteSAkY3R4ID0gU1ZOOjpDbGllbnQtPm5ldygKKwkJYXV0aCAgICA9PiBHaXQ6OlNWTjo6UmE6Ol9hdXRoX3Byb3ZpZGVycygpLAorCQlsb2dfbXNnID0+IHN1YiB7CisJCQkkeyAkX1swXSB9ID0gZGVmaW5lZCAkX21lc3NhZ2UKKwkJCQk/ICRfbWVzc2FnZQorCQkJCTogJ0NyZWF0ZSAnIC4gKCRfdGFnID8gJ3RhZyAnIDogJ2JyYW5jaCAnICkKKwkJCQkuICRicmFuY2hfbmFtZTsKKwkJfSwKKwkpOworCisJZXZhbCB7CisJCSRjdHgtPmxzKCRkc3QsICdIRUFEJywgMCk7CisJfSBhbmQgZGllICJicmFuY2ggJHticmFuY2hfbmFtZX0gYWxyZWFkeSBleGlzdHNcbiI7CisKKwlwcmludCAiQ29weWluZyAke3NyY30gYXQgciR7cmV2fSB0byAke2RzdH0uLi5cbiI7CisJJGN0eC0+Y29weSgkc3JjLCAkcmV2LCAkZHN0KQorCQl1bmxlc3MgJF9kcnlfcnVuOworCisJJGdzLT5mZXRjaF9hbGw7Cit9CisKIHN1YiBjbWRfZmluZF9yZXYgewogCW15ICRyZXZpc2lvbl9vcl9oYXNoID0gc2hpZnQgb3IgZGllICJTVk4gb3IgZ2l0IHJldmlzaW9uIHJlcXVpcmVkICIsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50XG4iOwpAQCAtODAzLDggKzg1MCwyOCBAQAogCX0KIH0KIAorc3ViIGVzY2FwZV91cmlfb25seSB7CisJbXkgKCR1cmkpID0gQF87CisJbXkgQHRtcDsKKwlmb3JlYWNoIChzcGxpdCBtey99LCAkdXJpKSB7CisJCXMvKFteflx3LiUrLV18JSg/IVthLWZBLUYwLTldezJ9KSkvc3ByaW50ZigiJSUlMDJYIixvcmQoJDEpKS9lZzsKKwkJcHVzaCBAdG1wLCAkXzsKKwl9CisJam9pbignLycsIEB0bXApOworfQorCitzdWIgZXNjYXBlX3VybCB7CisJbXkgKCR1cmwpID0gQF87CisJaWYgKCR1cmwgPX4gbSNeKFteOl0rKTovLyhbXi9dKikoLiopJCMpIHsKKwkJbXkgKCRzY2hlbWUsICRkb21haW4sICR1cmkpID0gKCQxLCAkMiwgZXNjYXBlX3VyaV9vbmx5KCQzKSk7CisJCSR1cmwgPSAiJHNjaGVtZTovLyRkb21haW4kdXJpIjsKKwl9CisJJHVybDsKK30KKwogc3ViIGNtZF9pbmZvIHsKIAlteSAkcGF0aCA9IGNhbm9uaWNhbGl6ZV9wYXRoKGRlZmluZWQoJF9bMF0pID8gJF9bMF0gOiAiLiIpOworCW15ICRmdWxscGF0aCA9IGNhbm9uaWNhbGl6ZV9wYXRoKCRjbWRfZGlyX3ByZWZpeCAuICRwYXRoKTsKIAlpZiAoZXhpc3RzICRfWzFdKSB7CiAJCWRpZSAiVG9vIG1hbnkgYXJndW1lbnRzIHNwZWNpZmllZFxuIjsKIAl9CkBAIC04MTIsOCArODc5LDggQEAKIAlteSAoJGZpbGVfdHlwZSwgJGRpZmZfc3RhdHVzKSA9IGZpbmRfZmlsZV90eXBlX2FuZF9kaWZmX3N0YXR1cygkcGF0aCk7CiAKIAlpZiAoISRmaWxlX3R5cGUgJiYgISRkaWZmX3N0YXR1cykgewotCQlwcmludCBTVERFUlIgIiRwYXRoOiAgKE5vdCBhIHZlcnNpb25lZCByZXNvdXJjZSlcblxuIjsKLQkJcmV0dXJuOworCQlwcmludCBTVERFUlIgInN2bjogJyRwYXRoJyBpcyBub3QgdW5kZXIgdmVyc2lvbiBjb250cm9sXG4iOworCQlleGl0IDE7CiAJfQogCiAJbXkgKCR1cmwsICRyZXYsICR1dWlkLCAkZ3MpID0gd29ya2luZ19oZWFkX2luZm8oJ0hFQUQnKTsKQEAgLTgyNSwyMSArODkyLDIxIEBACiAJIyBjYW5vbmljYWxpemVfcGF0aCgpIHdpbGwgcmV0dXJuICIiIHRvIG1ha2UgbGlic3ZuIDEuNS54IGhhcHB5LAogCSRwYXRoID0gIi4iIGlmICRwYXRoIGVxICIiOwogCi0JbXkgJGZ1bGxfdXJsID0gJHVybCAuICgkcGF0aCBlcSAiLiIgPyAiIiA6ICIvJHBhdGgiKTsKKwlteSAkZnVsbF91cmwgPSAkdXJsIC4gKCRmdWxscGF0aCBlcSAiIiA/ICIiIDogIi8kZnVsbHBhdGgiKTsKIAogCWlmICgkX3VybCkgewotCQlwcmludCAkZnVsbF91cmwsICJcbiI7CisJCXByaW50IGVzY2FwZV91cmwoJGZ1bGxfdXJsKSwgIlxuIjsKIAkJcmV0dXJuOwogCX0KIAogCW15ICRyZXN1bHQgPSAiUGF0aDogJHBhdGhcbiI7CiAJJHJlc3VsdCAuPSAiTmFtZTogIiAuIGJhc2VuYW1lKCRwYXRoKSAuICJcbiIgaWYgJGZpbGVfdHlwZSBuZSAiZGlyIjsKLQkkcmVzdWx0IC49ICJVUkw6ICIgLiAkZnVsbF91cmwgLiAiXG4iOworCSRyZXN1bHQgLj0gIlVSTDogIiAuIGVzY2FwZV91cmwoJGZ1bGxfdXJsKSAuICJcbiI7CiAKIAlldmFsIHsKIAkJbXkgJHJlcG9zX3Jvb3QgPSAkZ3MtPnJlcG9zX3Jvb3Q7CiAJCUdpdDo6U1ZOOjpyZW1vdmVfdXNlcm5hbWUoJHJlcG9zX3Jvb3QpOwotCQkkcmVzdWx0IC49ICJSZXBvc2l0b3J5IFJvb3Q6ICRyZXBvc19yb290XG4iOworCQkkcmVzdWx0IC49ICJSZXBvc2l0b3J5IFJvb3Q6ICIgLiBlc2NhcGVfdXJsKCRyZXBvc19yb290KSAuICJcbiI7CiAJfTsKIAlpZiAoJEApIHsKIAkJJHJlc3VsdCAuPSAiUmVwb3NpdG9yeSBSb290OiAob2ZmbGluZSlcbiI7CkBAIC04NjEsNyArOTI4LDcgQEAKIAl9CiAKIAlteSAoJGxjX2F1dGhvciwgJGxjX3JldiwgJGxjX2RhdGVfdXRjKTsKLQlteSBAYXJncyA9IEdpdDo6U1ZOOjpMb2c6OmdpdF9zdm5fbG9nX2NtZCgkcmV2LCAkcmV2LCAiLS0iLCAkcGF0aCk7CisJbXkgQGFyZ3MgPSBHaXQ6OlNWTjo6TG9nOjpnaXRfc3ZuX2xvZ19jbWQoJHJldiwgJHJldiwgIi0tIiwgJGZ1bGxwYXRoKTsKIAlteSAkbG9nID0gY29tbWFuZF9vdXRwdXRfcGlwZShAYXJncyk7CiAJbXkgJGVzY19jb2xvciA9IHFyLyg/OlwwMzNcWyg/Oig/OlxkKzspKlxkKik/bSkqLzsKIAl3aGlsZSAoPCRsb2c+KSB7CkBAIC0xMDcxLDkgKzExMzgsMTkgQEAKIAkJc3lzdGVtKCRlZGl0b3IsICRjb21taXRfZWRpdG1zZyk7CiAJfQogCXJlbmFtZSAkY29tbWl0X2VkaXRtc2csICRjb21taXRfbXNnIG9yIGNyb2FrICQhOwotCW9wZW4gJGxvZ19maCwgJzwnLCAkY29tbWl0X21zZyBvciBjcm9hayAkITsKLQl7IGxvY2FsICQvOyBjaG9tcCgkbG9nX2VudHJ5e2xvZ30gPSA8JGxvZ19maD4pOyB9Ci0JY2xvc2UgJGxvZ19maCBvciBjcm9hayAkITsKKwl7CisJCSMgU1ZOIHJlcXVpcmVzIG1lc3NhZ2VzIHRvIGJlIFVURi04IHdoZW4gZW50ZXJpbmcgdGhlIHJlcG8KKwkJbG9jYWwgJC87CisJCW9wZW4gJGxvZ19maCwgJzwnLCAkY29tbWl0X21zZyBvciBjcm9hayAkITsKKwkJYmlubW9kZSAkbG9nX2ZoOworCQljaG9tcCgkbG9nX2VudHJ5e2xvZ30gPSA8JGxvZ19maD4pOworCisJCWlmIChteSAkZW5jID0gR2l0Ojpjb25maWcoJ2kxOG4uY29tbWl0ZW5jb2RpbmcnKSkgeworCQkJcmVxdWlyZSBFbmNvZGU7CisJCQlFbmNvZGU6OmZyb21fdG8oJGxvZ19lbnRyeXtsb2d9LCAkZW5jLCAnVVRGLTgnKTsKKwkJfQorCQljbG9zZSAkbG9nX2ZoIG9yIGNyb2FrICQhOworCX0KIAl1bmxpbmsgJGNvbW1pdF9tc2c7CiAJXCVsb2dfZW50cnk7CiB9CkBAIC0yMjA4LDYgKzIyODUsMTQgQEAKIAl9CiAJZGVmaW5lZChteSAkcGlkID0gb3BlbjMobXkgJG1zZ19maCwgbXkgJG91dF9maCwgJz4mU1RERVJSJywgQGV4ZWMpKQogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgY3JvYWsgJCE7CisJYmlubW9kZSAkbXNnX2ZoOworCisJIyB3ZSBhbHdheXMgZ2V0IFVURi04IGZyb20gU1ZOLCBidXQgd2UgbWF5IHdhbnQgb3VyIGNvbW1pdHMgaW4KKwkjIGEgZGlmZmVyZW50IGVuY29kaW5nLgorCWlmIChteSAkZW5jID0gR2l0Ojpjb25maWcoJ2kxOG4uY29tbWl0ZW5jb2RpbmcnKSkgeworCQlyZXF1aXJlIEVuY29kZTsKKwkJRW5jb2RlOjpmcm9tX3RvKCRsb2dfZW50cnktPntsb2d9LCAnVVRGLTgnLCAkZW5jKTsKKwl9CiAJcHJpbnQgJG1zZ19maCAkbG9nX2VudHJ5LT57bG9nfSBvciBjcm9hayAkITsKIAlyZXN0b3JlX2NvbW1pdF9oZWFkZXJfZW52KCRvbGRfZW52KTsKIAl1bmxlc3MgKCRzZWxmLT5ub19tZXRhZGF0YSkgewpAQCAtMjYxNCw5ICsyNjk5LDkgQEAKIHN1YiByZWJ1aWxkIHsKIAlteSAoJHNlbGYpID0gQF87CiAJbXkgJG1hcF9wYXRoID0gJHNlbGYtPm1hcF9wYXRoOwotCXJldHVybiBpZiAoLWUgJG1hcF9wYXRoICYmICEgLXogJG1hcF9wYXRoKTsKKwlteSAkcGFydGlhbCA9ICgtZSAkbWFwX3BhdGggJiYgISAteiAkbWFwX3BhdGgpOwogCXJldHVybiB1bmxlc3MgOjp2ZXJpZnlfcmVmKCRzZWxmLT5yZWZuYW1lLideMCcpOwotCWlmICgkc2VsZi0+dXNlX3N2bV9wcm9wcyB8fCAkc2VsZi0+bm9fbWV0YWRhdGEpIHsKKwlpZiAoISRwYXJ0aWFsICYmICgkc2VsZi0+dXNlX3N2bV9wcm9wcyB8fCAkc2VsZi0+bm9fbWV0YWRhdGEpKSB7CiAJCW15ICRyZXZfZGIgPSAkc2VsZi0+cmV2X2RiX3BhdGg7CiAJCSRzZWxmLT5yZWJ1aWxkX2Zyb21fcmV2X2RiKCRyZXZfZGIpOwogCQlpZiAoJHNlbGYtPnVzZV9zdm1fcHJvcHMpIHsKQEAgLTI2MjYsMTAgKzI3MTEsMTMgQEAKIAkJJHNlbGYtPnVubGlua19yZXZfZGJfc3ltbGluazsKIAkJcmV0dXJuOwogCX0KLQlwcmludCAiUmVidWlsZGluZyAkbWFwX3BhdGggLi4uXG4iOworCXByaW50ICJSZWJ1aWxkaW5nICRtYXBfcGF0aCAuLi5cbiIgaWYgKCEkcGFydGlhbCk7CisJbXkgKCRiYXNlX3JldiwgJGhlYWQpID0gKCRwYXJ0aWFsID8gJHNlbGYtPnJldl9tYXBfbWF4X25vcmVidWlsZCgxKSA6CisJCSh1bmRlZiwgdW5kZWYpKTsKIAlteSAoJGxvZywgJGN0eCkgPQogCSAgICBjb21tYW5kX291dHB1dF9waXBlKHF3L3Jldi1saXN0IC0tcHJldHR5PXJhdyAtLW5vLWNvbG9yIC0tcmV2ZXJzZS8sCi0JICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnJlZm5hbWUsICctLScpOworCQkJCSgkaGVhZCA/ICIkaGVhZC4uIiA6ICIiKSAuICRzZWxmLT5yZWZuYW1lLAorCQkJCSctLScpOwogCW15ICRtZXRhZGF0YV91cmwgPSAkc2VsZi0+bWV0YWRhdGFfdXJsOwogCXJlbW92ZV91c2VybmFtZSgkbWV0YWRhdGFfdXJsKTsKIAlteSAkc3ZuX3V1aWQgPSAkc2VsZi0+cmFfdXVpZDsKQEAgLTI2NTIsMTIgKzI3NDAsMTcgQEAKIAkJICAgICgkbWV0YWRhdGFfdXJsICYmICR1cmwgJiYgKCR1cmwgbmUgJG1ldGFkYXRhX3VybCkpKSB7CiAJCQluZXh0OwogCQl9CisJCWlmICgkcGFydGlhbCAmJiAkaGVhZCkgeworCQkJcHJpbnQgIlBhcnRpYWwtcmVidWlsZGluZyAkbWFwX3BhdGggLi4uXG4iOworCQkJcHJpbnQgIkN1cnJlbnRseSBhdCAkYmFzZV9yZXYgPSAkaGVhZFxuIjsKKwkJCSRoZWFkID0gdW5kZWY7CisJCX0KIAogCQkkc2VsZi0+cmV2X21hcF9zZXQoJHJldiwgJGMpOwogCQlwcmludCAiciRyZXYgPSAkY1xuIjsKIAl9CiAJY29tbWFuZF9jbG9zZV9waXBlKCRsb2csICRjdHgpOwotCXByaW50ICJEb25lIHJlYnVpbGRpbmcgJG1hcF9wYXRoXG4iOworCXByaW50ICJEb25lIHJlYnVpbGRpbmcgJG1hcF9wYXRoXG4iIGlmICghJHBhcnRpYWwgfHwgISRoZWFkKTsKIAlteSAkcmV2X2RiX3BhdGggPSAkc2VsZi0+cmV2X2RiX3BhdGg7CiAJaWYgKC1mICRzZWxmLT5yZXZfZGJfcGF0aCkgewogCQl1bmxpbmsgJHNlbGYtPnJldl9kYl9wYXRoIG9yIGNyb2FrICJ1bmxpbms6ICQhIjsKQEAgLTI3OTcsNiArMjg5MCwxMiBAQAogc3ViIHJldl9tYXBfbWF4IHsKIAlteSAoJHNlbGYsICR3YW50X2NvbW1pdCkgPSBAXzsKIAkkc2VsZi0+cmVidWlsZDsKKwlteSAoJHIsICRjKSA9ICRzZWxmLT5yZXZfbWFwX21heF9ub3JlYnVpbGQoJHdhbnRfY29tbWl0KTsKKwkkd2FudF9jb21taXQgPyAoJHIsICRjKSA6ICRyOworfQorCitzdWIgcmV2X21hcF9tYXhfbm9yZWJ1aWxkIHsKKwlteSAoJHNlbGYsICR3YW50X2NvbW1pdCkgPSBAXzsKIAlteSAkbWFwX3BhdGggPSAkc2VsZi0+bWFwX3BhdGg7CiAJc3RhdCAkbWFwX3BhdGggb3IgcmV0dXJuICR3YW50X2NvbW1pdCA/ICgwLCB1bmRlZikgOiAwOwogCXN5c29wZW4obXkgJGZoLCAkbWFwX3BhdGgsIE9fUkRPTkxZKSBvciBjcm9hayAib3BlbjogJCEiOwpAQCAtMzI0MSwxMSArMzM0MCwxMSBAQAogCiBzdWIgYXBwbHlfdGV4dGRlbHRhIHsKIAlteSAoJHNlbGYsICRmYiwgJGV4cCkgPSBAXzsKLQlteSAkZmggPSBHaXQ6OnRlbXBfYWNxdWlyZSgnc3ZuX2RlbHRhJyk7CisJbXkgJGZoID0gJDo6X3JlcG9zaXRvcnktPnRlbXBfYWNxdWlyZSgnc3ZuX2RlbHRhJyk7CiAJIyAkZmggZ2V0cyBhdXRvLWNsb3NlZCgpIGJ5IFNWTjo6VHhEZWx0YTo6YXBwbHkoKSwKIAkjIChidXQgJGJhc2UgZG9lcyBub3QsKSBzbyBkdXAoKSBpdCBmb3IgcmVhZGluZyBpbiBjbG9zZV9maWxlCiAJb3BlbiBteSAkZHVwLCAnPCYnLCAkZmggb3IgY3JvYWsgJCE7Ci0JbXkgJGJhc2UgPSBHaXQ6OnRlbXBfYWNxdWlyZSgnZ2l0X2Jsb2InKTsKKwlteSAkYmFzZSA9ICQ6Ol9yZXBvc2l0b3J5LT50ZW1wX2FjcXVpcmUoJ2dpdF9ibG9iJyk7CiAJaWYgKCRmYi0+e2Jsb2J9KSB7CiAJCXByaW50ICRiYXNlICdsaW5rICcgaWYgKCRmYi0+e21vZGVfYX0gPT0gMTIwMDAwKTsKIAkJbXkgJHNpemUgPSAkOjpfcmVwb3NpdG9yeS0+Y2F0X2Jsb2IoJGZiLT57YmxvYn0sICRiYXNlKTsKQEAgLTMyODYsNyArMzM4NSw4IEBACiAJCQkJd2FybiAiJHBhdGggaGFzIG1vZGUgMTIwMDAwIiwKIAkJCQkJCSIgYnV0IGlzIG5vdCBhIGxpbmtcbiI7CiAJCQl9IGVsc2UgewotCQkJCW15ICR0bXBfZmggPSBHaXQ6OnRlbXBfYWNxdWlyZSgnc3ZuX2hhc2gnKTsKKwkJCQlteSAkdG1wX2ZoID0gJDo6X3JlcG9zaXRvcnktPnRlbXBfYWNxdWlyZSgKKwkJCQkJJ3N2bl9oYXNoJyk7CiAJCQkJbXkgJHJlczsKIAkJCQl3aGlsZSAoJHJlcyA9IHN5c3JlYWQoJGZoLCBteSAkc3RyLCAxMDI0KSkgewogCQkJCQlteSAkb3V0ID0gc3lzd3JpdGUoJHRtcF9maCwgJHN0ciwgJHJlcyk7CkBAIC0zMzg4LDExICszNDg4LDEyIEBACiAJd2hpbGUgKDwkZGlmZl9maD4pIHsKIAkJY2hvbXAgJF87ICMgdGhpcyBnZXRzIHJpZCBvZiB0aGUgdHJhaWxpbmcgIlwwIgogCQlpZiAoJHN0YXRlIGVxICdtZXRhJyAmJiAvXjooXGR7Nn0pXHMoXGR7Nn0pXHMKLQkJCQkJJDo6c2hhMVxzKCQ6OnNoYTEpXHMKKwkJCQkJKCQ6OnNoYTEpXHMoJDo6c2hhMSlccwogCQkJCQkoW01UQ1JBRF0pXGQqJC94bykgewogCQkJcHVzaCBAbW9kcywgewltb2RlX2EgPT4gJDEsIG1vZGVfYiA9PiAkMiwKLQkJCQkJc2hhMV9iID0+ICQzLCBjaGcgPT4gJDQgfTsKLQkJCWlmICgkNCA9fiAvXig/OkN8UikkLykgeworCQkJCQlzaGExX2EgPT4gJDMsIHNoYTFfYiA9PiAkNCwKKwkJCQkJY2hnID0+ICQ1IH07CisJCQlpZiAoJDUgPX4gL14oPzpDfFIpJC8pIHsKIAkJCQkkc3RhdGUgPSAnZmlsZV9hJzsKIAkJCX0gZWxzZSB7CiAJCQkJJHN0YXRlID0gJ2ZpbGVfYic7CkBAIC0zNDY1LDcgKzM1NjYsNyBAQAogc3ViIHVybF9wYXRoIHsKIAlteSAoJHNlbGYsICRwYXRoKSA9IEBfOwogCWlmICgkc2VsZi0+e3VybH0gPX4gbSNeaHR0cHM/Oi8vIykgewotCQkkcGF0aCA9fiBzLyhbXmEtekEtWjAtOV8uLV0pL3VjIHNwcmludGYoIiUlJTAyeCIsb3JkKCQxKSkvZWc7CisJCSRwYXRoID1+IHMvKFtefmEtekEtWjAtOV8uLV0pL3VjIHNwcmludGYoIiUlJTAyeCIsb3JkKCQxKSkvZWc7CiAJfQogCSRzZWxmLT57dXJsfSAuICcvJyAuICRzZWxmLT5yZXBvX3BhdGgoJHBhdGgpOwogfQpAQCAtMzY0NCw2ICszNzQ1LDcgQEAKIAlteSAkZmJhdCA9ICRzZWxmLT5hZGRfZmlsZSgkc2VsZi0+cmVwb19wYXRoKCRtLT57ZmlsZV9ifSksICRwYmF0LAogCQkJCSRzZWxmLT51cmxfcGF0aCgkbS0+e2ZpbGVfYX0pLCAkc2VsZi0+e3J9KTsKIAlwcmludCAiXHRSXHQkbS0+e2ZpbGVfYX0gPT4gJG0tPntmaWxlX2J9XG4iIHVubGVzcyAkOjpfcTsKKwkkc2VsZi0+YXBwbHlfYXV0b3Byb3BzKCRmaWxlLCAkZmJhdCk7CiAJJHNlbGYtPmNoZ19maWxlKCRmYmF0LCAkbSk7CiAJJHNlbGYtPmNsb3NlX2ZpbGUoJGZiYXQsdW5kZWYsJHNlbGYtPntwb29sfSk7CiAKQEAgLTM2NzAsNiArMzc3MiwyNyBAQAogCSRzZWxmLT5TVVBFUjo6Y2hhbmdlX2ZpbGVfcHJvcCgkZmJhdCwgJHBuYW1lLCAkcHZhbCwgJHNlbGYtPntwb29sfSk7CiB9CiAKK3N1YiBfY2hnX2ZpbGVfZ2V0X2Jsb2IgKCQkJCQpIHsKKwlteSAoJHNlbGYsICRmYmF0LCAkbSwgJHdoaWNoKSA9IEBfOworCW15ICRmaCA9ICQ6Ol9yZXBvc2l0b3J5LT50ZW1wX2FjcXVpcmUoImdpdF9ibG9iXyR3aGljaCIpOworCWlmICgkbS0+eyJtb2RlXyR3aGljaCJ9ID1+IC9eMTIwLykgeworCQlwcmludCAkZmggJ2xpbmsgJyBvciBjcm9hayAkITsKKwkJJHNlbGYtPmNoYW5nZV9maWxlX3Byb3AoJGZiYXQsJ3N2bjpzcGVjaWFsJywnKicpOworCX0gZWxzaWYgKCRtLT57bW9kZV9hfSA9fiAvXjEyMC8gJiYgJG0tPnsibW9kZV8kd2hpY2gifSAhfiAvXjEyMC8pIHsKKwkJJHNlbGYtPmNoYW5nZV9maWxlX3Byb3AoJGZiYXQsJ3N2bjpzcGVjaWFsJyx1bmRlZik7CisJfQorCW15ICRibG9iID0gJG0tPnsic2hhMV8kd2hpY2gifTsKKwlyZXR1cm4gKCRmaCwpIGlmICgkYmxvYiA9fiAvXjB7NDB9JC8pOworCW15ICRzaXplID0gJDo6X3JlcG9zaXRvcnktPmNhdF9ibG9iKCRibG9iLCAkZmgpOworCWNyb2FrICJGYWlsZWQgdG8gcmVhZCBvYmplY3QgJGJsb2IiIGlmICgkc2l6ZSA8IDApOworCSRmaC0+Zmx1c2ggPT0gMCBvciBjcm9hayAkITsKKwlzZWVrICRmaCwgMCwgMCBvciBjcm9hayAkITsKKworCW15ICRleHAgPSA6Om1kNXN1bSgkZmgpOworCXNlZWsgJGZoLCAwLCAwIG9yIGNyb2FrICQhOworCXJldHVybiAoJGZoLCAkZXhwKTsKK30KKwogc3ViIGNoZ19maWxlIHsKIAlteSAoJHNlbGYsICRmYmF0LCAkbSkgPSBAXzsKIAlpZiAoJG0tPnttb2RlX2J9ID1+IC83NTUkLyAmJiAkbS0+e21vZGVfYX0gIX4gLzc1NSQvKSB7CkBAIC0zNjc3LDI2ICszODAwLDI0IEBACiAJfSBlbHNpZiAoJG0tPnttb2RlX2J9ICF+IC83NTUkLyAmJiAkbS0+e21vZGVfYX0gPX4gLzc1NSQvKSB7CiAJCSRzZWxmLT5jaGFuZ2VfZmlsZV9wcm9wKCRmYmF0LCdzdm46ZXhlY3V0YWJsZScsdW5kZWYpOwogCX0KLQlteSAkZmggPSBHaXQ6OnRlbXBfYWNxdWlyZSgnZ2l0X2Jsb2InKTsKLQlpZiAoJG0tPnttb2RlX2J9ID1+IC9eMTIwLykgewotCQlwcmludCAkZmggJ2xpbmsgJyBvciBjcm9hayAkITsKLQkJJHNlbGYtPmNoYW5nZV9maWxlX3Byb3AoJGZiYXQsJ3N2bjpzcGVjaWFsJywnKicpOwotCX0gZWxzaWYgKCRtLT57bW9kZV9hfSA9fiAvXjEyMC8gJiYgJG0tPnttb2RlX2J9ICF+IC9eMTIwLykgewotCQkkc2VsZi0+Y2hhbmdlX2ZpbGVfcHJvcCgkZmJhdCwnc3ZuOnNwZWNpYWwnLHVuZGVmKTsKLQl9Ci0JbXkgJHNpemUgPSAkOjpfcmVwb3NpdG9yeS0+Y2F0X2Jsb2IoJG0tPntzaGExX2J9LCAkZmgpOwotCWNyb2FrICJGYWlsZWQgdG8gcmVhZCBvYmplY3QgJG0tPntzaGExX2J9IiBpZiAoJHNpemUgPCAwKTsKLQkkZmgtPmZsdXNoID09IDAgb3IgY3JvYWsgJCE7Ci0Jc2VlayAkZmgsIDAsIDAgb3IgY3JvYWsgJCE7Ci0KLQlteSAkZXhwID0gOjptZDVzdW0oJGZoKTsKLQlzZWVrICRmaCwgMCwgMCBvciBjcm9hayAkITsKLQorCW15ICgkZmhfYSwgJGV4cF9hKSA9IF9jaGdfZmlsZV9nZXRfYmxvYiAkc2VsZiwgJGZiYXQsICRtLCAnYSc7CisJbXkgKCRmaF9iLCAkZXhwX2IpID0gX2NoZ19maWxlX2dldF9ibG9iICRzZWxmLCAkZmJhdCwgJG0sICdiJzsKIAlteSAkcG9vbCA9IFNWTjo6UG9vbC0+bmV3OwotCW15ICRhdGQgPSAkc2VsZi0+YXBwbHlfdGV4dGRlbHRhKCRmYmF0LCB1bmRlZiwgJHBvb2wpOwotCW15ICRnb3QgPSBTVk46OlR4RGVsdGE6OnNlbmRfc3RyZWFtKCRmaCwgQCRhdGQsICRwb29sKTsKLQlkaWUgIkNoZWNrc3VtIG1pc21hdGNoXG5leHBlY3RlZDogJGV4cFxuZ290OiAkZ290XG4iIGlmICgkZ290IG5lICRleHApOwotCUdpdDo6dGVtcF9yZWxlYXNlKCRmaCwgMSk7CisJbXkgJGF0ZCA9ICRzZWxmLT5hcHBseV90ZXh0ZGVsdGEoJGZiYXQsICRleHBfYSwgJHBvb2wpOworCWlmICgtcyAkZmhfYSkgeworCQlteSAkdHhzdHJlYW0gPSBTVk46OlR4RGVsdGE6Om5ldyAoJGZoX2EsICRmaF9iLCAkcG9vbCk7CisJCW15ICRyZXMgPSBTVk46OlR4RGVsdGE6OnNlbmRfdHhzdHJlYW0oJHR4c3RyZWFtLCBAJGF0ZCwgJHBvb2wpOworCQlpZiAoZGVmaW5lZCAkcmVzKSB7CisJCQlkaWUgIlVuZXhwZWN0ZWQgcmVzdWx0IGZyb20gc2VuZF90eHN0cmVhbTogJHJlc1xuIiwKKwkJCSAgICAiKFNWTjo6Q29yZTo6VkVSU0lPTjogJFNWTjo6Q29yZTo6VkVSU0lPTilcbiI7CisJCX0KKwl9IGVsc2UgeworCQlteSAkZ290ID0gU1ZOOjpUeERlbHRhOjpzZW5kX3N0cmVhbSgkZmhfYiwgQCRhdGQsICRwb29sKTsKKwkJZGllICJDaGVja3N1bSBtaXNtYXRjaFxuZXhwZWN0ZWQ6ICRleHBfYlxuZ290OiAkZ290XG4iCisJCSAgICBpZiAoJGdvdCBuZSAkZXhwX2IpOworCX0KKwlHaXQ6OnRlbXBfcmVsZWFzZSgkZmhfYiwgMSk7CisJR2l0Ojp0ZW1wX3JlbGVhc2UoJGZoX2EsIDEpOwogCSRwb29sLT5jbGVhcjsKIH0KIApAQCAtMzc5OCw3ICszOTE5LDcgQEAKIAlteSAoJHVyaSkgPSBAXzsKIAlteSBAdG1wOwogCWZvcmVhY2ggKHNwbGl0IG17L30sICR1cmkpIHsKLQkJcy8oW15cdy4lKy1dfCUoPyFbYS1mQS1GMC05XXsyfSkpL3NwcmludGYoIiUlJTAyWCIsb3JkKCQxKSkvZWc7CisJCXMvKFteflx3LiUrLV18JSg/IVthLWZBLUYwLTldezJ9KSkvc3ByaW50ZigiJSUlMDJYIixvcmQoJDEpKS9lZzsKIAkJcHVzaCBAdG1wLCAkXzsKIAl9CiAJam9pbignLycsIEB0bXApOwpAQCAtNDg5NCw4ICs1MDE1LDcgQEAKIAkJfQogCX0KIAlpZiAoQGVtcHRpZWQpIHsKLQkJbXkgJGZpbGUgPSAkRU5We0dJVF9DT05GSUd9IHx8ICRFTlZ7R0lUX0NPTkZJR19MT0NBTH0gfHwKLQkJICAgICAgICAgICAiJEVOVntHSVRfRElSfS9jb25maWciOworCQlteSAkZmlsZSA9ICRFTlZ7R0lUX0NPTkZJR30gfHwgIiRFTlZ7R0lUX0RJUn0vY29uZmlnIjsKIAkJcHJpbnQgU1RERVJSIDw8RU9GOwogVGhlIGZvbGxvd2luZyBbc3ZuLXJlbW90ZV0gc2VjdGlvbnMgaW4geW91ciBjb25maWcgZmlsZSAoJGZpbGUpIGFyZSBlbXB0eQogYW5kIGNhbiBiZSBzYWZlbHkgcmVtb3ZlZDoKZGlmZiAtLWdpdCBhL2dpdC13ZWItLWJyb3dzZS5zaCBiL2dpdC13ZWItLWJyb3dzZS5zaAppbmRleCAzODQxNDhhLi43OGQyMzZiIDEwMDc1NQotLS0gYS9naXQtd2ViLS1icm93c2Uuc2gKKysrIGIvZ2l0LXdlYi0tYnJvd3NlLnNoCkBAIC0zMSw3ICszMSw3IEBACiAKIHZhbGlkX3Rvb2woKSB7CiAJY2FzZSAiJDEiIGluCi0JCWZpcmVmb3ggfCBpY2V3ZWFzZWwgfCBrb25xdWVyb3IgfCB3M20gfCBsaW5rcyB8IGx5bnggfCBkaWxsbyB8IG9wZW4pCisJCWZpcmVmb3ggfCBpY2V3ZWFzZWwgfCBrb25xdWVyb3IgfCB3M20gfCBsaW5rcyB8IGx5bnggfCBkaWxsbyB8IG9wZW4gfCBzdGFydCkKIAkJCTs7ICMgaGFwcHkKIAkJKikKIAkJCXZhbGlkX2N1c3RvbV90b29sICIkMSIgfHwgcmV0dXJuIDEKQEAgLTExNCw2ICsxMTQsMTAgQEAKICAgICBpZiB0ZXN0IC1uICIkU0VDVVJJVFlTRVNTSU9OSUQiOyB0aGVuCiAJYnJvd3Nlcl9jYW5kaWRhdGVzPSJvcGVuICRicm93c2VyX2NhbmRpZGF0ZXMiCiAgICAgZmkKKyAgICAjIC9iaW4vc3RhcnQgaW5kaWNhdGVzIE1pbkdXCisgICAgaWYgdGVzdCAtbiAvYmluL3N0YXJ0OyB0aGVuCisJYnJvd3Nlcl9jYW5kaWRhdGVzPSJzdGFydCAkYnJvd3Nlcl9jYW5kaWRhdGVzIgorICAgIGZpCiAKICAgICBmb3IgaSBpbiAkYnJvd3Nlcl9jYW5kaWRhdGVzOyBkbwogCWluaXRfYnJvd3Nlcl9wYXRoICRpCkBAIC0xNTcsNyArMTYxLDcgQEAKIAkJOzsKIAllc2FjCiAJOzsKLSAgICB3M218bGlua3N8bHlueHxvcGVuKQorICAgIHczbXxsaW5rc3xseW54fG9wZW58c3RhcnQpCiAJZXZhbCAiJGJyb3dzZXJfcGF0aCIgIiRAIgogCTs7CiAgICAgZGlsbG8pCmRpZmYgLS1naXQgYS9naXQuYyBiL2dpdC5jCmluZGV4IDU1ODJjNTEuLjk0MGE0OTggMTAwNjQ0Ci0tLSBhL2dpdC5jCisrKyBiL2dpdC5jCkBAIC0xOTUsOCArMTk1LDggQEAKIAkJcmV0ID0gMTsKIAl9CiAKLQlpZiAoc3ViZGlyKQotCQljaGRpcihzdWJkaXIpOworCWlmIChzdWJkaXIgJiYgY2hkaXIoc3ViZGlyKSkKKwkJZGllKCJDYW5ub3QgY2hhbmdlIHRvICVzOiAlcyIsIHN1YmRpciwgc3RyZXJyb3IoZXJybm8pKTsKIAogCWVycm5vID0gc2F2ZWRfZXJybm87CiAKQEAgLTI2Niw2ICsyNjYsNyBAQAogCWNvbnN0IGNoYXIgKmNtZCA9IGFyZ3ZbMF07CiAJc3RhdGljIHN0cnVjdCBjbWRfc3RydWN0IGNvbW1hbmRzW10gPSB7CiAJCXsgImFkZCIsIGNtZF9hZGQsIFJVTl9TRVRVUCB8IE5FRURfV09SS19UUkVFIH0sCisJCXsgInN0YWdlIiwgY21kX2FkZCwgUlVOX1NFVFVQIHwgTkVFRF9XT1JLX1RSRUUgfSwKIAkJeyAiYW5ub3RhdGUiLCBjbWRfYW5ub3RhdGUsIFJVTl9TRVRVUCB9LAogCQl7ICJhcHBseSIsIGNtZF9hcHBseSB9LAogCQl7ICJhcmNoaXZlIiwgY21kX2FyY2hpdmUgfSwKQEAgLTMzMCw2ICszMzEsNyBAQAogCQl7ICJwcnVuZS1wYWNrZWQiLCBjbWRfcHJ1bmVfcGFja2VkLCBSVU5fU0VUVVAgfSwKIAkJeyAicHVzaCIsIGNtZF9wdXNoLCBSVU5fU0VUVVAgfSwKIAkJeyAicmVhZC10cmVlIiwgY21kX3JlYWRfdHJlZSwgUlVOX1NFVFVQIH0sCisJCXsgInJlY2VpdmUtcGFjayIsIGNtZF9yZWNlaXZlX3BhY2sgfSwKIAkJeyAicmVmbG9nIiwgY21kX3JlZmxvZywgUlVOX1NFVFVQIH0sCiAJCXsgInJlbW90ZSIsIGNtZF9yZW1vdGUsIFJVTl9TRVRVUCB9LAogCQl7ICJyZXBvLWNvbmZpZyIsIGNtZF9jb25maWcgfSwKQEAgLTM2Niw3ICszNjgsNyBAQAogCWlmIChzaXplb2YoZXh0KSA+IDEpIHsKIAkJaSA9IHN0cmxlbihhcmd2WzBdKSAtIHN0cmxlbihleHQpOwogCQlpZiAoaSA+IDAgJiYgIXN0cmNtcChhcmd2WzBdICsgaSwgZXh0KSkgewotCQkJY2hhciAqYXJndjAgPSBzdHJkdXAoYXJndlswXSk7CisJCQljaGFyICphcmd2MCA9IHhzdHJkdXAoYXJndlswXSk7CiAJCQlhcmd2WzBdID0gY21kID0gYXJndjA7CiAJCQlhcmd2MFtpXSA9ICdcMCc7CiAJCX0KQEAgLTM4OCwxMCArMzkwLDkgQEAKIAogc3RhdGljIHZvaWQgZXhlY3ZfZGFzaGVkX2V4dGVybmFsKGNvbnN0IGNoYXIgKiphcmd2KQogewotCXN0cnVjdCBzdHJidWYgY21kOworCXN0cnVjdCBzdHJidWYgY21kID0gU1RSQlVGX0lOSVQ7CiAJY29uc3QgY2hhciAqdG1wOwogCi0Jc3RyYnVmX2luaXQoJmNtZCwgMCk7CiAJc3RyYnVmX2FkZGYoJmNtZCwgImdpdC0lcyIsIGFyZ3ZbMF0pOwogCiAJLyoKQEAgLTUwMSw3ICs1MDIsOSBAQAogCQkJCWNtZCwgYXJndlswXSk7CiAJCQlleGl0KDEpOwogCQl9Ci0JCWhlbHBfdW5rbm93bl9jbWQoY21kKTsKKwkJYXJndlswXSA9IGhlbHBfdW5rbm93bl9jbWQoY21kKTsKKwkJaGFuZGxlX2ludGVybmFsX2NvbW1hbmQoYXJnYywgYXJndik7CisJCWV4ZWN2X2Rhc2hlZF9leHRlcm5hbChhcmd2KTsKIAl9CiAKIAlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBydW4gY29tbWFuZCAnJXMnOiAlc1xuIiwKZGlmZiAtLWdpdCBhL2dpdC5zcGVjLmluIGIvZ2l0LnNwZWMuaW4KaW5kZXggMDMxOWM4Mi4uNGJlMDgzNCAxMDA2NDQKLS0tIGEvZ2l0LnNwZWMuaW4KKysrIGIvZ2l0LnNwZWMuaW4KQEAgLTE2OCw2ICsxNjgsNyBAQAogJWRlZmF0dHIoLSxyb290LHJvb3QpCiAle19saWJleGVjZGlyfS9naXQtY29yZS9naXQtZ3VpCiAle19saWJleGVjZGlyfS9naXQtY29yZS9naXQtY2l0b29sCisle19saWJleGVjZGlyfS9naXQtY29yZS9naXQtZ3VpLS1hc2twYXNzCiAle19kYXRhZGlyfS9naXQtZ3VpLwogJXshP193aXRob3V0X2RvY3M6ICV7X21hbmRpcn0vbWFuMS9naXQtZ3VpLjEqfQogJXshP193aXRob3V0X2RvY3M6ICVkb2MgRG9jdW1lbnRhdGlvbi9naXQtZ3VpLmh0bWx9CmRpZmYgLS1naXQgYS9naXRrLWdpdC9naXRrIGIvZ2l0ay1naXQvZ2l0awppbmRleCAwODdjNGFjLi5kYzJhNDM5IDEwMDY0NAotLS0gYS9naXRrLWdpdC9naXRrCisrKyBiL2dpdGstZ2l0L2dpdGsKQEAgLTE1NSwxOCArMTU1LDE2IEBACiAJCXNldCBvcmlnYXJncyBbbHJlcGxhY2UgJG9yaWdhcmdzICRpICRpXQogCQlpbmNyIGkgLTEKIAkgICAgfQotCSAgICAjIFRoZXNlIHJlcXVlc3Qgb3IgYWZmZWN0IGRpZmYgb3V0cHV0LCB3aGljaCB3ZSBkb24ndCB3YW50LgotCSAgICAjIFNvbWUgY291bGQgYmUgdXNlZCB0byBzZXQgb3VyIGRlZmF1bHRzIGZvciBkaWZmIGRpc3BsYXkuCiAJICAgICItW3B1YWJ3Y3JSQk1DXSIgLQogCSAgICAiLS1uby1yZW5hbWVzIiAtICItLWZ1bGwtaW5kZXgiIC0gIi0tYmluYXJ5IiAtICItLWFiYnJldj0qIiAtCiAJICAgICItLWZpbmQtY29waWVzLWhhcmRlciIgLSAiLWwqIiAtICItLWV4dC1kaWZmIiAtICItLW5vLWV4dC1kaWZmIiAtCiAJICAgICItLXNyYy1wcmVmaXg9KiIgLSAiLS1kc3QtcHJlZml4PSoiIC0gIi0tbm8tcHJlZml4IiAtCiAJICAgICItTyoiIC0gIi0tdGV4dCIgLSAiLS1mdWxsLWRpZmYiIC0gIi0taWdub3JlLXNwYWNlLWF0LWVvbCIgLQogCSAgICAiLS1pZ25vcmUtc3BhY2UtY2hhbmdlIiAtICItVSoiIC0gIi0tdW5pZmllZD0qIiB7CisJCSMgVGhlc2UgcmVxdWVzdCBvciBhZmZlY3QgZGlmZiBvdXRwdXQsIHdoaWNoIHdlIGRvbid0IHdhbnQuCisJCSMgU29tZSBjb3VsZCBiZSB1c2VkIHRvIHNldCBvdXIgZGVmYXVsdHMgZm9yIGRpZmYgZGlzcGxheS4KIAkJbGFwcGVuZCBkaWZmYXJncyAkYXJnCiAJICAgIH0KLQkgICAgIyBUaGVzZSBjYXVzZSBvdXIgcGFyc2luZyBvZiBnaXQgbG9nJ3Mgb3V0cHV0IHRvIGZhaWwsIG9yIGVsc2UKLQkgICAgIyB0aGV5J3JlIG9wdGlvbnMgd2Ugd2FudCB0byBzZXQgb3Vyc2VsdmVzLCBzbyBpZ25vcmUgdGhlbS4KIAkgICAgIi0tcmF3IiAtICItLXBhdGNoLXdpdGgtcmF3IiAtICItLXBhdGNoLXdpdGgtc3RhdCIgLQogCSAgICAiLS1uYW1lLW9ubHkiIC0gIi0tbmFtZS1zdGF0dXMiIC0gIi0tY29sb3IiIC0gIi0tY29sb3Itd29yZHMiIC0KIAkgICAgIi0tbG9nLXNpemUiIC0gIi0tcHJldHR5PSoiIC0gIi0tZGVjb3JhdGUiIC0gIi0tYWJicmV2LWNvbW1pdCIgLQpAQCAtMTc0LDM2ICsxNzIsMzQgQEAKIAkgICAgIi0tbm8tY29sb3IiIC0gIi1nIiAtICItLXdhbGstcmVmbG9ncyIgLSAiLS1uby13YWxrIiAtCiAJICAgICItLXRpbWVzdGFtcCIgLSAicmVsYXRpdmUtZGF0ZSIgLSAiLS1kYXRlPSoiIC0gIi0tc3RkaW4iIC0KIAkgICAgIi0tb2JqZWN0cyIgLSAiLS1vYmplY3RzLWVkZ2UiIC0gIi0tcmV2ZXJzZSIgeworCQkjIFRoZXNlIGNhdXNlIG91ciBwYXJzaW5nIG9mIGdpdCBsb2cncyBvdXRwdXQgdG8gZmFpbCwgb3IgZWxzZQorCQkjIHRoZXkncmUgb3B0aW9ucyB3ZSB3YW50IHRvIHNldCBvdXJzZWx2ZXMsIHNvIGlnbm9yZSB0aGVtLgogCSAgICB9Ci0JICAgICMgVGhlc2UgYXJlIGhhcm1sZXNzLCBhbmQgc29tZSBhcmUgZXZlbiB1c2VmdWwKIAkgICAgIi0tc3RhdD0qIiAtICItLW51bXN0YXQiIC0gIi0tc2hvcnRzdGF0IiAtICItLXN1bW1hcnkiIC0KIAkgICAgIi0tY2hlY2siIC0gIi0tZXhpdC1jb2RlIiAtICItLXF1aWV0IiAtICItLXRvcG8tb3JkZXIiIC0KIAkgICAgIi0tZnVsbC1oaXN0b3J5IiAtICItLWRlbnNlIiAtICItLXNwYXJzZSIgLQogCSAgICAiLS1mb2xsb3ciIC0gIi0tbGVmdC1yaWdodCIgLSAiLS1lbmNvZGluZz0qIiB7CisJCSMgVGhlc2UgYXJlIGhhcm1sZXNzLCBhbmQgc29tZSBhcmUgZXZlbiB1c2VmdWwKIAkJbGFwcGVuZCBnbGZsYWdzICRhcmcKIAkgICAgfQotCSAgICAjIFRoZXNlIG1lYW4gdGhhdCB3ZSBnZXQgYSBzdWJzZXQgb2YgdGhlIGNvbW1pdHMKIAkgICAgIi0tZGlmZi1maWx0ZXI9KiIgLSAiLS1uby1tZXJnZXMiIC0gIi0tdW5wYWNrZWQiIC0KIAkgICAgIi0tbWF4LWNvdW50PSoiIC0gIi0tc2tpcD0qIiAtICItLXNpbmNlPSoiIC0gIi0tYWZ0ZXI9KiIgLQogCSAgICAiLS11bnRpbD0qIiAtICItLWJlZm9yZT0qIiAtICItLW1heC1hZ2U9KiIgLSAiLS1taW4tYWdlPSoiIC0KIAkgICAgIi0tYXV0aG9yPSoiIC0gIi0tY29tbWl0dGVyPSoiIC0gIi0tZ3JlcD0qIiAtICItW2lFXSIgLQogCSAgICAiLS1yZW1vdmUtZW1wdHkiIC0gIi0tZmlyc3QtcGFyZW50IiAtICItLWNoZXJyeS1waWNrIiAtCi0JICAgICItUyoiIC0gIi0tcGlja2F4ZS1hbGwiIC0gIi0tcGlja2F4ZS1yZWdleCIgLSB7CisJICAgICItUyoiIC0gIi0tcGlja2F4ZS1hbGwiIC0gIi0tcGlja2F4ZS1yZWdleCIgeworCQkjIFRoZXNlIG1lYW4gdGhhdCB3ZSBnZXQgYSBzdWJzZXQgb2YgdGhlIGNvbW1pdHMKIAkJc2V0IGZpbHRlcmVkIDEKIAkJbGFwcGVuZCBnbGZsYWdzICRhcmcKIAkgICAgfQotCSAgICAjIFRoaXMgYXBwZWFycyB0byBiZSB0aGUgb25seSBvbmUgdGhhdCBoYXMgYSB2YWx1ZSBhcyBhCi0JICAgICMgc2VwYXJhdGUgd29yZCBmb2xsb3dpbmcgaXQKIAkgICAgIi1uIiB7CisJCSMgVGhpcyBhcHBlYXJzIHRvIGJlIHRoZSBvbmx5IG9uZSB0aGF0IGhhcyBhIHZhbHVlIGFzIGEKKwkJIyBzZXBhcmF0ZSB3b3JkIGZvbGxvd2luZyBpdAogCQlzZXQgZmlsdGVyZWQgMQogCQlzZXQgbmV4dGlzdmFsIDEKIAkJbGFwcGVuZCBnbGZsYWdzICRhcmcKIAkgICAgfQotCSAgICAiLS1ub3QiIHsKLQkJc2V0IG5vdGZsYWcgW2V4cHIgeyEkbm90ZmxhZ31dCi0JCWxhcHBlbmQgcmV2YXJncyAkYXJnCi0JICAgIH0KLQkgICAgIi0tYWxsIiB7CisJICAgICItLW5vdCIgLSAiLS1hbGwiIHsKIAkJbGFwcGVuZCByZXZhcmdzICRhcmcKIAkgICAgfQogCSAgICAiLS1tZXJnZSIgewpAQCAtMjExLDggKzIwNyw4IEBACiAJCSMgZ2l0IHJldi1wYXJzZSBkb2Vzbid0IHVuZGVyc3RhbmQgLS1tZXJnZQogCQlsYXBwZW5kIHJldmFyZ3MgLS1naXRrLXN5bW1ldHJpYy1kaWZmLW1hcmtlciBNRVJHRV9IRUFELi4uSEVBRAogCSAgICB9Ci0JICAgICMgT3RoZXIgZmxhZyBhcmd1bWVudHMgaW5jbHVkaW5nIC08bj4KIAkgICAgIi0qIiB7CisJCSMgT3RoZXIgZmxhZyBhcmd1bWVudHMgaW5jbHVkaW5nIC08bj4KIAkJaWYge1tzdHJpbmcgaXMgZGlnaXQgLXN0cmljdCBbc3RyaW5nIHJhbmdlICRhcmcgMSBlbmRdXX0gewogCQkgICAgc2V0IGZpbHRlcmVkIDEKIAkJfSBlbHNlIHsKQEAgLTIyMiw4ICsyMTgsOCBAQAogCQl9CiAJCWxhcHBlbmQgZ2xmbGFncyAkYXJnCiAJICAgIH0KLQkgICAgIyBOb24tZmxhZyBhcmd1bWVudHMgc3BlY2lmeSBjb21taXRzIG9yIHJhbmdlcyBvZiBjb21taXRzCiAJICAgIGRlZmF1bHQgeworCQkjIE5vbi1mbGFnIGFyZ3VtZW50cyBzcGVjaWZ5IGNvbW1pdHMgb3IgcmFuZ2VzIG9mIGNvbW1pdHMKIAkJaWYge1tzdHJpbmcgbWF0Y2ggIiouLi4qIiAkYXJnXX0gewogCQkgICAgbGFwcGVuZCByZXZhcmdzIC0tZ2l0ay1zeW1tZXRyaWMtZGlmZi1tYXJrZXIKIAkJfQpAQCAtMjY5LDcgKzI2NSw3IEBACiAJCWxhcHBlbmQgYmFkcmV2ICRsaW5lCiAJICAgIH0KIAl9CQkgICAgCi0JZXJyb3JfcG9wdXAgIkVycm9yIHBhcnNpbmcgcmV2aXNpb25zOiAkZXJyIgorCWVycm9yX3BvcHVwICJbbWMgIkVycm9yIHBhcnNpbmcgcmV2aXNpb25zOiJdICRlcnIiCiAJcmV0dXJuIHt9CiAgICAgfQogICAgIHNldCByZXQge30KQEAgLTMwNyw5ICszMDMsOSBAQAogICAgIGdsb2JhbCBzdGFydG1zZWNzIGNvbW1pdGlkeCB2aWV3Y29tcGxldGUgY3VydmlldwogICAgIGdsb2JhbCB0Y2xlbmNvZGluZwogICAgIGdsb2JhbCB2aWV3YXJncyB2aWV3YXJnc2NtZCB2aWV3ZmlsZXMgdmZpbGVsaW1pdAotICAgIGdsb2JhbCBzaG93bG9jYWxjaGFuZ2VzIGNvbW1pdGludGVyZXN0CisgICAgZ2xvYmFsIHNob3dsb2NhbGNoYW5nZXMKICAgICBnbG9iYWwgdmlld2FjdGl2ZSB2aWV3aW5zdGFuY2VzIHZtZXJnZW9ubHkKLSAgICBnbG9iYWwgbWFpbmhlYWRpZAorICAgIGdsb2JhbCBtYWluaGVhZGlkIHZpZXdtYWluaGVhZGlkIHZpZXdtYWluaGVhZGlkX29yaWcKICAgICBnbG9iYWwgdmNhbm9wdCB2ZmxhZ3MgdnJldnMgdm9yaWdhcmdzCiAKICAgICBzZXQgc3RhcnRtc2VjcyBbY2xvY2sgY2xpY2tzIC1taWxsaXNlY29uZHNdCkBAIC0zMjQsNyArMzIwLDcgQEAKIAlpZiB7W2NhdGNoIHsKIAkgICAgc2V0IHN0ciBbZXhlYyBzaCAtYyAkdmlld2FyZ3NjbWQoJHZpZXcpXQogCX0gZXJyXX0gewotCSAgICBlcnJvcl9wb3B1cCAiRXJyb3IgZXhlY3V0aW5nIC0tYXJnc2NtZCBjb21tYW5kOiAkZXJyIgorCSAgICBlcnJvcl9wb3B1cCAiW21jICJFcnJvciBleGVjdXRpbmcgLS1hcmdzY21kIGNvbW1hbmQ6Il0gJGVyciIKIAkgICAgcmV0dXJuIDAKIAl9CiAJc2V0IGFyZ3MgW2NvbmNhdCAkYXJncyBbc3BsaXQgJHN0ciAiXG4iXV0KQEAgLTM2Nyw4ICszNjMsMTMgQEAKICAgICB9CiAgICAgc2V0IGkgW3JlZ19pbnN0YW5jZSAkZmRdCiAgICAgc2V0IHZpZXdpbnN0YW5jZXMoJHZpZXcpIFtsaXN0ICRpXQotICAgIGlmIHskc2hvd2xvY2FsY2hhbmdlcyAmJiAkbWFpbmhlYWRpZCBuZSB7fX0gewotCWxhcHBlbmQgY29tbWl0aW50ZXJlc3QoJG1haW5oZWFkaWQpIHtkb2RpZmZpbmRleH0KKyAgICBzZXQgdmlld21haW5oZWFkaWQoJHZpZXcpICRtYWluaGVhZGlkCisgICAgc2V0IHZpZXdtYWluaGVhZGlkX29yaWcoJHZpZXcpICRtYWluaGVhZGlkCisgICAgaWYgeyRmaWxlcyBuZSB7fSAmJiAkbWFpbmhlYWRpZCBuZSB7fX0geworCWdldF92aWV3bWFpbmhlYWQgJHZpZXcKKyAgICB9CisgICAgaWYgeyRzaG93bG9jYWxjaGFuZ2VzICYmICR2aWV3bWFpbmhlYWRpZCgkdmlldykgbmUge319IHsKKwlpbnRlcmVzdGVkaW4gJHZpZXdtYWluaGVhZGlkKCR2aWV3KSBkb2RpZmZpbmRleAogICAgIH0KICAgICBmY29uZmlndXJlICRmZCAtYmxvY2tpbmcgMCAtdHJhbnNsYXRpb24gbGYgLWVvZmNoYXIge30KICAgICBpZiB7JHRjbGVuY29kaW5nICE9IHt9fSB7CkBAIC00MTgsMTAgKzQxOSwxMiBAQAogfQogCiBwcm9jIHJlc2V0X3BlbmRpbmdfc2VsZWN0IHtzZWxpZH0gewotICAgIGdsb2JhbCBwZW5kaW5nX3NlbGVjdCBtYWluaGVhZGlkCisgICAgZ2xvYmFsIHBlbmRpbmdfc2VsZWN0IG1haW5oZWFkaWQgc2VsZWN0aGVhZGlkCiAKICAgICBpZiB7JHNlbGlkIG5lIHt9fSB7CiAJc2V0IHBlbmRpbmdfc2VsZWN0ICRzZWxpZAorICAgIH0gZWxzZWlmIHskc2VsZWN0aGVhZGlkIG5lIHt9fSB7CisJc2V0IHBlbmRpbmdfc2VsZWN0ICRzZWxlY3RoZWFkaWQKICAgICB9IGVsc2UgewogCXNldCBwZW5kaW5nX3NlbGVjdCAkbWFpbmhlYWRpZAogICAgIH0KQEAgLTQ0NCwyMiArNDQ3LDI2IEBACiAgICAgZ2xvYmFsIGN1cnZpZXcgdmNhbm9wdCB2b3JpZ2FyZ3MgdmZpbGVsaW1pdCB2aWV3aW5zdGFuY2VzCiAgICAgZ2xvYmFsIHZpZXdhY3RpdmUgdmlld2NvbXBsZXRlIHRjbGVuY29kaW5nCiAgICAgZ2xvYmFsIHN0YXJ0bXNlY3Mgc2hvd25lYXJ0YWdzIHNob3dsb2NhbGNoYW5nZXMKLSAgICBnbG9iYWwgbWFpbmhlYWRpZCBwZW5kaW5nX3NlbGVjdAorICAgIGdsb2JhbCBtYWluaGVhZGlkIHZpZXdtYWluaGVhZGlkIHZpZXdtYWluaGVhZGlkX29yaWcgcGVuZGluZ19zZWxlY3QKICAgICBnbG9iYWwgaXN3b3JrdHJlZQogICAgIGdsb2JhbCB2YXJjaWQgdnBvc2lkcyB2bmVnaWRzIHZmbGFncyB2cmV2cwogCiAgICAgc2V0IGlzd29ya3RyZWUgW2V4cHIge1tleGVjIGdpdCByZXYtcGFyc2UgLS1pcy1pbnNpZGUtd29yay10cmVlXSA9PSAidHJ1ZSJ9XQotICAgIHNldCBvbGRtYWluaWQgJG1haW5oZWFkaWQKICAgICByZXJlYWRyZWZzCi0gICAgaWYgeyRzaG93bG9jYWxjaGFuZ2VzfSB7Ci0JaWYgeyRtYWluaGVhZGlkIG5lICRvbGRtYWluaWR9IHsKKyAgICBzZXQgdmlldyAkY3VydmlldworICAgIGlmIHskbWFpbmhlYWRpZCBuZSAkdmlld21haW5oZWFkaWRfb3JpZygkdmlldyl9IHsKKwlpZiB7JHNob3dsb2NhbGNoYW5nZXN9IHsKIAkgICAgZG9oaWRlbG9jYWxjaGFuZ2VzCiAJfQotCWlmIHtbY29tbWl0aW52aWV3ICRtYWluaGVhZGlkICRjdXJ2aWV3XX0gewotCSAgICBkb2RpZmZpbmRleAorCXNldCB2aWV3bWFpbmhlYWRpZCgkdmlldykgJG1haW5oZWFkaWQKKwlzZXQgdmlld21haW5oZWFkaWRfb3JpZygkdmlldykgJG1haW5oZWFkaWQKKwlpZiB7JHZmaWxlbGltaXQoJHZpZXcpIG5lIHt9fSB7CisJICAgIGdldF92aWV3bWFpbmhlYWQgJHZpZXcKIAl9CiAgICAgfQotICAgIHNldCB2aWV3ICRjdXJ2aWV3CisgICAgaWYgeyRzaG93bG9jYWxjaGFuZ2VzfSB7CisJZG9zaG93bG9jYWxjaGFuZ2VzCisgICAgfQogICAgIGlmIHskdmNhbm9wdCgkdmlldyl9IHsKIAlzZXQgb2xkcG9zICR2cG9zaWRzKCR2aWV3KQogCXNldCBvbGRuZWcgJHZuZWdpZHMoJHZpZXcpCkBAIC00OTgsNyArNTA1LDcgQEAKIAlzZXQgZmQgW29wZW4gW2NvbmNhdCB8IGdpdCBsb2cgLS1uby1jb2xvciAteiAtLXByZXR0eT1yYXcgLS1wYXJlbnRzIFwKIAkJCSAgLS1ib3VuZGFyeSAkYXJncyAiLS0iICR2ZmlsZWxpbWl0KCR2aWV3KV0gcl0KICAgICB9IGVycl19IHsKLQllcnJvcl9wb3B1cCAiRXJyb3IgZXhlY3V0aW5nIGdpdCBsb2c6ICRlcnIiCisJZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgZXhlY3V0aW5nIGdpdCBsb2c6Il0gJGVyciIKIAlyZXR1cm4KICAgICB9CiAgICAgaWYgeyR2aWV3YWN0aXZlKCR2aWV3KSA9PSAwfSB7CkBAIC0xMjI5LDcgKzEyMzYsNyBAQAogCiBwcm9jIGNsb3NldmFyY3Mge3Z9IHsKICAgICBnbG9iYWwgdmFyY3RvayB2YXJjY29tbWl0cyB2YXJjaWQgcGFyZW50cyBjaGlsZHJlbgotICAgIGdsb2JhbCBjbWl0bGlzdGVkIGNvbW1pdGlkeCBjb21taXRpbnRlcmVzdCB2dG9rbW9kCisgICAgZ2xvYmFsIGNtaXRsaXN0ZWQgY29tbWl0aWR4IHZ0b2ttb2QKIAogICAgIHNldCBtaXNzaW5nX3BhcmVudHMgMAogICAgIHNldCBzY3JpcHRzIHt9CkBAIC0xMjU0LDEyICsxMjYxLDcgQEAKIAkgICAgfQogCSAgICBsYXBwZW5kIHZhcmNjb21taXRzKCR2LCRiKSAkcAogCSAgICBpbmNyIGNvbW1pdGlkeCgkdikKLQkgICAgaWYge1tpbmZvIGV4aXN0cyBjb21taXRpbnRlcmVzdCgkcCldfSB7Ci0JCWZvcmVhY2ggc2NyaXB0ICRjb21taXRpbnRlcmVzdCgkcCkgewotCQkgICAgbGFwcGVuZCBzY3JpcHRzIFtzdHJpbmcgbWFwIFtsaXN0ICIlSSIgJHBdICRzY3JpcHRdCi0JCX0KLQkJdW5zZXQgY29tbWl0aW50ZXJlc3QoJGlkKQotCSAgICB9CisJICAgIHNldCBzY3JpcHRzIFtjaGVja19pbnRlcmVzdCAkcCAkc2NyaXB0c10KIAl9CiAgICAgfQogICAgIGlmIHskbWlzc2luZ19wYXJlbnRzID4gMH0gewpAQCAtMTI5NSw4ICsxMjk3LDQxIEBACiAgICAgfQogfQogCisjIE1lY2hhbmlzbSBmb3IgcmVnaXN0ZXJpbmcgYSBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkIHdoZW4gd2UgY29tZQorIyBhY3Jvc3MgYSBwYXJ0aWN1bGFyIGNvbW1pdC4gIFRvIGhhbmRsZSB0aGUgY2FzZSB3aGVuIG9ubHkgdGhlCisjIHByZWZpeCBvZiB0aGUgY29tbWl0IGlzIGtub3duLCB0aGUgY29tbWl0aW50ZXJlc3QgYXJyYXkgaXMgbm93CisjIGluZGV4ZWQgYnkgdGhlIGZpcnN0IDQgY2hhcmFjdGVycyBvZiB0aGUgSUQuICBFYWNoIGVsZW1lbnQgaXMgYQorIyBsaXN0IG9mIGlkLCBjbWQgcGFpcnMuCitwcm9jIGludGVyZXN0ZWRpbiB7aWQgY21kfSB7CisgICAgZ2xvYmFsIGNvbW1pdGludGVyZXN0CisKKyAgICBsYXBwZW5kIGNvbW1pdGludGVyZXN0KFtzdHJpbmcgcmFuZ2UgJGlkIDAgM10pICRpZCAkY21kCit9CisKK3Byb2MgY2hlY2tfaW50ZXJlc3Qge2lkIHNjcmlwdHN9IHsKKyAgICBnbG9iYWwgY29tbWl0aW50ZXJlc3QKKworICAgIHNldCBwcmVmaXggW3N0cmluZyByYW5nZSAkaWQgMCAzXQorICAgIGlmIHtbaW5mbyBleGlzdHMgY29tbWl0aW50ZXJlc3QoJHByZWZpeCldfSB7CisJc2V0IG5ld2xpc3Qge30KKwlmb3JlYWNoIHtpIHNjcmlwdH0gJGNvbW1pdGludGVyZXN0KCRwcmVmaXgpIHsKKwkgICAgaWYge1tzdHJpbmcgbWF0Y2ggIiRpKiIgJGlkXX0geworCQlsYXBwZW5kIHNjcmlwdHMgW3N0cmluZyBtYXAgW2xpc3QgIiVJIiAkaWQgIiVQIiAkaV0gJHNjcmlwdF0KKwkgICAgfSBlbHNlIHsKKwkJbGFwcGVuZCBuZXdsaXN0ICRpICRzY3JpcHQKKwkgICAgfQorCX0KKwlpZiB7JG5ld2xpc3QgbmUge319IHsKKwkgICAgc2V0IGNvbW1pdGludGVyZXN0KCRwcmVmaXgpICRuZXdsaXN0CisJfSBlbHNlIHsKKwkgICAgdW5zZXQgY29tbWl0aW50ZXJlc3QoJHByZWZpeCkKKwl9CisgICAgfQorICAgIHJldHVybiAkc2NyaXB0cworfQorCiBwcm9jIGdldGNvbW1pdGxpbmVzIHtmZCBpbnN0IHZpZXcgdXBkYXRpbmd9ICB7Ci0gICAgZ2xvYmFsIGNtaXRsaXN0ZWQgY29tbWl0aW50ZXJlc3QgbGVmdG92ZXIKKyAgICBnbG9iYWwgY21pdGxpc3RlZCBsZWZ0b3ZlcgogICAgIGdsb2JhbCBjb21taXRpZHggY29tbWl0ZGF0YSB2ZGF0ZW1vZGUKICAgICBnbG9iYWwgcGFyZW50cyBjaGlsZHJlbiBjdXJ2aWV3IGhsdmlldwogICAgIGdsb2JhbCBpZHBlbmRpbmcgb3JkZXJ0b2sKQEAgLTE0NzIsMTIgKzE1MDcsNyBAQAogCSAgICBpbmNyIGkKIAl9CiAKLQlpZiB7W2luZm8gZXhpc3RzIGNvbW1pdGludGVyZXN0KCRpZCldfSB7Ci0JICAgIGZvcmVhY2ggc2NyaXB0ICRjb21taXRpbnRlcmVzdCgkaWQpIHsKLQkJbGFwcGVuZCBzY3JpcHRzIFtzdHJpbmcgbWFwIFtsaXN0ICIlSSIgJGlkXSAkc2NyaXB0XQotCSAgICB9Ci0JICAgIHVuc2V0IGNvbW1pdGludGVyZXN0KCRpZCkKLQl9CisJc2V0IHNjcmlwdHMgW2NoZWNrX2ludGVyZXN0ICRpZCAkc2NyaXB0c10KIAlzZXQgZ290c29tZSAxCiAgICAgfQogICAgIGlmIHskZ290c29tZX0gewpAQCAtMTUzMCw5ICsxNTYwLDI3IEBACiAgICAgcmV0dXJuIDAKIH0KIAorcHJvYyBkb19yZWFkY29tbWl0IHtpZH0geworICAgIGdsb2JhbCB0Y2xlbmNvZGluZworCisgICAgIyBJbnZva2UgZ2l0LWxvZyB0byBoYW5kbGUgYXV0b21hdGljIGVuY29kaW5nIGNvbnZlcnNpb24KKyAgICBzZXQgZmQgW29wZW4gW2NvbmNhdCB8IGdpdCBsb2cgLS1uby1jb2xvciAtLXByZXR0eT1yYXcgLTEgJGlkXSByXQorICAgICMgUmVhZCB0aGUgcmVzdWx0cyB1c2luZyBpMThuLmxvZ291dHB1dGVuY29kaW5nCisgICAgZmNvbmZpZ3VyZSAkZmQgLXRyYW5zbGF0aW9uIGxmIC1lb2ZjaGFyIHt9CisgICAgaWYgeyR0Y2xlbmNvZGluZyAhPSB7fX0geworCWZjb25maWd1cmUgJGZkIC1lbmNvZGluZyAkdGNsZW5jb2RpbmcKKyAgICB9CisgICAgc2V0IGNvbnRlbnRzIFtyZWFkICRmZF0KKyAgICBjbG9zZSAkZmQKKyAgICAjIFJlbW92ZSB0aGUgaGVhZGluZyBsaW5lCisgICAgcmVnc3ViIHteY29tbWl0IFswLTlhLWZdK1xufSAkY29udGVudHMge30gY29udGVudHMKKworICAgIHJldHVybiAkY29udGVudHMKK30KKwogcHJvYyByZWFkY29tbWl0IHtpZH0gewotICAgIGlmIHtbY2F0Y2gge3NldCBjb250ZW50cyBbZXhlYyBnaXQgY2F0LWZpbGUgY29tbWl0ICRpZF19XX0gcmV0dXJuCi0gICAgcGFyc2Vjb21taXQgJGlkICRjb250ZW50cyAwCisgICAgaWYge1tjYXRjaCB7c2V0IGNvbnRlbnRzIFtkb19yZWFkY29tbWl0ICRpZF19XX0gcmV0dXJuCisgICAgcGFyc2Vjb21taXQgJGlkICRjb250ZW50cyAxCiB9CiAKIHByb2MgcGFyc2Vjb21taXQge2lkIGNvbnRlbnRzIGxpc3RlZH0gewpAQCAtMTU1MywxMyArMTYwMSwxNCBAQAogICAgIHNldCBoZWFkZXIgW3N0cmluZyByYW5nZSAkY29udGVudHMgMCBbZXhwciB7JGhkcmVuZCAtIDF9XV0KICAgICBzZXQgY29tbWVudCBbc3RyaW5nIHJhbmdlICRjb250ZW50cyBbZXhwciB7JGhkcmVuZCArIDJ9XSBlbmRdCiAgICAgZm9yZWFjaCBsaW5lIFtzcGxpdCAkaGVhZGVyICJcbiJdIHsKKwlzZXQgbGluZSBbc3BsaXQgJGxpbmUgIiAiXQogCXNldCB0YWcgW2xpbmRleCAkbGluZSAwXQogCWlmIHskdGFnID09ICJhdXRob3IifSB7CiAJICAgIHNldCBhdWRhdGUgW2xpbmRleCAkbGluZSBlbmQtMV0KLQkgICAgc2V0IGF1bmFtZSBbbHJhbmdlICRsaW5lIDEgZW5kLTJdCisJICAgIHNldCBhdW5hbWUgW2pvaW4gW2xyYW5nZSAkbGluZSAxIGVuZC0yXSAiICJdCiAJfSBlbHNlaWYgeyR0YWcgPT0gImNvbW1pdHRlciJ9IHsKIAkgICAgc2V0IGNvbWRhdGUgW2xpbmRleCAkbGluZSBlbmQtMV0KLQkgICAgc2V0IGNvbW5hbWUgW2xyYW5nZSAkbGluZSAxIGVuZC0yXQorCSAgICBzZXQgY29tbmFtZSBbam9pbiBbbHJhbmdlICRsaW5lIDEgZW5kLTJdICIgIl0KIAl9CiAgICAgfQogICAgIHNldCBoZWFkbGluZSB7fQpAQCAtMTYwNiw5ICsxNjU1LDIzIEBACiAgICAgcmV0dXJuIDEKIH0KIAorIyBFeHBhbmQgYW4gYWJicmV2aWF0ZWQgY29tbWl0IElEIHRvIGEgbGlzdCBvZiBmdWxsIDQwLWNoYXIgSURzIHRoYXQgbWF0Y2gKKyMgYW5kIGFyZSBwcmVzZW50IGluIHRoZSBjdXJyZW50IHZpZXcuCisjIFRoaXMgaXMgZmFpcmx5IHNsb3cuLi4KK3Byb2MgbG9uZ2lkIHtwcmVmaXh9IHsKKyAgICBnbG9iYWwgdmFyY2lkIGN1cnZpZXcKKworICAgIHNldCBpZHMge30KKyAgICBmb3JlYWNoIG1hdGNoIFthcnJheSBuYW1lcyB2YXJjaWQgIiRjdXJ2aWV3LCRwcmVmaXgqIl0geworCWxhcHBlbmQgaWRzIFtsaW5kZXggW3NwbGl0ICRtYXRjaCAiLCJdIDFdCisgICAgfQorICAgIHJldHVybiAkaWRzCit9CisKIHByb2MgcmVhZHJlZnMge30gewogICAgIGdsb2JhbCB0YWdpZHMgaWR0YWdzIGhlYWRpZHMgaWRoZWFkcyB0YWdvYmppZAogICAgIGdsb2JhbCBvdGhlcnJlZmlkcyBpZG90aGVycmVmcyBtYWluaGVhZCBtYWluaGVhZGlkCisgICAgZ2xvYmFsIHNlbGVjdGhlYWQgc2VsZWN0aGVhZGlkCiAKICAgICBmb3JlYWNoIHYge3RhZ2lkcyBpZHRhZ3MgaGVhZGlkcyBpZGhlYWRzIG90aGVycmVmaWRzIGlkb3RoZXJyZWZzfSB7CiAJY2F0Y2gge3Vuc2V0ICR2fQpAQCAtMTY1NSw2ICsxNzE4LDEyIEBACiAJICAgIHNldCBtYWluaGVhZCBbc3RyaW5nIHJhbmdlICR0aGVoZWFkIDExIGVuZF0KIAl9CiAgICAgfQorICAgIHNldCBzZWxlY3RoZWFkaWQge30KKyAgICBpZiB7JHNlbGVjdGhlYWQgbmUge319IHsKKwljYXRjaCB7CisJICAgIHNldCBzZWxlY3RoZWFkaWQgW2V4ZWMgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAkc2VsZWN0aGVhZF0KKwl9CisgICAgfQogfQogCiAjIHNraXAgb3ZlciBmYWtlIGNvbW1pdHMKQEAgLTE2OTQsNiArMTc2MywyNCBAQAogICAgIHVuc2V0IGhlYWRpZHMoJG5hbWUpCiB9CiAKK3Byb2MgbWFrZV90cmFuc2llbnQge3dpbmRvdyBvcmlnaW59IHsKKyAgICBnbG9iYWwgaGF2ZV90azg1CisKKyAgICAjIEluIE1hY09TIFRrIDguNCB0cmFuc2llbnQgYXBwZWFycyB0byB3b3JrIGJ5IHNldHRpbmcKKyAgICAjIG92ZXJyaWRlcmVkaXJlY3QsIHdoaWNoIGlzIHV0dGVybHkgdXNlbGVzcywgc2luY2UgdGhlCisgICAgIyB3aW5kb3dzIGdldCBubyBib3JkZXIsIGFuZCBhcmUgbm90IGV2ZW4ga2VwdCBhYm92ZQorICAgICMgdGhlIHBhcmVudC4KKyAgICBpZiB7ISRoYXZlX3RrODUgJiYgW3RrIHdpbmRvd2luZ3N5c3RlbV0gZXEge2FxdWF9fSByZXR1cm4KKworICAgIHdtIHRyYW5zaWVudCAkd2luZG93ICRvcmlnaW4KKworICAgICMgV2luZG93cyBmYWlscyB0byBwbGFjZSB0cmFuc2llbnQgd2luZG93cyBub3JtYWxseSwgc28KKyAgICAjIHNjaGVkdWxlIGEgY2FsbGJhY2sgdG8gY2VudGVyIHRoZW0gb24gdGhlIHBhcmVudC4KKyAgICBpZiB7W3RrIHdpbmRvd2luZ3N5c3RlbV0gZXEge3dpbjMyfX0geworCWFmdGVyIGlkbGUgW2xpc3QgdGs6OlBsYWNlV2luZG93ICR3aW5kb3cgd2lkZ2V0ICRvcmlnaW5dCisgICAgfQorfQorCiBwcm9jIHNob3dfZXJyb3Ige3cgdG9wIG1zZ30gewogICAgIG1lc3NhZ2UgJHcubSAtdGV4dCAkbXNnIC1qdXN0aWZ5IGNlbnRlciAtYXNwZWN0IDQwMAogICAgIHBhY2sgJHcubSAtc2lkZSB0b3AgLWZpbGwgeCAtcGFkeCAyMCAtcGFkeSAyMApAQCAtMTcwMSwyMiArMTc4OCwyNCBAQAogICAgIHBhY2sgJHcub2sgLXNpZGUgYm90dG9tIC1maWxsIHgKICAgICBiaW5kICR0b3AgPFZpc2liaWxpdHk+ICJncmFiICR0b3A7IGZvY3VzICR0b3AiCiAgICAgYmluZCAkdG9wIDxLZXktUmV0dXJuPiAiZGVzdHJveSAkdG9wIgorICAgIGJpbmQgJHRvcCA8S2V5LXNwYWNlPiAgImRlc3Ryb3kgJHRvcCIKKyAgICBiaW5kICR0b3AgPEtleS1Fc2NhcGU+ICJkZXN0cm95ICR0b3AiCiAgICAgdGt3YWl0IHdpbmRvdyAkdG9wCiB9CiAKLXByb2MgZXJyb3JfcG9wdXAgbXNnIHsKK3Byb2MgZXJyb3JfcG9wdXAge21zZyB7b3duZXIgLn19IHsKICAgICBzZXQgdyAuZXJyb3IKICAgICB0b3BsZXZlbCAkdwotICAgIHdtIHRyYW5zaWVudCAkdyAuCisgICAgbWFrZV90cmFuc2llbnQgJHcgJG93bmVyCiAgICAgc2hvd19lcnJvciAkdyAkdyAkbXNnCiB9CiAKLXByb2MgY29uZmlybV9wb3B1cCBtc2cgeworcHJvYyBjb25maXJtX3BvcHVwIHttc2cge293bmVyIC59fSB7CiAgICAgZ2xvYmFsIGNvbmZpcm1fb2sKICAgICBzZXQgY29uZmlybV9vayAwCiAgICAgc2V0IHcgLmNvbmZpcm0KICAgICB0b3BsZXZlbCAkdwotICAgIHdtIHRyYW5zaWVudCAkdyAuCisgICAgbWFrZV90cmFuc2llbnQgJHcgJG93bmVyCiAgICAgbWVzc2FnZSAkdy5tIC10ZXh0ICRtc2cgLWp1c3RpZnkgY2VudGVyIC1hc3BlY3QgNDAwCiAgICAgcGFjayAkdy5tIC1zaWRlIHRvcCAtZmlsbCB4IC1wYWR4IDIwIC1wYWR5IDIwCiAgICAgYnV0dG9uICR3Lm9rIC10ZXh0IFttYyBPS10gLWNvbW1hbmQgInNldCBjb25maXJtX29rIDE7IGRlc3Ryb3kgJHciCkBAIC0xNzI0LDYgKzE4MTMsOSBAQAogICAgIGJ1dHRvbiAkdy5jYW5jZWwgLXRleHQgW21jIENhbmNlbF0gLWNvbW1hbmQgImRlc3Ryb3kgJHciCiAgICAgcGFjayAkdy5jYW5jZWwgLXNpZGUgcmlnaHQgLWZpbGwgeAogICAgIGJpbmQgJHcgPFZpc2liaWxpdHk+ICJncmFiICR3OyBmb2N1cyAkdyIKKyAgICBiaW5kICR3IDxLZXktUmV0dXJuPiAic2V0IGNvbmZpcm1fb2sgMTsgZGVzdHJveSAkdyIKKyAgICBiaW5kICR3IDxLZXktc3BhY2U+ICAic2V0IGNvbmZpcm1fb2sgMTsgZGVzdHJveSAkdyIKKyAgICBiaW5kICR3IDxLZXktRXNjYXBlPiAiZGVzdHJveSAkdyIKICAgICB0a3dhaXQgd2luZG93ICR3CiAgICAgcmV0dXJuICRjb25maXJtX29rCiB9CkBAIC0xNzQxLDYgKzE4MzMsNjAgQEAKICAgICBvcHRpb24gYWRkICpFbnRyeS5mb250IHVpZm9udCBzdGFydHVwRmlsZQogfQogCisjIE1ha2UgYSBtZW51IGFuZCBzdWJtZW51cy4KKyMgbSBpcyB0aGUgd2luZG93IG5hbWUgZm9yIHRoZSBtZW51LCBpdGVtcyBpcyB0aGUgbGlzdCBvZiBtZW51IGl0ZW1zIHRvIGFkZC4KKyMgRWFjaCBpdGVtIGlzIGEgbGlzdCB7bWMgbGFiZWwgdHlwZSBkZXNjcmlwdGlvbiBvcHRpb25zLi4ufQorIyBtYyBpcyBpZ25vcmVkOyBpdCdzIHNvIHdlIGNhbiBwdXQgbWMgdGhlcmUgdG8gYWxlcnQgeGdldHRleHQKKyMgbGFiZWwgaXMgdGhlIHN0cmluZyB0aGF0IGFwcGVhcnMgaW4gdGhlIG1lbnUKKyMgdHlwZSBpcyBjYXNjYWRlLCBjb21tYW5kIG9yIHJhZGlvYnV0dG9uIChzaG91bGQgYWRkIGNoZWNrYnV0dG9uKQorIyBkZXNjcmlwdGlvbiBkZXBlbmRzIG9uIHR5cGU7IGl0J3MgdGhlIHN1Ymxpc3QgZm9yIGNhc2NhZGUsIHRoZQorIyBjb21tYW5kIHRvIGludm9rZSBmb3IgY29tbWFuZCwgb3Ige3ZhcmlhYmxlIHZhbHVlfSBmb3IgcmFkaW9idXR0b24KK3Byb2MgbWFrZW1lbnUge20gaXRlbXN9IHsKKyAgICBtZW51ICRtCisgICAgaWYge1t0ayB3aW5kb3dpbmdzeXN0ZW1dIGVxIHthcXVhfX0geworCXNldCBNZXRhMSBDbWQKKyAgICB9IGVsc2UgeworCXNldCBNZXRhMSBDdHJsCisgICAgfQorICAgIGZvcmVhY2ggaSAkaXRlbXMgeworCXNldCBuYW1lIFttYyBbbGluZGV4ICRpIDFdXQorCXNldCB0eXBlIFtsaW5kZXggJGkgMl0KKwlzZXQgdGhpbmcgW2xpbmRleCAkaSAzXQorCXNldCBwYXJhbXMgW2xpc3QgJHR5cGVdCisJaWYgeyRuYW1lIG5lIHt9fSB7CisJICAgIHNldCB1IFtzdHJpbmcgZmlyc3QgIiYiIFtzdHJpbmcgbWFwIHsmJiB4fSAkbmFtZV1dCisJICAgIGxhcHBlbmQgcGFyYW1zIC1sYWJlbCBbc3RyaW5nIG1hcCB7JiYgJiAmIHt9fSAkbmFtZV0KKwkgICAgaWYgeyR1ID49IDB9IHsKKwkJbGFwcGVuZCBwYXJhbXMgLXVuZGVybGluZSAkdQorCSAgICB9CisJfQorCXN3aXRjaCAtLSAkdHlwZSB7CisJICAgICJjYXNjYWRlIiB7CisJCXNldCBzdWJtZW51IFtzdHJpbmcgdG9sb3dlciBbc3RyaW5nIG1hcCB7JiAiIn0gW2xpbmRleCAkaSAxXV1dCisJCWxhcHBlbmQgcGFyYW1zIC1tZW51ICRtLiRzdWJtZW51CisJICAgIH0KKwkgICAgImNvbW1hbmQiIHsKKwkJbGFwcGVuZCBwYXJhbXMgLWNvbW1hbmQgJHRoaW5nCisJICAgIH0KKwkgICAgInJhZGlvYnV0dG9uIiB7CisJCWxhcHBlbmQgcGFyYW1zIC12YXJpYWJsZSBbbGluZGV4ICR0aGluZyAwXSBcCisJCSAgICAtdmFsdWUgW2xpbmRleCAkdGhpbmcgMV0KKwkgICAgfQorCX0KKwlzZXQgdGFpbCBbbHJhbmdlICRpIDQgZW5kXQorCXJlZ3N1YiAtYWxsIHtceU1ldGExXHl9ICR0YWlsICRNZXRhMSB0YWlsCisJZXZhbCAkbSBhZGQgJHBhcmFtcyAkdGFpbAorCWlmIHskdHlwZSBlcSAiY2FzY2FkZSJ9IHsKKwkgICAgbWFrZW1lbnUgJG0uJHN1Ym1lbnUgJHRoaW5nCisJfQorICAgIH0KK30KKworIyB0cmFuc2xhdGUgc3RyaW5nIGFuZCByZW1vdmUgYW1wZXJzYW5kcworcHJvYyBtY2Ege3N0cn0geworICAgIHJldHVybiBbc3RyaW5nIG1hcCB7JiYgJiAmIHt9fSBbbWMgJHN0cl1dCit9CisKIHByb2MgbWFrZXdpbmRvdyB7fSB7CiAgICAgZ2xvYmFsIGNhbnYgY2FudjIgY2FudjMgbGluZXNwYyBjaGFyc3BjIGN0ZXh0IGNmbGlzdCBjc2Nyb2xsCiAgICAgZ2xvYmFsIHRhYnN0b3AKQEAgLTE3NTgsMzMgKzE5MDQsMzQgQEAKICAgICBnbG9iYWwgcnByb2dpdGVtIHJwcm9nY29vcmQgcm93bnVtc2VsIG51bWNvbW1pdHMKICAgICBnbG9iYWwgaGF2ZV90azg1CiAKLSAgICBtZW51IC5iYXIKLSAgICAuYmFyIGFkZCBjYXNjYWRlIC1sYWJlbCBbbWMgIkZpbGUiXSAtbWVudSAuYmFyLmZpbGUKLSAgICBtZW51IC5iYXIuZmlsZQotICAgIC5iYXIuZmlsZSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJVcGRhdGUiXSAtY29tbWFuZCB1cGRhdGVjb21taXRzCi0gICAgLmJhci5maWxlIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIlJlbG9hZCJdIC1jb21tYW5kIHJlbG9hZGNvbW1pdHMKLSAgICAuYmFyLmZpbGUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiUmVyZWFkIHJlZmVyZW5jZXMiXSAtY29tbWFuZCByZXJlYWRyZWZzCi0gICAgLmJhci5maWxlIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkxpc3QgcmVmZXJlbmNlcyJdIC1jb21tYW5kIHNob3dyZWZzCi0gICAgLmJhci5maWxlIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIlF1aXQiXSAtY29tbWFuZCBkb3F1aXQKLSAgICBtZW51IC5iYXIuZWRpdAotICAgIC5iYXIgYWRkIGNhc2NhZGUgLWxhYmVsIFttYyAiRWRpdCJdIC1tZW51IC5iYXIuZWRpdAotICAgIC5iYXIuZWRpdCBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJQcmVmZXJlbmNlcyJdIC1jb21tYW5kIGRvcHJlZnMKLQotICAgIG1lbnUgLmJhci52aWV3Ci0gICAgLmJhciBhZGQgY2FzY2FkZSAtbGFiZWwgW21jICJWaWV3Il0gLW1lbnUgLmJhci52aWV3Ci0gICAgLmJhci52aWV3IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIk5ldyB2aWV3Li4uIl0gLWNvbW1hbmQge25ld3ZpZXcgMH0KLSAgICAuYmFyLnZpZXcgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiRWRpdCB2aWV3Li4uIl0gLWNvbW1hbmQgZWRpdHZpZXcgXAotCS1zdGF0ZSBkaXNhYmxlZAotICAgIC5iYXIudmlldyBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJEZWxldGUgdmlldyJdIC1jb21tYW5kIGRlbHZpZXcgLXN0YXRlIGRpc2FibGVkCi0gICAgLmJhci52aWV3IGFkZCBzZXBhcmF0b3IKLSAgICAuYmFyLnZpZXcgYWRkIHJhZGlvYnV0dG9uIC1sYWJlbCBbbWMgIkFsbCBmaWxlcyJdIC1jb21tYW5kIHtzaG93dmlldyAwfSBcCi0JLXZhcmlhYmxlIHNlbGVjdGVkdmlldyAtdmFsdWUgMAotCi0gICAgbWVudSAuYmFyLmhlbHAKLSAgICAuYmFyIGFkZCBjYXNjYWRlIC1sYWJlbCBbbWMgIkhlbHAiXSAtbWVudSAuYmFyLmhlbHAKLSAgICAuYmFyLmhlbHAgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiQWJvdXQgZ2l0ayJdIC1jb21tYW5kIGFib3V0Ci0gICAgLmJhci5oZWxwIGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIktleSBiaW5kaW5ncyJdIC1jb21tYW5kIGtleXMKLSAgICAuYmFyLmhlbHAgY29uZmlndXJlCisgICAgIyBUaGUgIm1jIiBhcmd1bWVudHMgaGVyZSBhcmUgcHVyZWx5IHNvIHRoYXQgeGdldHRleHQKKyAgICAjIHNlZXMgdGhlIGZvbGxvd2luZyBzdHJpbmcgYXMgbmVlZGluZyB0byBiZSB0cmFuc2xhdGVkCisgICAgbWFrZW1lbnUgLmJhciB7CisJe21jICJGaWxlIiBjYXNjYWRlIHsKKwkgICAge21jICJVcGRhdGUiIGNvbW1hbmQgdXBkYXRlY29tbWl0cyAtYWNjZWxlcmF0b3IgRjV9CisJICAgIHttYyAiUmVsb2FkIiBjb21tYW5kIHJlbG9hZGNvbW1pdHMgLWFjY2VsZXJhdG9yIE1ldGExLUY1fQorCSAgICB7bWMgIlJlcmVhZCByZWZlcmVuY2VzIiBjb21tYW5kIHJlcmVhZHJlZnN9CisJICAgIHttYyAiTGlzdCByZWZlcmVuY2VzIiBjb21tYW5kIHNob3dyZWZzIC1hY2NlbGVyYXRvciBGMn0KKwkgICAge3h4ICIiIHNlcGFyYXRvcn0KKwkgICAge21jICJTdGFydCBnaXQgZ3VpIiBjb21tYW5kIHtleGVjIGdpdCBndWkgJn19CisJICAgIHt4eCAiIiBzZXBhcmF0b3J9CisJICAgIHttYyAiUXVpdCIgY29tbWFuZCBkb3F1aXQgLWFjY2VsZXJhdG9yIE1ldGExLVF9CisJfX0KKwl7bWMgIkVkaXQiIGNhc2NhZGUgeworCSAgICB7bWMgIlByZWZlcmVuY2VzIiBjb21tYW5kIGRvcHJlZnN9CisJfX0KKwl7bWMgIlZpZXciIGNhc2NhZGUgeworCSAgICB7bWMgIk5ldyB2aWV3Li4uIiBjb21tYW5kIHtuZXd2aWV3IDB9IC1hY2NlbGVyYXRvciBTaGlmdC1GNH0KKwkgICAge21jICJFZGl0IHZpZXcuLi4iIGNvbW1hbmQgZWRpdHZpZXcgLXN0YXRlIGRpc2FibGVkIC1hY2NlbGVyYXRvciBGNH0KKwkgICAge21jICJEZWxldGUgdmlldyIgY29tbWFuZCBkZWx2aWV3IC1zdGF0ZSBkaXNhYmxlZH0KKwkgICAge3h4ICIiIHNlcGFyYXRvcn0KKwkgICAge21jICJBbGwgZmlsZXMiIHJhZGlvYnV0dG9uIHtzZWxlY3RlZHZpZXcgMH0gLWNvbW1hbmQge3Nob3d2aWV3IDB9fQorCX19CisJe21jICJIZWxwIiBjYXNjYWRlIHsKKwkgICAge21jICJBYm91dCBnaXRrIiBjb21tYW5kIGFib3V0fQorCSAgICB7bWMgIktleSBiaW5kaW5ncyIgY29tbWFuZCBrZXlzfQorCX19CisgICAgfQogICAgIC4gY29uZmlndXJlIC1tZW51IC5iYXIKIAogICAgICMgdGhlIGd1aSBoYXMgdXBwZXIgYW5kIGxvd2VyIGhhbGYsIHBhcnRzIG9mIGEgcGFuZWQgd2luZG93LgpAQCAtMjAwOCw3ICsyMTU1LDcgQEAKICAgICAkY3RleHQgdGFnIGNvbmYgZmlsZXNlcCAtZm9udCB0ZXh0Zm9udGJvbGQgLWJhY2sgIiNhYWFhYWEiCiAgICAgJGN0ZXh0IHRhZyBjb25mIGh1bmtzZXAgLWZvcmUgW2xpbmRleCAkZGlmZmNvbG9ycyAyXQogICAgICRjdGV4dCB0YWcgY29uZiBkMCAtZm9yZSBbbGluZGV4ICRkaWZmY29sb3JzIDBdCi0gICAgJGN0ZXh0IHRhZyBjb25mIGQxIC1mb3JlIFtsaW5kZXggJGRpZmZjb2xvcnMgMV0KKyAgICAkY3RleHQgdGFnIGNvbmYgZHJlc3VsdCAtZm9yZSBbbGluZGV4ICRkaWZmY29sb3JzIDFdCiAgICAgJGN0ZXh0IHRhZyBjb25mIG0wIC1mb3JlIHJlZAogICAgICRjdGV4dCB0YWcgY29uZiBtMSAtZm9yZSBibHVlCiAgICAgJGN0ZXh0IHRhZyBjb25mIG0yIC1mb3JlIGdyZWVuCkBAIC0yMTMzLDExICsyMjgwLDE2IEBACiAgICAgYmluZGtleSBiIHByZXZmaWxlCiAgICAgYmluZGtleSBkICIkY3RleHQgeXZpZXcgc2Nyb2xsIDE4IHVuaXRzIgogICAgIGJpbmRrZXkgdSAiJGN0ZXh0IHl2aWV3IHNjcm9sbCAtMTggdW5pdHMiCi0gICAgYmluZGtleSAvIHtkb2ZpbmQgMSAxfQorICAgIGJpbmRrZXkgLyB7Zm9jdXMgJGZzdHJpbmd9CiAgICAgYmluZGtleSA8S2V5LVJldHVybj4ge2RvZmluZCAxIDF9CiAgICAgYmluZGtleSA/IHtkb2ZpbmQgLTEgMX0KICAgICBiaW5ka2V5IGYgbmV4dGZpbGUKLSAgICBiaW5ka2V5IDxGNT4gdXBkYXRlY29tbWl0cworICAgIGJpbmQgLiA8RjU+IHVwZGF0ZWNvbW1pdHMKKyAgICBiaW5kIC4gPCRNMUItRjU+IHJlbG9hZGNvbW1pdHMKKyAgICBiaW5kIC4gPEYyPiBzaG93cmVmcworICAgIGJpbmQgLiA8U2hpZnQtRjQ+IHtuZXd2aWV3IDB9CisgICAgY2F0Y2ggeyBiaW5kIC4gPFNoaWZ0LUtleS1YRjg2X1N3aXRjaF9WVF80PiB7bmV3dmlldyAwfSB9CisgICAgYmluZCAuIDxGND4gZWRpdF9vcl9uZXd2aWV3CiAgICAgYmluZCAuIDwkTTFCLXE+IGRvcXVpdAogICAgIGJpbmQgLiA8JE0xQi1mPiB7ZG9maW5kIDEgMX0KICAgICBiaW5kIC4gPCRNMUItZz4ge2RvZmluZCAxIDB9CkBAIC0yMTUyLDU5ICsyMzA0LDY0IEBACiAgICAgYmluZCAuIDxEZXN0cm95PiB7c3RvcF9iYWNrZW5kc30KICAgICBiaW5kIC4gPEJ1dHRvbi0xPiAiY2xpY2sgJVciCiAgICAgYmluZCAkZnN0cmluZyA8S2V5LVJldHVybj4ge2RvZmluZCAxIDF9Ci0gICAgYmluZCAkc2hhMWVudHJ5IDxLZXktUmV0dXJuPiBnb3RvY29tbWl0CisgICAgYmluZCAkc2hhMWVudHJ5IDxLZXktUmV0dXJuPiB7Z290b2NvbW1pdDsgYnJlYWt9CiAgICAgYmluZCAkc2hhMWVudHJ5IDw8UGFzdGVTZWxlY3Rpb24+PiBjbGVhcnNoYTEKICAgICBiaW5kICRjZmxpc3QgPDE+IHtzZWxfZmxpc3QgJVcgJXggJXk7IGJyZWFrfQogICAgIGJpbmQgJGNmbGlzdCA8QjEtTW90aW9uPiB7c2VsX2ZsaXN0ICVXICV4ICV5OyBicmVha30KICAgICBiaW5kICRjZmxpc3QgPEJ1dHRvblJlbGVhc2UtMT4ge3RyZWVjbGljayAlVyAleCAleX0KLSAgICBiaW5kICRjZmxpc3QgPEJ1dHRvbi0zPiB7cG9wX2ZsaXN0X21lbnUgJVcgJVggJVkgJXggJXl9CisgICAgZ2xvYmFsIGN0eGJ1dAorICAgIGJpbmQgJGNmbGlzdCAkY3R4YnV0IHtwb3BfZmxpc3RfbWVudSAlVyAlWCAlWSAleCAleX0KKyAgICBiaW5kICRjdGV4dCAkY3R4YnV0IHtwb3BfZGlmZl9tZW51ICVXICVYICVZICV4ICV5fQogCiAgICAgc2V0IG1haW5jdXJzb3IgWy4gY2dldCAtY3Vyc29yXQogICAgIHNldCB0ZXh0Y3Vyc29yIFskY3RleHQgY2dldCAtY3Vyc29yXQogICAgIHNldCBjdXJ0ZXh0Y3Vyc29yICR0ZXh0Y3Vyc29yCiAKICAgICBzZXQgcm93Y3R4bWVudSAucm93Y3R4bWVudQotICAgIG1lbnUgJHJvd2N0eG1lbnUgLXRlYXJvZmYgMAotICAgICRyb3djdHhtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkRpZmYgdGhpcyAtPiBzZWxlY3RlZCJdIFwKLQktY29tbWFuZCB7ZGlmZnZzc2VsIDB9Ci0gICAgJHJvd2N0eG1lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIl0gXAotCS1jb21tYW5kIHtkaWZmdnNzZWwgMX0KLSAgICAkcm93Y3R4bWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJNYWtlIHBhdGNoIl0gLWNvbW1hbmQgbWtwYXRjaAotICAgICRyb3djdHhtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkNyZWF0ZSB0YWciXSAtY29tbWFuZCBta3RhZwotICAgICRyb3djdHhtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIldyaXRlIGNvbW1pdCB0byBmaWxlIl0gLWNvbW1hbmQgd3JpdGVjb21taXQKLSAgICAkcm93Y3R4bWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJDcmVhdGUgbmV3IGJyYW5jaCJdIC1jb21tYW5kIG1rYnJhbmNoCi0gICAgJHJvd2N0eG1lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiQ2hlcnJ5LXBpY2sgdGhpcyBjb21taXQiXSBcCi0JLWNvbW1hbmQgY2hlcnJ5cGljawotICAgICRyb3djdHhtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIlJlc2V0IEhFQUQgYnJhbmNoIHRvIGhlcmUiXSBcCi0JLWNvbW1hbmQgcmVzZXRoZWFkCisgICAgbWFrZW1lbnUgJHJvd2N0eG1lbnUgeworCXttYyAiRGlmZiB0aGlzIC0+IHNlbGVjdGVkIiBjb21tYW5kIHtkaWZmdnNzZWwgMH19CisJe21jICJEaWZmIHNlbGVjdGVkIC0+IHRoaXMiIGNvbW1hbmQge2RpZmZ2c3NlbCAxfX0KKwl7bWMgIk1ha2UgcGF0Y2giIGNvbW1hbmQgbWtwYXRjaH0KKwl7bWMgIkNyZWF0ZSB0YWciIGNvbW1hbmQgbWt0YWd9CisJe21jICJXcml0ZSBjb21taXQgdG8gZmlsZSIgY29tbWFuZCB3cml0ZWNvbW1pdH0KKwl7bWMgIkNyZWF0ZSBuZXcgYnJhbmNoIiBjb21tYW5kIG1rYnJhbmNofQorCXttYyAiQ2hlcnJ5LXBpY2sgdGhpcyBjb21taXQiIGNvbW1hbmQgY2hlcnJ5cGlja30KKwl7bWMgIlJlc2V0IEhFQUQgYnJhbmNoIHRvIGhlcmUiIGNvbW1hbmQgcmVzZXRoZWFkfQorICAgIH0KKyAgICAkcm93Y3R4bWVudSBjb25maWd1cmUgLXRlYXJvZmYgMAogCiAgICAgc2V0IGZha2Vyb3dtZW51IC5mYWtlcm93bWVudQotICAgIG1lbnUgJGZha2Vyb3dtZW51IC10ZWFyb2ZmIDAKLSAgICAkZmFrZXJvd21lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiRGlmZiB0aGlzIC0+IHNlbGVjdGVkIl0gXAotCS1jb21tYW5kIHtkaWZmdnNzZWwgMH0KLSAgICAkZmFrZXJvd21lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIl0gXAotCS1jb21tYW5kIHtkaWZmdnNzZWwgMX0KLSAgICAkZmFrZXJvd21lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiTWFrZSBwYXRjaCJdIC1jb21tYW5kIG1rcGF0Y2gKLSMgICAgJGZha2Vyb3dtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkNvbW1pdCJdIC1jb21tYW5kIHtta2NvbW1pdCAwfQotIyAgICAkZmFrZXJvd21lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiQ29tbWl0IGFsbCJdIC1jb21tYW5kIHtta2NvbW1pdCAxfQotIyAgICAkZmFrZXJvd21lbnUgYWRkIGNvbW1hbmQgLWxhYmVsIFttYyAiUmV2ZXJ0IGxvY2FsIGNoYW5nZXMiXSAtY29tbWFuZCByZXZlcnRsb2NhbAorICAgIG1ha2VtZW51ICRmYWtlcm93bWVudSB7CisJe21jICJEaWZmIHRoaXMgLT4gc2VsZWN0ZWQiIGNvbW1hbmQge2RpZmZ2c3NlbCAwfX0KKwl7bWMgIkRpZmYgc2VsZWN0ZWQgLT4gdGhpcyIgY29tbWFuZCB7ZGlmZnZzc2VsIDF9fQorCXttYyAiTWFrZSBwYXRjaCIgY29tbWFuZCBta3BhdGNofQorICAgIH0KKyAgICAkZmFrZXJvd21lbnUgY29uZmlndXJlIC10ZWFyb2ZmIDAKIAogICAgIHNldCBoZWFkY3R4bWVudSAuaGVhZGN0eG1lbnUKLSAgICBtZW51ICRoZWFkY3R4bWVudSAtdGVhcm9mZiAwCi0gICAgJGhlYWRjdHhtZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkNoZWNrIG91dCB0aGlzIGJyYW5jaCJdIFwKLQktY29tbWFuZCBjb2JyYW5jaAotICAgICRoZWFkY3R4bWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJSZW1vdmUgdGhpcyBicmFuY2giXSBcCi0JLWNvbW1hbmQgcm1icmFuY2gKKyAgICBtYWtlbWVudSAkaGVhZGN0eG1lbnUgeworCXttYyAiQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIiBjb21tYW5kIGNvYnJhbmNofQorCXttYyAiUmVtb3ZlIHRoaXMgYnJhbmNoIiBjb21tYW5kIHJtYnJhbmNofQorICAgIH0KKyAgICAkaGVhZGN0eG1lbnUgY29uZmlndXJlIC10ZWFyb2ZmIDAKIAogICAgIGdsb2JhbCBmbGlzdF9tZW51CiAgICAgc2V0IGZsaXN0X21lbnUgLmZsaXN0Y3R4bWVudQotICAgIG1lbnUgJGZsaXN0X21lbnUgLXRlYXJvZmYgMAotICAgICRmbGlzdF9tZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkhpZ2hsaWdodCB0aGlzIHRvbyJdIFwKLQktY29tbWFuZCB7Zmxpc3RfaGwgMH0KLSAgICAkZmxpc3RfbWVudSBhZGQgY29tbWFuZCAtbGFiZWwgW21jICJIaWdobGlnaHQgdGhpcyBvbmx5Il0gXAotCS1jb21tYW5kIHtmbGlzdF9obCAxfQotICAgICRmbGlzdF9tZW51IGFkZCBjb21tYW5kIC1sYWJlbCBbbWMgIkV4dGVybmFsIGRpZmYiXSBcCi0gICAgICAgIC1jb21tYW5kIHtleHRlcm5hbF9kaWZmfQorICAgIG1ha2VtZW51ICRmbGlzdF9tZW51IHsKKwl7bWMgIkhpZ2hsaWdodCB0aGlzIHRvbyIgY29tbWFuZCB7Zmxpc3RfaGwgMH19CisJe21jICJIaWdobGlnaHQgdGhpcyBvbmx5IiBjb21tYW5kIHtmbGlzdF9obCAxfX0KKwl7bWMgIkV4dGVybmFsIGRpZmYiIGNvbW1hbmQge2V4dGVybmFsX2RpZmZ9fQorCXttYyAiQmxhbWUgcGFyZW50IGNvbW1pdCIgY29tbWFuZCB7ZXh0ZXJuYWxfYmxhbWUgMX19CisgICAgfQorICAgICRmbGlzdF9tZW51IGNvbmZpZ3VyZSAtdGVhcm9mZiAwCisKKyAgICBnbG9iYWwgZGlmZl9tZW51CisgICAgc2V0IGRpZmZfbWVudSAuZGlmZmN0eG1lbnUKKyAgICBtYWtlbWVudSAkZGlmZl9tZW51IHsKKwl7bWMgIlNob3cgb3JpZ2luIG9mIHRoaXMgbGluZSIgY29tbWFuZCBzaG93X2xpbmVfc291cmNlfQorCXttYyAiUnVuIGdpdCBndWkgYmxhbWUgb24gdGhpcyBsaW5lIiBjb21tYW5kIHtleHRlcm5hbF9ibGFtZV9kaWZmfX0KKyAgICB9CisgICAgJGRpZmZfbWVudSBjb25maWd1cmUgLXRlYXJvZmYgMAogfQogCiAjIFdpbmRvd3Mgc2VuZHMgYWxsIG1vdXNlIHdoZWVsIGV2ZW50cyB0byB0aGUgY3VycmVudCBmb2N1c2VkIHdpbmRvdywgbm90CkBAIC0yMzIwLDcgKzI0NzcsNyBAQAogICAgIGdsb2JhbCB2aWV3bmFtZSB2aWV3ZmlsZXMgdmlld2FyZ3Mgdmlld2FyZ3NjbWQgdmlld3Blcm0gbmV4dHZpZXdudW0KICAgICBnbG9iYWwgY21pdG1vZGUgd3JhcGNvbW1lbnQgZGF0ZXRpbWVmb3JtYXQgbGltaXRkaWZmcwogICAgIGdsb2JhbCBjb2xvcnMgYmdjb2xvciBmZ2NvbG9yIGRpZmZjb2xvcnMgZGlmZmNvbnRleHQgc2VsZWN0Ymdjb2xvcgotICAgIGdsb2JhbCBhdXRvc2VsZWN0IGV4dGRpZmZ0b29sCisgICAgZ2xvYmFsIGF1dG9zZWxlY3QgZXh0ZGlmZnRvb2wgcGVyZmlsZV9hdHRycyBtYXJrYmdjb2xvcgogCiAgICAgaWYgeyRzdHVmZnNhdmVkfSByZXR1cm4KICAgICBpZiB7IVt3aW5mbyB2aWV3YWJsZSAuXX0gcmV0dXJuCkBAIC0yMzQ0LDkgKzI1MDEsMTEgQEAKIAlwdXRzICRmIFtsaXN0IHNldCBmZ2NvbG9yICRmZ2NvbG9yXQogCXB1dHMgJGYgW2xpc3Qgc2V0IGNvbG9ycyAkY29sb3JzXQogCXB1dHMgJGYgW2xpc3Qgc2V0IGRpZmZjb2xvcnMgJGRpZmZjb2xvcnNdCisJcHV0cyAkZiBbbGlzdCBzZXQgbWFya2JnY29sb3IgJG1hcmtiZ2NvbG9yXQogCXB1dHMgJGYgW2xpc3Qgc2V0IGRpZmZjb250ZXh0ICRkaWZmY29udGV4dF0KIAlwdXRzICRmIFtsaXN0IHNldCBzZWxlY3RiZ2NvbG9yICRzZWxlY3RiZ2NvbG9yXQogCXB1dHMgJGYgW2xpc3Qgc2V0IGV4dGRpZmZ0b29sICRleHRkaWZmdG9vbF0KKwlwdXRzICRmIFtsaXN0IHNldCBwZXJmaWxlX2F0dHJzICRwZXJmaWxlX2F0dHJzXQogCiAJcHV0cyAkZiAic2V0IGdlb21ldHJ5KG1haW4pIFt3bSBnZW9tZXRyeSAuXSIKIAlwdXRzICRmICJzZXQgZ2VvbWV0cnkodG9wd2lkdGgpIFt3aW5mbyB3aWR0aCAudGZdIgpAQCAtMjQ0NCw2ICsyNjAzLDcgQEAKICAgICB9CiAgICAgdG9wbGV2ZWwgJHcKICAgICB3bSB0aXRsZSAkdyBbbWMgIkFib3V0IGdpdGsiXQorICAgIG1ha2VfdHJhbnNpZW50ICR3IC4KICAgICBtZXNzYWdlICR3Lm0gLXRleHQgW21jICIKIEdpdGsgLSBhIGNvbW1pdCB2aWV3ZXIgZm9yIGdpdAogCkBAIC0yNDcyLDYgKzI2MzIsNyBAQAogICAgIH0KICAgICB0b3BsZXZlbCAkdwogICAgIHdtIHRpdGxlICR3IFttYyAiR2l0ayBrZXkgYmluZGluZ3MiXQorICAgIG1ha2VfdHJhbnNpZW50ICR3IC4KICAgICBtZXNzYWdlICR3Lm0gLXRleHQgIgogW21jICJHaXRrIGtleSBiaW5kaW5nczoiXQogCkBAIC0yNTAwLDcgKzI2NjEsNyBAQAogW21jICI8JXMtRj4JCUZpbmQiICRNMVRdCiBbbWMgIjwlcy1HPgkJTW92ZSB0byBuZXh0IGZpbmQgaGl0IiAkTTFUXQogW21jICI8UmV0dXJuPglNb3ZlIHRvIG5leHQgZmluZCBoaXQiXQotW21jICIvCQlNb3ZlIHRvIG5leHQgZmluZCBoaXQsIG9yIHJlZG8gZmluZCJdCitbbWMgIi8JCUZvY3VzIHRoZSBzZWFyY2ggYm94Il0KIFttYyAiPwkJTW92ZSB0byBwcmV2aW91cyBmaW5kIGhpdCJdCiBbbWMgImYJCVNjcm9sbCBkaWZmIHZpZXcgdG8gbmV4dCBmaWxlIl0KIFttYyAiPCVzLVM+CQlTZWFyY2ggZm9yIG5leHQgaGl0IGluIGRpZmYgdmlldyIgJE0xVF0KQEAgLTI1MTQsNiArMjY3NSw3IEBACiAJICAgIC1qdXN0aWZ5IGxlZnQgLWJnIHdoaXRlIC1ib3JkZXIgMiAtcmVsaWVmIGdyb292ZQogICAgIHBhY2sgJHcubSAtc2lkZSB0b3AgLWZpbGwgYm90aCAtcGFkeCAyIC1wYWR5IDIKICAgICBidXR0b24gJHcub2sgLXRleHQgW21jICJDbG9zZSJdIC1jb21tYW5kICJkZXN0cm95ICR3IiAtZGVmYXVsdCBhY3RpdmUKKyAgICBiaW5kICR3IDxLZXktRXNjYXBlPiBbbGlzdCBkZXN0cm95ICR3XQogICAgIHBhY2sgJHcub2sgLXNpZGUgYm90dG9tCiAgICAgYmluZCAkdyA8VmlzaWJpbGl0eT4gImZvY3VzICR3Lm9rIgogICAgIGJpbmQgJHcgPEtleS1Fc2NhcGU+ICJkZXN0cm95ICR3IgpAQCAtMjY5NCw3ICsyODU2LDcgQEAKIAkgICAgJHcgaW5zZXJ0IGU6JGl4ICRlIFtoaWdobGlnaHRfdGFnICRkZV0KIAl9CiAgICAgfQotICAgICR3IG1hcmsgZ3Jhdml0eSBlOiRpeCBsZWZ0CisgICAgJHcgbWFyayBncmF2aXR5IGU6JGl4IHJpZ2h0CiAgICAgJHcgY29uZiAtc3RhdGUgZGlzYWJsZWQKICAgICBzZXQgdHJlZWRpcm9wZW4oJGRpcikgMQogICAgIHNldCB0b3AgW2xpbmRleCBbc3BsaXQgWyR3IGluZGV4IEAwLDBdIC5dIDBdCkBAIC0yNzM1LDkgKzI4OTcsMTUgQEAKIH0KIAogcHJvYyBzZXRmaWxlbGlzdCB7aWR9IHsKLSAgICBnbG9iYWwgdHJlZWZpbGVsaXN0IGNmbGlzdAorICAgIGdsb2JhbCB0cmVlZmlsZWxpc3QgY2ZsaXN0IGp1bXBfdG9faGVyZQogCiAgICAgdHJlZXZpZXcgJGNmbGlzdCAkdHJlZWZpbGVsaXN0KCRpZCkgMAorICAgIGlmIHskanVtcF90b19oZXJlIG5lIHt9fSB7CisJc2V0IGYgW2xpbmRleCAkanVtcF90b19oZXJlIDBdCisJaWYge1tsc2VhcmNoIC1leGFjdCAkdHJlZWZpbGVsaXN0KCRpZCkgJGZdID49IDB9IHsKKwkgICAgc2hvd2ZpbGUgJGYKKwl9CisgICAgfQogfQogCiBpbWFnZSBjcmVhdGUgYml0bWFwIHRyaS1ydCAtYmFja2dyb3VuZCBibGFjayAtZm9yZWdyb3VuZCBibHVlIC1kYXRhIHsKQEAgLTI5MDYsNiArMzA3NCwzOCBAQAogICAgIHRrX3BvcHVwICRmbGlzdF9tZW51ICRYICRZCiB9CiAKK3Byb2MgZmluZF9jdGV4dF9maWxlaW5mbyB7bGluZX0geworICAgIGdsb2JhbCBjdGV4dF9maWxlX25hbWVzIGN0ZXh0X2ZpbGVfbGluZXMKKworICAgIHNldCBvayBbYnNlYXJjaCAkY3RleHRfZmlsZV9saW5lcyAkbGluZV0KKyAgICBzZXQgdGxpbmUgW2xpbmRleCAkY3RleHRfZmlsZV9saW5lcyAkb2tdCisKKyAgICBpZiB7JG9rID49IFtsbGVuZ3RoICRjdGV4dF9maWxlX2xpbmVzXSB8fCAkbGluZSA8ICR0bGluZX0geworICAgICAgICByZXR1cm4ge30KKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gW2xpc3QgW2xpbmRleCAkY3RleHRfZmlsZV9uYW1lcyAkb2tdICR0bGluZV0KKyAgICB9Cit9CisKK3Byb2MgcG9wX2RpZmZfbWVudSB7dyBYIFkgeCB5fSB7CisgICAgZ2xvYmFsIGN0ZXh0IGRpZmZfbWVudSBmbGlzdF9tZW51X2ZpbGUKKyAgICBnbG9iYWwgZGlmZl9tZW51X3R4dHBvcyBkaWZmX21lbnVfbGluZQorICAgIGdsb2JhbCBkaWZmX21lbnVfZmlsZWJhc2UKKworICAgIHNldCBkaWZmX21lbnVfdHh0cG9zIFtzcGxpdCBbJHcgaW5kZXggIkAkeCwkeSJdICIuIl0KKyAgICBzZXQgZGlmZl9tZW51X2xpbmUgW2xpbmRleCAkZGlmZl9tZW51X3R4dHBvcyAwXQorICAgICMgZG9uJ3QgcG9wIHVwIHRoZSBtZW51IG9uIGh1bmstc2VwYXJhdG9yIG9yIGZpbGUtc2VwYXJhdG9yIGxpbmVzCisgICAgaWYge1tsc2VhcmNoIC1nbG9iIFskY3RleHQgdGFnIG5hbWVzICRkaWZmX21lbnVfbGluZS4wXSAiKnNlcCJdID49IDB9IHsKKwlyZXR1cm4KKyAgICB9CisgICAgc3RvcGZpbmRpbmcKKyAgICBzZXQgZiBbZmluZF9jdGV4dF9maWxlaW5mbyAkZGlmZl9tZW51X2xpbmVdCisgICAgaWYgeyRmIGVxIHt9fSByZXR1cm4KKyAgICBzZXQgZmxpc3RfbWVudV9maWxlIFtsaW5kZXggJGYgMF0KKyAgICBzZXQgZGlmZl9tZW51X2ZpbGViYXNlIFtsaW5kZXggJGYgMV0KKyAgICB0a19wb3B1cCAkZGlmZl9tZW51ICRYICRZCit9CisKIHByb2MgZmxpc3RfaGwge29ubHl9IHsKICAgICBnbG9iYWwgZmxpc3RfbWVudV9maWxlIGZpbmRzdHJpbmcgZ2R0dHlwZQogCkBAIC0yOTI1LDcgKzMxMjUsNyBAQAogCWlmIHtbc3RyaW5nIG1hdGNoICJmYXRhbDogYmFkIHJldmlzaW9uICoiICRlcnJdfSB7CiAJICAgIHJldHVybiAkbnVsbGZpbGUKIAl9Ci0JZXJyb3JfcG9wdXAgIkVycm9yIGdldHRpbmcgXCIkZmlsZW5hbWVcIiBmcm9tICR3aGF0OiAkZXJyIgorCWVycm9yX3BvcHVwICJbbWMgIkVycm9yIGdldHRpbmcgXCIlc1wiIGZyb20gJXM6IiAkZmlsZW5hbWUgJHdoYXRdICRlcnIiCiAJcmV0dXJuIHt9CiAgICAgfQogICAgIHJldHVybiAkb3V0cHV0CkBAIC0yOTgyLDcgKzMxODIsNyBAQAogCXNldCBnaXRrdG1wZGlyIFtmaWxlIGpvaW4gW2ZpbGUgZGlybmFtZSAkZ2l0ZGlyXSBcCiAJCQkgICAgW2Zvcm1hdCAiLmdpdGstdG1wLiVzIiBbcGlkXV1dCiAJaWYge1tjYXRjaCB7ZmlsZSBta2RpciAkZ2l0a3RtcGRpcn0gZXJyXX0gewotCSAgICBlcnJvcl9wb3B1cCAiRXJyb3IgY3JlYXRpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yeSAkZ2l0a3RtcGRpcjogJGVyciIKKwkgICAgZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgY3JlYXRpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yeSAlczoiICRnaXRrdG1wZGlyXSAkZXJyIgogCSAgICB1bnNldCBnaXRrdG1wZGlyCiAJICAgIHJldHVybgogCX0KQEAgLTI5OTEsNyArMzE5MSw3IEBACiAgICAgaW5jciBkaWZmbnVtCiAgICAgc2V0IGRpZmZkaXIgW2ZpbGUgam9pbiAkZ2l0a3RtcGRpciAkZGlmZm51bV0KICAgICBpZiB7W2NhdGNoIHtmaWxlIG1rZGlyICRkaWZmZGlyfSBlcnJdfSB7Ci0JZXJyb3JfcG9wdXAgIkVycm9yIGNyZWF0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcnkgJGRpZmZkaXI6ICRlcnIiCisJZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgY3JlYXRpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yeSAlczoiICRkaWZmZGlyXSAkZXJyIgogCXJldHVybgogICAgIH0KIApAQCAtMzAwNCw3ICszMjA0LDcgQEAKIAkJICAgICBbbGlzdCAkZGlmZmZyb21maWxlICRkaWZmdG9maWxlXV0KICAgICAgICAgaWYge1tjYXRjaCB7c2V0IGZsIFtvcGVuICRjbWQgcl19IGVycl19IHsKICAgICAgICAgICAgIGZpbGUgZGVsZXRlIC1mb3JjZSAkZGlmZmRpcgotICAgICAgICAgICAgZXJyb3JfcG9wdXAgW21jICIkZXh0ZGlmZnRvb2w6IGNvbW1hbmQgZmFpbGVkOiAkZXJyIl0KKyAgICAgICAgICAgIGVycm9yX3BvcHVwICIkZXh0ZGlmZnRvb2w6IFttYyAiY29tbWFuZCBmYWlsZWQ6Il0gJGVyciIKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZjb25maWd1cmUgJGZsIC1ibG9ja2luZyAwCiAgICAgICAgICAgICBmaWxlcnVuICRmbCBbbGlzdCBkZWxldGVfYXRfZW9mICRmbCAkZGlmZmRpcl0KQEAgLTMwMTIsMTIgKzMyMTIsMzAxIEBACiAgICAgfQogfQogCitwcm9jIGZpbmRfaHVua19ibGFtZXNwZWMge2Jhc2UgbGluZX0geworICAgIGdsb2JhbCBjdGV4dAorCisgICAgIyBGaW5kIGFuZCBwYXJzZSB0aGUgaHVuayBoZWFkZXIKKyAgICBzZXQgc19saXggWyRjdGV4dCBzZWFyY2ggLWJhY2t3YXJkcyAtcmVnZXhwIF5AQCAiJGxpbmUuMCBsaW5lZW5kIiAkYmFzZS4wXQorICAgIGlmIHskc19saXggZXEge319IHJldHVybgorCisgICAgc2V0IHNfbGluZSBbJGN0ZXh0IGdldCAkc19saXggIiRzX2xpeCArIDEgbGluZXMiXQorICAgIGlmIHshW3JlZ2V4cCB7XkBAQCooKCAtXGQrKCxcZCspPykrKSBcKyhcZCspKCxcZCspPyBAQH0gJHNfbGluZSBcCisJICAgIHNfbGluZSBvbGRfc3BlY3Mgb3N6IG9zejEgbmV3X2xpbmUgbnN6XX0geworCXJldHVybgorICAgIH0KKworICAgICMgYmFzZSBsaW5lcyBmb3IgdGhlIHBhcmVudHMKKyAgICBzZXQgYmFzZV9saW5lcyBbbGlzdCAkbmV3X2xpbmVdCisgICAgZm9yZWFjaCBvbGRfc3BlYyBbbHJhbmdlIFtzcGxpdCAkb2xkX3NwZWNzICIgIl0gMSBlbmRdIHsKKwlpZiB7IVtyZWdleHAgLS0gey0oXGQrKSgsXGQrKT99ICRvbGRfc3BlYyBcCisJICAgICAgICBvbGRfc3BlYyBvbGRfbGluZSBvc3pdfSB7CisJICAgIHJldHVybgorCX0KKwlsYXBwZW5kIGJhc2VfbGluZXMgJG9sZF9saW5lCisgICAgfQorCisgICAgIyBOb3cgc2NhbiB0aGUgbGluZXMgdG8gZGV0ZXJtaW5lIG9mZnNldCB3aXRoaW4gdGhlIGh1bmsKKyAgICBzZXQgbWF4X3BhcmVudCBbZXhwciB7W2xsZW5ndGggJGJhc2VfbGluZXNdLTJ9XQorICAgIHNldCBkbGluZSAwCisgICAgc2V0IHNfbG5vIFtsaW5kZXggW3NwbGl0ICRzX2xpeCAiLiJdIDBdCisKKyAgICAjIERldGVybWluZSBpZiB0aGUgbGluZSBpcyByZW1vdmVkCisgICAgc2V0IGNodW5rIFskY3RleHQgZ2V0ICRsaW5lLjAgIiRsaW5lLjEgKyAkbWF4X3BhcmVudCBjaGFycyJdCisgICAgaWYge1tzdHJpbmcgbWF0Y2gge1stKyBdKn0gJGNodW5rXX0geworCXNldCByZW1vdmVkX2lkeCBbc3RyaW5nIGZpcnN0ICItIiAkY2h1bmtdCisJIyBDaG9vc2UgYSBwYXJlbnQgaW5kZXgKKwlpZiB7JHJlbW92ZWRfaWR4ID49IDB9IHsKKwkgICAgc2V0IHBhcmVudCAkcmVtb3ZlZF9pZHgKKwl9IGVsc2UgeworCSAgICBzZXQgdW5jaGFuZ2VkX2lkeCBbc3RyaW5nIGZpcnN0ICIgIiAkY2h1bmtdCisJICAgIGlmIHskdW5jaGFuZ2VkX2lkeCA+PSAwfSB7CisJCXNldCBwYXJlbnQgJHVuY2hhbmdlZF9pZHgKKwkgICAgfSBlbHNlIHsKKwkJIyBibGFtZSB0aGUgY3VycmVudCBjb21taXQKKwkJc2V0IHBhcmVudCAtMQorCSAgICB9CisJfQorCSMgdGhlbiBjb3VudCBvdGhlciBsaW5lcyB0aGF0IGJlbG9uZyB0byBpdAorCWZvciB7c2V0IGkgJGxpbmV9IHtbaW5jciBpIC0xXSA+ICRzX2xub30ge30geworCSAgICBzZXQgY2h1bmsgWyRjdGV4dCBnZXQgJGkuMCAiJGkuMSArICRtYXhfcGFyZW50IGNoYXJzIl0KKwkgICAgIyBEZXRlcm1pbmUgaWYgdGhlIGxpbmUgaXMgcmVtb3ZlZAorCSAgICBzZXQgcmVtb3ZlZF9pZHggW3N0cmluZyBmaXJzdCAiLSIgJGNodW5rXQorCSAgICBpZiB7JHBhcmVudCA+PSAwfSB7CisJCXNldCBjb2RlIFtzdHJpbmcgaW5kZXggJGNodW5rICRwYXJlbnRdCisJCWlmIHskY29kZSBlcSAiLSIgfHwgKCRyZW1vdmVkX2lkeCA8IDAgJiYgJGNvZGUgbmUgIisiKX0geworCQkgICAgaW5jciBkbGluZQorCQl9CisJICAgIH0gZWxzZSB7CisJCWlmIHskcmVtb3ZlZF9pZHggPCAwfSB7CisJCSAgICBpbmNyIGRsaW5lCisJCX0KKwkgICAgfQorCX0KKwlpbmNyIHBhcmVudAorICAgIH0gZWxzZSB7CisJc2V0IHBhcmVudCAwCisgICAgfQorCisgICAgaW5jciBkbGluZSBbbGluZGV4ICRiYXNlX2xpbmVzICRwYXJlbnRdCisgICAgcmV0dXJuIFtsaXN0ICRwYXJlbnQgJGRsaW5lXQorfQorCitwcm9jIGV4dGVybmFsX2JsYW1lX2RpZmYge30geworICAgIGdsb2JhbCBjdXJyZW50aWQgY21pdG1vZGUKKyAgICBnbG9iYWwgZGlmZl9tZW51X3R4dHBvcyBkaWZmX21lbnVfbGluZQorICAgIGdsb2JhbCBkaWZmX21lbnVfZmlsZWJhc2UgZmxpc3RfbWVudV9maWxlCisKKyAgICBpZiB7JGNtaXRtb2RlIGVxICJ0cmVlIn0geworCXNldCBwYXJlbnRfaWR4IDAKKwlzZXQgbGluZSBbZXhwciB7JGRpZmZfbWVudV9saW5lIC0gJGRpZmZfbWVudV9maWxlYmFzZX1dCisgICAgfSBlbHNlIHsKKwlzZXQgaGluZm8gW2ZpbmRfaHVua19ibGFtZXNwZWMgJGRpZmZfbWVudV9maWxlYmFzZSAkZGlmZl9tZW51X2xpbmVdCisJaWYgeyRoaW5mbyBuZSB7fX0geworCSAgICBzZXQgcGFyZW50X2lkeCBbbGluZGV4ICRoaW5mbyAwXQorCSAgICBzZXQgbGluZSBbbGluZGV4ICRoaW5mbyAxXQorCX0gZWxzZSB7CisJICAgIHNldCBwYXJlbnRfaWR4IDAKKwkgICAgc2V0IGxpbmUgMAorCX0KKyAgICB9CisKKyAgICBleHRlcm5hbF9ibGFtZSAkcGFyZW50X2lkeCAkbGluZQorfQorCisjIEZpbmQgdGhlIFNIQTEgSUQgb2YgdGhlIGJsb2IgZm9yIGZpbGUgJGZuYW1lIGluIHRoZSBpbmRleAorIyBhdCBzdGFnZSAwIG9yIDIKK3Byb2MgaW5kZXhfc2hhMSB7Zm5hbWV9IHsKKyAgICBzZXQgZiBbb3BlbiBbbGlzdCB8IGdpdCBscy1maWxlcyAtcyAkZm5hbWVdIHJdCisgICAgd2hpbGUge1tnZXRzICRmIGxpbmVdID49IDB9IHsKKwlzZXQgaW5mbyBbbGluZGV4IFtzcGxpdCAkbGluZSAiXHQiXSAwXQorCXNldCBzdGFnZSBbbGluZGV4ICRpbmZvIDJdCisJaWYgeyRzdGFnZSBlcSAiMCIgfHwgJHN0YWdlIGVxICIyIn0geworCSAgICBjbG9zZSAkZgorCSAgICByZXR1cm4gW2xpbmRleCAkaW5mbyAxXQorCX0KKyAgICB9CisgICAgY2xvc2UgJGYKKyAgICByZXR1cm4ge30KK30KKworIyBUdXJuIGFuIGFic29sdXRlIHBhdGggaW50byBvbmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5Citwcm9jIG1ha2VfcmVsYXRpdmUge2Z9IHsKKyAgICBzZXQgZWx0cyBbZmlsZSBzcGxpdCAkZl0KKyAgICBzZXQgaGVyZSBbZmlsZSBzcGxpdCBbcHdkXV0KKyAgICBzZXQgZWkgMAorICAgIHNldCBoaSAwCisgICAgc2V0IHJlcyB7fQorICAgIGZvcmVhY2ggZCAkaGVyZSB7CisJaWYgeyRlaSA8ICRoaSB8fCAkZWkgPj0gW2xsZW5ndGggJGVsdHNdIHx8IFtsaW5kZXggJGVsdHMgJGVpXSBuZSAkZH0geworCSAgICBsYXBwZW5kIHJlcyAiLi4iCisJfSBlbHNlIHsKKwkgICAgaW5jciBlaQorCX0KKwlpbmNyIGhpCisgICAgfQorICAgIHNldCBlbHRzIFtjb25jYXQgJHJlcyBbbHJhbmdlICRlbHRzICRlaSBlbmRdXQorICAgIHJldHVybiBbZXZhbCBmaWxlIGpvaW4gJGVsdHNdCit9CisKK3Byb2MgZXh0ZXJuYWxfYmxhbWUge3BhcmVudF9pZHgge2xpbmUge319fSB7CisgICAgZ2xvYmFsIGZsaXN0X21lbnVfZmlsZSBnaXRkaXIKKyAgICBnbG9iYWwgbnVsbGlkIG51bGxpZDIKKyAgICBnbG9iYWwgcGFyZW50bGlzdCBzZWxlY3RlZGxpbmUgY3VycmVudGlkCisKKyAgICBpZiB7JHBhcmVudF9pZHggPiAwfSB7CisJc2V0IGJhc2VfY29tbWl0IFtsaW5kZXggJHBhcmVudGxpc3QgJHNlbGVjdGVkbGluZSBbZXhwciB7JHBhcmVudF9pZHgtMX1dXQorICAgIH0gZWxzZSB7CisJc2V0IGJhc2VfY29tbWl0ICRjdXJyZW50aWQKKyAgICB9CisKKyAgICBpZiB7JGJhc2VfY29tbWl0IGVxIHt9IHx8ICRiYXNlX2NvbW1pdCBlcSAkbnVsbGlkIHx8ICRiYXNlX2NvbW1pdCBlcSAkbnVsbGlkMn0geworCWVycm9yX3BvcHVwIFttYyAiTm8gc3VjaCBjb21taXQiXQorCXJldHVybgorICAgIH0KKworICAgIHNldCBjbWRsaW5lIFtsaXN0IGdpdCBndWkgYmxhbWVdCisgICAgaWYgeyRsaW5lIG5lIHt9ICYmICRsaW5lID4gMX0geworCWxhcHBlbmQgY21kbGluZSAiLS1saW5lPSRsaW5lIgorICAgIH0KKyAgICBzZXQgZiBbZmlsZSBqb2luIFtmaWxlIGRpcm5hbWUgJGdpdGRpcl0gJGZsaXN0X21lbnVfZmlsZV0KKyAgICAjIFVuZm9ydHVuYXRlbHkgaXQgc2VlbXMgZ2l0IGd1aSBibGFtZSBkb2Vzbid0IGxpa2UKKyAgICAjIGJlaW5nIGdpdmVuIGFuIGFic29sdXRlIHBhdGguLi4KKyAgICBzZXQgZiBbbWFrZV9yZWxhdGl2ZSAkZl0KKyAgICBsYXBwZW5kIGNtZGxpbmUgJGJhc2VfY29tbWl0ICRmCisgICAgcHV0cyAiY21kbGluZT17JGNtZGxpbmV9IgorICAgIGlmIHtbY2F0Y2gge2V2YWwgZXhlYyAkY21kbGluZSAmfSBlcnJdfSB7CisJZXJyb3JfcG9wdXAgIlttYyAiZ2l0IGd1aSBibGFtZTogY29tbWFuZCBmYWlsZWQ6Il0gJGVyciIKKyAgICB9Cit9CisKK3Byb2Mgc2hvd19saW5lX3NvdXJjZSB7fSB7CisgICAgZ2xvYmFsIGNtaXRtb2RlIGN1cnJlbnRpZCBwYXJlbnRzIGN1cnZpZXcgYmxhbWVzdHVmZiBibGFtZWluc3QKKyAgICBnbG9iYWwgZGlmZl9tZW51X2xpbmUgZGlmZl9tZW51X2ZpbGViYXNlIGZsaXN0X21lbnVfZmlsZQorICAgIGdsb2JhbCBudWxsaWQgbnVsbGlkMiBnaXRkaXIKKworICAgIHNldCBmcm9tX2luZGV4IHt9CisgICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSJ9IHsKKwlzZXQgaWQgJGN1cnJlbnRpZAorCXNldCBsaW5lIFtleHByIHskZGlmZl9tZW51X2xpbmUgLSAkZGlmZl9tZW51X2ZpbGViYXNlfV0KKyAgICB9IGVsc2UgeworCXNldCBoIFtmaW5kX2h1bmtfYmxhbWVzcGVjICRkaWZmX21lbnVfZmlsZWJhc2UgJGRpZmZfbWVudV9saW5lXQorCWlmIHskaCBlcSB7fX0gcmV0dXJuCisJc2V0IHBpIFtsaW5kZXggJGggMF0KKwlpZiB7JHBpID09IDB9IHsKKwkgICAgbWFya19jdGV4dF9saW5lICRkaWZmX21lbnVfbGluZQorCSAgICByZXR1cm4KKwl9CisJaW5jciBwaSAtMQorCWlmIHskY3VycmVudGlkIGVxICRudWxsaWR9IHsKKwkgICAgaWYgeyRwaSA+IDB9IHsKKwkJIyBtdXN0IGJlIGEgbWVyZ2UgaW4gcHJvZ3Jlc3MuLi4KKwkJaWYge1tjYXRjaCB7CisJCSAgICAjIGdldCB0aGUgbGFzdCBsaW5lIGZyb20gLmdpdC9NRVJHRV9IRUFECisJCSAgICBzZXQgZiBbb3BlbiBbZmlsZSBqb2luICRnaXRkaXIgTUVSR0VfSEVBRF0gcl0KKwkJICAgIHNldCBpZCBbbGluZGV4IFtzcGxpdCBbcmVhZCAkZl0gIlxuIl0gZW5kLTFdCisJCSAgICBjbG9zZSAkZgorCQl9IGVycl19IHsKKwkJICAgIGVycm9yX3BvcHVwIFttYyAiQ291bGRuJ3QgcmVhZCBtZXJnZSBoZWFkOiAlcyIgJGVycl0KKwkJICAgIHJldHVybgorCQl9CisJICAgIH0gZWxzZWlmIHskcGFyZW50cygkY3VydmlldywkY3VycmVudGlkKSBlcSAkbnVsbGlkMn0geworCQkjIG5lZWQgdG8gZG8gdGhlIGJsYW1lIGZyb20gdGhlIGluZGV4CisJCWlmIHtbY2F0Y2ggeworCQkgICAgc2V0IGZyb21faW5kZXggW2luZGV4X3NoYTEgJGZsaXN0X21lbnVfZmlsZV0KKwkJfSBlcnJdfSB7CisJCSAgICBlcnJvcl9wb3B1cCBbbWMgIkVycm9yIHJlYWRpbmcgaW5kZXg6ICVzIiAkZXJyXQorCQkgICAgcmV0dXJuCisJCX0KKwkgICAgfSBlbHNlIHsKKwkJc2V0IGlkICRwYXJlbnRzKCRjdXJ2aWV3LCRjdXJyZW50aWQpCisJICAgIH0KKwl9IGVsc2UgeworCSAgICBzZXQgaWQgW2xpbmRleCAkcGFyZW50cygkY3VydmlldywkY3VycmVudGlkKSAkcGldCisJfQorCXNldCBsaW5lIFtsaW5kZXggJGggMV0KKyAgICB9CisgICAgc2V0IGJsYW1lYXJncyB7fQorICAgIGlmIHskZnJvbV9pbmRleCBuZSB7fX0geworCWxhcHBlbmQgYmxhbWVhcmdzIHwgZ2l0IGNhdC1maWxlIGJsb2IgJGZyb21faW5kZXgKKyAgICB9CisgICAgbGFwcGVuZCBibGFtZWFyZ3MgfCBnaXQgYmxhbWUgLXAgLUwkbGluZSwrMQorICAgIGlmIHskZnJvbV9pbmRleCBuZSB7fX0geworCWxhcHBlbmQgYmxhbWVhcmdzIC0tY29udGVudHMgLQorICAgIH0gZWxzZSB7CisJbGFwcGVuZCBibGFtZWFyZ3MgJGlkCisgICAgfQorICAgIGxhcHBlbmQgYmxhbWVhcmdzIC0tIFtmaWxlIGpvaW4gW2ZpbGUgZGlybmFtZSAkZ2l0ZGlyXSAkZmxpc3RfbWVudV9maWxlXQorICAgIGlmIHtbY2F0Y2ggeworCXNldCBmIFtvcGVuICRibGFtZWFyZ3Mgcl0KKyAgICB9IGVycl19IHsKKwllcnJvcl9wb3B1cCBbbWMgIkNvdWxkbid0IHN0YXJ0IGdpdCBibGFtZTogJXMiICRlcnJdCisJcmV0dXJuCisgICAgfQorICAgIG5vd2J1c3kgYmxhbWluZyBbbWMgIlNlYXJjaGluZyJdCisgICAgZmNvbmZpZ3VyZSAkZiAtYmxvY2tpbmcgMAorICAgIHNldCBpIFtyZWdfaW5zdGFuY2UgJGZdCisgICAgc2V0IGJsYW1lc3R1ZmYoJGkpIHt9CisgICAgc2V0IGJsYW1laW5zdCAkaQorICAgIGZpbGVydW4gJGYgW2xpc3QgcmVhZF9saW5lX3NvdXJjZSAkZiAkaV0KK30KKworcHJvYyBzdG9wYmxhbWluZyB7fSB7CisgICAgZ2xvYmFsIGJsYW1laW5zdAorCisgICAgaWYge1tpbmZvIGV4aXN0cyBibGFtZWluc3RdfSB7CisJc3RvcF9pbnN0YW5jZSAkYmxhbWVpbnN0CisJdW5zZXQgYmxhbWVpbnN0CisJbm90YnVzeSBibGFtaW5nCisgICAgfQorfQorCitwcm9jIHJlYWRfbGluZV9zb3VyY2Uge2ZkIGluc3R9IHsKKyAgICBnbG9iYWwgYmxhbWVzdHVmZiBjdXJ2aWV3IGNvbW1mZCBibGFtZWluc3QgbnVsbGlkIG51bGxpZDIKKworICAgIHdoaWxlIHtbZ2V0cyAkZmQgbGluZV0gPj0gMH0geworCWxhcHBlbmQgYmxhbWVzdHVmZigkaW5zdCkgJGxpbmUKKyAgICB9CisgICAgaWYgeyFbZW9mICRmZF19IHsKKwlyZXR1cm4gMQorICAgIH0KKyAgICB1bnNldCBjb21tZmQoJGluc3QpCisgICAgdW5zZXQgYmxhbWVpbnN0CisgICAgbm90YnVzeSBibGFtaW5nCisgICAgZmNvbmZpZ3VyZSAkZmQgLWJsb2NraW5nIDEKKyAgICBpZiB7W2NhdGNoIHtjbG9zZSAkZmR9IGVycl19IHsKKwllcnJvcl9wb3B1cCBbbWMgIkVycm9yIHJ1bm5pbmcgZ2l0IGJsYW1lOiAlcyIgJGVycl0KKwlyZXR1cm4gMAorICAgIH0KKworICAgIHNldCBmbmFtZSB7fQorICAgIHNldCBsaW5lIFtzcGxpdCBbbGluZGV4ICRibGFtZXN0dWZmKCRpbnN0KSAwXSAiICJdCisgICAgc2V0IGlkIFtsaW5kZXggJGxpbmUgMF0KKyAgICBzZXQgbG51bSBbbGluZGV4ICRsaW5lIDFdCisgICAgaWYge1tzdHJpbmcgbGVuZ3RoICRpZF0gPT0gNDAgJiYgW3N0cmluZyBpcyB4ZGlnaXQgJGlkXSAmJgorCVtzdHJpbmcgaXMgZGlnaXQgLXN0cmljdCAkbG51bV19IHsKKwkjIGxvb2sgZm9yICJmaWxlbmFtZSIgbGluZQorCWZvcmVhY2ggbCAkYmxhbWVzdHVmZigkaW5zdCkgeworCSAgICBpZiB7W3N0cmluZyBtYXRjaCAiZmlsZW5hbWUgKiIgJGxdfSB7CisJCXNldCBmbmFtZSBbc3RyaW5nIHJhbmdlICRsIDkgZW5kXQorCQlicmVhaworCSAgICB9CisJfQorICAgIH0KKyAgICBpZiB7JGZuYW1lIG5lIHt9fSB7CisJIyBhbGwgbG9va3MgZ29vZCwgc2VsZWN0IGl0CisJaWYgeyRpZCBlcSAkbnVsbGlkfSB7CisJICAgICMgYmxhbWUgdXNlcyBhbGwtemVyb2VzIHRvIG1lYW4gbm90IGNvbW1pdHRlZCwKKwkgICAgIyB3aGljaCB3b3VsZCBtZWFuIGEgY2hhbmdlIGluIHRoZSBpbmRleAorCSAgICBzZXQgaWQgJG51bGxpZDIKKwl9CisJaWYge1tjb21taXRpbnZpZXcgJGlkICRjdXJ2aWV3XX0geworCSAgICBzZWxlY3RsaW5lIFtyb3dvZmNvbW1pdCAkaWRdIDEgW2xpc3QgJGZuYW1lICRsbnVtXQorCX0gZWxzZSB7CisJICAgIGVycm9yX3BvcHVwIFttYyAiVGhhdCBsaW5lIGNvbWVzIGZyb20gY29tbWl0ICVzLCBcCisJCQkgICAgIHdoaWNoIGlzIG5vdCBpbiB0aGlzIHZpZXciIFtzaG9ydGlkcyAkaWRdXQorCX0KKyAgICB9IGVsc2UgeworCXB1dHMgIm9vcHMgY291bGRuJ3QgcGFyc2UgZ2l0IGJsYW1lIG91dHB1dCIKKyAgICB9CisgICAgcmV0dXJuIDAKK30KKwogIyBkZWxldGUgJGRpciB3aGVuIHdlIHNlZSBlb2Ygb24gJGYgKHByZXN1bWFibHkgYmVjYXVzZSB0aGUgY2hpbGQgaGFzIGV4aXRlZCkKIHByb2MgZGVsZXRlX2F0X2VvZiB7ZiBkaXJ9IHsKICAgICB3aGlsZSB7W2dldHMgJGYgbGluZV0gPj0gMH0ge30KICAgICBpZiB7W2VvZiAkZl19IHsKIAlpZiB7W2NhdGNoIHtjbG9zZSAkZn0gZXJyXX0gewotCSAgICBlcnJvcl9wb3B1cCAiRXh0ZXJuYWwgZGlmZiB2aWV3ZXIgZmFpbGVkOiAkZXJyIgorCSAgICBlcnJvcl9wb3B1cCAiW21jICJFeHRlcm5hbCBkaWZmIHZpZXdlciBmYWlsZWQ6Il0gJGVyciIKIAl9CiAJZmlsZSBkZWxldGUgLWZvcmNlICRkaXIKIAlyZXR1cm4gMApAQCAtMzEyMiw4ICszNjExLDggQEAKICMgQ29kZSB0byBpbXBsZW1lbnQgbXVsdGlwbGUgdmlld3MKIAogcHJvYyBuZXd2aWV3IHtpc2hpZ2hsaWdodH0gewotICAgIGdsb2JhbCBuZXh0dmlld251bSBuZXd2aWV3bmFtZSBuZXd2aWV3cGVybSBuZXdpc2hpZ2hsaWdodAotICAgIGdsb2JhbCBuZXd2aWV3YXJncyByZXZ0cmVlYXJncyB2aWV3YXJnc2NtZCBuZXd2aWV3YXJnc2NtZCBjdXJ2aWV3CisgICAgZ2xvYmFsIG5leHR2aWV3bnVtIG5ld3ZpZXduYW1lIG5ld2lzaGlnaGxpZ2h0CisgICAgZ2xvYmFsIHJldnRyZWVhcmdzIHZpZXdhcmdzY21kIG5ld3ZpZXdvcHRzIGN1cnZpZXcKIAogICAgIHNldCBuZXdpc2hpZ2hsaWdodCAkaXNoaWdobGlnaHQKICAgICBzZXQgdG9wIC5naXRrdmlldwpAQCAtMzEzMiw1OCArMzYyMSwxODMgQEAKIAlyZXR1cm4KICAgICB9CiAgICAgc2V0IG5ld3ZpZXduYW1lKCRuZXh0dmlld251bSkgIlttYyAiVmlldyJdICRuZXh0dmlld251bSIKLSAgICBzZXQgbmV3dmlld3Blcm0oJG5leHR2aWV3bnVtKSAwCi0gICAgc2V0IG5ld3ZpZXdhcmdzKCRuZXh0dmlld251bSkgW3NoZWxsYXJnbGlzdCAkcmV2dHJlZWFyZ3NdCi0gICAgc2V0IG5ld3ZpZXdhcmdzY21kKCRuZXh0dmlld251bSkgJHZpZXdhcmdzY21kKCRjdXJ2aWV3KQorICAgIHNldCBuZXd2aWV3b3B0cygkbmV4dHZpZXdudW0scGVybSkgMAorICAgIHNldCBuZXd2aWV3b3B0cygkbmV4dHZpZXdudW0sY21kKSAgJHZpZXdhcmdzY21kKCRjdXJ2aWV3KQorICAgIGRlY29kZV92aWV3X29wdHMgJG5leHR2aWV3bnVtICRyZXZ0cmVlYXJncwogICAgIHZpZXdlZGl0b3IgJHRvcCAkbmV4dHZpZXdudW0gW21jICJHaXRrIHZpZXcgZGVmaW5pdGlvbiJdCiB9CiAKK3NldCBrbm93bl92aWV3X29wdGlvbnMgeworICAgIHtwZXJtICAgIGIgICAgLiB7fSAgICAgICAgICAgICAgIHttYyAiUmVtZW1iZXIgdGhpcyB2aWV3In19CisgICAge2FyZ3MgICAgdDUwPSArIHt9ICAgICAgICAgICAgICAge21jICJDb21taXRzIHRvIGluY2x1ZGUgKGFyZ3VtZW50cyB0byBnaXQgbG9nKToifX0KKyAgICB7YWxsICAgICBiICAgICogIi0tYWxsIiAgICAgICAgICB7bWMgIlVzZSBhbGwgcmVmcyJ9fQorICAgIHtkb3JkZXIgIGIgICAgLiB7Ii0tZGF0ZS1vcmRlciIgIi1kIn0gICAgICB7bWMgIlN0cmljdGx5IHNvcnQgYnkgZGF0ZSJ9fQorICAgIHtscmlnaHQgIGIgICAgLiAiLS1sZWZ0LXJpZ2h0IiAgIHttYyAiTWFyayBicmFuY2ggc2lkZXMifX0KKyAgICB7c2luY2UgICB0MTUgICsgeyItLXNpbmNlPSoiICItLWFmdGVyPSoifSAge21jICJTaW5jZSBkYXRlOiJ9fQorICAgIHt1bnRpbCAgIHQxNSAgLiB7Ii0tdW50aWw9KiIgIi0tYmVmb3JlPSoifSB7bWMgIlVudGlsIGRhdGU6In19CisgICAge2xpbWl0ICAgdDEwICArICItLW1heC1jb3VudD0qIiAge21jICJNYXggY291bnQ6In19CisgICAge3NraXAgICAgdDEwICAuICItLXNraXA9KiIgICAgICAge21jICJTa2lwOiJ9fQorICAgIHtmaXJzdCAgIGIgICAgLiAiLS1maXJzdC1wYXJlbnQiIHttYyAiTGltaXQgdG8gZmlyc3QgcGFyZW50In19CisgICAge2NtZCAgICAgdDUwPSArIHt9ICAgICAgICAgICAgICAge21jICJDb21tYW5kIHRvIGdlbmVyYXRlIG1vcmUgY29tbWl0cyB0byBpbmNsdWRlOiJ9fQorICAgIH0KKworcHJvYyBlbmNvZGVfdmlld19vcHRzIHtufSB7CisgICAgZ2xvYmFsIGtub3duX3ZpZXdfb3B0aW9ucyBuZXd2aWV3b3B0cworCisgICAgc2V0IHJhcmdzIFtsaXN0XQorICAgIGZvcmVhY2ggb3B0ICRrbm93bl92aWV3X29wdGlvbnMgeworCXNldCBwYXR0ZXJucyBbbGluZGV4ICRvcHQgM10KKwlpZiB7JHBhdHRlcm5zIGVxIHt9fSBjb250aW51ZQorCXNldCBwYXR0ZXJuIFtsaW5kZXggJHBhdHRlcm5zIDBdCisKKwlzZXQgdmFsICRuZXd2aWV3b3B0cygkbixbbGluZGV4ICRvcHQgMF0pCisJCisJaWYge1tsaW5kZXggJG9wdCAxXSBlcSAiYiJ9IHsKKwkgICAgaWYgeyR2YWx9IHsKKwkJbGFwcGVuZCByYXJncyAkcGF0dGVybgorCSAgICB9CisJfSBlbHNlIHsKKwkgICAgc2V0IHZhbCBbc3RyaW5nIHRyaW0gJHZhbF0KKwkgICAgaWYgeyR2YWwgbmUge319IHsKKwkJc2V0IHBmaXggW3N0cmluZyByYW5nZSAkcGF0dGVybiAwIGVuZC0xXQorCQlsYXBwZW5kIHJhcmdzICRwZml4JHZhbAorCSAgICB9CisJfQorICAgIH0KKyAgICByZXR1cm4gW2NvbmNhdCAkcmFyZ3MgW3NoZWxsc3BsaXQgJG5ld3ZpZXdvcHRzKCRuLGFyZ3MpXV0KK30KKworcHJvYyBkZWNvZGVfdmlld19vcHRzIHtuIHZpZXdfYXJnc30geworICAgIGdsb2JhbCBrbm93bl92aWV3X29wdGlvbnMgbmV3dmlld29wdHMKKworICAgIGZvcmVhY2ggb3B0ICRrbm93bl92aWV3X29wdGlvbnMgeworCWlmIHtbbGluZGV4ICRvcHQgMV0gZXEgImIifSB7CisJICAgIHNldCB2YWwgMAorCX0gZWxzZSB7CisJICAgIHNldCB2YWwge30KKwl9CisJc2V0IG5ld3ZpZXdvcHRzKCRuLFtsaW5kZXggJG9wdCAwXSkgJHZhbAorICAgIH0KKyAgICBzZXQgb2FyZ3MgW2xpc3RdCisgICAgZm9yZWFjaCBhcmcgJHZpZXdfYXJncyB7CisJaWYge1tyZWdleHAgLS0ge14tKFswLTldKykkfSAkYXJnIGFyZyBjbnRdCisJICAgICYmICFbaW5mbyBleGlzdHMgZm91bmQobGltaXQpXX0geworCSAgICBzZXQgbmV3dmlld29wdHMoJG4sbGltaXQpICRjbnQKKwkgICAgc2V0IGZvdW5kKGxpbWl0KSAxCisJICAgIGNvbnRpbnVlCisJfQorCWNhdGNoIHsgdW5zZXQgdmFsIH0KKwlmb3JlYWNoIG9wdCAka25vd25fdmlld19vcHRpb25zIHsKKwkgICAgc2V0IGlkIFtsaW5kZXggJG9wdCAwXQorCSAgICBpZiB7W2luZm8gZXhpc3RzIGZvdW5kKCRpZCldfSBjb250aW51ZQorCSAgICBmb3JlYWNoIHBhdHRlcm4gW2xpbmRleCAkb3B0IDNdIHsKKwkJaWYgeyFbc3RyaW5nIG1hdGNoICRwYXR0ZXJuICRhcmddfSBjb250aW51ZQorCQlpZiB7W2xpbmRleCAkb3B0IDFdIG5lICJiIn0geworCQkgICAgc2V0IHNpemUgW3N0cmluZyBsZW5ndGggJHBhdHRlcm5dCisJCSAgICBzZXQgdmFsIFtzdHJpbmcgcmFuZ2UgJGFyZyBbZXhwciB7JHNpemUtMX1dIGVuZF0KKwkJfSBlbHNlIHsKKwkJICAgIHNldCB2YWwgMQorCQl9CisJCXNldCBuZXd2aWV3b3B0cygkbiwkaWQpICR2YWwKKwkJc2V0IGZvdW5kKCRpZCkgMQorCQlicmVhaworCSAgICB9CisJICAgIGlmIHtbaW5mbyBleGlzdHMgdmFsXX0gYnJlYWsKKwl9CisJaWYge1tpbmZvIGV4aXN0cyB2YWxdfSBjb250aW51ZQorCWxhcHBlbmQgb2FyZ3MgJGFyZworICAgIH0KKyAgICBzZXQgbmV3dmlld29wdHMoJG4sYXJncykgW3NoZWxsYXJnbGlzdCAkb2FyZ3NdCit9CisKK3Byb2MgZWRpdF9vcl9uZXd2aWV3IHt9IHsKKyAgICBnbG9iYWwgY3VydmlldworCisgICAgaWYgeyRjdXJ2aWV3ID4gMH0geworCWVkaXR2aWV3CisgICAgfSBlbHNlIHsKKwluZXd2aWV3IDAKKyAgICB9Cit9CisKIHByb2MgZWRpdHZpZXcge30gewogICAgIGdsb2JhbCBjdXJ2aWV3Ci0gICAgZ2xvYmFsIHZpZXduYW1lIHZpZXdwZXJtIG5ld3ZpZXduYW1lIG5ld3ZpZXdwZXJtCi0gICAgZ2xvYmFsIHZpZXdhcmdzIG5ld3ZpZXdhcmdzIHZpZXdhcmdzY21kIG5ld3ZpZXdhcmdzY21kCisgICAgZ2xvYmFsIHZpZXduYW1lIHZpZXdwZXJtIG5ld3ZpZXduYW1lIG5ld3ZpZXdvcHRzCisgICAgZ2xvYmFsIHZpZXdhcmdzIHZpZXdhcmdzY21kCiAKICAgICBzZXQgdG9wIC5naXRrdmVkaXQtJGN1cnZpZXcKICAgICBpZiB7W3dpbmZvIGV4aXN0cyAkdG9wXX0gewogCXJhaXNlICR0b3AKIAlyZXR1cm4KICAgICB9Ci0gICAgc2V0IG5ld3ZpZXduYW1lKCRjdXJ2aWV3KSAkdmlld25hbWUoJGN1cnZpZXcpCi0gICAgc2V0IG5ld3ZpZXdwZXJtKCRjdXJ2aWV3KSAkdmlld3Blcm0oJGN1cnZpZXcpCi0gICAgc2V0IG5ld3ZpZXdhcmdzKCRjdXJ2aWV3KSBbc2hlbGxhcmdsaXN0ICR2aWV3YXJncygkY3VydmlldyldCi0gICAgc2V0IG5ld3ZpZXdhcmdzY21kKCRjdXJ2aWV3KSAkdmlld2FyZ3NjbWQoJGN1cnZpZXcpCisgICAgc2V0IG5ld3ZpZXduYW1lKCRjdXJ2aWV3KSAgICAgICR2aWV3bmFtZSgkY3VydmlldykKKyAgICBzZXQgbmV3dmlld29wdHMoJGN1cnZpZXcscGVybSkgJHZpZXdwZXJtKCRjdXJ2aWV3KQorICAgIHNldCBuZXd2aWV3b3B0cygkY3VydmlldyxjbWQpICAkdmlld2FyZ3NjbWQoJGN1cnZpZXcpCisgICAgZGVjb2RlX3ZpZXdfb3B0cyAkY3VydmlldyAkdmlld2FyZ3MoJGN1cnZpZXcpCiAgICAgdmlld2VkaXRvciAkdG9wICRjdXJ2aWV3ICJHaXRrOiBlZGl0IHZpZXcgJHZpZXduYW1lKCRjdXJ2aWV3KSIKIH0KIAogcHJvYyB2aWV3ZWRpdG9yIHt0b3AgbiB0aXRsZX0gewotICAgIGdsb2JhbCBuZXd2aWV3bmFtZSBuZXd2aWV3cGVybSB2aWV3ZmlsZXMgYmdjb2xvcgorICAgIGdsb2JhbCBuZXd2aWV3bmFtZSBuZXd2aWV3b3B0cyB2aWV3ZmlsZXMgYmdjb2xvcgorICAgIGdsb2JhbCBrbm93bl92aWV3X29wdGlvbnMKIAogICAgIHRvcGxldmVsICR0b3AKICAgICB3bSB0aXRsZSAkdG9wICR0aXRsZQorICAgIG1ha2VfdHJhbnNpZW50ICR0b3AgLgorCisgICAgIyBWaWV3IG5hbWUKKyAgICBmcmFtZSAkdG9wLm5mcgogICAgIGxhYmVsICR0b3AubmwgLXRleHQgW21jICJOYW1lIl0KICAgICBlbnRyeSAkdG9wLm5hbWUgLXdpZHRoIDIwIC10ZXh0dmFyaWFibGUgbmV3dmlld25hbWUoJG4pCi0gICAgZ3JpZCAkdG9wLm5sICR0b3AubmFtZSAtc3RpY2t5IHcgLXBhZHkgNQotICAgIGNoZWNrYnV0dG9uICR0b3AucGVybSAtdGV4dCBbbWMgIlJlbWVtYmVyIHRoaXMgdmlldyJdIFwKLQktdmFyaWFibGUgbmV3dmlld3Blcm0oJG4pCi0gICAgZ3JpZCAkdG9wLnBlcm0gLSAtcGFkeSA1IC1zdGlja3kgdwotICAgIG1lc3NhZ2UgJHRvcC5hbCAtYXNwZWN0IDEwMDAgXAotCS10ZXh0IFttYyAiQ29tbWl0cyB0byBpbmNsdWRlIChhcmd1bWVudHMgdG8gZ2l0IGxvZyk6Il0KLSAgICBncmlkICR0b3AuYWwgLSAtc3RpY2t5IHcgLXBhZHkgNQotICAgIGVudHJ5ICR0b3AuYXJncyAtd2lkdGggNTAgLXRleHR2YXJpYWJsZSBuZXd2aWV3YXJncygkbikgXAotCS1iYWNrZ3JvdW5kICRiZ2NvbG9yCi0gICAgZ3JpZCAkdG9wLmFyZ3MgLSAtc3RpY2t5IGV3IC1wYWR4IDUKKyAgICBwYWNrICR0b3AubmZyIC1pbiAkdG9wIC1maWxsIHggLXBhZHkgNSAtcGFkeCAzCisgICAgcGFjayAkdG9wLm5sIC1pbiAkdG9wLm5mciAtc2lkZSBsZWZ0IC1wYWR4IHswIDMwfQorICAgIHBhY2sgJHRvcC5uYW1lIC1pbiAkdG9wLm5mciAtc2lkZSBsZWZ0CiAKLSAgICBtZXNzYWdlICR0b3AuYWMgLWFzcGVjdCAxMDAwIFwKLQktdGV4dCBbbWMgIkNvbW1hbmQgdG8gZ2VuZXJhdGUgbW9yZSBjb21taXRzIHRvIGluY2x1ZGU6Il0KLSAgICBncmlkICR0b3AuYWMgLSAtc3RpY2t5IHcgLXBhZHkgNQotICAgIGVudHJ5ICR0b3AuYXJnc2NtZCAtd2lkdGggNTAgLXRleHR2YXJpYWJsZSBuZXd2aWV3YXJnc2NtZCgkbikgXAotCS1iYWNrZ3JvdW5kIHdoaXRlCi0gICAgZ3JpZCAkdG9wLmFyZ3NjbWQgLSAtc3RpY2t5IGV3IC1wYWR4IDUKKyAgICAjIFZpZXcgb3B0aW9ucworICAgIHNldCBjZnJhbWUgJHRvcC5uZnIKKyAgICBzZXQgY2V4cGFuZCAwCisgICAgc2V0IGNudCAwCisgICAgZm9yZWFjaCBvcHQgJGtub3duX3ZpZXdfb3B0aW9ucyB7CisJc2V0IGlkIFtsaW5kZXggJG9wdCAwXQorCXNldCB0eXBlIFtsaW5kZXggJG9wdCAxXQorCXNldCBmbGFncyBbbGluZGV4ICRvcHQgMl0KKwlzZXQgdGl0bGUgW2V2YWwgW2xpbmRleCAkb3B0IDRdXQorCXNldCBseHBhZCAwCiAKLSAgICBtZXNzYWdlICR0b3AubCAtYXNwZWN0IDEwMDAgXAorCWlmIHskZmxhZ3MgZXEgIisiIHx8ICRmbGFncyBlcSAiKiJ9IHsKKwkgICAgc2V0IGNmcmFtZSAkdG9wLmZyJGNudAorCSAgICBpbmNyIGNudAorCSAgICBmcmFtZSAkY2ZyYW1lCisJICAgIHBhY2sgJGNmcmFtZSAtaW4gJHRvcCAtZmlsbCB4IC1wYWR5IDMgLXBhZHggMworCSAgICBzZXQgY2V4cGFuZCBbZXhwciB7JGZsYWdzIGVxICIqIn1dCisJfSBlbHNlIHsKKwkgICAgc2V0IGx4cGFkIDUKKwl9CisKKwlpZiB7JHR5cGUgZXEgImIifSB7CisJICAgIGNoZWNrYnV0dG9uICRjZnJhbWUuY18kaWQgLXRleHQgJHRpdGxlIC12YXJpYWJsZSBuZXd2aWV3b3B0cygkbiwkaWQpCisJICAgIHBhY2sgJGNmcmFtZS5jXyRpZCAtaW4gJGNmcmFtZSAtc2lkZSBsZWZ0IFwKKwkJLXBhZHggW2xpc3QgJGx4cGFkIDBdIC1leHBhbmQgJGNleHBhbmQgLWFuY2hvciB3CisJfSBlbHNlaWYge1tyZWdleHAge150KFxkKykkfSAkdHlwZSB0eXBlIHN6XX0geworCSAgICBtZXNzYWdlICRjZnJhbWUubF8kaWQgLWFzcGVjdCAxNTAwIC10ZXh0ICR0aXRsZQorCSAgICBlbnRyeSAkY2ZyYW1lLmVfJGlkIC13aWR0aCAkc3ogLWJhY2tncm91bmQgJGJnY29sb3IgXAorCQktdGV4dHZhcmlhYmxlIG5ld3ZpZXdvcHRzKCRuLCRpZCkKKwkgICAgcGFjayAkY2ZyYW1lLmxfJGlkIC1pbiAkY2ZyYW1lIC1zaWRlIGxlZnQgLXBhZHggW2xpc3QgJGx4cGFkIDBdCisJICAgIHBhY2sgJGNmcmFtZS5lXyRpZCAtaW4gJGNmcmFtZSAtc2lkZSBsZWZ0IC1leHBhbmQgMSAtZmlsbCB4CisJfSBlbHNlaWYge1tyZWdleHAge150KFxkKyk9JH0gJHR5cGUgdHlwZSBzel19IHsKKwkgICAgbWVzc2FnZSAkY2ZyYW1lLmxfJGlkIC1hc3BlY3QgMTUwMCAtdGV4dCAkdGl0bGUKKwkgICAgZW50cnkgJGNmcmFtZS5lXyRpZCAtd2lkdGggJHN6IC1iYWNrZ3JvdW5kICRiZ2NvbG9yIFwKKwkJLXRleHR2YXJpYWJsZSBuZXd2aWV3b3B0cygkbiwkaWQpCisJICAgIHBhY2sgJGNmcmFtZS5sXyRpZCAtaW4gJGNmcmFtZSAtc2lkZSB0b3AgLXBhZHkgW2xpc3QgMyAwXSAtYW5jaG9yIHcKKwkgICAgcGFjayAkY2ZyYW1lLmVfJGlkIC1pbiAkY2ZyYW1lIC1zaWRlIHRvcCAtZmlsbCB4CisJfQorICAgIH0KKworICAgICMgUGF0aCBsaXN0CisgICAgbWVzc2FnZSAkdG9wLmwgLWFzcGVjdCAxNTAwIFwKIAktdGV4dCBbbWMgIkVudGVyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byBpbmNsdWRlLCBvbmUgcGVyIGxpbmU6Il0KLSAgICBncmlkICR0b3AubCAtIC1zdGlja3kgdwotICAgIHRleHQgJHRvcC50IC13aWR0aCA0MCAtaGVpZ2h0IDEwIC1iYWNrZ3JvdW5kICRiZ2NvbG9yIC1mb250IHVpZm9udAorICAgIHBhY2sgJHRvcC5sIC1pbiAkdG9wIC1zaWRlIHRvcCAtcGFkeSBbbGlzdCA3IDBdIC1hbmNob3IgdyAtcGFkeCAzCisgICAgdGV4dCAkdG9wLnQgLXdpZHRoIDQwIC1oZWlnaHQgNSAtYmFja2dyb3VuZCAkYmdjb2xvciAtZm9udCB1aWZvbnQKICAgICBpZiB7W2luZm8gZXhpc3RzIHZpZXdmaWxlcygkbildfSB7CiAJZm9yZWFjaCBmICR2aWV3ZmlsZXMoJG4pIHsKIAkgICAgJHRvcC50IGluc2VydCBlbmQgJGYKQEAgLTMxOTIsMTQgKzM4MDYsMTkgQEAKIAkkdG9wLnQgZGVsZXRlIHtlbmQgLSAxY30gZW5kCiAJJHRvcC50IG1hcmsgc2V0IGluc2VydCAwLjAKICAgICB9Ci0gICAgZ3JpZCAkdG9wLnQgLSAtc3RpY2t5IGV3IC1wYWR4IDUKKyAgICBwYWNrICR0b3AudCAtaW4gJHRvcCAtc2lkZSB0b3AgLXBhZHkgW2xpc3QgMCA1XSAtZmlsbCBib3RoIC1leHBhbmQgMSAtcGFkeCAzCiAgICAgZnJhbWUgJHRvcC5idXRzCiAgICAgYnV0dG9uICR0b3AuYnV0cy5vayAtdGV4dCBbbWMgIk9LIl0gLWNvbW1hbmQgW2xpc3QgbmV3dmlld29rICR0b3AgJG5dCisgICAgYnV0dG9uICR0b3AuYnV0cy5hcHBseSAtdGV4dCBbbWMgIkFwcGx5IChGNSkiXSAtY29tbWFuZCBbbGlzdCBuZXd2aWV3b2sgJHRvcCAkbiAxXQogICAgIGJ1dHRvbiAkdG9wLmJ1dHMuY2FuIC10ZXh0IFttYyAiQ2FuY2VsIl0gLWNvbW1hbmQgW2xpc3QgZGVzdHJveSAkdG9wXQotICAgIGdyaWQgJHRvcC5idXRzLm9rICR0b3AuYnV0cy5jYW4KKyAgICBiaW5kICR0b3AgPENvbnRyb2wtUmV0dXJuPiBbbGlzdCBuZXd2aWV3b2sgJHRvcCAkbl0KKyAgICBiaW5kICR0b3AgPEY1PiBbbGlzdCBuZXd2aWV3b2sgJHRvcCAkbiAxXQorICAgIGJpbmQgJHRvcCA8RXNjYXBlPiBbbGlzdCBkZXN0cm95ICR0b3BdCisgICAgZ3JpZCAkdG9wLmJ1dHMub2sgJHRvcC5idXRzLmFwcGx5ICR0b3AuYnV0cy5jYW4KICAgICBncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMCAtd2VpZ2h0IDEgLXVuaWZvcm0gYQogICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAxIC13ZWlnaHQgMSAtdW5pZm9ybSBhCi0gICAgZ3JpZCAkdG9wLmJ1dHMgLSAtcGFkeSAxMCAtc3RpY2t5IGV3CisgICAgZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcC5idXRzIDIgLXdlaWdodCAxIC11bmlmb3JtIGEKKyAgICBwYWNrICR0b3AuYnV0cyAtaW4gJHRvcCAtc2lkZSB0b3AgLWZpbGwgeAogICAgIGZvY3VzICR0b3AudAogfQogCkBAIC0zMjIwLDE3ICszODM5LDE1IEBACiAgICAgIyBkb3ZpZXdtZW51ICR2aWV3aGxtZW51IDEgW2xpc3QgYWRkdmhpZ2hsaWdodCAkbl0gJG9wICRhcmdzCiB9CiAKLXByb2MgbmV3dmlld29rIHt0b3Agbn0geworcHJvYyBuZXd2aWV3b2sge3RvcCBuIHthcHBseSAwfX0gewogICAgIGdsb2JhbCBuZXh0dmlld251bSBuZXd2aWV3cGVybSBuZXd2aWV3bmFtZSBuZXdpc2hpZ2hsaWdodAogICAgIGdsb2JhbCB2aWV3bmFtZSB2aWV3ZmlsZXMgdmlld3Blcm0gc2VsZWN0ZWR2aWV3IGN1cnZpZXcKLSAgICBnbG9iYWwgdmlld2FyZ3MgbmV3dmlld2FyZ3Mgdmlld2FyZ3NjbWQgbmV3dmlld2FyZ3NjbWQgdmlld2hsbWVudQorICAgIGdsb2JhbCB2aWV3YXJncyB2aWV3YXJnc2NtZCBuZXd2aWV3b3B0cyB2aWV3aGxtZW51CiAKICAgICBpZiB7W2NhdGNoIHsKLQlzZXQgbmV3YXJncyBbc2hlbGxzcGxpdCAkbmV3dmlld2FyZ3MoJG4pXQorCXNldCBuZXdhcmdzIFtlbmNvZGVfdmlld19vcHRzICRuXQogICAgIH0gZXJyXX0gewotCWVycm9yX3BvcHVwICJbbWMgIkVycm9yIGluIGNvbW1pdCBzZWxlY3Rpb24gYXJndW1lbnRzOiJdICRlcnIiCi0Jd20gcmFpc2UgJHRvcAotCWZvY3VzICR0b3AKKwllcnJvcl9wb3B1cCAiW21jICJFcnJvciBpbiBjb21taXQgc2VsZWN0aW9uIGFyZ3VtZW50czoiXSAkZXJyIiAkdG9wCiAJcmV0dXJuCiAgICAgfQogICAgIHNldCBmaWxlcyB7fQpAQCAtMzI0NCwxMCArMzg2MSwxMCBAQAogCSMgY3JlYXRpbmcgYSBuZXcgdmlldwogCWluY3IgbmV4dHZpZXdudW0KIAlzZXQgdmlld25hbWUoJG4pICRuZXd2aWV3bmFtZSgkbikKLQlzZXQgdmlld3Blcm0oJG4pICRuZXd2aWV3cGVybSgkbikKKwlzZXQgdmlld3Blcm0oJG4pICRuZXd2aWV3b3B0cygkbixwZXJtKQogCXNldCB2aWV3ZmlsZXMoJG4pICRmaWxlcwogCXNldCB2aWV3YXJncygkbikgJG5ld2FyZ3MKLQlzZXQgdmlld2FyZ3NjbWQoJG4pICRuZXd2aWV3YXJnc2NtZCgkbikKKwlzZXQgdmlld2FyZ3NjbWQoJG4pICRuZXd2aWV3b3B0cygkbixjbWQpCiAJYWRkdmlld21lbnUgJG4KIAlpZiB7ISRuZXdpc2hpZ2hsaWdodH0gewogCSAgICBydW4gc2hvd3ZpZXcgJG4KQEAgLTMyNTYsNyArMzg3Myw3IEBACiAJfQogICAgIH0gZWxzZSB7CiAJIyBlZGl0aW5nIGFuIGV4aXN0aW5nIHZpZXcKLQlzZXQgdmlld3Blcm0oJG4pICRuZXd2aWV3cGVybSgkbikKKwlzZXQgdmlld3Blcm0oJG4pICRuZXd2aWV3b3B0cygkbixwZXJtKQogCWlmIHskbmV3dmlld25hbWUoJG4pIG5lICR2aWV3bmFtZSgkbil9IHsKIAkgICAgc2V0IHZpZXduYW1lKCRuKSAkbmV3dmlld25hbWUoJG4pCiAJICAgIGRvdmlld21lbnUgLmJhci52aWV3IDUgW2xpc3Qgc2hvd3ZpZXcgJG5dIFwKQEAgLTMyNjUsMTUgKzM4ODIsMTYgQEAKIAkJIyBlbnRyeWNvbmYgW2xpc3QgLWxhYmVsICR2aWV3bmFtZSgkbikgLXZhbHVlICR2aWV3bmFtZSgkbildCiAJfQogCWlmIHskZmlsZXMgbmUgJHZpZXdmaWxlcygkbikgfHwgJG5ld2FyZ3MgbmUgJHZpZXdhcmdzKCRuKSB8fCBcCi0JCSRuZXd2aWV3YXJnc2NtZCgkbikgbmUgJHZpZXdhcmdzY21kKCRuKX0geworCQkkbmV3dmlld29wdHMoJG4sY21kKSBuZSAkdmlld2FyZ3NjbWQoJG4pfSB7CiAJICAgIHNldCB2aWV3ZmlsZXMoJG4pICRmaWxlcwogCSAgICBzZXQgdmlld2FyZ3MoJG4pICRuZXdhcmdzCi0JICAgIHNldCB2aWV3YXJnc2NtZCgkbikgJG5ld3ZpZXdhcmdzY21kKCRuKQorCSAgICBzZXQgdmlld2FyZ3NjbWQoJG4pICRuZXd2aWV3b3B0cygkbixjbWQpCiAJICAgIGlmIHskY3VydmlldyA9PSAkbn0gewogCQlydW4gcmVsb2FkY29tbWl0cwogCSAgICB9CiAJfQogICAgIH0KKyAgICBpZiB7JGFwcGx5fSByZXR1cm4KICAgICBjYXRjaCB7ZGVzdHJveSAkdG9wfQogfQogCkBAIC0zMzQyLDggKzM5NjAsOCBAQAogCiAgICAgc2V0IGN1cnZpZXcgJG4KICAgICBzZXQgc2VsZWN0ZWR2aWV3ICRuCi0gICAgLmJhci52aWV3IGVudHJ5Y29uZiBbbWMgIkVkaXQgdmlldy4uLiJdIC1zdGF0ZSBbZXhwciB7JG4gPT0gMD8gImRpc2FibGVkIjogIm5vcm1hbCJ9XQotICAgIC5iYXIudmlldyBlbnRyeWNvbmYgW21jICJEZWxldGUgdmlldyJdIC1zdGF0ZSBbZXhwciB7JG4gPT0gMD8gImRpc2FibGVkIjogIm5vcm1hbCJ9XQorICAgIC5iYXIudmlldyBlbnRyeWNvbmYgW21jYSAiRWRpdCB2aWV3Li4uIl0gLXN0YXRlIFtleHByIHskbiA9PSAwPyAiZGlzYWJsZWQiOiAibm9ybWFsIn1dCisgICAgLmJhci52aWV3IGVudHJ5Y29uZiBbbWNhICJEZWxldGUgdmlldyJdIC1zdGF0ZSBbZXhwciB7JG4gPT0gMD8gImRpc2FibGVkIjogIm5vcm1hbCJ9XQogCiAgICAgcnVuIHJlZmlsbF9yZWZsaXN0CiAgICAgaWYgeyFbaW5mbyBleGlzdHMgdmlld2NvbXBsZXRlKCRuKV19IHsKQEAgLTM0MjQsMjggKzQwNDIsMzEgQEAKICAgICByZXR1cm4gMAogfQogCi1wcm9jIGJvbGRlbiB7cm93IGZvbnR9IHsKLSAgICBnbG9iYWwgY2FudiBsaW5laHRhZyBzZWxlY3RlZGxpbmUgYm9sZHJvd3MKK3Byb2MgYm9sZGVuIHtpZCBmb250fSB7CisgICAgZ2xvYmFsIGNhbnYgbGluZWh0YWcgY3VycmVudGlkIGJvbGRpZHMgbmVlZF9yZWRpc3BsYXkKIAotICAgIGxhcHBlbmQgYm9sZHJvd3MgJHJvdwotICAgICRjYW52IGl0ZW1jb25mICRsaW5laHRhZygkcm93KSAtZm9udCAkZm9udAotICAgIGlmIHskcm93ID09ICRzZWxlY3RlZGxpbmV9IHsKKyAgICAjIG5lZWRfcmVkaXNwbGF5ID0gMSBtZWFucyB0aGUgZGlzcGxheSBpcyBzdGFsZSBhbmQgYWJvdXQgdG8gYmUgcmVkcmF3bgorICAgIGlmIHskbmVlZF9yZWRpc3BsYXl9IHJldHVybgorICAgIGxhcHBlbmQgYm9sZGlkcyAkaWQKKyAgICAkY2FudiBpdGVtY29uZiAkbGluZWh0YWcoJGlkKSAtZm9udCAkZm9udAorICAgIGlmIHtbaW5mbyBleGlzdHMgY3VycmVudGlkXSAmJiAkaWQgZXEgJGN1cnJlbnRpZH0gewogCSRjYW52IGRlbGV0ZSBzZWNzZWwKLQlzZXQgdCBbZXZhbCAkY2FudiBjcmVhdGUgcmVjdCBbJGNhbnYgYmJveCAkbGluZWh0YWcoJHJvdyldIFwKKwlzZXQgdCBbZXZhbCAkY2FudiBjcmVhdGUgcmVjdCBbJGNhbnYgYmJveCAkbGluZWh0YWcoJGlkKV0gXAogCQkgICAtb3V0bGluZSB7e319IC10YWdzIHNlY3NlbCBcCiAJCSAgIC1maWxsIFskY2FudiBjZ2V0IC1zZWxlY3RiYWNrZ3JvdW5kXV0KIAkkY2FudiBsb3dlciAkdAogICAgIH0KIH0KIAotcHJvYyBib2xkZW5fbmFtZSB7cm93IGZvbnR9IHsKLSAgICBnbG9iYWwgY2FudjIgbGluZW50YWcgc2VsZWN0ZWRsaW5lIGJvbGRuYW1lcm93cworcHJvYyBib2xkZW5fbmFtZSB7aWQgZm9udH0geworICAgIGdsb2JhbCBjYW52MiBsaW5lbnRhZyBjdXJyZW50aWQgYm9sZG5hbWVpZHMgbmVlZF9yZWRpc3BsYXkKIAotICAgIGxhcHBlbmQgYm9sZG5hbWVyb3dzICRyb3cKLSAgICAkY2FudjIgaXRlbWNvbmYgJGxpbmVudGFnKCRyb3cpIC1mb250ICRmb250Ci0gICAgaWYgeyRyb3cgPT0gJHNlbGVjdGVkbGluZX0geworICAgIGlmIHskbmVlZF9yZWRpc3BsYXl9IHJldHVybgorICAgIGxhcHBlbmQgYm9sZG5hbWVpZHMgJGlkCisgICAgJGNhbnYyIGl0ZW1jb25mICRsaW5lbnRhZygkaWQpIC1mb250ICRmb250CisgICAgaWYge1tpbmZvIGV4aXN0cyBjdXJyZW50aWRdICYmICRpZCBlcSAkY3VycmVudGlkfSB7CiAJJGNhbnYyIGRlbGV0ZSBzZWNzZWwKLQlzZXQgdCBbZXZhbCAkY2FudjIgY3JlYXRlIHJlY3QgWyRjYW52MiBiYm94ICRsaW5lbnRhZygkcm93KV0gXAorCXNldCB0IFtldmFsICRjYW52MiBjcmVhdGUgcmVjdCBbJGNhbnYyIGJib3ggJGxpbmVudGFnKCRpZCldIFwKIAkJICAgLW91dGxpbmUge3t9fSAtdGFncyBzZWNzZWwgXAogCQkgICAtZmlsbCBbJGNhbnYyIGNnZXQgLXNlbGVjdGJhY2tncm91bmRdXQogCSRjYW52MiBsb3dlciAkdApAQCAtMzQ1MywxNyArNDA3NCwxNyBAQAogfQogCiBwcm9jIHVuYm9sZGVuIHt9IHsKLSAgICBnbG9iYWwgYm9sZHJvd3MKKyAgICBnbG9iYWwgYm9sZGlkcwogCiAgICAgc2V0IHN0aWxsYm9sZCB7fQotICAgIGZvcmVhY2ggcm93ICRib2xkcm93cyB7Ci0JaWYgeyFbaXNoaWdobGlnaHRlZCBbY29tbWl0b25yb3cgJHJvd11dfSB7Ci0JICAgIGJvbGRlbiAkcm93IG1haW5mb250CisgICAgZm9yZWFjaCBpZCAkYm9sZGlkcyB7CisJaWYgeyFbaXNoaWdobGlnaHRlZCAkaWRdfSB7CisJICAgIGJvbGRlbiAkaWQgbWFpbmZvbnQKIAl9IGVsc2UgewotCSAgICBsYXBwZW5kIHN0aWxsYm9sZCAkcm93CisJICAgIGxhcHBlbmQgc3RpbGxib2xkICRpZAogCX0KICAgICB9Ci0gICAgc2V0IGJvbGRyb3dzICRzdGlsbGJvbGQKKyAgICBzZXQgYm9sZGlkcyAkc3RpbGxib2xkCiB9CiAKIHByb2MgYWRkdmhpZ2hsaWdodCB7bn0gewpAQCAtMzUwNCw3ICs0MTI1LDcgQEAKIAkgICAgc2V0IHJvdyBbcm93b2Zjb21taXQgJGlkXQogCSAgICBpZiB7JHIwIDw9ICRyb3cgJiYgJHJvdyA8PSAkcjF9IHsKIAkJaWYgeyFbaGlnaGxpZ2h0ZWQgJHJvd119IHsKLQkJICAgIGJvbGRlbiAkcm93IG1haW5mb250Ym9sZAorCQkgICAgYm9sZGVuICRpZCBtYWluZm9udGJvbGQKIAkJfQogCQlzZXQgdmhpZ2hsaWdodHMoJGlkKSAxCiAJICAgIH0KQEAgLTM1MTksNyArNDE0MCw3IEBACiAKICAgICBpZiB7W2NvbW1pdGludmlldyAkaWQgJGhsdmlld119IHsKIAlpZiB7W2luZm8gZXhpc3RzIGlkZHJhd24oJGlkKV0gJiYgIVtpc2hpZ2hsaWdodGVkICRpZF19IHsKLQkgICAgYm9sZGVuICRyb3cgbWFpbmZvbnRib2xkCisJICAgIGJvbGRlbiAkaWQgbWFpbmZvbnRib2xkCiAJfQogCXNldCB2aGlnaGxpZ2h0cygkaWQpIDEKICAgICB9IGVsc2UgewpAQCAtMzUyOSw3ICs0MTUwLDcgQEAKIAogcHJvYyBoZmlsZXNfY2hhbmdlIHt9IHsKICAgICBnbG9iYWwgaGlnaGxpZ2h0X2ZpbGVzIGZpbGVoaWdobGlnaHQgZmhpZ2hsaWdodHMgZmhfc2VyaWFsCi0gICAgZ2xvYmFsIGhpZ2hsaWdodF9wYXRocyBnZHR0eXBlCisgICAgZ2xvYmFsIGhpZ2hsaWdodF9wYXRocwogCiAgICAgaWYge1tpbmZvIGV4aXN0cyBmaWxlaGlnaGxpZ2h0XX0gewogCSMgZGVsZXRlIHByZXZpb3VzIGhpZ2hsaWdodHMKQEAgLTM1ODcsMTUgKzQyMDgsMTUgQEAKIH0KIAogcHJvYyBmaW5kY29tX2NoYW5nZSBhcmdzIHsKLSAgICBnbG9iYWwgbmhpZ2hsaWdodHMgYm9sZG5hbWVyb3dzCisgICAgZ2xvYmFsIG5oaWdobGlnaHRzIGJvbGRuYW1laWRzCiAgICAgZ2xvYmFsIGZpbmRwYXR0ZXJuIGZpbmR0eXBlIGZpbmRzdHJpbmcgZ2R0dHlwZQogCiAgICAgc3RvcGZpbmRpbmcKICAgICAjIGRlbGV0ZSBwcmV2aW91cyBoaWdobGlnaHRzLCBpZiBhbnkKLSAgICBmb3JlYWNoIHJvdyAkYm9sZG5hbWVyb3dzIHsKLQlib2xkZW5fbmFtZSAkcm93IG1haW5mb250CisgICAgZm9yZWFjaCBpZCAkYm9sZG5hbWVpZHMgeworCWJvbGRlbl9uYW1lICRpZCBtYWluZm9udAogICAgIH0KLSAgICBzZXQgYm9sZG5hbWVyb3dzIHt9CisgICAgc2V0IGJvbGRuYW1laWRzIHt9CiAgICAgY2F0Y2gge3Vuc2V0IG5oaWdobGlnaHRzfQogICAgIHVuYm9sZGVuCiAgICAgdW5tYXJrbWF0Y2hlcwpAQCAtMzY4NCw5ICs0MzA1LDggQEAKIAlzZXQgZmhsX2xpc3QgW2xyYW5nZSAkZmhsX2xpc3QgW2V4cHIgeyRpKzF9XSBlbmRdCiAJaWYgeyRsaW5lIGVxIHt9fSBjb250aW51ZQogCWlmIHshW2NvbW1pdGludmlldyAkbGluZSAkY3Vydmlld119IGNvbnRpbnVlCi0Jc2V0IHJvdyBbcm93b2Zjb21taXQgJGxpbmVdCiAJaWYge1tpbmZvIGV4aXN0cyBpZGRyYXduKCRsaW5lKV0gJiYgIVtpc2hpZ2hsaWdodGVkICRsaW5lXX0gewotCSAgICBib2xkZW4gJHJvdyBtYWluZm9udGJvbGQKKwkgICAgYm9sZGVuICRsaW5lIG1haW5mb250Ym9sZAogCX0KIAlzZXQgZmhpZ2hsaWdodHMoJGxpbmUpIDEKICAgICB9CkBAIC0zNzM4LDkgKzQzNTgsOSBAQAogICAgIH0KICAgICBpZiB7JGlzYm9sZCAmJiBbaW5mbyBleGlzdHMgaWRkcmF3bigkaWQpXX0gewogCWlmIHshW2lzaGlnaGxpZ2h0ZWQgJGlkXX0gewotCSAgICBib2xkZW4gJHJvdyBtYWluZm9udGJvbGQKKwkgICAgYm9sZGVuICRpZCBtYWluZm9udGJvbGQKIAkgICAgaWYgeyRpc2JvbGQgPiAxfSB7Ci0JCWJvbGRlbl9uYW1lICRyb3cgbWFpbmZvbnRib2xkCisJCWJvbGRlbl9uYW1lICRpZCBtYWluZm9udGJvbGQKIAkgICAgfQogCX0KIAlpZiB7JG1hcmtpbmdtYXRjaGVzfSB7CkBAIC0zNzYwLDE1ICs0MzgwLDE1IEBACiAgICAgaWYgeyRmaW5kbG9jIGVxIFttYyAiQWxsIGZpZWxkcyJdIHx8ICRmaW5kbG9jIGVxIFttYyAiSGVhZGxpbmUiXX0gewogCXNldCBtIFtmaW5kbWF0Y2hlcyAkaGVhZGxpbmVdCiAJaWYgeyRtIG5lIHt9fSB7Ci0JICAgIG1hcmttYXRjaGVzICRjYW52ICRyb3cgJGhlYWRsaW5lICRsaW5laHRhZygkcm93KSAkbSBcCi0JCVskY2FudiBpdGVtY2dldCAkbGluZWh0YWcoJHJvdykgLWZvbnRdICRyb3cKKwkgICAgbWFya21hdGNoZXMgJGNhbnYgJHJvdyAkaGVhZGxpbmUgJGxpbmVodGFnKCRpZCkgJG0gXAorCQlbJGNhbnYgaXRlbWNnZXQgJGxpbmVodGFnKCRpZCkgLWZvbnRdICRyb3cKIAl9CiAgICAgfQogICAgIGlmIHskZmluZGxvYyBlcSBbbWMgIkFsbCBmaWVsZHMiXSB8fCAkZmluZGxvYyBlcSBbbWMgIkF1dGhvciJdfSB7CiAJc2V0IG0gW2ZpbmRtYXRjaGVzICRhdXRob3JdCiAJaWYgeyRtIG5lIHt9fSB7Ci0JICAgIG1hcmttYXRjaGVzICRjYW52MiAkcm93ICRhdXRob3IgJGxpbmVudGFnKCRyb3cpICRtIFwKLQkJWyRjYW52MiBpdGVtY2dldCAkbGluZW50YWcoJHJvdykgLWZvbnRdICRyb3cKKwkgICAgbWFya21hdGNoZXMgJGNhbnYyICRyb3cgJGF1dGhvciAkbGluZW50YWcoJGlkKSAkbSBcCisJCVskY2FudjIgaXRlbWNnZXQgJGxpbmVudGFnKCRpZCkgLWZvbnRdICRyb3cKIAl9CiAgICAgfQogfQpAQCAtMzg5Myw3ICs0NTEzLDcgQEAKICAgICB9CiAgICAgaWYge1tpbmZvIGV4aXN0cyBpZGRyYXduKCRpZCldfSB7CiAJaWYgeyRpc2JvbGQgJiYgIVtpc2hpZ2hsaWdodGVkICRpZF19IHsKLQkgICAgYm9sZGVuICRyb3cgbWFpbmZvbnRib2xkCisJICAgIGJvbGRlbiAkaWQgbWFpbmZvbnRib2xkCiAJfQogICAgIH0KICAgICBzZXQgcmhpZ2hsaWdodHMoJGlkKSAkaXNib2xkCkBAIC00MDQ3LDcgKzQ2NjcsNyBAQAogcHJvYyBsYXlvdXRtb3JlIHt9IHsKICAgICBnbG9iYWwgY29tbWl0aWR4IHZpZXdjb21wbGV0ZSBjdXJ2aWV3CiAgICAgZ2xvYmFsIG51bWNvbW1pdHMgcGVuZGluZ19zZWxlY3QgY3VydmlldwotICAgIGdsb2JhbCBsYXN0c2Nyb2xsc2V0IGxhc3RzY3JvbGxyb3dzIGNvbW1pdGludGVyZXN0CisgICAgZ2xvYmFsIGxhc3RzY3JvbGxzZXQgbGFzdHNjcm9sbHJvd3MKIAogICAgIGlmIHskbGFzdHNjcm9sbHJvd3MgPCAxMDAgfHwgJHZpZXdjb21wbGV0ZSgkY3VydmlldykgfHwKIAlbY2xvY2sgY2xpY2tzIC1taWxsaXNlY29uZHNdIC0gJGxhc3RzY3JvbGxzZXQgPiA1MDB9IHsKQEAgLTQwNjEsMTQgKzQ2ODEsNTYgQEAKICAgICBkcmF3dmlzaWJsZQogfQogCi1wcm9jIGRvc2hvd2xvY2FsY2hhbmdlcyB7fSB7Ci0gICAgZ2xvYmFsIGN1cnZpZXcgbWFpbmhlYWRpZAorIyBXaXRoIHBhdGggbGltaXRpbmcsIHdlIG1pZ2h0bid0IGdldCB0aGUgYWN0dWFsIEhFQUQgY29tbWl0LAorIyBzbyBhc2sgZ2l0IHJldi1saXN0IHdoYXQgaXMgdGhlIGZpcnN0IGFuY2VzdG9yIG9mIEhFQUQgdGhhdAorIyB0b3VjaGVzIGEgZmlsZSBpbiB0aGUgcGF0aCBsaW1pdC4KK3Byb2MgZ2V0X3ZpZXdtYWluaGVhZCB7dmlld30geworICAgIGdsb2JhbCB2aWV3bWFpbmhlYWRpZCB2ZmlsZWxpbWl0IHZpZXdpbnN0YW5jZXMgbWFpbmhlYWRpZAogCi0gICAgaWYgeyRtYWluaGVhZGlkIGVxIHt9fSByZXR1cm4KLSAgICBpZiB7W2NvbW1pdGludmlldyAkbWFpbmhlYWRpZCAkY3Vydmlld119IHsKKyAgICBjYXRjaCB7CisJc2V0IHJmZCBbb3BlbiBbY29uY2F0IHwgZ2l0IHJldi1saXN0IC0xICRtYWluaGVhZGlkIFwKKwkJCSAgIC0tICR2ZmlsZWxpbWl0KCR2aWV3KV0gcl0KKwlzZXQgaiBbcmVnX2luc3RhbmNlICRyZmRdCisJbGFwcGVuZCB2aWV3aW5zdGFuY2VzKCR2aWV3KSAkagorCWZjb25maWd1cmUgJHJmZCAtYmxvY2tpbmcgMAorCWZpbGVydW4gJHJmZCBbbGlzdCBnZXR2aWV3aGVhZCAkcmZkICRqICR2aWV3XQorCXNldCB2aWV3bWFpbmhlYWRpZCgkY3Vydmlldykge30KKyAgICB9Cit9CisKKyMgZ2l0IHJldi1saXN0IHNob3VsZCBnaXZlIHVzIGp1c3QgMSBsaW5lIHRvIHVzZSBhcyB2aWV3bWFpbmhlYWRpZCgkdmlldykKK3Byb2MgZ2V0dmlld2hlYWQge2ZkIGluc3Qgdmlld30geworICAgIGdsb2JhbCB2aWV3bWFpbmhlYWRpZCBjb21tZmQgY3VydmlldyB2aWV3aW5zdGFuY2VzIHNob3dsb2NhbGNoYW5nZXMKKworICAgIHNldCBpZCB7fQorICAgIGlmIHtbZ2V0cyAkZmQgbGluZV0gPCAwfSB7CisJaWYgeyFbZW9mICRmZF19IHsKKwkgICAgcmV0dXJuIDEKKwl9CisgICAgfSBlbHNlaWYge1tzdHJpbmcgbGVuZ3RoICRsaW5lXSA9PSA0MCAmJiBbc3RyaW5nIGlzIHhkaWdpdCAkbGluZV19IHsKKwlzZXQgaWQgJGxpbmUKKyAgICB9CisgICAgc2V0IHZpZXdtYWluaGVhZGlkKCR2aWV3KSAkaWQKKyAgICBjbG9zZSAkZmQKKyAgICB1bnNldCBjb21tZmQoJGluc3QpCisgICAgc2V0IGkgW2xzZWFyY2ggLWV4YWN0ICR2aWV3aW5zdGFuY2VzKCR2aWV3KSAkaW5zdF0KKyAgICBpZiB7JGkgPj0gMH0geworCXNldCB2aWV3aW5zdGFuY2VzKCR2aWV3KSBbbHJlcGxhY2UgJHZpZXdpbnN0YW5jZXMoJHZpZXcpICRpICRpXQorICAgIH0KKyAgICBpZiB7JHNob3dsb2NhbGNoYW5nZXMgJiYgJGlkIG5lIHt9ICYmICR2aWV3ID09ICRjdXJ2aWV3fSB7CisJZG9zaG93bG9jYWxjaGFuZ2VzCisgICAgfQorICAgIHJldHVybiAwCit9CisKK3Byb2MgZG9zaG93bG9jYWxjaGFuZ2VzIHt9IHsKKyAgICBnbG9iYWwgY3VydmlldyB2aWV3bWFpbmhlYWRpZAorCisgICAgaWYgeyR2aWV3bWFpbmhlYWRpZCgkY3VydmlldykgZXEge319IHJldHVybgorICAgIGlmIHtbY29tbWl0aW52aWV3ICR2aWV3bWFpbmhlYWRpZCgkY3VydmlldykgJGN1cnZpZXddfSB7CiAJZG9kaWZmaW5kZXgKICAgICB9IGVsc2UgewotCWxhcHBlbmQgY29tbWl0aW50ZXJlc3QoJG1haW5oZWFkaWQpIHtkb2RpZmZpbmRleH0KKwlpbnRlcmVzdGVkaW4gJHZpZXdtYWluaGVhZGlkKCRjdXJ2aWV3KSBkb2RpZmZpbmRleAogICAgIH0KIH0KIApAQCAtNDA4NiwxOSArNDc0OCwyNCBAQAogCiAjIHNwYXduIG9mZiBhIHByb2Nlc3MgdG8gZG8gZ2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgSEVBRAogcHJvYyBkb2RpZmZpbmRleCB7fSB7Ci0gICAgZ2xvYmFsIGxzZXJpYWwgc2hvd2xvY2FsY2hhbmdlcworICAgIGdsb2JhbCBsc2VyaWFsIHNob3dsb2NhbGNoYW5nZXMgdmZpbGVsaW1pdCBjdXJ2aWV3CiAgICAgZ2xvYmFsIGlzd29ya3RyZWUKIAogICAgIGlmIHshJHNob3dsb2NhbGNoYW5nZXMgfHwgISRpc3dvcmt0cmVlfSByZXR1cm4KICAgICBpbmNyIGxzZXJpYWwKLSAgICBzZXQgZmQgW29wZW4gInxnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCBIRUFEIiByXQorICAgIHNldCBjbWQgInxnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCBIRUFEIgorICAgIGlmIHskdmZpbGVsaW1pdCgkY3VydmlldykgbmUge319IHsKKwlzZXQgY21kIFtjb25jYXQgJGNtZCAtLSAkdmZpbGVsaW1pdCgkY3VydmlldyldCisgICAgfQorICAgIHNldCBmZCBbb3BlbiAkY21kIHJdCiAgICAgZmNvbmZpZ3VyZSAkZmQgLWJsb2NraW5nIDAKICAgICBzZXQgaSBbcmVnX2luc3RhbmNlICRmZF0KICAgICBmaWxlcnVuICRmZCBbbGlzdCByZWFkZGlmZmluZGV4ICRmZCAkbHNlcmlhbCAkaV0KIH0KIAogcHJvYyByZWFkZGlmZmluZGV4IHtmZCBzZXJpYWwgaW5zdH0gewotICAgIGdsb2JhbCBtYWluaGVhZGlkIG51bGxpZCBudWxsaWQyIGN1cnZpZXcgY29tbWl0aW5mbyBjb21taXRkYXRhIGxzZXJpYWwKKyAgICBnbG9iYWwgdmlld21haW5oZWFkaWQgbnVsbGlkIG51bGxpZDIgY3VydmlldyBjb21taXRpbmZvIGNvbW1pdGRhdGEgbHNlcmlhbAorICAgIGdsb2JhbCB2ZmlsZWxpbWl0CiAKICAgICBzZXQgaXNkaWZmIDEKICAgICBpZiB7W2dldHMgJGZkIGxpbmVdIDwgMH0gewpAQCAtNDExNSw3ICs0NzgyLDExIEBACiAgICAgfQogCiAgICAgIyBub3cgc2VlIGlmIHRoZXJlIGFyZSBhbnkgbG9jYWwgY2hhbmdlcyBub3QgY2hlY2tlZCBpbiB0byB0aGUgaW5kZXgKLSAgICBzZXQgZmQgW29wZW4gInxnaXQgZGlmZi1maWxlcyIgcl0KKyAgICBzZXQgY21kICJ8Z2l0IGRpZmYtZmlsZXMiCisgICAgaWYgeyR2ZmlsZWxpbWl0KCRjdXJ2aWV3KSBuZSB7fX0geworCXNldCBjbWQgW2NvbmNhdCAkY21kIC0tICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KV0KKyAgICB9CisgICAgc2V0IGZkIFtvcGVuICRjbWQgcl0KICAgICBmY29uZmlndXJlICRmZCAtYmxvY2tpbmcgMAogICAgIHNldCBpIFtyZWdfaW5zdGFuY2UgJGZkXQogICAgIGZpbGVydW4gJGZkIFtsaXN0IHJlYWRkaWZmZmlsZXMgJGZkICRzZXJpYWwgJGldCkBAIC00MTI4LDE1ICs0Nzk5LDE4IEBACiAJaWYge1tjb21taXRpbnZpZXcgJG51bGxpZCAkY3Vydmlld119IHsKIAkgICAgcmVtb3ZlZmFrZXJvdyAkbnVsbGlkCiAJfQotCWluc2VydGZha2Vyb3cgJG51bGxpZDIgJG1haW5oZWFkaWQKKwlpbnNlcnRmYWtlcm93ICRudWxsaWQyICR2aWV3bWFpbmhlYWRpZCgkY3VydmlldykKICAgICB9IGVsc2VpZiB7ISRpc2RpZmYgJiYgW2NvbW1pdGludmlldyAkbnVsbGlkMiAkY3Vydmlld119IHsKKwlpZiB7W2NvbW1pdGludmlldyAkbnVsbGlkICRjdXJ2aWV3XX0geworCSAgICByZW1vdmVmYWtlcm93ICRudWxsaWQKKwl9CiAJcmVtb3ZlZmFrZXJvdyAkbnVsbGlkMgogICAgIH0KICAgICByZXR1cm4gMAogfQogCiBwcm9jIHJlYWRkaWZmZmlsZXMge2ZkIHNlcmlhbCBpbnN0fSB7Ci0gICAgZ2xvYmFsIG1haW5oZWFkaWQgbnVsbGlkIG51bGxpZDIgY3VydmlldworICAgIGdsb2JhbCB2aWV3bWFpbmhlYWRpZCBudWxsaWQgbnVsbGlkMiBjdXJ2aWV3CiAgICAgZ2xvYmFsIGNvbW1pdGluZm8gY29tbWl0ZGF0YSBsc2VyaWFsCiAKICAgICBzZXQgaXNkaWZmIDEKQEAgLTQxNjEsNyArNDgzNSw3IEBACiAJaWYge1tjb21taXRpbnZpZXcgJG51bGxpZDIgJGN1cnZpZXddfSB7CiAJICAgIHNldCBwICRudWxsaWQyCiAJfSBlbHNlIHsKLQkgICAgc2V0IHAgJG1haW5oZWFkaWQKKwkgICAgc2V0IHAgJHZpZXdtYWluaGVhZGlkKCRjdXJ2aWV3KQogCX0KIAlpbnNlcnRmYWtlcm93ICRudWxsaWQgJHAKICAgICB9IGVsc2VpZiB7ISRpc2RpZmYgJiYgW2NvbW1pdGludmlldyAkbnVsbGlkICRjdXJ2aWV3XX0gewpAQCAtNDg4Niw4ICs1NTYwLDggQEAKICAgICBnbG9iYWwgY21pdGxpc3RlZCBjb21taXRpbmZvIHJvd2lkbGlzdCBwYXJlbnRsaXN0CiAgICAgZ2xvYmFsIHJvd3RleHR4IGlkcG9zIGlkdGFncyBpZGhlYWRzIGlkb3RoZXJyZWZzCiAgICAgZ2xvYmFsIGxpbmVodGFnIGxpbmVudGFnIGxpbmVkdGFnIHNlbGVjdGVkbGluZQotICAgIGdsb2JhbCBjYW52eG1heCBib2xkcm93cyBib2xkbmFtZXJvd3MgZmdjb2xvcgotICAgIGdsb2JhbCBtYWluaGVhZGlkIG51bGxpZCBudWxsaWQyIGNpcmNsZWl0ZW0gY2lyY2xlY29sb3JzCisgICAgZ2xvYmFsIGNhbnZ4bWF4IGJvbGRpZHMgYm9sZG5hbWVpZHMgZmdjb2xvcgorICAgIGdsb2JhbCBtYWluaGVhZGlkIG51bGxpZCBudWxsaWQyIGNpcmNsZWl0ZW0gY2lyY2xlY29sb3JzIGN0eGJ1dAogCiAgICAgIyBsaXN0ZWQgaXMgMCBmb3IgYm91bmRhcnksIDEgZm9yIG5vcm1hbCwgMiBmb3IgbmVnYXRpdmUsIDMgZm9yIGxlZnQsIDQgZm9yIHJpZ2h0CiAgICAgc2V0IGxpc3RlZCAkY21pdGxpc3RlZCgkY3VydmlldywkaWQpCkBAIC00OTUxLDIyICs1NjI1LDIyIEBACiAgICAgc2V0IG5mb250IG1haW5mb250CiAgICAgc2V0IGlzYm9sZCBbaXNoaWdobGlnaHRlZCAkaWRdCiAgICAgaWYgeyRpc2JvbGQgPiAwfSB7Ci0JbGFwcGVuZCBib2xkcm93cyAkcm93CisJbGFwcGVuZCBib2xkaWRzICRpZAogCXNldCBmb250IG1haW5mb250Ym9sZAogCWlmIHskaXNib2xkID4gMX0gewotCSAgICBsYXBwZW5kIGJvbGRuYW1lcm93cyAkcm93CisJICAgIGxhcHBlbmQgYm9sZG5hbWVpZHMgJGlkCiAJICAgIHNldCBuZm9udCBtYWluZm9udGJvbGQKIAl9CiAgICAgfQotICAgIHNldCBsaW5laHRhZygkcm93KSBbJGNhbnYgY3JlYXRlIHRleHQgJHh0ICR5IC1hbmNob3IgdyAtZmlsbCAkZmdjb2xvciBcCi0JCQkgICAgLXRleHQgJGhlYWRsaW5lIC1mb250ICRmb250IC10YWdzIHRleHRdCi0gICAgJGNhbnYgYmluZCAkbGluZWh0YWcoJHJvdykgPEJ1dHRvbi0zPiAicm93bWVudSAlWCAlWSAkaWQiCi0gICAgc2V0IGxpbmVudGFnKCRyb3cpIFskY2FudjIgY3JlYXRlIHRleHQgMyAkeSAtYW5jaG9yIHcgLWZpbGwgJGZnY29sb3IgXAotCQkJICAgIC10ZXh0ICRuYW1lIC1mb250ICRuZm9udCAtdGFncyB0ZXh0XQotICAgIHNldCBsaW5lZHRhZygkcm93KSBbJGNhbnYzIGNyZWF0ZSB0ZXh0IDMgJHkgLWFuY2hvciB3IC1maWxsICRmZ2NvbG9yIFwKLQkJCSAgICAtdGV4dCAkZGF0ZSAtZm9udCBtYWluZm9udCAtdGFncyB0ZXh0XQorICAgIHNldCBsaW5laHRhZygkaWQpIFskY2FudiBjcmVhdGUgdGV4dCAkeHQgJHkgLWFuY2hvciB3IC1maWxsICRmZ2NvbG9yIFwKKwkJCSAgIC10ZXh0ICRoZWFkbGluZSAtZm9udCAkZm9udCAtdGFncyB0ZXh0XQorICAgICRjYW52IGJpbmQgJGxpbmVodGFnKCRpZCkgJGN0eGJ1dCAicm93bWVudSAlWCAlWSAkaWQiCisgICAgc2V0IGxpbmVudGFnKCRpZCkgWyRjYW52MiBjcmVhdGUgdGV4dCAzICR5IC1hbmNob3IgdyAtZmlsbCAkZmdjb2xvciBcCisJCQkgICAtdGV4dCAkbmFtZSAtZm9udCAkbmZvbnQgLXRhZ3MgdGV4dF0KKyAgICBzZXQgbGluZWR0YWcoJGlkKSBbJGNhbnYzIGNyZWF0ZSB0ZXh0IDMgJHkgLWFuY2hvciB3IC1maWxsICRmZ2NvbG9yIFwKKwkJCSAgIC10ZXh0ICRkYXRlIC1mb250IG1haW5mb250IC10YWdzIHRleHRdCiAgICAgaWYgeyRzZWxlY3RlZGxpbmUgPT0gJHJvd30gewotCW1ha2Vfc2Vjc2VsICRyb3cKKwltYWtlX3NlY3NlbCAkaWQKICAgICB9CiAgICAgc2V0IHhyIFtleHByIHskeHQgKyBbZm9udCBtZWFzdXJlICRmb250ICRoZWFkbGluZV19XQogICAgIGlmIHskeHIgPiAkY2FudnhtYXh9IHsKQEAgLTUxNzQsNyArNTg0OCw3IEBACiBwcm9jIGNsZWFyX2Rpc3BsYXkge30gewogICAgIGdsb2JhbCBpZGRyYXduIGxpbmVzZWdzIG5lZWRfcmVkaXNwbGF5IG5yb3dzX2RyYXduCiAgICAgZ2xvYmFsIHZoaWdobGlnaHRzIGZoaWdobGlnaHRzIG5oaWdobGlnaHRzIHJoaWdobGlnaHRzCi0gICAgZ2xvYmFsIGxpbmVodGFnIGxpbmVudGFnIGxpbmVkdGFnIGJvbGRyb3dzIGJvbGRuYW1lcm93cworICAgIGdsb2JhbCBsaW5laHRhZyBsaW5lbnRhZyBsaW5lZHRhZyBib2xkaWRzIGJvbGRuYW1laWRzCiAKICAgICBhbGxjYW52cyBkZWxldGUgYWxsCiAgICAgY2F0Y2gge3Vuc2V0IGlkZHJhd259CkBAIC01MTgyLDggKzU4NTYsOCBAQAogICAgIGNhdGNoIHt1bnNldCBsaW5laHRhZ30KICAgICBjYXRjaCB7dW5zZXQgbGluZW50YWd9CiAgICAgY2F0Y2gge3Vuc2V0IGxpbmVkdGFnfQotICAgIHNldCBib2xkcm93cyB7fQotICAgIHNldCBib2xkbmFtZXJvd3Mge30KKyAgICBzZXQgYm9sZGlkcyB7fQorICAgIHNldCBib2xkbmFtZWlkcyB7fQogICAgIGNhdGNoIHt1bnNldCB2aGlnaGxpZ2h0c30KICAgICBjYXRjaCB7dW5zZXQgZmhpZ2hsaWdodHN9CiAgICAgY2F0Y2gge3Vuc2V0IG5oaWdobGlnaHRzfQpAQCAtNTMwMiw3ICs1OTc2LDcgQEAKIHByb2MgZHJhd3RhZ3Mge2lkIHggeHQgeTF9IHsKICAgICBnbG9iYWwgaWR0YWdzIGlkaGVhZHMgaWRvdGhlcnJlZnMgbWFpbmhlYWQKICAgICBnbG9iYWwgbGluZXNwYyBsdGhpY2tuZXNzCi0gICAgZ2xvYmFsIGNhbnYgcm93dGV4dHggY3VydmlldyBmZ2NvbG9yIGJnY29sb3IKKyAgICBnbG9iYWwgY2FudiByb3d0ZXh0eCBjdXJ2aWV3IGZnY29sb3IgYmdjb2xvciBjdHhidXQKIAogICAgIHNldCBtYXJrcyB7fQogICAgIHNldCBudGFncyAwCkBAIC01MzgwLDcgKzYwNTQsNyBAQAogCWlmIHskbnRhZ3MgPj0gMH0gewogCSAgICAkY2FudiBiaW5kICR0IDwxPiBbbGlzdCBzaG93dGFnICR0YWcgMV0KIAl9IGVsc2VpZiB7JG5oZWFkcyA+PSAwfSB7Ci0JICAgICRjYW52IGJpbmQgJHQgPEJ1dHRvbi0zPiBbbGlzdCBoZWFkbWVudSAlWCAlWSAkaWQgJHRhZ10KKwkgICAgJGNhbnYgYmluZCAkdCAkY3R4YnV0IFtsaXN0IGhlYWRtZW51ICVYICVZICRpZCAkdGFnXQogCX0KICAgICB9CiAgICAgcmV0dXJuICR4dApAQCAtNTUwNCw2ICs2MTc4LDcgQEAKIAlzZXQgZnByb2djb29yZCAwCiAJYWRqdXN0cHJvZ3Jlc3MKICAgICB9CisgICAgc3RvcGJsYW1pbmcKIH0KIAogcHJvYyBmaW5kbW9yZSB7fSB7CkBAIC01NjQwLDEwICs2MzE1LDExIEBACiBwcm9jIGZpbmRzZWxlY3RsaW5lIHtsfSB7CiAgICAgZ2xvYmFsIGZpbmRsb2MgY29tbWVudGVuZCBjdGV4dCBmaW5kY3VybGluZSBtYXJraW5nbWF0Y2hlcyBnZHR0eXBlCiAKLSAgICBzZXQgbWFya2luZ21hdGNoZXMgMQorICAgIHNldCBtYXJraW5nbWF0Y2hlcyBbZXhwciB7JGdkdHR5cGUgZXEgW21jICJjb250YWluaW5nOiJdfV0KICAgICBzZXQgZmluZGN1cmxpbmUgJGwKICAgICBzZWxlY3RsaW5lICRsIDEKLSAgICBpZiB7JGZpbmRsb2MgPT0gW21jICJBbGwgZmllbGRzIl0gfHwgJGZpbmRsb2MgPT0gW21jICJDb21tZW50cyJdfSB7CisgICAgaWYgeyRtYXJraW5nbWF0Y2hlcyAmJgorCSgkZmluZGxvYyBlcSBbbWMgIkFsbCBmaWVsZHMiXSB8fCAkZmluZGxvYyBlcSBbbWMgIkNvbW1lbnRzIl0pfSB7CiAJIyBoaWdobGlnaHQgdGhlIG1hdGNoZXMgaW4gdGhlIGNvbW1lbnRzCiAJc2V0IGYgWyRjdGV4dCBnZXQgMS4wICRjb21tZW50ZW5kXQogCXNldCBtYXRjaGVzIFtmaW5kbWF0Y2hlcyAkZl0KQEAgLTU3MjMsMTEgKzYzOTksMTEgQEAKICMgYXBwZW5kIHNvbWUgdGV4dCB0byB0aGUgY3RleHQgd2lkZ2V0LCBhbmQgbWFrZSBhbnkgU0hBMSBJRAogIyB0aGF0IHdlIGtub3cgYWJvdXQgYmUgYSBjbGlja2FibGUgbGluay4KIHByb2MgYXBwZW5kd2l0aGxpbmtzIHt0ZXh0IHRhZ3N9IHsKLSAgICBnbG9iYWwgY3RleHQgbGlua251bSBjdXJ2aWV3IHBlbmRpbmdsaW5rcworICAgIGdsb2JhbCBjdGV4dCBsaW5rbnVtIGN1cnZpZXcKIAogICAgIHNldCBzdGFydCBbJGN0ZXh0IGluZGV4ICJlbmQgLSAxYyJdCiAgICAgJGN0ZXh0IGluc2VydCBlbmQgJHRleHQgJHRhZ3MKLSAgICBzZXQgbGlua3MgW3JlZ2V4cCAtaW5kaWNlcyAtYWxsIC1pbmxpbmUge1swLTlhLWZdezQwfX0gJHRleHRdCisgICAgc2V0IGxpbmtzIFtyZWdleHAgLWluZGljZXMgLWFsbCAtaW5saW5lIHtcbVswLTlhLWZdezYsNDB9XE19ICR0ZXh0XQogICAgIGZvcmVhY2ggbCAkbGlua3MgewogCXNldCBzIFtsaW5kZXggJGwgMF0KIAlzZXQgZSBbbGluZGV4ICRsIDFdCkBAIC01NzQxLDE2ICs2NDE3LDI3IEBACiB9CiAKIHByb2Mgc2V0bGluayB7aWQgbGt9IHsKLSAgICBnbG9iYWwgY3VydmlldyBjdGV4dCBwZW5kaW5nbGlua3MgY29tbWl0aW50ZXJlc3QKKyAgICBnbG9iYWwgY3VydmlldyBjdGV4dCBwZW5kaW5nbGlua3MKIAotICAgIGlmIHtbY29tbWl0aW52aWV3ICRpZCAkY3Vydmlld119IHsKKyAgICBzZXQga25vd24gMAorICAgIGlmIHtbc3RyaW5nIGxlbmd0aCAkaWRdIDwgNDB9IHsKKwlzZXQgbWF0Y2hlcyBbbG9uZ2lkICRpZF0KKwlpZiB7W2xsZW5ndGggJG1hdGNoZXNdID4gMH0geworCSAgICBpZiB7W2xsZW5ndGggJG1hdGNoZXNdID4gMX0gcmV0dXJuCisJICAgIHNldCBrbm93biAxCisJICAgIHNldCBpZCBbbGluZGV4ICRtYXRjaGVzIDBdCisJfQorICAgIH0gZWxzZSB7CisJc2V0IGtub3duIFtjb21taXRpbnZpZXcgJGlkICRjdXJ2aWV3XQorICAgIH0KKyAgICBpZiB7JGtub3dufSB7CiAJJGN0ZXh0IHRhZyBjb25mICRsayAtZm9yZWdyb3VuZCBibHVlIC11bmRlcmxpbmUgMQotCSRjdGV4dCB0YWcgYmluZCAkbGsgPDE+IFtsaXN0IHNlbGVjdGxpbmUgW3Jvd29mY29tbWl0ICRpZF0gMV0KKwkkY3RleHQgdGFnIGJpbmQgJGxrIDwxPiBbbGlzdCBzZWxieWlkICRpZF0KIAkkY3RleHQgdGFnIGJpbmQgJGxrIDxFbnRlcj4ge2xpbmtjdXJzb3IgJVcgMX0KIAkkY3RleHQgdGFnIGJpbmQgJGxrIDxMZWF2ZT4ge2xpbmtjdXJzb3IgJVcgLTF9CiAgICAgfSBlbHNlIHsKIAlsYXBwZW5kIHBlbmRpbmdsaW5rcygkaWQpICRsawotCWxhcHBlbmQgY29tbWl0aW50ZXJlc3QoJGlkKSB7bWFrZWxpbmsgJUl9CisJaW50ZXJlc3RlZGluICRpZCB7bWFrZWxpbmsgJVB9CiAgICAgfQogfQogCkBAIC01ODc5LDI1ICs2NTY2LDI1IEBACiAgICAgfQogfQogCi1wcm9jIG1ha2Vfc2Vjc2VsIHtsfSB7Citwcm9jIG1ha2Vfc2Vjc2VsIHtpZH0gewogICAgIGdsb2JhbCBsaW5laHRhZyBsaW5lbnRhZyBsaW5lZHRhZyBjYW52IGNhbnYyIGNhbnYzCiAKLSAgICBpZiB7IVtpbmZvIGV4aXN0cyBsaW5laHRhZygkbCldfSByZXR1cm4KKyAgICBpZiB7IVtpbmZvIGV4aXN0cyBsaW5laHRhZygkaWQpXX0gcmV0dXJuCiAgICAgJGNhbnYgZGVsZXRlIHNlY3NlbAotICAgIHNldCB0IFtldmFsICRjYW52IGNyZWF0ZSByZWN0IFskY2FudiBiYm94ICRsaW5laHRhZygkbCldIC1vdXRsaW5lIHt7fX0gXAorICAgIHNldCB0IFtldmFsICRjYW52IGNyZWF0ZSByZWN0IFskY2FudiBiYm94ICRsaW5laHRhZygkaWQpXSAtb3V0bGluZSB7e319IFwKIAkgICAgICAgLXRhZ3Mgc2Vjc2VsIC1maWxsIFskY2FudiBjZ2V0IC1zZWxlY3RiYWNrZ3JvdW5kXV0KICAgICAkY2FudiBsb3dlciAkdAogICAgICRjYW52MiBkZWxldGUgc2Vjc2VsCi0gICAgc2V0IHQgW2V2YWwgJGNhbnYyIGNyZWF0ZSByZWN0IFskY2FudjIgYmJveCAkbGluZW50YWcoJGwpXSAtb3V0bGluZSB7e319IFwKKyAgICBzZXQgdCBbZXZhbCAkY2FudjIgY3JlYXRlIHJlY3QgWyRjYW52MiBiYm94ICRsaW5lbnRhZygkaWQpXSAtb3V0bGluZSB7e319IFwKIAkgICAgICAgLXRhZ3Mgc2Vjc2VsIC1maWxsIFskY2FudjIgY2dldCAtc2VsZWN0YmFja2dyb3VuZF1dCiAgICAgJGNhbnYyIGxvd2VyICR0CiAgICAgJGNhbnYzIGRlbGV0ZSBzZWNzZWwKLSAgICBzZXQgdCBbZXZhbCAkY2FudjMgY3JlYXRlIHJlY3QgWyRjYW52MyBiYm94ICRsaW5lZHRhZygkbCldIC1vdXRsaW5lIHt7fX0gXAorICAgIHNldCB0IFtldmFsICRjYW52MyBjcmVhdGUgcmVjdCBbJGNhbnYzIGJib3ggJGxpbmVkdGFnKCRpZCldIC1vdXRsaW5lIHt7fX0gXAogCSAgICAgICAtdGFncyBzZWNzZWwgLWZpbGwgWyRjYW52MyBjZ2V0IC1zZWxlY3RiYWNrZ3JvdW5kXV0KICAgICAkY2FudjMgbG93ZXIgJHQKIH0KIAotcHJvYyBzZWxlY3RsaW5lIHtsIGlzbmV3fSB7Citwcm9jIHNlbGVjdGxpbmUge2wgaXNuZXcge2Rlc2lyZWRfbG9jIHt9fX0gewogICAgIGdsb2JhbCBjYW52IGN0ZXh0IGNvbW1pdGluZm8gc2VsZWN0ZWRsaW5lCiAgICAgZ2xvYmFsIGNhbnZ5MCBsaW5lc3BjIHBhcmVudHMgY2hpbGRyZW4gY3VydmlldwogICAgIGdsb2JhbCBjdXJyZW50aWQgc2hhMWVudHJ5CkBAIC01OTA1LDcgKzY1OTIsNyBAQAogICAgIGdsb2JhbCBtZXJnZW1heCBudW1jb21taXRzIHBlbmRpbmdfc2VsZWN0CiAgICAgZ2xvYmFsIGNtaXRtb2RlIHNob3duZWFydGFncyBhbGxjb21taXRzCiAgICAgZ2xvYmFsIHRhcmdldHJvdyB0YXJnZXRpZCBsYXN0c2Nyb2xscm93cwotICAgIGdsb2JhbCBhdXRvc2VsZWN0CisgICAgZ2xvYmFsIGF1dG9zZWxlY3QganVtcF90b19oZXJlCiAKICAgICBjYXRjaCB7dW5zZXQgcGVuZGluZ19zZWxlY3R9CiAgICAgJGNhbnYgZGVsZXRlIGhvdmVyCkBAIC01OTU4LDcgKzY2NDUsNyBAQAogCWRyYXd2aXNpYmxlCiAgICAgfQogCi0gICAgbWFrZV9zZWNzZWwgJGwKKyAgICBtYWtlX3NlY3NlbCAkaWQKIAogICAgIGlmIHskaXNuZXd9IHsKIAlhZGR0b2hpc3RvcnkgW2xpc3Qgc2VsYnlpZCAkaWRdCkBAIC02MDQ0LDYgKzY3MzEsNyBAQAogICAgICRjdGV4dCBjb25mIC1zdGF0ZSBkaXNhYmxlZAogICAgIHNldCBjb21tZW50ZW5kIFskY3RleHQgaW5kZXggImVuZCAtIDFjIl0KIAorICAgIHNldCBqdW1wX3RvX2hlcmUgJGRlc2lyZWRfbG9jCiAgICAgaW5pdF9mbGlzdCBbbWMgIkNvbW1lbnRzIl0KICAgICBpZiB7JGNtaXRtb2RlIGVxICJ0cmVlIn0gewogCWdldHRyZWUgJGlkCkBAIC02MTk2LDcgKzY4ODQsNyBAQAogCSAgICBzZXQgdHJlZXBlbmRpbmcgJGlkCiAJICAgIHNldCB0cmVlZmlsZWxpc3QoJGlkKSB7fQogCSAgICBzZXQgdHJlZWlkbGlzdCgkaWQpIHt9Ci0JICAgIGZjb25maWd1cmUgJGd0ZiAtYmxvY2tpbmcgMAorCSAgICBmY29uZmlndXJlICRndGYgLWJsb2NraW5nIDAgLWVuY29kaW5nIGJpbmFyeQogCSAgICBmaWxlcnVuICRndGYgW2xpc3QgZ2V0dHJlZWxpbmUgJGd0ZiAkaWRdCiAJfQogICAgIH0gZWxzZSB7CkBAIC02MjE4LDExICs2OTA2LDEyIEBACiAJICAgIHNldCBsaW5lIFtzdHJpbmcgcmFuZ2UgJGxpbmUgMCBbZXhwciB7JGktMX1dXQogCSAgICBpZiB7JGRpZmZpZHMgbmUgJG51bGxpZDIgJiYgW2xpbmRleCAkbGluZSAxXSBuZSAiYmxvYiJ9IGNvbnRpbnVlCiAJICAgIHNldCBzaGExIFtsaW5kZXggJGxpbmUgMl0KLQkgICAgaWYge1tzdHJpbmcgaW5kZXggJGZuYW1lIDBdIGVxICJcIiJ9IHsKLQkJc2V0IGZuYW1lIFtsaW5kZXggJGZuYW1lIDBdCi0JICAgIH0KIAkgICAgbGFwcGVuZCB0cmVlaWRsaXN0KCRpZCkgJHNoYTEKIAl9CisJaWYge1tzdHJpbmcgaW5kZXggJGZuYW1lIDBdIGVxICJcIiJ9IHsKKwkgICAgc2V0IGZuYW1lIFtsaW5kZXggJGZuYW1lIDBdCisJfQorCXNldCBmbmFtZSBbZW5jb2RpbmcgY29udmVydGZyb20gJGZuYW1lXQogCWxhcHBlbmQgdHJlZWZpbGVsaXN0KCRpZCkgJGZuYW1lCiAgICAgfQogICAgIGlmIHshW2VvZiAkZ3RmXX0gewpAQCAtNjI0NCw2ICs2OTMzLDcgQEAKIAogcHJvYyBzaG93ZmlsZSB7Zn0gewogICAgIGdsb2JhbCB0cmVlZmlsZWxpc3QgdHJlZWlkbGlzdCBkaWZmaWRzIG51bGxpZCBudWxsaWQyCisgICAgZ2xvYmFsIGN0ZXh0X2ZpbGVfbmFtZXMgY3RleHRfZmlsZV9saW5lcwogICAgIGdsb2JhbCBjdGV4dCBjb21tZW50ZW5kCiAKICAgICBzZXQgaSBbbHNlYXJjaCAtZXhhY3QgJHRyZWVmaWxlbGlzdCgkZGlmZmlkcykgJGZdCkBAIC02MjYzLDEwICs2OTUzLDEyIEBACiAJICAgIHJldHVybgogCX0KICAgICB9Ci0gICAgZmNvbmZpZ3VyZSAkYmYgLWJsb2NraW5nIDAKKyAgICBmY29uZmlndXJlICRiZiAtYmxvY2tpbmcgMCAtZW5jb2RpbmcgW2dldF9wYXRoX2VuY29kaW5nICRmXQogICAgIGZpbGVydW4gJGJmIFtsaXN0IGdldGJsb2JsaW5lICRiZiAkZGlmZmlkc10KICAgICAkY3RleHQgY29uZmlnIC1zdGF0ZSBub3JtYWwKICAgICBjbGVhcl9jdGV4dCAkY29tbWVudGVuZAorICAgIGxhcHBlbmQgY3RleHRfZmlsZV9uYW1lcyAkZgorICAgIGxhcHBlbmQgY3RleHRfZmlsZV9saW5lcyBbbGluZGV4IFtzcGxpdCAkY29tbWVudGVuZCAiLiJdIDBdCiAgICAgJGN0ZXh0IGluc2VydCBlbmQgIlxuIgogICAgICRjdGV4dCBpbnNlcnQgZW5kICIkZlxuIiBmaWxlc2VwCiAgICAgJGN0ZXh0IGNvbmZpZyAtc3RhdGUgZGlzYWJsZWQKQEAgLTYyODcsMTA5ICs2OTc5LDQzIEBACiAJJGN0ZXh0IGluc2VydCBlbmQgIiRsaW5lXG4iCiAgICAgfQogICAgIGlmIHtbZW9mICRiZl19IHsKKwlnbG9iYWwganVtcF90b19oZXJlIGN0ZXh0X2ZpbGVfbmFtZXMgY29tbWVudGVuZAorCiAJIyBkZWxldGUgbGFzdCBuZXdsaW5lCiAJJGN0ZXh0IGRlbGV0ZSAiZW5kIC0gMmMiICJlbmQgLSAxYyIKIAljbG9zZSAkYmYKKwlpZiB7JGp1bXBfdG9faGVyZSBuZSB7fSAmJgorCSAgICBbbGluZGV4ICRqdW1wX3RvX2hlcmUgMF0gZXEgW2xpbmRleCAkY3RleHRfZmlsZV9uYW1lcyAwXX0geworCSAgICBzZXQgbG51bSBbZXhwciB7W2xpbmRleCAkanVtcF90b19oZXJlIDFdICsKKwkJCSAgICBbbGluZGV4IFtzcGxpdCAkY29tbWVudGVuZCAuXSAwXX1dCisJICAgIG1hcmtfY3RleHRfbGluZSAkbG51bQorCX0KIAlyZXR1cm4gMAogICAgIH0KICAgICAkY3RleHQgY29uZmlnIC1zdGF0ZSBkaXNhYmxlZAogICAgIHJldHVybiBbZXhwciB7JG5sID49IDEwMDA/IDI6IDF9XQogfQogCitwcm9jIG1hcmtfY3RleHRfbGluZSB7bG51bX0geworICAgIGdsb2JhbCBjdGV4dCBtYXJrYmdjb2xvcgorCisgICAgJGN0ZXh0IHRhZyBkZWxldGUgb21hcmsKKyAgICAkY3RleHQgdGFnIGFkZCBvbWFyayAkbG51bS4wICIkbG51bS4wICsgMSBsaW5lIgorICAgICRjdGV4dCB0YWcgY29uZiBvbWFyayAtYmFja2dyb3VuZCAkbWFya2JnY29sb3IKKyAgICAkY3RleHQgc2VlICRsbnVtLjAKK30KKwogcHJvYyBtZXJnZWRpZmYge2lkfSB7Ci0gICAgZ2xvYmFsIGRpZmZtZXJnZWlkIG1kaWZmZmQKLSAgICBnbG9iYWwgZGlmZmlkcwotICAgIGdsb2JhbCBwYXJlbnRzCi0gICAgZ2xvYmFsIGRpZmZjb250ZXh0Ci0gICAgZ2xvYmFsIGxpbWl0ZGlmZnMgdmZpbGVsaW1pdCBjdXJ2aWV3CisgICAgZ2xvYmFsIGRpZmZtZXJnZWlkCisgICAgZ2xvYmFsIGRpZmZpZHMgdHJlZWRpZmZzCisgICAgZ2xvYmFsIHBhcmVudHMgY3VydmlldwogCiAgICAgc2V0IGRpZmZtZXJnZWlkICRpZAogICAgIHNldCBkaWZmaWRzICRpZAotICAgICMgdGhpcyBkb2Vzbid0IHNlZW0gdG8gYWN0dWFsbHkgYWZmZWN0IGFueXRoaW5nLi4uCi0gICAgc2V0IGNtZCBbY29uY2F0IHwgZ2l0IGRpZmYtdHJlZSAtLW5vLWNvbW1pdC1pZCAtLWNjIC1VJGRpZmZjb250ZXh0ICRpZF0KLSAgICBpZiB7JGxpbWl0ZGlmZnMgJiYgJHZmaWxlbGltaXQoJGN1cnZpZXcpIG5lIHt9fSB7Ci0Jc2V0IGNtZCBbY29uY2F0ICRjbWQgLS0gJHZmaWxlbGltaXQoJGN1cnZpZXcpXQotICAgIH0KLSAgICBpZiB7W2NhdGNoIHtzZXQgbWRmIFtvcGVuICRjbWQgcl19IGVycl19IHsKLQllcnJvcl9wb3B1cCAiW21jICJFcnJvciBnZXR0aW5nIG1lcmdlIGRpZmZzOiJdICRlcnIiCi0JcmV0dXJuCi0gICAgfQotICAgIGZjb25maWd1cmUgJG1kZiAtYmxvY2tpbmcgMAotICAgIHNldCBtZGlmZmZkKCRpZCkgJG1kZgorICAgIHNldCB0cmVlZGlmZnMoJGlkKSB7fQogICAgIHNldCBucCBbbGxlbmd0aCAkcGFyZW50cygkY3VydmlldywkaWQpXQogICAgIHNldHRhYnMgJG5wCi0gICAgZmlsZXJ1biAkbWRmIFtsaXN0IGdldG1lcmdlZGlmZmxpbmUgJG1kZiAkaWQgJG5wXQotfQotCi1wcm9jIGdldG1lcmdlZGlmZmxpbmUge21kZiBpZCBucH0gewotICAgIGdsb2JhbCBkaWZmbWVyZ2VpZCBjdGV4dCBjZmxpc3QgbWVyZ2VtYXgKLSAgICBnbG9iYWwgZGlmZmZpbGVzdGFydCBtZGlmZmZkCi0KLSAgICAkY3RleHQgY29uZiAtc3RhdGUgbm9ybWFsCi0gICAgc2V0IG5yIDAKLSAgICB3aGlsZSB7W2luY3IgbnJdIDw9IDEwMDAgJiYgW2dldHMgJG1kZiBsaW5lXSA+PSAwfSB7Ci0JaWYgeyFbaW5mbyBleGlzdHMgZGlmZm1lcmdlaWRdIHx8ICRpZCAhPSAkZGlmZm1lcmdlaWQKLQkgICAgfHwgJG1kZiAhPSAkbWRpZmZmZCgkaWQpfSB7Ci0JICAgIGNsb3NlICRtZGYKLQkgICAgcmV0dXJuIDAKLQl9Ci0JaWYge1tyZWdleHAge15kaWZmIC0tY2MgKC4qKX0gJGxpbmUgbWF0Y2ggZm5hbWVdfSB7Ci0JICAgICMgc3RhcnQgb2YgYSBuZXcgZmlsZQotCSAgICAkY3RleHQgaW5zZXJ0IGVuZCAiXG4iCi0JICAgIHNldCBoZXJlIFskY3RleHQgaW5kZXggImVuZCAtIDFjIl0KLQkgICAgbGFwcGVuZCBkaWZmZmlsZXN0YXJ0ICRoZXJlCi0JICAgIGFkZF9mbGlzdCBbbGlzdCAkZm5hbWVdCi0JICAgIHNldCBsIFtleHByIHsoNzggLSBbc3RyaW5nIGxlbmd0aCAkZm5hbWVdKSAvIDJ9XQotCSAgICBzZXQgcGFkIFtzdHJpbmcgcmFuZ2UgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIDEgJGxdCi0JICAgICRjdGV4dCBpbnNlcnQgZW5kICIkcGFkICRmbmFtZSAkcGFkXG4iIGZpbGVzZXAKLQl9IGVsc2VpZiB7W3JlZ2V4cCB7XkBAfSAkbGluZV19IHsKLQkgICAgJGN0ZXh0IGluc2VydCBlbmQgIiRsaW5lXG4iIGh1bmtzZXAKLQl9IGVsc2VpZiB7W3JlZ2V4cCB7XlswLTlhLWZdezQwfSR9ICRsaW5lXSB8fCBbcmVnZXhwIHteaW5kZXh9ICRsaW5lXX0gewotCSAgICAjIGRvIG5vdGhpbmcKLQl9IGVsc2UgewotCSAgICAjIHBhcnNlIHRoZSBwcmVmaXggLSBvbmUgJyAnLCAnLScgb3IgJysnIGZvciBlYWNoIHBhcmVudAotCSAgICBzZXQgc3BhY2VzIHt9Ci0JICAgIHNldCBtaW51c2VzIHt9Ci0JICAgIHNldCBwbHVzZXMge30KLQkgICAgc2V0IGlzYmFkIDAKLQkgICAgZm9yIHtzZXQgaiAwfSB7JGogPCAkbnB9IHtpbmNyIGp9IHsKLQkJc2V0IGMgW3N0cmluZyByYW5nZSAkbGluZSAkaiAkal0KLQkJaWYgeyRjID09ICIgIn0gewotCQkgICAgbGFwcGVuZCBzcGFjZXMgJGoKLQkJfSBlbHNlaWYgeyRjID09ICItIn0gewotCQkgICAgbGFwcGVuZCBtaW51c2VzICRqCi0JCX0gZWxzZWlmIHskYyA9PSAiKyJ9IHsKLQkJICAgIGxhcHBlbmQgcGx1c2VzICRqCi0JCX0gZWxzZSB7Ci0JCSAgICBzZXQgaXNiYWQgMQotCQkgICAgYnJlYWsKLQkJfQotCSAgICB9Ci0JICAgIHNldCB0YWdzIHt9Ci0JICAgIHNldCBudW0ge30KLQkgICAgaWYgeyEkaXNiYWQgJiYgJG1pbnVzZXMgbmUge30gJiYgJHBsdXNlcyBlcSB7fX0gewotCQkjIGxpbmUgZG9lc24ndCBhcHBlYXIgaW4gcmVzdWx0LCBwYXJlbnRzIGluICRtaW51c2VzIGhhdmUgdGhlIGxpbmUKLQkJc2V0IG51bSBbbGluZGV4ICRtaW51c2VzIDBdCi0JICAgIH0gZWxzZWlmIHshJGlzYmFkICYmICRwbHVzZXMgbmUge30gJiYgJG1pbnVzZXMgZXEge319IHsKLQkJIyBsaW5lIGFwcGVhcnMgaW4gcmVzdWx0LCBwYXJlbnRzIGluICRwbHVzZXMgZG9uJ3QgaGF2ZSB0aGUgbGluZQotCQlsYXBwZW5kIHRhZ3MgbXJlc3VsdAotCQlzZXQgbnVtIFtsaW5kZXggJHNwYWNlcyAwXQotCSAgICB9Ci0JICAgIGlmIHskbnVtIG5lIHt9fSB7Ci0JCWlmIHskbnVtID49ICRtZXJnZW1heH0gewotCQkgICAgc2V0IG51bSAibWF4IgotCQl9Ci0JCWxhcHBlbmQgdGFncyBtJG51bQotCSAgICB9Ci0JICAgICRjdGV4dCBpbnNlcnQgZW5kICIkbGluZVxuIiAkdGFncwotCX0KLSAgICB9Ci0gICAgJGN0ZXh0IGNvbmYgLXN0YXRlIGRpc2FibGVkCi0gICAgaWYge1tlb2YgJG1kZl19IHsKLQljbG9zZSAkbWRmCi0JcmV0dXJuIDAKLSAgICB9Ci0gICAgcmV0dXJuIFtleHByIHskbnIgPj0gMTAwMD8gMjogMX1dCisgICAgZ2V0YmxvYmRpZmZzICRpZAogfQogCiBwcm9jIHN0YXJ0ZGlmZiB7aWRzfSB7CkBAIC02NDgxLDI3ICs3MTA3LDQ0IEBACiAKICAgICBzZXQgdHJlZXBlbmRpbmcgJGlkcwogICAgIHNldCB0cmVlZGlmZiB7fQotICAgIGZjb25maWd1cmUgJGdkdGYgLWJsb2NraW5nIDAKKyAgICBmY29uZmlndXJlICRnZHRmIC1ibG9ja2luZyAwIC1lbmNvZGluZyBiaW5hcnkKICAgICBmaWxlcnVuICRnZHRmIFtsaXN0IGdldHRyZWVkaWZmbGluZSAkZ2R0ZiAkaWRzXQogfQogCiBwcm9jIGdldHRyZWVkaWZmbGluZSB7Z2R0ZiBpZHN9IHsKICAgICBnbG9iYWwgdHJlZWRpZmYgdHJlZWRpZmZzIHRyZWVwZW5kaW5nIGRpZmZpZHMgZGlmZm1lcmdlaWQKLSAgICBnbG9iYWwgY21pdG1vZGUgdmZpbGVsaW1pdCBjdXJ2aWV3IGxpbWl0ZGlmZnMKKyAgICBnbG9iYWwgY21pdG1vZGUgdmZpbGVsaW1pdCBjdXJ2aWV3IGxpbWl0ZGlmZnMgcGVyZmlsZV9hdHRycwogCiAgICAgc2V0IG5yIDAKLSAgICB3aGlsZSB7W2luY3IgbnJdIDw9IDEwMDAgJiYgW2dldHMgJGdkdGYgbGluZV0gPj0gMH0geworICAgIHNldCBzdWJsaXN0IHt9CisgICAgc2V0IG1heCAxMDAwCisgICAgaWYgeyRwZXJmaWxlX2F0dHJzfSB7CisJIyBjYWNoZV9naXRhdHRyIGlzIHNsb3csIGFuZCBldmVuIHNsb3dlciBvbiB3aW4zMiB3aGVyZSB3ZQorCSMgaGF2ZSB0byBpbnZva2UgaXQgZm9yIG9ubHkgYWJvdXQgMzAgcGF0aHMgYXQgYSB0aW1lCisJc2V0IG1heCA1MDAKKwlpZiB7W3RrIHdpbmRvd2luZ3N5c3RlbV0gPT0gIndpbjMyIn0geworCSAgICBzZXQgbWF4IDEyMAorCX0KKyAgICB9CisgICAgd2hpbGUge1tpbmNyIG5yXSA8PSAkbWF4ICYmIFtnZXRzICRnZHRmIGxpbmVdID49IDB9IHsKIAlzZXQgaSBbc3RyaW5nIGZpcnN0ICJcdCIgJGxpbmVdCiAJaWYgeyRpID49IDB9IHsKIAkgICAgc2V0IGZpbGUgW3N0cmluZyByYW5nZSAkbGluZSBbZXhwciB7JGkrMX1dIGVuZF0KIAkgICAgaWYge1tzdHJpbmcgaW5kZXggJGZpbGUgMF0gZXEgIlwiIn0gewogCQlzZXQgZmlsZSBbbGluZGV4ICRmaWxlIDBdCiAJICAgIH0KLQkgICAgbGFwcGVuZCB0cmVlZGlmZiAkZmlsZQorCSAgICBzZXQgZmlsZSBbZW5jb2RpbmcgY29udmVydGZyb20gJGZpbGVdCisJICAgIGlmIHskZmlsZSBuZSBbbGluZGV4ICR0cmVlZGlmZiBlbmRdfSB7CisJCWxhcHBlbmQgdHJlZWRpZmYgJGZpbGUKKwkJbGFwcGVuZCBzdWJsaXN0ICRmaWxlCisJICAgIH0KIAl9CiAgICAgfQorICAgIGlmIHskcGVyZmlsZV9hdHRyc30geworCWNhY2hlX2dpdGF0dHIgZW5jb2RpbmcgJHN1Ymxpc3QKKyAgICB9CiAgICAgaWYgeyFbZW9mICRnZHRmXX0gewotCXJldHVybiBbZXhwciB7JG5yID49IDEwMDA/IDI6IDF9XQorCXJldHVybiBbZXhwciB7JG5yID49ICRtYXg/IDI6IDF9XQogICAgIH0KICAgICBjbG9zZSAkZ2R0ZgogICAgIGlmIHskbGltaXRkaWZmcyAmJiAkdmZpbGVsaW1pdCgkY3VydmlldykgbmUge319IHsKQEAgLTY1MTYsNyArNzE1OSw3IEBACiAJc2V0IHRyZWVkaWZmcygkaWRzKSAkdHJlZWRpZmYKICAgICB9CiAgICAgdW5zZXQgdHJlZXBlbmRpbmcKLSAgICBpZiB7JGNtaXRtb2RlIGVxICJ0cmVlIn0geworICAgIGlmIHskY21pdG1vZGUgZXEgInRyZWUiICYmIFtsbGVuZ3RoICRkaWZmaWRzXSA9PSAxfSB7CiAJZ2V0dHJlZSAkZGlmZmlkcwogICAgIH0gZWxzZWlmIHskaWRzICE9ICRkaWZmaWRzfSB7CiAJaWYgeyFbaW5mbyBleGlzdHMgZGlmZm1lcmdlaWRdfSB7CkBAIC02NTU0LDggKzcxOTcsOSBAQAogICAgIGdsb2JhbCBkaWZmY29udGV4dAogICAgIGdsb2JhbCBpZ25vcmVzcGFjZQogICAgIGdsb2JhbCBsaW1pdGRpZmZzIHZmaWxlbGltaXQgY3VydmlldworICAgIGdsb2JhbCBkaWZmZW5jb2RpbmcgdGFyZ2V0bGluZSBkaWZmbnBhcmVudHMKIAotICAgIHNldCBjbWQgW2RpZmZjbWQgJGlkcyAiLXAgLUMgLS1uby1jb21taXQtaWQgLVUkZGlmZmNvbnRleHQiXQorICAgIHNldCBjbWQgW2RpZmZjbWQgJGlkcyAiLXAgLUMgLS1jYyAtLW5vLWNvbW1pdC1pZCAtVSRkaWZmY29udGV4dCJdCiAgICAgaWYgeyRpZ25vcmVzcGFjZX0gewogCWFwcGVuZCBjbWQgIiAtdyIKICAgICB9CkBAIC02NTYzLDExICs3MjA3LDE0IEBACiAJc2V0IGNtZCBbY29uY2F0ICRjbWQgLS0gJHZmaWxlbGltaXQoJGN1cnZpZXcpXQogICAgIH0KICAgICBpZiB7W2NhdGNoIHtzZXQgYmRmIFtvcGVuICRjbWQgcl19IGVycl19IHsKLQlwdXRzICJlcnJvciBnZXR0aW5nIGRpZmZzOiAkZXJyIgorCWVycm9yX3BvcHVwIFttYyAiRXJyb3IgZ2V0dGluZyBkaWZmczogJXMiICRlcnJdCiAJcmV0dXJuCiAgICAgfQorICAgIHNldCB0YXJnZXRsaW5lIHt9CisgICAgc2V0IGRpZmZucGFyZW50cyAwCiAgICAgc2V0IGRpZmZpbmhkciAwCi0gICAgZmNvbmZpZ3VyZSAkYmRmIC1ibG9ja2luZyAwCisgICAgc2V0IGRpZmZlbmNvZGluZyBbZ2V0X3BhdGhfZW5jb2Rpbmcge31dCisgICAgZmNvbmZpZ3VyZSAkYmRmIC1ibG9ja2luZyAwIC1lbmNvZGluZyBiaW5hcnkKICAgICBzZXQgYmxvYmRpZmZmZCgkaWRzKSAkYmRmCiAgICAgZmlsZXJ1biAkYmRmIFtsaXN0IGdldGJsb2JkaWZmbGluZSAkYmRmICRkaWZmaWRzXQogfQpAQCAtNjU4NiwyMSArNzIzMywzMiBAQAogfQogCiBwcm9jIG1ha2VkaWZmaGRyIHtmbmFtZSBpZHN9IHsKLSAgICBnbG9iYWwgY3RleHQgY3VyZGlmZnN0YXJ0IHRyZWVkaWZmcworICAgIGdsb2JhbCBjdGV4dCBjdXJkaWZmc3RhcnQgdHJlZWRpZmZzIGRpZmZlbmNvZGluZworICAgIGdsb2JhbCBjdGV4dF9maWxlX25hbWVzIGp1bXBfdG9faGVyZSB0YXJnZXRsaW5lIGRpZmZsaW5lCiAKKyAgICBzZXQgZm5hbWUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRmbmFtZV0KKyAgICBzZXQgZGlmZmVuY29kaW5nIFtnZXRfcGF0aF9lbmNvZGluZyAkZm5hbWVdCiAgICAgc2V0IGkgW2xzZWFyY2ggLWV4YWN0ICR0cmVlZGlmZnMoJGlkcykgJGZuYW1lXQogICAgIGlmIHskaSA+PSAwfSB7CiAJc2V0aW5saXN0IGRpZmZmaWxlc3RhcnQgJGkgJGN1cmRpZmZzdGFydAogICAgIH0KKyAgICBsc2V0IGN0ZXh0X2ZpbGVfbmFtZXMgZW5kICRmbmFtZQogICAgIHNldCBsIFtleHByIHsoNzggLSBbc3RyaW5nIGxlbmd0aCAkZm5hbWVdKSAvIDJ9XQogICAgIHNldCBwYWQgW3N0cmluZyByYW5nZSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgMSAkbF0KICAgICAkY3RleHQgaW5zZXJ0ICRjdXJkaWZmc3RhcnQgIiRwYWQgJGZuYW1lICRwYWQiIGZpbGVzZXAKKyAgICBzZXQgdGFyZ2V0bGluZSB7fQorICAgIGlmIHskanVtcF90b19oZXJlIG5lIHt9ICYmIFtsaW5kZXggJGp1bXBfdG9faGVyZSAwXSBlcSAkZm5hbWV9IHsKKwlzZXQgdGFyZ2V0bGluZSBbbGluZGV4ICRqdW1wX3RvX2hlcmUgMV0KKyAgICB9CisgICAgc2V0IGRpZmZsaW5lIDAKIH0KIAogcHJvYyBnZXRibG9iZGlmZmxpbmUge2JkZiBpZHN9IHsKICAgICBnbG9iYWwgZGlmZmlkcyBibG9iZGlmZmZkIGN0ZXh0IGN1cmRpZmZzdGFydAogICAgIGdsb2JhbCBkaWZmbmV4dGhlYWQgZGlmZm5leHRub3RlIGRpZmZmaWxlc3RhcnQKLSAgICBnbG9iYWwgZGlmZmluaGRyIHRyZWVkaWZmcworICAgIGdsb2JhbCBjdGV4dF9maWxlX25hbWVzIGN0ZXh0X2ZpbGVfbGluZXMKKyAgICBnbG9iYWwgZGlmZmluaGRyIHRyZWVkaWZmcyBtZXJnZW1heCBkaWZmbnBhcmVudHMKKyAgICBnbG9iYWwgZGlmZmVuY29kaW5nIGp1bXBfdG9faGVyZSB0YXJnZXRsaW5lIGRpZmZsaW5lCiAKICAgICBzZXQgbnIgMAogICAgICRjdGV4dCBjb25mIC1zdGF0ZSBub3JtYWwKQEAgLTY2MDksNDAgKzcyNjcsNzQgQEAKIAkgICAgY2xvc2UgJGJkZgogCSAgICByZXR1cm4gMAogCX0KLQlpZiB7IVtzdHJpbmcgY29tcGFyZSAtbGVuZ3RoIDExICJkaWZmIC0tZ2l0ICIgJGxpbmVdfSB7Ci0JICAgICMgdHJpbSBvZmYgImRpZmYgLS1naXQgIgotCSAgICBzZXQgbGluZSBbc3RyaW5nIHJhbmdlICRsaW5lIDExIGVuZF0KLQkgICAgc2V0IGRpZmZpbmhkciAxCi0JICAgICMgc3RhcnQgb2YgYSBuZXcgZmlsZQotCSAgICAkY3RleHQgaW5zZXJ0IGVuZCAiXG4iCi0JICAgIHNldCBjdXJkaWZmc3RhcnQgWyRjdGV4dCBpbmRleCAiZW5kIC0gMWMiXQotCSAgICAkY3RleHQgaW5zZXJ0IGVuZCAiXG4iIGZpbGVzZXAKLQkgICAgIyBJZiB0aGUgbmFtZSBoYXNuJ3QgY2hhbmdlZCB0aGUgbGVuZ3RoIHdpbGwgYmUgb2RkLAotCSAgICAjIHRoZSBtaWRkbGUgY2hhciB3aWxsIGJlIGEgc3BhY2UsIGFuZCB0aGUgdHdvIGJpdHMgZWl0aGVyCi0JICAgICMgc2lkZSB3aWxsIGJlIGEvbmFtZSBhbmQgYi9uYW1lLCBvciAiYS9uYW1lIiBhbmQgImIvbmFtZSIuCi0JICAgICMgSWYgdGhlIG5hbWUgaGFzIGNoYW5nZWQgd2UnbGwgZ2V0ICJyZW5hbWUgZnJvbSIgYW5kCi0JICAgICMgInJlbmFtZSB0byIgb3IgImNvcHkgZnJvbSIgYW5kICJjb3B5IHRvIiBsaW5lcyBmb2xsb3dpbmcgdGhpcywKLQkgICAgIyBhbmQgd2UnbGwgdXNlIHRoZW0gdG8gZ2V0IHRoZSBmaWxlbmFtZXMuCi0JICAgICMgVGhpcyBjb21wbGV4aXR5IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHNwYWNlcyBpbiB0aGUgZmlsZW5hbWUocykKLQkgICAgIyBkb24ndCBnZXQgZXNjYXBlZC4KLQkgICAgc2V0IGwgW3N0cmluZyBsZW5ndGggJGxpbmVdCi0JICAgIHNldCBpIFtleHByIHskbCAvIDJ9XQotCSAgICBpZiB7ISgoJGwgJiAxKSAmJiBbc3RyaW5nIGluZGV4ICRsaW5lICRpXSBlcSAiICIgJiYKLQkJICBbc3RyaW5nIHJhbmdlICRsaW5lIDIgW2V4cHIgeyRpIC0gMX1dXSBlcSBcCi0JCSAgICAgIFtzdHJpbmcgcmFuZ2UgJGxpbmUgW2V4cHIgeyRpICsgM31dIGVuZF0pfSB7CisJaWYgeyFbc3RyaW5nIGNvbXBhcmUgLWxlbmd0aCA1ICJkaWZmICIgJGxpbmVdfSB7CisJICAgIGlmIHshW3JlZ2V4cCB7XmRpZmYgKC0tY2N8LS1naXQpIH0gJGxpbmUgbSB0eXBlXX0geworCQlzZXQgbGluZSBbZW5jb2RpbmcgY29udmVydGZyb20gJGxpbmVdCisJCSRjdGV4dCBpbnNlcnQgZW5kICIkbGluZVxuIiBodW5rc2VwCiAJCWNvbnRpbnVlCiAJICAgIH0KLQkgICAgIyB1bmVzY2FwZSBpZiBxdW90ZWQgYW5kIGNob3Agb2ZmIHRoZSBhLyBmcm9tIHRoZSBmcm9udAotCSAgICBpZiB7W3N0cmluZyBpbmRleCAkbGluZSAwXSBlcSAiXCIifSB7Ci0JCXNldCBmbmFtZSBbc3RyaW5nIHJhbmdlIFtsaW5kZXggJGxpbmUgMF0gMiBlbmRdCisJICAgICMgc3RhcnQgb2YgYSBuZXcgZmlsZQorCSAgICBzZXQgZGlmZmluaGRyIDEKKwkgICAgJGN0ZXh0IGluc2VydCBlbmQgIlxuIgorCSAgICBzZXQgY3VyZGlmZnN0YXJ0IFskY3RleHQgaW5kZXggImVuZCAtIDFjIl0KKwkgICAgbGFwcGVuZCBjdGV4dF9maWxlX25hbWVzICIiCisJICAgIGxhcHBlbmQgY3RleHRfZmlsZV9saW5lcyBbbGluZGV4IFtzcGxpdCAkY3VyZGlmZnN0YXJ0ICIuIl0gMF0KKwkgICAgJGN0ZXh0IGluc2VydCBlbmQgIlxuIiBmaWxlc2VwCisKKwkgICAgaWYgeyR0eXBlIGVxICItLWNjIn0geworCQkjIHN0YXJ0IG9mIGEgbmV3IGZpbGUgaW4gYSBtZXJnZSBkaWZmCisJCXNldCBmbmFtZSBbc3RyaW5nIHJhbmdlICRsaW5lIDEwIGVuZF0KKwkJaWYge1tsc2VhcmNoIC1leGFjdCAkdHJlZWRpZmZzKCRpZHMpICRmbmFtZV0gPCAwfSB7CisJCSAgICBsYXBwZW5kIHRyZWVkaWZmcygkaWRzKSAkZm5hbWUKKwkJICAgIGFkZF9mbGlzdCBbbGlzdCAkZm5hbWVdCisJCX0KKwogCSAgICB9IGVsc2UgewotCQlzZXQgZm5hbWUgW3N0cmluZyByYW5nZSAkbGluZSAyIFtleHByIHskaSAtIDF9XV0KKwkJc2V0IGxpbmUgW3N0cmluZyByYW5nZSAkbGluZSAxMSBlbmRdCisJCSMgSWYgdGhlIG5hbWUgaGFzbid0IGNoYW5nZWQgdGhlIGxlbmd0aCB3aWxsIGJlIG9kZCwKKwkJIyB0aGUgbWlkZGxlIGNoYXIgd2lsbCBiZSBhIHNwYWNlLCBhbmQgdGhlIHR3byBiaXRzIGVpdGhlcgorCQkjIHNpZGUgd2lsbCBiZSBhL25hbWUgYW5kIGIvbmFtZSwgb3IgImEvbmFtZSIgYW5kICJiL25hbWUiLgorCQkjIElmIHRoZSBuYW1lIGhhcyBjaGFuZ2VkIHdlJ2xsIGdldCAicmVuYW1lIGZyb20iIGFuZAorCQkjICJyZW5hbWUgdG8iIG9yICJjb3B5IGZyb20iIGFuZCAiY29weSB0byIgbGluZXMgZm9sbG93aW5nCisJCSMgdGhpcywgYW5kIHdlJ2xsIHVzZSB0aGVtIHRvIGdldCB0aGUgZmlsZW5hbWVzLgorCQkjIFRoaXMgY29tcGxleGl0eSBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzcGFjZXMgaW4gdGhlCisJCSMgZmlsZW5hbWUocykgZG9uJ3QgZ2V0IGVzY2FwZWQuCisJCXNldCBsIFtzdHJpbmcgbGVuZ3RoICRsaW5lXQorCQlzZXQgaSBbZXhwciB7JGwgLyAyfV0KKwkJaWYgeyEoKCRsICYgMSkgJiYgW3N0cmluZyBpbmRleCAkbGluZSAkaV0gZXEgIiAiICYmCisJCSAgICAgIFtzdHJpbmcgcmFuZ2UgJGxpbmUgMiBbZXhwciB7JGkgLSAxfV1dIGVxIFwKKwkJCSAgW3N0cmluZyByYW5nZSAkbGluZSBbZXhwciB7JGkgKyAzfV0gZW5kXSl9IHsKKwkJICAgIGNvbnRpbnVlCisJCX0KKwkJIyB1bmVzY2FwZSBpZiBxdW90ZWQgYW5kIGNob3Agb2ZmIHRoZSBhLyBmcm9tIHRoZSBmcm9udAorCQlpZiB7W3N0cmluZyBpbmRleCAkbGluZSAwXSBlcSAiXCIifSB7CisJCSAgICBzZXQgZm5hbWUgW3N0cmluZyByYW5nZSBbbGluZGV4ICRsaW5lIDBdIDIgZW5kXQorCQl9IGVsc2UgeworCQkgICAgc2V0IGZuYW1lIFtzdHJpbmcgcmFuZ2UgJGxpbmUgMiBbZXhwciB7JGkgLSAxfV1dCisJCX0KIAkgICAgfQogCSAgICBtYWtlZGlmZmhkciAkZm5hbWUgJGlkcwogCi0JfSBlbHNlaWYge1tyZWdleHAge15AQCAtKFswLTldKykoLFswLTldKyk/IFwrKFswLTldKykoLFswLTldKyk/IEBAKC4qKX0gXAotCQkgICAgICAgJGxpbmUgbWF0Y2ggZjFsIGYxYyBmMmwgZjJjIHJlc3RdfSB7CisJfSBlbHNlaWYgeyFbc3RyaW5nIGNvbXBhcmUgLWxlbmd0aCAxNiAiKiBVbm1lcmdlZCBwYXRoICIgJGxpbmVdfSB7CisJICAgIHNldCBmbmFtZSBbZW5jb2RpbmcgY29udmVydGZyb20gW3N0cmluZyByYW5nZSAkbGluZSAxNiBlbmRdXQorCSAgICAkY3RleHQgaW5zZXJ0IGVuZCAiXG4iCisJICAgIHNldCBjdXJkaWZmc3RhcnQgWyRjdGV4dCBpbmRleCAiZW5kIC0gMWMiXQorCSAgICBsYXBwZW5kIGN0ZXh0X2ZpbGVfbmFtZXMgJGZuYW1lCisJICAgIGxhcHBlbmQgY3RleHRfZmlsZV9saW5lcyBbbGluZGV4IFtzcGxpdCAkY3VyZGlmZnN0YXJ0ICIuIl0gMF0KKwkgICAgJGN0ZXh0IGluc2VydCBlbmQgIiRsaW5lXG4iIGZpbGVzZXAKKwkgICAgc2V0IGkgW2xzZWFyY2ggLWV4YWN0ICR0cmVlZGlmZnMoJGlkcykgJGZuYW1lXQorCSAgICBpZiB7JGkgPj0gMH0geworCQlzZXRpbmxpc3QgZGlmZmZpbGVzdGFydCAkaSAkY3VyZGlmZnN0YXJ0CisJICAgIH0KKworCX0gZWxzZWlmIHshW3N0cmluZyBjb21wYXJlIC1sZW5ndGggMiAiQEAiICRsaW5lXX0geworCSAgICByZWdleHAge15AQCt9ICRsaW5lIGF0cworCSAgICBzZXQgbGluZSBbZW5jb2RpbmcgY29udmVydGZyb20gJGRpZmZlbmNvZGluZyAkbGluZV0KIAkgICAgJGN0ZXh0IGluc2VydCBlbmQgIiRsaW5lXG4iIGh1bmtzZXAKKwkgICAgaWYge1tyZWdleHAgeyBcKyhcZCspLFxkKyBAQH0gJGxpbmUgbSBubF19IHsKKwkJc2V0IGRpZmZsaW5lICRubAorCSAgICB9CisJICAgIHNldCBkaWZmbnBhcmVudHMgW2V4cHIge1tzdHJpbmcgbGVuZ3RoICRhdHNdIC0gMX1dCiAJICAgIHNldCBkaWZmaW5oZHIgMAogCiAJfSBlbHNlaWYgeyRkaWZmaW5oZHJ9IHsKQEAgLTY2NTEsNiArNzM0Myw3IEBACiAJCWlmIHtbc3RyaW5nIGluZGV4ICRmbmFtZSAwXSBlcSAiXCIifSB7CiAJCSAgICBzZXQgZm5hbWUgW2xpbmRleCAkZm5hbWUgMF0KIAkJfQorCQlzZXQgZm5hbWUgW2VuY29kaW5nIGNvbnZlcnRmcm9tICRmbmFtZV0KIAkJc2V0IGkgW2xzZWFyY2ggLWV4YWN0ICR0cmVlZGlmZnMoJGlkcykgJGZuYW1lXQogCQlpZiB7JGkgPj0gMH0gewogCQkgICAgc2V0aW5saXN0IGRpZmZmaWxlc3RhcnQgJGkgJGN1cmRpZmZzdGFydApAQCAtNjY3MiwxMiArNzM2NSw0NCBAQAogCSAgICAkY3RleHQgaW5zZXJ0IGVuZCAiJGxpbmVcbiIgZmlsZXNlcAogCiAJfSBlbHNlIHsKLQkgICAgc2V0IHggW3N0cmluZyByYW5nZSAkbGluZSAwIDBdCi0JICAgIGlmIHskeCA9PSAiLSIgfHwgJHggPT0gIisifSB7Ci0JCXNldCB0YWcgW2V4cHIgeyR4ID09ICIrIn1dCi0JCSRjdGV4dCBpbnNlcnQgZW5kICIkbGluZVxuIiBkJHRhZwotCSAgICB9IGVsc2VpZiB7JHggPT0gIiAifSB7Ci0JCSRjdGV4dCBpbnNlcnQgZW5kICIkbGluZVxuIgorCSAgICBzZXQgbGluZSBbZW5jb2RpbmcgY29udmVydGZyb20gJGRpZmZlbmNvZGluZyAkbGluZV0KKwkgICAgIyBwYXJzZSB0aGUgcHJlZml4IC0gb25lICcgJywgJy0nIG9yICcrJyBmb3IgZWFjaCBwYXJlbnQKKwkgICAgc2V0IHByZWZpeCBbc3RyaW5nIHJhbmdlICRsaW5lIDAgW2V4cHIgeyRkaWZmbnBhcmVudHMgLSAxfV1dCisJICAgIHNldCB0YWcgW2V4cHIgeyRkaWZmbnBhcmVudHMgPiAxPyAibSI6ICJkIn1dCisJICAgIGlmIHtbc3RyaW5nIHRyaW0gJHByZWZpeCAiIC0rIl0gZXEge319IHsKKwkJIyBwcmVmaXggb25seSBoYXMgIiAiLCAiLSIgYW5kICIrIiBpbiBpdDogbm9ybWFsIGRpZmYgbGluZQorCQlzZXQgbnVtIFtzdHJpbmcgZmlyc3QgIi0iICRwcmVmaXhdCisJCWlmIHskbnVtID49IDB9IHsKKwkJICAgICMgcmVtb3ZlZCBsaW5lLCBmaXJzdCBwYXJlbnQgd2l0aCBsaW5lIGlzICRudW0KKwkJICAgIGlmIHskbnVtID49ICRtZXJnZW1heH0geworCQkJc2V0IG51bSAibWF4IgorCQkgICAgfQorCQkgICAgJGN0ZXh0IGluc2VydCBlbmQgIiRsaW5lXG4iICR0YWckbnVtCisJCX0gZWxzZSB7CisJCSAgICBzZXQgdGFncyB7fQorCQkgICAgaWYge1tzdHJpbmcgZmlyc3QgIisiICRwcmVmaXhdID49IDB9IHsKKwkJCSMgYWRkZWQgbGluZQorCQkJbGFwcGVuZCB0YWdzICR7dGFnfXJlc3VsdAorCQkJaWYgeyRkaWZmbnBhcmVudHMgPiAxfSB7CisJCQkgICAgc2V0IG51bSBbc3RyaW5nIGZpcnN0ICIgIiAkcHJlZml4XQorCQkJICAgIGlmIHskbnVtID49IDB9IHsKKwkJCQlpZiB7JG51bSA+PSAkbWVyZ2VtYXh9IHsKKwkJCQkgICAgc2V0IG51bSAibWF4IgorCQkJCX0KKwkJCQlsYXBwZW5kIHRhZ3MgbSRudW0KKwkJCSAgICB9CisJCQl9CisJCSAgICB9CisJCSAgICBpZiB7JHRhcmdldGxpbmUgbmUge319IHsKKwkJCWlmIHskZGlmZmxpbmUgPT0gJHRhcmdldGxpbmV9IHsKKwkJCSAgICBzZXQgc2VlaGVyZSBbJGN0ZXh0IGluZGV4ICJlbmQgLSAxIGNoYXJzIl0KKwkJCSAgICBzZXQgdGFyZ2V0bGluZSB7fQorCQkJfSBlbHNlIHsKKwkJCSAgICBpbmNyIGRpZmZsaW5lCisJCQl9CisJCSAgICB9CisJCSAgICAkY3RleHQgaW5zZXJ0IGVuZCAiJGxpbmVcbiIgJHRhZ3MKKwkJfQogCSAgICB9IGVsc2UgewogCQkjICJcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUiLAogCQkjIG9yIHNvbWV0aGluZyBlbHNlIHdlIGRvbid0IHJlY29nbml6ZQpAQCAtNjY4NSw2ICs3NDEwLDkgQEAKIAkgICAgfQogCX0KICAgICB9CisgICAgaWYge1tpbmZvIGV4aXN0cyBzZWVoZXJlXX0geworCW1hcmtfY3RleHRfbGluZSBbbGluZGV4IFtzcGxpdCAkc2VlaGVyZSAuXSAwXQorICAgIH0KICAgICAkY3RleHQgY29uZiAtc3RhdGUgZGlzYWJsZWQKICAgICBpZiB7W2VvZiAkYmRmXX0gewogCWNsb3NlICRiZGYKQEAgLTY2OTcsNyArNzQyNSw3IEBACiAgICAgZ2xvYmFsIGN0ZXh0IGRpZmZlbGlkZQogCiAgICAgJGN0ZXh0IHRhZyBjb25mIGQwIC1lbGlkZSBbbGluZGV4ICRkaWZmZWxpZGUgMF0KLSAgICAkY3RleHQgdGFnIGNvbmYgZDEgLWVsaWRlIFtsaW5kZXggJGRpZmZlbGlkZSAxXQorICAgICRjdGV4dCB0YWcgY29uZiBkcmVzdWx0IC1lbGlkZSBbbGluZGV4ICRkaWZmZWxpZGUgMV0KIH0KIAogcHJvYyBoaWdobGlnaHRmaWxlIHtsb2MgY2xpbmV9IHsKQEAgLTY3NDUsNiArNzQ3Myw3IEBACiAKIHByb2MgY2xlYXJfY3RleHQge3tmaXJzdCAxLjB9fSB7CiAgICAgZ2xvYmFsIGN0ZXh0IHNtYXJrdG9wIHNtYXJrYm90CisgICAgZ2xvYmFsIGN0ZXh0X2ZpbGVfbmFtZXMgY3RleHRfZmlsZV9saW5lcwogICAgIGdsb2JhbCBwZW5kaW5nbGlua3MKIAogICAgIHNldCBsIFtsaW5kZXggW3NwbGl0ICRmaXJzdCAuXSAwXQpAQCAtNjc1OCw2ICs3NDg3LDggQEAKICAgICBpZiB7JGZpcnN0IGVxICIxLjAifSB7CiAJY2F0Y2gge3Vuc2V0IHBlbmRpbmdsaW5rc30KICAgICB9CisgICAgc2V0IGN0ZXh0X2ZpbGVfbmFtZXMge30KKyAgICBzZXQgY3RleHRfZmlsZV9saW5lcyB7fQogfQogCiBwcm9jIHNldHRhYnMge3tmaXJzdGFiIHt9fX0gewpAQCAtNzAzMywxMyArNzc2NCwxMyBAQAogICAgIH0gZWxzZSB7CiAJc2V0IGlkIFtzdHJpbmcgdG9sb3dlciAkc2hhMXN0cmluZ10KIAlpZiB7W3JlZ2V4cCB7XlswLTlhLWZdezQsMzl9JH0gJGlkXX0gewotCSAgICBzZXQgbWF0Y2hlcyBbYXJyYXkgbmFtZXMgdmFyY2lkICIkY3VydmlldywkaWQqIl0KKwkgICAgc2V0IG1hdGNoZXMgW2xvbmdpZCAkaWRdCiAJICAgIGlmIHskbWF0Y2hlcyBuZSB7fX0gewogCQlpZiB7W2xsZW5ndGggJG1hdGNoZXNdID4gMX0gewogCQkgICAgZXJyb3JfcG9wdXAgW21jICJTaG9ydCBTSEExIGlkICVzIGlzIGFtYmlndW91cyIgJGlkXQogCQkgICAgcmV0dXJuCiAJCX0KLQkJc2V0IGlkIFtsaW5kZXggW3NwbGl0IFtsaW5kZXggJG1hdGNoZXMgMF0gIiwiXSAxXQorCQlzZXQgaWQgW2xpbmRleCAkbWF0Y2hlcyAwXQogCSAgICB9CiAJfQogICAgIH0KQEAgLTcyNDksMTYgKzc5ODAsMTYgQEAKICAgICBpZiB7JGlkIG5lICRudWxsaWQgJiYgJGlkIG5lICRudWxsaWQyfSB7CiAJc2V0IG1lbnUgJHJvd2N0eG1lbnUKIAlpZiB7JG1haW5oZWFkIG5lIHt9fSB7Ci0JICAgICRtZW51IGVudHJ5Y29uZmlndXJlIDcgLWxhYmVsIFttYyAiUmVzZXQgJXMgYnJhbmNoIHRvIGhlcmUiICRtYWluaGVhZF0KKwkgICAgJG1lbnUgZW50cnljb25maWd1cmUgNyAtbGFiZWwgW21jICJSZXNldCAlcyBicmFuY2ggdG8gaGVyZSIgJG1haW5oZWFkXSAtc3RhdGUgbm9ybWFsCiAJfSBlbHNlIHsKIAkgICAgJG1lbnUgZW50cnljb25maWd1cmUgNyAtbGFiZWwgW21jICJEZXRhY2hlZCBoZWFkOiBjYW4ndCByZXNldCIgJG1haW5oZWFkXSAtc3RhdGUgZGlzYWJsZWQKIAl9CiAgICAgfSBlbHNlIHsKIAlzZXQgbWVudSAkZmFrZXJvd21lbnUKICAgICB9Ci0gICAgJG1lbnUgZW50cnljb25maWd1cmUgW21jICJEaWZmIHRoaXMgLT4gc2VsZWN0ZWQiXSAtc3RhdGUgJHN0YXRlCi0gICAgJG1lbnUgZW50cnljb25maWd1cmUgW21jICJEaWZmIHNlbGVjdGVkIC0+IHRoaXMiXSAtc3RhdGUgJHN0YXRlCi0gICAgJG1lbnUgZW50cnljb25maWd1cmUgW21jICJNYWtlIHBhdGNoIl0gLXN0YXRlICRzdGF0ZQorICAgICRtZW51IGVudHJ5Y29uZmlndXJlIFttY2EgIkRpZmYgdGhpcyAtPiBzZWxlY3RlZCJdIC1zdGF0ZSAkc3RhdGUKKyAgICAkbWVudSBlbnRyeWNvbmZpZ3VyZSBbbWNhICJEaWZmIHNlbGVjdGVkIC0+IHRoaXMiXSAtc3RhdGUgJHN0YXRlCisgICAgJG1lbnUgZW50cnljb25maWd1cmUgW21jYSAiTWFrZSBwYXRjaCJdIC1zdGF0ZSAkc3RhdGUKICAgICB0a19wb3B1cCAkbWVudSAkeCAkeQogfQogCkBAIC03MzEyLDYgKzgwNDMsNyBAQAogICAgIHNldCBwYXRjaHRvcCAkdG9wCiAgICAgY2F0Y2gge2Rlc3Ryb3kgJHRvcH0KICAgICB0b3BsZXZlbCAkdG9wCisgICAgbWFrZV90cmFuc2llbnQgJHRvcCAuCiAgICAgbGFiZWwgJHRvcC50aXRsZSAtdGV4dCBbbWMgIkdlbmVyYXRlIHBhdGNoIl0KICAgICBncmlkICR0b3AudGl0bGUgLSAtcGFkeSAxMAogICAgIGxhYmVsICR0b3AuZnJvbSAtdGV4dCBbbWMgIkZyb206Il0KQEAgLTczNDIsNiArODA3NCw4IEBACiAgICAgZnJhbWUgJHRvcC5idXRzCiAgICAgYnV0dG9uICR0b3AuYnV0cy5nZW4gLXRleHQgW21jICJHZW5lcmF0ZSJdIC1jb21tYW5kIG1rcGF0Y2hnbwogICAgIGJ1dHRvbiAkdG9wLmJ1dHMuY2FuIC10ZXh0IFttYyAiQ2FuY2VsIl0gLWNvbW1hbmQgbWtwYXRjaGNhbgorICAgIGJpbmQgJHRvcCA8S2V5LVJldHVybj4gbWtwYXRjaGdvCisgICAgYmluZCAkdG9wIDxLZXktRXNjYXBlPiBta3BhdGNoY2FuCiAgICAgZ3JpZCAkdG9wLmJ1dHMuZ2VuICR0b3AuYnV0cy5jYW4KICAgICBncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMCAtd2VpZ2h0IDEgLXVuaWZvcm0gYQogICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAxIC13ZWlnaHQgMSAtdW5pZm9ybSBhCkBAIC03Mzc2LDcgKzgxMTAsNyBAQAogICAgIHNldCBjbWQgW2xyYW5nZSAkY21kIDEgZW5kXQogICAgIGxhcHBlbmQgY21kID4kZm5hbWUgJgogICAgIGlmIHtbY2F0Y2gge2V2YWwgZXhlYyAkY21kfSBlcnJdfSB7Ci0JZXJyb3JfcG9wdXAgIlttYyAiRXJyb3IgY3JlYXRpbmcgcGF0Y2g6Il0gJGVyciIKKwllcnJvcl9wb3B1cCAiW21jICJFcnJvciBjcmVhdGluZyBwYXRjaDoiXSAkZXJyIiAkcGF0Y2h0b3AKICAgICB9CiAgICAgY2F0Y2gge2Rlc3Ryb3kgJHBhdGNodG9wfQogICAgIHVuc2V0IHBhdGNodG9wCkBAIC03Mzk2LDYgKzgxMzAsNyBAQAogICAgIHNldCBta3RhZ3RvcCAkdG9wCiAgICAgY2F0Y2gge2Rlc3Ryb3kgJHRvcH0KICAgICB0b3BsZXZlbCAkdG9wCisgICAgbWFrZV90cmFuc2llbnQgJHRvcCAuCiAgICAgbGFiZWwgJHRvcC50aXRsZSAtdGV4dCBbbWMgIkNyZWF0ZSB0YWciXQogICAgIGdyaWQgJHRvcC50aXRsZSAtIC1wYWR5IDEwCiAgICAgbGFiZWwgJHRvcC5pZCAtdGV4dCBbbWMgIklEOiJdCkBAIC03NDEzLDYgKzgxNDgsOCBAQAogICAgIGZyYW1lICR0b3AuYnV0cwogICAgIGJ1dHRvbiAkdG9wLmJ1dHMuZ2VuIC10ZXh0IFttYyAiQ3JlYXRlIl0gLWNvbW1hbmQgbWt0YWdnbwogICAgIGJ1dHRvbiAkdG9wLmJ1dHMuY2FuIC10ZXh0IFttYyAiQ2FuY2VsIl0gLWNvbW1hbmQgbWt0YWdjYW4KKyAgICBiaW5kICR0b3AgPEtleS1SZXR1cm4+IG1rdGFnZ28KKyAgICBiaW5kICR0b3AgPEtleS1Fc2NhcGU+IG1rdGFnY2FuCiAgICAgZ3JpZCAkdG9wLmJ1dHMuZ2VuICR0b3AuYnV0cy5jYW4KICAgICBncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMCAtd2VpZ2h0IDEgLXVuaWZvcm0gYQogICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAxIC13ZWlnaHQgMSAtdW5pZm9ybSBhCkBAIC03NDI2LDE4ICs4MTYzLDE4IEBACiAgICAgc2V0IGlkIFskbWt0YWd0b3Auc2hhMSBnZXRdCiAgICAgc2V0IHRhZyBbJG1rdGFndG9wLnRhZyBnZXRdCiAgICAgaWYgeyR0YWcgPT0ge319IHsKLQllcnJvcl9wb3B1cCBbbWMgIk5vIHRhZyBuYW1lIHNwZWNpZmllZCJdCi0JcmV0dXJuCisJZXJyb3JfcG9wdXAgW21jICJObyB0YWcgbmFtZSBzcGVjaWZpZWQiXSAkbWt0YWd0b3AKKwlyZXR1cm4gMAogICAgIH0KICAgICBpZiB7W2luZm8gZXhpc3RzIHRhZ2lkcygkdGFnKV19IHsKLQllcnJvcl9wb3B1cCBbbWMgIlRhZyBcIiVzXCIgYWxyZWFkeSBleGlzdHMiICR0YWddCi0JcmV0dXJuCisJZXJyb3JfcG9wdXAgW21jICJUYWcgXCIlc1wiIGFscmVhZHkgZXhpc3RzIiAkdGFnXSAkbWt0YWd0b3AKKwlyZXR1cm4gMAogICAgIH0KICAgICBpZiB7W2NhdGNoIHsKIAlleGVjIGdpdCB0YWcgJHRhZyAkaWQKICAgICB9IGVycl19IHsKLQllcnJvcl9wb3B1cCAiW21jICJFcnJvciBjcmVhdGluZyB0YWc6Il0gJGVyciIKLQlyZXR1cm4KKwllcnJvcl9wb3B1cCAiW21jICJFcnJvciBjcmVhdGluZyB0YWc6Il0gJGVyciIgJG1rdGFndG9wCisJcmV0dXJuIDAKICAgICB9CiAKICAgICBzZXQgdGFnaWRzKCR0YWcpICRpZApAQCAtNzQ0Niw2ICs4MTgzLDcgQEAKICAgICBhZGRlZHRhZyAkaWQKICAgICBkaXNwbmVhcnRhZ3MgMAogICAgIHJ1biByZWZpbGxfcmVmbGlzdAorICAgIHJldHVybiAxCiB9CiAKIHByb2MgcmVkcmF3dGFncyB7aWR9IHsKQEAgLTc0NjMsMTYgKzgyMDEsMTYgQEAKICAgICAkY2FudiBpdGVtY29uZiAkY2lyY2xlaXRlbSgkcm93KSAtZmlsbCAkb2ZpbGwKICAgICAkY2FudiBkZWxldGUgdGFnLiRpZAogICAgIHNldCB4dCBbZXZhbCBkcmF3dGFncyAkaWQgJGlkcG9zKCRpZCldCi0gICAgJGNhbnYgY29vcmRzICRsaW5laHRhZygkcm93KSAkeHQgW2xpbmRleCAkaWRwb3MoJGlkKSAyXQotICAgIHNldCB0ZXh0IFskY2FudiBpdGVtY2dldCAkbGluZWh0YWcoJHJvdykgLXRleHRdCi0gICAgc2V0IGZvbnQgWyRjYW52IGl0ZW1jZ2V0ICRsaW5laHRhZygkcm93KSAtZm9udF0KKyAgICAkY2FudiBjb29yZHMgJGxpbmVodGFnKCRpZCkgJHh0IFtsaW5kZXggJGlkcG9zKCRpZCkgMl0KKyAgICBzZXQgdGV4dCBbJGNhbnYgaXRlbWNnZXQgJGxpbmVodGFnKCRpZCkgLXRleHRdCisgICAgc2V0IGZvbnQgWyRjYW52IGl0ZW1jZ2V0ICRsaW5laHRhZygkaWQpIC1mb250XQogICAgIHNldCB4ciBbZXhwciB7JHh0ICsgW2ZvbnQgbWVhc3VyZSAkZm9udCAkdGV4dF19XQogICAgIGlmIHskeHIgPiAkY2FudnhtYXh9IHsKIAlzZXQgY2FudnhtYXggJHhyCiAJc2V0Y2FudnNjcm9sbAogICAgIH0KICAgICBpZiB7W2luZm8gZXhpc3RzIGN1cnJlbnRpZF0gJiYgJGN1cnJlbnRpZCA9PSAkaWR9IHsKLQltYWtlX3NlY3NlbCAkcm93CisJbWFrZV9zZWNzZWwgJGlkCiAgICAgfQogfQogCkBAIC03NDg0LDcgKzgyMjIsNyBAQAogfQogCiBwcm9jIG1rdGFnZ28ge30gewotICAgIGRvbWt0YWcKKyAgICBpZiB7IVtkb21rdGFnXX0gcmV0dXJuCiAgICAgbWt0YWdjYW4KIH0KIApAQCAtNzQ5NSw2ICs4MjMzLDcgQEAKICAgICBzZXQgd3Jjb210b3AgJHRvcAogICAgIGNhdGNoIHtkZXN0cm95ICR0b3B9CiAgICAgdG9wbGV2ZWwgJHRvcAorICAgIG1ha2VfdHJhbnNpZW50ICR0b3AgLgogICAgIGxhYmVsICR0b3AudGl0bGUgLXRleHQgW21jICJXcml0ZSBjb21taXQgdG8gZmlsZSJdCiAgICAgZ3JpZCAkdG9wLnRpdGxlIC0gLXBhZHkgMTAKICAgICBsYWJlbCAkdG9wLmlkIC10ZXh0IFttYyAiSUQ6Il0KQEAgLTc1MTYsNiArODI1NSw4IEBACiAgICAgZnJhbWUgJHRvcC5idXRzCiAgICAgYnV0dG9uICR0b3AuYnV0cy5nZW4gLXRleHQgW21jICJXcml0ZSJdIC1jb21tYW5kIHdyY29tZ28KICAgICBidXR0b24gJHRvcC5idXRzLmNhbiAtdGV4dCBbbWMgIkNhbmNlbCJdIC1jb21tYW5kIHdyY29tY2FuCisgICAgYmluZCAkdG9wIDxLZXktUmV0dXJuPiB3cmNvbWdvCisgICAgYmluZCAkdG9wIDxLZXktRXNjYXBlPiB3cmNvbWNhbgogICAgIGdyaWQgJHRvcC5idXRzLmdlbiAkdG9wLmJ1dHMuY2FuCiAgICAgZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcC5idXRzIDAgLXdlaWdodCAxIC11bmlmb3JtIGEKICAgICBncmlkIGNvbHVtbmNvbmZpZ3VyZSAkdG9wLmJ1dHMgMSAtd2VpZ2h0IDEgLXVuaWZvcm0gYQpAQCAtNzUzMCw3ICs4MjcxLDcgQEAKICAgICBzZXQgY21kICJlY2hvICRpZCB8IFskd3Jjb210b3AuY21kIGdldF0iCiAgICAgc2V0IGZuYW1lIFskd3Jjb210b3AuZm5hbWUgZ2V0XQogICAgIGlmIHtbY2F0Y2gge2V4ZWMgc2ggLWMgJGNtZCA+JGZuYW1lICZ9IGVycl19IHsKLQllcnJvcl9wb3B1cCAiW21jICJFcnJvciB3cml0aW5nIGNvbW1pdDoiXSAkZXJyIgorCWVycm9yX3BvcHVwICJbbWMgIkVycm9yIHdyaXRpbmcgY29tbWl0OiJdICRlcnIiICR3cmNvbXRvcAogICAgIH0KICAgICBjYXRjaCB7ZGVzdHJveSAkd3Jjb210b3B9CiAgICAgdW5zZXQgd3Jjb210b3AKQEAgLTc1NDksNiArODI5MCw3IEBACiAgICAgc2V0IHRvcCAubWFrZWJyYW5jaAogICAgIGNhdGNoIHtkZXN0cm95ICR0b3B9CiAgICAgdG9wbGV2ZWwgJHRvcAorICAgIG1ha2VfdHJhbnNpZW50ICR0b3AgLgogICAgIGxhYmVsICR0b3AudGl0bGUgLXRleHQgW21jICJDcmVhdGUgbmV3IGJyYW5jaCJdCiAgICAgZ3JpZCAkdG9wLnRpdGxlIC0gLXBhZHkgMTAKICAgICBsYWJlbCAkdG9wLmlkIC10ZXh0IFttYyAiSUQ6Il0KQEAgLTc1NjIsNiArODMwNCw4IEBACiAgICAgZnJhbWUgJHRvcC5idXRzCiAgICAgYnV0dG9uICR0b3AuYnV0cy5nbyAtdGV4dCBbbWMgIkNyZWF0ZSJdIC1jb21tYW5kIFtsaXN0IG1rYnJnbyAkdG9wXQogICAgIGJ1dHRvbiAkdG9wLmJ1dHMuY2FuIC10ZXh0IFttYyAiQ2FuY2VsIl0gLWNvbW1hbmQgImNhdGNoIHtkZXN0cm95ICR0b3B9IgorICAgIGJpbmQgJHRvcCA8S2V5LVJldHVybj4gW2xpc3QgbWticmdvICR0b3BdCisgICAgYmluZCAkdG9wIDxLZXktRXNjYXBlPiAiY2F0Y2gge2Rlc3Ryb3kgJHRvcH0iCiAgICAgZ3JpZCAkdG9wLmJ1dHMuZ28gJHRvcC5idXRzLmNhbgogICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAwIC13ZWlnaHQgMSAtdW5pZm9ybSBhCiAgICAgZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcC5idXRzIDEgLXdlaWdodCAxIC11bmlmb3JtIGEKQEAgLTc1NzQsMjkgKzgzMTgsNzMgQEAKIAogICAgIHNldCBuYW1lIFskdG9wLm5hbWUgZ2V0XQogICAgIHNldCBpZCBbJHRvcC5zaGExIGdldF0KKyAgICBzZXQgY21kYXJncyB7fQorICAgIHNldCBvbGRfaWQge30KICAgICBpZiB7JG5hbWUgZXEge319IHsKLQllcnJvcl9wb3B1cCBbbWMgIlBsZWFzZSBzcGVjaWZ5IGEgbmFtZSBmb3IgdGhlIG5ldyBicmFuY2giXQorCWVycm9yX3BvcHVwIFttYyAiUGxlYXNlIHNwZWNpZnkgYSBuYW1lIGZvciB0aGUgbmV3IGJyYW5jaCJdICR0b3AKIAlyZXR1cm4KICAgICB9CisgICAgaWYge1tpbmZvIGV4aXN0cyBoZWFkaWRzKCRuYW1lKV19IHsKKwlpZiB7IVtjb25maXJtX3BvcHVwIFttYyBcCisJCSJCcmFuY2ggJyVzJyBhbHJlYWR5IGV4aXN0cy4gT3ZlcndyaXRlPyIgJG5hbWVdICR0b3BdfSB7CisJICAgIHJldHVybgorCX0KKwlzZXQgb2xkX2lkICRoZWFkaWRzKCRuYW1lKQorCWxhcHBlbmQgY21kYXJncyAtZgorICAgIH0KICAgICBjYXRjaCB7ZGVzdHJveSAkdG9wfQorICAgIGxhcHBlbmQgY21kYXJncyAkbmFtZSAkaWQKICAgICBub3didXN5IG5ld2JyYW5jaAogICAgIHVwZGF0ZQogICAgIGlmIHtbY2F0Y2ggewotCWV4ZWMgZ2l0IGJyYW5jaCAkbmFtZSAkaWQKKwlldmFsIGV4ZWMgZ2l0IGJyYW5jaCAkY21kYXJncwogICAgIH0gZXJyXX0gewogCW5vdGJ1c3kgbmV3YnJhbmNoCiAJZXJyb3JfcG9wdXAgJGVycgogICAgIH0gZWxzZSB7Ci0Jc2V0IGhlYWRpZHMoJG5hbWUpICRpZAotCWxhcHBlbmQgaWRoZWFkcygkaWQpICRuYW1lCi0JYWRkZWRoZWFkICRpZCAkbmFtZQogCW5vdGJ1c3kgbmV3YnJhbmNoCi0JcmVkcmF3dGFncyAkaWQKKwlpZiB7JG9sZF9pZCBuZSB7fX0geworCSAgICBtb3ZlaGVhZCAkaWQgJG5hbWUKKwkgICAgbW92ZWRoZWFkICRpZCAkbmFtZQorCSAgICByZWRyYXd0YWdzICRvbGRfaWQKKwkgICAgcmVkcmF3dGFncyAkaWQKKwl9IGVsc2UgeworCSAgICBzZXQgaGVhZGlkcygkbmFtZSkgJGlkCisJICAgIGxhcHBlbmQgaWRoZWFkcygkaWQpICRuYW1lCisJICAgIGFkZGVkaGVhZCAkaWQgJG5hbWUKKwkgICAgcmVkcmF3dGFncyAkaWQKKwl9CiAJZGlzcG5lYXJ0YWdzIDAKIAlydW4gcmVmaWxsX3JlZmxpc3QKICAgICB9CiB9CiAKK3Byb2MgZXhlY19jaXRvb2wge3Rvb2xfYXJncyB7YmFzZWlkIHt9fX0geworICAgIGdsb2JhbCBjb21taXRpbmZvIGVudgorCisgICAgc2V0IHNhdmVfZW52IFthcnJheSBnZXQgZW52IEdJVF9BVVRIT1JfKl0KKworICAgIGlmIHskYmFzZWlkIG5lIHt9fSB7CisJaWYgeyFbaW5mbyBleGlzdHMgY29tbWl0aW5mbygkYmFzZWlkKV19IHsKKwkgICAgZ2V0Y29tbWl0ICRiYXNlaWQKKwl9CisJc2V0IGF1dGhvciBbbGluZGV4ICRjb21taXRpbmZvKCRiYXNlaWQpIDFdCisJc2V0IGRhdGUgW2xpbmRleCAkY29tbWl0aW5mbygkYmFzZWlkKSAyXQorCWlmIHtbcmVnZXhwIHteXHMqKFxTLipcU3xcUylccyo8KC4qKT5ccyokfSBcCisJICAgICAgICAgICAgJGF1dGhvciBhdXRob3IgbmFtZSBlbWFpbF0KKwkgICAgJiYgJGRhdGUgbmUge319IHsKKwkgICAgc2V0IGVudihHSVRfQVVUSE9SX05BTUUpICRuYW1lCisJICAgIHNldCBlbnYoR0lUX0FVVEhPUl9FTUFJTCkgJGVtYWlsCisJICAgIHNldCBlbnYoR0lUX0FVVEhPUl9EQVRFKSAkZGF0ZQorCX0KKyAgICB9CisKKyAgICBldmFsIGV4ZWMgZ2l0IGNpdG9vbCAkdG9vbF9hcmdzICYKKworICAgIGFycmF5IHVuc2V0IGVudiBHSVRfQVVUSE9SXyoKKyAgICBhcnJheSBzZXQgZW52ICRzYXZlX2VudgorfQorCiBwcm9jIGNoZXJyeXBpY2sge30gewogICAgIGdsb2JhbCByb3dtZW51aWQgY3VydmlldwogICAgIGdsb2JhbCBtYWluaGVhZCBtYWluaGVhZGlkCkBAIC03NjE1LDcgKzg0MDMsMjYgQEAKICAgICAjIG5vIGVycm9yIG9jY3VycywgYW5kIGV4ZWMgdGFrZXMgdGhhdCBhcyBhbiBpbmRpY2F0aW9uIG9mIGVycm9yLi4uCiAgICAgaWYge1tjYXRjaCB7ZXhlYyBzaCAtYyAiZ2l0IGNoZXJyeS1waWNrIC1yICRyb3dtZW51aWQgMj4mMSJ9IGVycl19IHsKIAlub3RidXN5IGNoZXJyeXBpY2sKLQllcnJvcl9wb3B1cCAkZXJyCisJaWYge1tyZWdleHAgLWxpbmUgXAorCQkge0VudHJ5ICcoLiopJyAod291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgbWVyZ2V8bm90IHVwdG9kYXRlKX0gXAorCQkgJGVyciBtc2cgZm5hbWVdfSB7CisJICAgIGVycm9yX3BvcHVwIFttYyAiQ2hlcnJ5LXBpY2sgZmFpbGVkIGJlY2F1c2Ugb2YgbG9jYWwgY2hhbmdlc1wKKwkJCXRvIGZpbGUgJyVzJy5cblBsZWFzZSBjb21taXQsIHJlc2V0IG9yIHN0YXNoXAorCQkJeW91ciBjaGFuZ2VzIGFuZCB0cnkgYWdhaW4uIiAkZm5hbWVdCisJfSBlbHNlaWYge1tyZWdleHAgLWxpbmUgXAorCQkgICAgICAge14oQ09ORkxJQ1QgXCguKlwpOnxBdXRvbWF0aWMgY2hlcnJ5LXBpY2sgZmFpbGVkKX0gXAorCQkgICAgICAgJGVycl19IHsKKwkgICAgaWYge1tjb25maXJtX3BvcHVwIFttYyAiQ2hlcnJ5LXBpY2sgZmFpbGVkIGJlY2F1c2Ugb2YgbWVyZ2VcCisJCQljb25mbGljdC5cbkRvIHlvdSB3aXNoIHRvIHJ1biBnaXQgY2l0b29sIHRvXAorCQkJcmVzb2x2ZSBpdD8iXV19IHsKKwkJIyBGb3JjZSBjaXRvb2wgdG8gcmVhZCBNRVJHRV9NU0cKKwkJZmlsZSBkZWxldGUgW2ZpbGUgam9pbiBbZ2l0ZGlyXSAiR0lUR1VJX01TRyJdCisJCWV4ZWNfY2l0b29sIHt9ICRyb3dtZW51aWQKKwkgICAgfQorCX0gZWxzZSB7CisJICAgIGVycm9yX3BvcHVwICRlcnIKKwl9CisJcnVuIHVwZGF0ZWNvbW1pdHMKIAlyZXR1cm4KICAgICB9CiAgICAgc2V0IG5ld2hlYWQgW2V4ZWMgZ2l0IHJldi1wYXJzZSBIRUFEXQpAQCAtNzYyNiw2ICs4NDMzLDcgQEAKICAgICB9CiAgICAgYWRkbmV3Y2hpbGQgJG5ld2hlYWQgJG9sZGhlYWQKICAgICBpZiB7W2NvbW1pdGludmlldyAkb2xkaGVhZCAkY3Vydmlld119IHsKKwkjIFhYWCB0aGlzIGlzbid0IHJpZ2h0IGlmIHdlIGhhdmUgYSBwYXRoIGxpbWl0Li4uCiAJaW5zZXJ0cm93ICRuZXdoZWFkICRvbGRoZWFkICRjdXJ2aWV3CiAJaWYgeyRtYWluaGVhZCBuZSB7fX0gewogCSAgICBtb3ZlaGVhZCAkbmV3aGVhZCAkbWFpbmhlYWQKQEAgLTc2NDUsNyArODQ1Myw3IEBACiAgICAgc2V0IGNvbmZpcm1fb2sgMAogICAgIHNldCB3ICIuY29uZmlybXJlc2V0IgogICAgIHRvcGxldmVsICR3Ci0gICAgd20gdHJhbnNpZW50ICR3IC4KKyAgICBtYWtlX3RyYW5zaWVudCAkdyAuCiAgICAgd20gdGl0bGUgJHcgW21jICJDb25maXJtIHJlc2V0Il0KICAgICBtZXNzYWdlICR3Lm0gLXRleHQgXAogCVttYyAiUmVzZXQgYnJhbmNoICVzIHRvICVzPyIgJG1haW5oZWFkIFtzdHJpbmcgcmFuZ2UgJHJvd21lbnVpZCAwIDddXSBcCkBAIC03NjY4LDYgKzg0NzYsNyBAQAogICAgIGJ1dHRvbiAkdy5vayAtdGV4dCBbbWMgT0tdIC1jb21tYW5kICJzZXQgY29uZmlybV9vayAxOyBkZXN0cm95ICR3IgogICAgIHBhY2sgJHcub2sgLXNpZGUgbGVmdCAtZmlsbCB4IC1wYWR4IDIwIC1wYWR5IDIwCiAgICAgYnV0dG9uICR3LmNhbmNlbCAtdGV4dCBbbWMgQ2FuY2VsXSAtY29tbWFuZCAiZGVzdHJveSAkdyIKKyAgICBiaW5kICR3IDxLZXktRXNjYXBlPiBbbGlzdCBkZXN0cm95ICR3XQogICAgIHBhY2sgJHcuY2FuY2VsIC1zaWRlIHJpZ2h0IC1maWxsIHggLXBhZHggMjAgLXBhZHkgMjAKICAgICBiaW5kICR3IDxWaXNpYmlsaXR5PiAiZ3JhYiAkdzsgZm9jdXMgJHciCiAgICAgdGt3YWl0IHdpbmRvdyAkdwpAQCAtNzczMiw3ICs4NTQxLDcgQEAKIAogcHJvYyBjb2JyYW5jaCB7fSB7CiAgICAgZ2xvYmFsIGhlYWRtZW51aWQgaGVhZG1lbnVoZWFkIGhlYWRpZHMKLSAgICBnbG9iYWwgc2hvd2xvY2FsY2hhbmdlcyBtYWluaGVhZGlkCisgICAgZ2xvYmFsIHNob3dsb2NhbGNoYW5nZXMKIAogICAgICMgY2hlY2sgdGhlIHRyZWUgaXMgY2xlYW4gZmlyc3Q/PwogICAgIG5vd2J1c3kgY2hlY2tvdXQgW21jICJDaGVja2luZyBvdXQiXQpAQCAtNzc1Myw2ICs4NTYyLDcgQEAKIAogcHJvYyByZWFkY2hlY2tvdXRzdGF0IHtmZCBuZXdoZWFkIG5ld2hlYWRpZH0gewogICAgIGdsb2JhbCBtYWluaGVhZCBtYWluaGVhZGlkIGhlYWRpZHMgc2hvd2xvY2FsY2hhbmdlcyBwcm9ncmVzc2Nvb3JkcworICAgIGdsb2JhbCB2aWV3bWFpbmhlYWRpZCBjdXJ2aWV3CiAKICAgICBpZiB7W2dldHMgJGZkIGxpbmVdID49IDB9IHsKIAlpZiB7W3JlZ2V4cCB7KFswLTldKyklIFwoKFswLTldKykvKFswLTldKylcKX0gJGxpbmUgbWF0Y2ggcCBtIG5dfSB7CkBAIC03NzcwLDYgKzg1ODAsNyBAQAogICAgIHNldCBvbGRtYWluaWQgJG1haW5oZWFkaWQKICAgICBzZXQgbWFpbmhlYWQgJG5ld2hlYWQKICAgICBzZXQgbWFpbmhlYWRpZCAkbmV3aGVhZGlkCisgICAgc2V0IHZpZXdtYWluaGVhZGlkKCRjdXJ2aWV3KSAkbmV3aGVhZGlkCiAgICAgcmVkcmF3dGFncyAkb2xkbWFpbmlkCiAgICAgcmVkcmF3dGFncyAkbmV3aGVhZGlkCiAgICAgc2VsYnlpZCAkbmV3aGVhZGlkCkBAIC03ODI0LDYgKzg2MzUsNyBAQAogICAgIH0KICAgICB0b3BsZXZlbCAkdG9wCiAgICAgd20gdGl0bGUgJHRvcCBbbWMgIlRhZ3MgYW5kIGhlYWRzOiAlcyIgW2ZpbGUgdGFpbCBbcHdkXV1dCisgICAgbWFrZV90cmFuc2llbnQgJHRvcCAuCiAgICAgdGV4dCAkdG9wLmxpc3QgLWJhY2tncm91bmQgJGJnY29sb3IgLWZvcmVncm91bmQgJGZnY29sb3IgXAogCS1zZWxlY3RiYWNrZ3JvdW5kICRzZWxlY3RiZ2NvbG9yIC1mb250IG1haW5mb250IFwKIAkteHNjcm9sbGNvbW1hbmQgIiR0b3AueHNiIHNldCIgLXlzY3JvbGxjb21tYW5kICIkdG9wLnlzYiBzZXQiIFwKQEAgLTc4NDUsNiArODY1Nyw3IEBACiAgICAgcGFjayAkdG9wLmYubCAtc2lkZSBsZWZ0CiAgICAgZ3JpZCAkdG9wLmYgLSAtc3RpY2t5IGV3IC1wYWR5IDIKICAgICBidXR0b24gJHRvcC5jbG9zZSAtY29tbWFuZCBbbGlzdCBkZXN0cm95ICR0b3BdIC10ZXh0IFttYyAiQ2xvc2UiXQorICAgIGJpbmQgJHRvcCA8S2V5LUVzY2FwZT4gW2xpc3QgZGVzdHJveSAkdG9wXQogICAgIGdyaWQgJHRvcC5jbG9zZSAtCiAgICAgZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcCAwIC13ZWlnaHQgMQogICAgIGdyaWQgcm93Y29uZmlndXJlICR0b3AgMCAtd2VpZ2h0IDEKQEAgLTc4ODYsNyArODY5OSw3IEBACiAKIHByb2MgcmVmaWxsX3JlZmxpc3Qge30gewogICAgIGdsb2JhbCByZWZsaXN0IHJlZmxpc3RmaWx0ZXIgc2hvd3JlZnN0b3AgaGVhZGlkcyB0YWdpZHMgb3RoZXJyZWZpZHMKLSAgICBnbG9iYWwgY3VydmlldyBjb21taXRpbnRlcmVzdAorICAgIGdsb2JhbCBjdXJ2aWV3CiAKICAgICBpZiB7IVtpbmZvIGV4aXN0cyBzaG93cmVmc3RvcF0gfHwgIVt3aW5mbyBleGlzdHMgJHNob3dyZWZzdG9wXX0gcmV0dXJuCiAgICAgc2V0IHJlZnMge30KQEAgLTc4OTUsNyArODcwOCw3IEBACiAJICAgIGlmIHtbY29tbWl0aW52aWV3ICRoZWFkaWRzKCRuKSAkY3Vydmlld119IHsKIAkJbGFwcGVuZCByZWZzIFtsaXN0ICRuIEhdCiAJICAgIH0gZWxzZSB7Ci0JCXNldCBjb21taXRpbnRlcmVzdCgkaGVhZGlkcygkbikpIHtydW4gcmVmaWxsX3JlZmxpc3R9CisJCWludGVyZXN0ZWRpbiAkaGVhZGlkcygkbikge3J1biByZWZpbGxfcmVmbGlzdH0KIAkgICAgfQogCX0KICAgICB9CkBAIC03OTA0LDcgKzg3MTcsNyBAQAogCSAgICBpZiB7W2NvbW1pdGludmlldyAkdGFnaWRzKCRuKSAkY3Vydmlld119IHsKIAkJbGFwcGVuZCByZWZzIFtsaXN0ICRuIFRdCiAJICAgIH0gZWxzZSB7Ci0JCXNldCBjb21taXRpbnRlcmVzdCgkdGFnaWRzKCRuKSkge3J1biByZWZpbGxfcmVmbGlzdH0KKwkJaW50ZXJlc3RlZGluICR0YWdpZHMoJG4pIHtydW4gcmVmaWxsX3JlZmxpc3R9CiAJICAgIH0KIAl9CiAgICAgfQpAQCAtNzkxMyw3ICs4NzI2LDcgQEAKIAkgICAgaWYge1tjb21taXRpbnZpZXcgJG90aGVycmVmaWRzKCRuKSAkY3Vydmlld119IHsKIAkJbGFwcGVuZCByZWZzIFtsaXN0ICRuIG9dCiAJICAgIH0gZWxzZSB7Ci0JCXNldCBjb21taXRpbnRlcmVzdCgkb3RoZXJyZWZpZHMoJG4pKSB7cnVuIHJlZmlsbF9yZWZsaXN0fQorCQlpbnRlcmVzdGVkaW4gJG90aGVycmVmaWRzKCRuKSB7cnVuIHJlZmlsbF9yZWZsaXN0fQogCSAgICB9CiAJfQogICAgIH0KQEAgLTkxNTAsNiArOTk2Myw3IEBACiAKIHByb2MgY2hvb3NlZm9udCB7Zm9udCB3aGljaH0gewogICAgIGdsb2JhbCBmb250cGFyYW0gZm9udGxpc3QgZm9udHRvcCBmb250YXR0cgorICAgIGdsb2JhbCBwcmVmc3RvcAogCiAgICAgc2V0IGZvbnRwYXJhbSh3aGljaCkgJHdoaWNoCiAgICAgc2V0IGZvbnRwYXJhbShmb250KSAkZm9udApAQCAtOTE2Myw2ICs5OTc3LDcgQEAKIAlmb250IGNyZWF0ZSBzYW1wbGUKIAlldmFsIGZvbnQgY29uZmlnIHNhbXBsZSBbZm9udCBhY3R1YWwgJGZvbnRdCiAJdG9wbGV2ZWwgJHRvcAorCW1ha2VfdHJhbnNpZW50ICR0b3AgJHByZWZzdG9wCiAJd20gdGl0bGUgJHRvcCBbbWMgIkdpdGsgZm9udCBjaG9vc2VyIl0KIAlsYWJlbCAkdG9wLmwgLXRleHR2YXJpYWJsZSBmb250cGFyYW0od2hpY2gpCiAJcGFjayAkdG9wLmwgLXNpZGUgdG9wCkBAIC05MTk2LDYgKzEwMDExLDggQEAKIAlmcmFtZSAkdG9wLmJ1dHMKIAlidXR0b24gJHRvcC5idXRzLm9rIC10ZXh0IFttYyAiT0siXSAtY29tbWFuZCBmb250b2sgLWRlZmF1bHQgYWN0aXZlCiAJYnV0dG9uICR0b3AuYnV0cy5jYW4gLXRleHQgW21jICJDYW5jZWwiXSAtY29tbWFuZCBmb250Y2FuIC1kZWZhdWx0IG5vcm1hbAorCWJpbmQgJHRvcCA8S2V5LVJldHVybj4gZm9udG9rCisJYmluZCAkdG9wIDxLZXktRXNjYXBlPiBmb250Y2FuCiAJZ3JpZCAkdG9wLmJ1dHMub2sgJHRvcC5idXRzLmNhbgogCWdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAwIC13ZWlnaHQgMSAtdW5pZm9ybSBhCiAJZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcC5idXRzIDEgLXdlaWdodCAxIC11bmlmb3JtIGEKQEAgLTkyNjIsOCArMTAwNzksOCBAQAogcHJvYyBkb3ByZWZzIHt9IHsKICAgICBnbG9iYWwgbWF4d2lkdGggbWF4Z3JhcGhwY3QKICAgICBnbG9iYWwgb2xkcHJlZnMgcHJlZnN0b3Agc2hvd25lYXJ0YWdzIHNob3dsb2NhbGNoYW5nZXMKLSAgICBnbG9iYWwgYmdjb2xvciBmZ2NvbG9yIGN0ZXh0IGRpZmZjb2xvcnMgc2VsZWN0Ymdjb2xvcgotICAgIGdsb2JhbCB0YWJzdG9wIGxpbWl0ZGlmZnMgYXV0b3NlbGVjdCBleHRkaWZmdG9vbAorICAgIGdsb2JhbCBiZ2NvbG9yIGZnY29sb3IgY3RleHQgZGlmZmNvbG9ycyBzZWxlY3RiZ2NvbG9yIG1hcmtiZ2NvbG9yCisgICAgZ2xvYmFsIHRhYnN0b3AgbGltaXRkaWZmcyBhdXRvc2VsZWN0IGV4dGRpZmZ0b29sIHBlcmZpbGVfYXR0cnMKIAogICAgIHNldCB0b3AgLmdpdGtwcmVmcwogICAgIHNldCBwcmVmc3RvcCAkdG9wCkBAIC05MjcyLDExICsxMDA4OSwxMiBAQAogCXJldHVybgogICAgIH0KICAgICBmb3JlYWNoIHYge21heHdpZHRoIG1heGdyYXBocGN0IHNob3duZWFydGFncyBzaG93bG9jYWxjaGFuZ2VzIFwKLQkJICAgbGltaXRkaWZmcyB0YWJzdG9wfSB7CisJCSAgIGxpbWl0ZGlmZnMgdGFic3RvcCBwZXJmaWxlX2F0dHJzfSB7CiAJc2V0IG9sZHByZWZzKCR2KSBbc2V0ICR2XQogICAgIH0KICAgICB0b3BsZXZlbCAkdG9wCiAgICAgd20gdGl0bGUgJHRvcCBbbWMgIkdpdGsgcHJlZmVyZW5jZXMiXQorICAgIG1ha2VfdHJhbnNpZW50ICR0b3AgLgogICAgIGxhYmVsICR0b3AubGRpc3AgLXRleHQgW21jICJDb21taXQgbGlzdCBkaXNwbGF5IG9wdGlvbnMiXQogICAgIGdyaWQgJHRvcC5sZGlzcCAtIC1zdGlja3kgdyAtcGFkeSAxMAogICAgIGxhYmVsICR0b3Auc3BhY2VyIC10ZXh0ICIgIgpAQCAtOTI4OCwxNSArMTAxMDYsMTEgQEAKIAktZm9udCBvcHRpb25mb250CiAgICAgc3BpbmJveCAkdG9wLm1heHBjdCAtZnJvbSAxIC10byAxMDAgLXdpZHRoIDQgLXRleHR2YXJpYWJsZSBtYXhncmFwaHBjdAogICAgIGdyaWQgeCAkdG9wLm1heHBjdGwgJHRvcC5tYXhwY3QgLXN0aWNreSB3Ci0gICAgZnJhbWUgJHRvcC5zaG93bG9jYWwKLSAgICBsYWJlbCAkdG9wLnNob3dsb2NhbC5sIC10ZXh0IFttYyAiU2hvdyBsb2NhbCBjaGFuZ2VzIl0gLWZvbnQgb3B0aW9uZm9udAotICAgIGNoZWNrYnV0dG9uICR0b3Auc2hvd2xvY2FsLmIgLXZhcmlhYmxlIHNob3dsb2NhbGNoYW5nZXMKLSAgICBwYWNrICR0b3Auc2hvd2xvY2FsLmIgJHRvcC5zaG93bG9jYWwubCAtc2lkZSBsZWZ0CisgICAgY2hlY2tidXR0b24gJHRvcC5zaG93bG9jYWwgLXRleHQgW21jICJTaG93IGxvY2FsIGNoYW5nZXMiXSBcCisJLWZvbnQgb3B0aW9uZm9udCAtdmFyaWFibGUgc2hvd2xvY2FsY2hhbmdlcwogICAgIGdyaWQgeCAkdG9wLnNob3dsb2NhbCAtc3RpY2t5IHcKLSAgICBmcmFtZSAkdG9wLmF1dG9zZWxlY3QKLSAgICBsYWJlbCAkdG9wLmF1dG9zZWxlY3QubCAtdGV4dCBbbWMgIkF1dG8tc2VsZWN0IFNIQTEiXSAtZm9udCBvcHRpb25mb250Ci0gICAgY2hlY2tidXR0b24gJHRvcC5hdXRvc2VsZWN0LmIgLXZhcmlhYmxlIGF1dG9zZWxlY3QKLSAgICBwYWNrICR0b3AuYXV0b3NlbGVjdC5iICR0b3AuYXV0b3NlbGVjdC5sIC1zaWRlIGxlZnQKKyAgICBjaGVja2J1dHRvbiAkdG9wLmF1dG9zZWxlY3QgLXRleHQgW21jICJBdXRvLXNlbGVjdCBTSEExIl0gXAorCS1mb250IG9wdGlvbmZvbnQgLXZhcmlhYmxlIGF1dG9zZWxlY3QKICAgICBncmlkIHggJHRvcC5hdXRvc2VsZWN0IC1zdGlja3kgdwogCiAgICAgbGFiZWwgJHRvcC5kZGlzcCAtdGV4dCBbbWMgIkRpZmYgZGlzcGxheSBvcHRpb25zIl0KQEAgLTkzMDQsMTYgKzEwMTE4LDE1IEBACiAgICAgbGFiZWwgJHRvcC50YWJzdG9wbCAtdGV4dCBbbWMgIlRhYiBzcGFjaW5nIl0gLWZvbnQgb3B0aW9uZm9udAogICAgIHNwaW5ib3ggJHRvcC50YWJzdG9wIC1mcm9tIDEgLXRvIDIwIC13aWR0aCA0IC10ZXh0dmFyaWFibGUgdGFic3RvcAogICAgIGdyaWQgeCAkdG9wLnRhYnN0b3BsICR0b3AudGFic3RvcCAtc3RpY2t5IHcKLSAgICBmcmFtZSAkdG9wLm50YWcKLSAgICBsYWJlbCAkdG9wLm50YWcubCAtdGV4dCBbbWMgIkRpc3BsYXkgbmVhcmJ5IHRhZ3MiXSAtZm9udCBvcHRpb25mb250Ci0gICAgY2hlY2tidXR0b24gJHRvcC5udGFnLmIgLXZhcmlhYmxlIHNob3duZWFydGFncwotICAgIHBhY2sgJHRvcC5udGFnLmIgJHRvcC5udGFnLmwgLXNpZGUgbGVmdAorICAgIGNoZWNrYnV0dG9uICR0b3AubnRhZyAtdGV4dCBbbWMgIkRpc3BsYXkgbmVhcmJ5IHRhZ3MiXSBcCisJLWZvbnQgb3B0aW9uZm9udCAtdmFyaWFibGUgc2hvd25lYXJ0YWdzCiAgICAgZ3JpZCB4ICR0b3AubnRhZyAtc3RpY2t5IHcKLSAgICBmcmFtZSAkdG9wLmxkaWZmCi0gICAgbGFiZWwgJHRvcC5sZGlmZi5sIC10ZXh0IFttYyAiTGltaXQgZGlmZnMgdG8gbGlzdGVkIHBhdGhzIl0gLWZvbnQgb3B0aW9uZm9udAotICAgIGNoZWNrYnV0dG9uICR0b3AubGRpZmYuYiAtdmFyaWFibGUgbGltaXRkaWZmcwotICAgIHBhY2sgJHRvcC5sZGlmZi5iICR0b3AubGRpZmYubCAtc2lkZSBsZWZ0CisgICAgY2hlY2tidXR0b24gJHRvcC5sZGlmZiAtdGV4dCBbbWMgIkxpbWl0IGRpZmZzIHRvIGxpc3RlZCBwYXRocyJdIFwKKwktZm9udCBvcHRpb25mb250IC12YXJpYWJsZSBsaW1pdGRpZmZzCiAgICAgZ3JpZCB4ICR0b3AubGRpZmYgLXN0aWNreSB3CisgICAgY2hlY2tidXR0b24gJHRvcC5sYXR0ciAtdGV4dCBbbWMgIlN1cHBvcnQgcGVyLWZpbGUgZW5jb2RpbmdzIl0gXAorCS1mb250IG9wdGlvbmZvbnQgLXZhcmlhYmxlIHBlcmZpbGVfYXR0cnMKKyAgICBncmlkIHggJHRvcC5sYXR0ciAtc3RpY2t5IHcKIAogICAgIGVudHJ5ICR0b3AuZXh0ZGlmZnQgLXRleHR2YXJpYWJsZSBleHRkaWZmdG9vbAogICAgIGZyYW1lICR0b3AuZXh0ZGlmZmYKQEAgLTkzMjgsMzEgKzEwMTQxLDM3IEBACiAgICAgZ3JpZCAkdG9wLmNkaXNwIC0gLXN0aWNreSB3IC1wYWR5IDEwCiAgICAgbGFiZWwgJHRvcC5iZyAtcGFkeCA0MCAtcmVsaWVmIHN1bmsgLWJhY2tncm91bmQgJGJnY29sb3IKICAgICBidXR0b24gJHRvcC5iZ2J1dCAtdGV4dCBbbWMgIkJhY2tncm91bmQiXSAtZm9udCBvcHRpb25mb250IFwKLQktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBiZ2NvbG9yIHt9ICR0b3AuYmcgYmFja2dyb3VuZCBzZXRiZ10KKwktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBiZ2NvbG9yIHt9ICR0b3AuYmcgW21jICJiYWNrZ3JvdW5kIl0gc2V0YmddCiAgICAgZ3JpZCB4ICR0b3AuYmdidXQgJHRvcC5iZyAtc3RpY2t5IHcKICAgICBsYWJlbCAkdG9wLmZnIC1wYWR4IDQwIC1yZWxpZWYgc3VuayAtYmFja2dyb3VuZCAkZmdjb2xvcgogICAgIGJ1dHRvbiAkdG9wLmZnYnV0IC10ZXh0IFttYyAiRm9yZWdyb3VuZCJdIC1mb250IG9wdGlvbmZvbnQgXAotCS1jb21tYW5kIFtsaXN0IGNob29zZWNvbG9yIGZnY29sb3Ige30gJHRvcC5mZyBmb3JlZ3JvdW5kIHNldGZnXQorCS1jb21tYW5kIFtsaXN0IGNob29zZWNvbG9yIGZnY29sb3Ige30gJHRvcC5mZyBbbWMgImZvcmVncm91bmQiXSBzZXRmZ10KICAgICBncmlkIHggJHRvcC5mZ2J1dCAkdG9wLmZnIC1zdGlja3kgdwogICAgIGxhYmVsICR0b3AuZGlmZm9sZCAtcGFkeCA0MCAtcmVsaWVmIHN1bmsgLWJhY2tncm91bmQgW2xpbmRleCAkZGlmZmNvbG9ycyAwXQogICAgIGJ1dHRvbiAkdG9wLmRpZmZvbGRidXQgLXRleHQgW21jICJEaWZmOiBvbGQgbGluZXMiXSAtZm9udCBvcHRpb25mb250IFwKLQktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBkaWZmY29sb3JzIDAgJHRvcC5kaWZmb2xkICJkaWZmIG9sZCBsaW5lcyIgXAorCS1jb21tYW5kIFtsaXN0IGNob29zZWNvbG9yIGRpZmZjb2xvcnMgMCAkdG9wLmRpZmZvbGQgW21jICJkaWZmIG9sZCBsaW5lcyJdIFwKIAkJICAgICAgW2xpc3QgJGN0ZXh0IHRhZyBjb25mIGQwIC1mb3JlZ3JvdW5kXV0KICAgICBncmlkIHggJHRvcC5kaWZmb2xkYnV0ICR0b3AuZGlmZm9sZCAtc3RpY2t5IHcKICAgICBsYWJlbCAkdG9wLmRpZmZuZXcgLXBhZHggNDAgLXJlbGllZiBzdW5rIC1iYWNrZ3JvdW5kIFtsaW5kZXggJGRpZmZjb2xvcnMgMV0KICAgICBidXR0b24gJHRvcC5kaWZmbmV3YnV0IC10ZXh0IFttYyAiRGlmZjogbmV3IGxpbmVzIl0gLWZvbnQgb3B0aW9uZm9udCBcCi0JLWNvbW1hbmQgW2xpc3QgY2hvb3NlY29sb3IgZGlmZmNvbG9ycyAxICR0b3AuZGlmZm5ldyAiZGlmZiBuZXcgbGluZXMiIFwKLQkJICAgICAgW2xpc3QgJGN0ZXh0IHRhZyBjb25mIGQxIC1mb3JlZ3JvdW5kXV0KKwktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBkaWZmY29sb3JzIDEgJHRvcC5kaWZmbmV3IFttYyAiZGlmZiBuZXcgbGluZXMiXSBcCisJCSAgICAgIFtsaXN0ICRjdGV4dCB0YWcgY29uZiBkcmVzdWx0IC1mb3JlZ3JvdW5kXV0KICAgICBncmlkIHggJHRvcC5kaWZmbmV3YnV0ICR0b3AuZGlmZm5ldyAtc3RpY2t5IHcKICAgICBsYWJlbCAkdG9wLmh1bmtzZXAgLXBhZHggNDAgLXJlbGllZiBzdW5rIC1iYWNrZ3JvdW5kIFtsaW5kZXggJGRpZmZjb2xvcnMgMl0KICAgICBidXR0b24gJHRvcC5odW5rc2VwYnV0IC10ZXh0IFttYyAiRGlmZjogaHVuayBoZWFkZXIiXSAtZm9udCBvcHRpb25mb250IFwKIAktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBkaWZmY29sb3JzIDIgJHRvcC5odW5rc2VwIFwKLQkJICAgICAgImRpZmYgaHVuayBoZWFkZXIiIFwKKwkJICAgICAgW21jICJkaWZmIGh1bmsgaGVhZGVyIl0gXAogCQkgICAgICBbbGlzdCAkY3RleHQgdGFnIGNvbmYgaHVua3NlcCAtZm9yZWdyb3VuZF1dCiAgICAgZ3JpZCB4ICR0b3AuaHVua3NlcGJ1dCAkdG9wLmh1bmtzZXAgLXN0aWNreSB3CisgICAgbGFiZWwgJHRvcC5tYXJrYmdzZXAgLXBhZHggNDAgLXJlbGllZiBzdW5rIC1iYWNrZ3JvdW5kICRtYXJrYmdjb2xvcgorICAgIGJ1dHRvbiAkdG9wLm1hcmtiZ2J1dCAtdGV4dCBbbWMgIk1hcmtlZCBsaW5lIGJnIl0gLWZvbnQgb3B0aW9uZm9udCBcCisJLWNvbW1hbmQgW2xpc3QgY2hvb3NlY29sb3IgbWFya2JnY29sb3Ige30gJHRvcC5tYXJrYmdzZXAgXAorCQkgICAgICBbbWMgIm1hcmtlZCBsaW5lIGJhY2tncm91bmQiXSBcCisJCSAgICAgIFtsaXN0ICRjdGV4dCB0YWcgY29uZiBvbWFyayAtYmFja2dyb3VuZF1dCisgICAgZ3JpZCB4ICR0b3AubWFya2JnYnV0ICR0b3AubWFya2Jnc2VwIC1zdGlja3kgdwogICAgIGxhYmVsICR0b3Auc2VsYmdzZXAgLXBhZHggNDAgLXJlbGllZiBzdW5rIC1iYWNrZ3JvdW5kICRzZWxlY3RiZ2NvbG9yCiAgICAgYnV0dG9uICR0b3Auc2VsYmdidXQgLXRleHQgW21jICJTZWxlY3QgYmciXSAtZm9udCBvcHRpb25mb250IFwKLQktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBzZWxlY3RiZ2NvbG9yIHt9ICR0b3Auc2VsYmdzZXAgYmFja2dyb3VuZCBzZXRzZWxiZ10KKwktY29tbWFuZCBbbGlzdCBjaG9vc2Vjb2xvciBzZWxlY3RiZ2NvbG9yIHt9ICR0b3Auc2VsYmdzZXAgW21jICJiYWNrZ3JvdW5kIl0gc2V0c2VsYmddCiAgICAgZ3JpZCB4ICR0b3Auc2VsYmdidXQgJHRvcC5zZWxiZ3NlcCAtc3RpY2t5IHcKIAogICAgIGxhYmVsICR0b3AuY2ZvbnQgLXRleHQgW21jICJGb250czogcHJlc3MgdG8gY2hvb3NlIl0KQEAgLTkzNjQsNiArMTAxODMsOCBAQAogICAgIGZyYW1lICR0b3AuYnV0cwogICAgIGJ1dHRvbiAkdG9wLmJ1dHMub2sgLXRleHQgW21jICJPSyJdIC1jb21tYW5kIHByZWZzb2sgLWRlZmF1bHQgYWN0aXZlCiAgICAgYnV0dG9uICR0b3AuYnV0cy5jYW4gLXRleHQgW21jICJDYW5jZWwiXSAtY29tbWFuZCBwcmVmc2NhbiAtZGVmYXVsdCBub3JtYWwKKyAgICBiaW5kICR0b3AgPEtleS1SZXR1cm4+IHByZWZzb2sKKyAgICBiaW5kICR0b3AgPEtleS1Fc2NhcGU+IHByZWZzY2FuCiAgICAgZ3JpZCAkdG9wLmJ1dHMub2sgJHRvcC5idXRzLmNhbgogICAgIGdyaWQgY29sdW1uY29uZmlndXJlICR0b3AuYnV0cyAwIC13ZWlnaHQgMSAtdW5pZm9ybSBhCiAgICAgZ3JpZCBjb2x1bW5jb25maWd1cmUgJHRvcC5idXRzIDEgLXdlaWdodCAxIC11bmlmb3JtIGEKQEAgLTk0MjMsNyArMTAyNDQsNyBAQAogICAgIGdsb2JhbCBvbGRwcmVmcyBwcmVmc3RvcAogCiAgICAgZm9yZWFjaCB2IHttYXh3aWR0aCBtYXhncmFwaHBjdCBzaG93bmVhcnRhZ3Mgc2hvd2xvY2FsY2hhbmdlcyBcCi0JCSAgIGxpbWl0ZGlmZnMgdGFic3RvcH0geworCQkgICBsaW1pdGRpZmZzIHRhYnN0b3AgcGVyZmlsZV9hdHRyc30gewogCWdsb2JhbCAkdgogCXNldCAkdiAkb2xkcHJlZnMoJHYpCiAgICAgfQpAQCAtOTQzNiw3ICsxMDI1Nyw3IEBACiAgICAgZ2xvYmFsIG1heHdpZHRoIG1heGdyYXBocGN0CiAgICAgZ2xvYmFsIG9sZHByZWZzIHByZWZzdG9wIHNob3duZWFydGFncyBzaG93bG9jYWxjaGFuZ2VzCiAgICAgZ2xvYmFsIGZvbnRwcmVmIG1haW5mb250IHRleHRmb250IHVpZm9udAotICAgIGdsb2JhbCBsaW1pdGRpZmZzIHRyZWVkaWZmcworICAgIGdsb2JhbCBsaW1pdGRpZmZzIHRyZWVkaWZmcyBwZXJmaWxlX2F0dHJzCiAKICAgICBjYXRjaCB7ZGVzdHJveSAkcHJlZnN0b3B9CiAgICAgdW5zZXQgcHJlZnN0b3AKQEAgLTk0NjksOCArMTAyOTAsMTAgQEAKIAkgICAgZG9oaWRlbG9jYWxjaGFuZ2VzCiAJfQogICAgIH0KLSAgICBpZiB7JGxpbWl0ZGlmZnMgIT0gJG9sZHByZWZzKGxpbWl0ZGlmZnMpfSB7Ci0JIyB0cmVlZGlmZnMgZWxlbWVudHMgYXJlIGxpbWl0ZWQgYnkgcGF0aAorICAgIGlmIHskbGltaXRkaWZmcyAhPSAkb2xkcHJlZnMobGltaXRkaWZmcykgfHwKKwkoJHBlcmZpbGVfYXR0cnMgJiYgISRvbGRwcmVmcyhwZXJmaWxlX2F0dHJzKSl9IHsKKwkjIHRyZWVkaWZmcyBlbGVtZW50cyBhcmUgbGltaXRlZCBieSBwYXRoOworCSMgd29uJ3QgaGF2ZSBlbmNvZGluZ3MgY2FjaGVkIGlmIHBlcmZpbGVfYXR0cnMgd2FzIGp1c3QgdHVybmVkIG9uCiAJY2F0Y2gge3Vuc2V0IHRyZWVkaWZmc30KICAgICB9CiAgICAgaWYgeyRmb250Y2hhbmdlZCB8fCAkbWF4d2lkdGggIT0gJG9sZHByZWZzKG1heHdpZHRoKQpAQCAtOTY5NCw3ICsxMDUxNyw3IEBACiAgICAgeyBJU08tODg1OS0xNiBpc28taXItMjI2IElTT184ODU5LTE2OjIwMDEgSVNPXzg4NTktMTYgbGF0aW4xMCBsMTAgfQogICAgIHsgR0JLIENQOTM2IE1TOTM2IHdpbmRvd3MtOTM2IH0KICAgICB7IEpJU19FbmNvZGluZyBjc0pJU0VuY29kaW5nIH0KLSAgICB7IFNoaWZ0X0pJUyBNU19LYW5qaSBjc1NoaWZ0SklTIH0KKyAgICB7IFNoaWZ0X0pJUyBNU19LYW5qaSBjc1NoaWZ0SklTIFNoaWZ0SklTIFNoaWZ0LUpJUyB9CiAgICAgeyBFeHRlbmRlZF9VTklYX0NvZGVfUGFja2VkX0Zvcm1hdF9mb3JfSmFwYW5lc2UgY3NFVUNQa2RGbXRKYXBhbmVzZQogICAgICAgRVVDLUpQIH0KICAgICB7IEV4dGVuZGVkX1VOSVhfQ29kZV9GaXhlZF9XaWR0aF9mb3JfSmFwYW5lc2UgY3NFVUNGaXhXaWRKYXBhbmVzZSB9CkBAIC05NzI5LDE0ICsxMDU1MiwxNyBAQAogfQogCiBwcm9jIHRjbF9lbmNvZGluZyB7ZW5jfSB7Ci0gICAgZ2xvYmFsIGVuY29kaW5nX2FsaWFzZXMKKyAgICBnbG9iYWwgZW5jb2RpbmdfYWxpYXNlcyB0Y2xfZW5jb2RpbmdfY2FjaGUKKyAgICBpZiB7W2luZm8gZXhpc3RzIHRjbF9lbmNvZGluZ19jYWNoZSgkZW5jKV19IHsKKwlyZXR1cm4gJHRjbF9lbmNvZGluZ19jYWNoZSgkZW5jKQorICAgIH0KICAgICBzZXQgbmFtZXMgW2VuY29kaW5nIG5hbWVzXQogICAgIHNldCBsY25hbWVzIFtzdHJpbmcgdG9sb3dlciAkbmFtZXNdCiAgICAgc2V0IGVuYyBbc3RyaW5nIHRvbG93ZXIgJGVuY10KICAgICBzZXQgaSBbbHNlYXJjaCAtZXhhY3QgJGxjbmFtZXMgJGVuY10KICAgICBpZiB7JGkgPCAwfSB7CiAJIyBsb29rIGZvciAiaXNvbm5uIiBpbnN0ZWFkIG9mICJpc28tbm5uIiBvciAiaXNvX25ubiIKLQlpZiB7W3JlZ3N1YiB7Xmlzb1stX119ICRlbmMgaXNvIGVuY3hdfSB7CisJaWYge1tyZWdzdWIge14oaXNvfGNwfGlibXxqaXMpWy1fXX0gJGVuYyB7XDF9IGVuY3hdfSB7CiAJICAgIHNldCBpIFtsc2VhcmNoIC1leGFjdCAkbGNuYW1lcyAkZW5jeF0KIAl9CiAgICAgfQpAQCAtOTc0OCw3ICsxMDU3NCw3IEBACiAJICAgIGZvcmVhY2ggZSAkbGwgewogCQlzZXQgaSBbbHNlYXJjaCAtZXhhY3QgJGxjbmFtZXMgJGVdCiAJCWlmIHskaSA8IDB9IHsKLQkJICAgIGlmIHtbcmVnc3ViIHteaXNvWy1fXX0gJGUgaXNvIGV4XX0geworCQkgICAgaWYge1tyZWdzdWIge14oaXNvfGNwfGlibXxqaXMpWy1fXX0gJGUge1wxfSBleF19IHsKIAkJCXNldCBpIFtsc2VhcmNoIC1leGFjdCAkbGNuYW1lcyAkZXhdCiAJCSAgICB9CiAJCX0KQEAgLTk3NTcsMTAgKzEwNTgzLDcwIEBACiAJICAgIGJyZWFrCiAJfQogICAgIH0KKyAgICBzZXQgdGNsZW5jIHt9CiAgICAgaWYgeyRpID49IDB9IHsKLQlyZXR1cm4gW2xpbmRleCAkbmFtZXMgJGldCisJc2V0IHRjbGVuYyBbbGluZGV4ICRuYW1lcyAkaV0KICAgICB9Ci0gICAgcmV0dXJuIHt9CisgICAgc2V0IHRjbF9lbmNvZGluZ19jYWNoZSgkZW5jKSAkdGNsZW5jCisgICAgcmV0dXJuICR0Y2xlbmMKK30KKworcHJvYyBnaXRhdHRyIHtwYXRoIGF0dHIgZGVmYXVsdH0geworICAgIGdsb2JhbCBwYXRoX2F0dHJfY2FjaGUKKyAgICBpZiB7W2luZm8gZXhpc3RzIHBhdGhfYXR0cl9jYWNoZSgkYXR0ciwkcGF0aCldfSB7CisJc2V0IHIgJHBhdGhfYXR0cl9jYWNoZSgkYXR0ciwkcGF0aCkKKyAgICB9IGVsc2UgeworCXNldCByICJ1bnNwZWNpZmllZCIKKwlpZiB7IVtjYXRjaCB7c2V0IGxpbmUgW2V4ZWMgZ2l0IGNoZWNrLWF0dHIgJGF0dHIgLS0gJHBhdGhdfV19IHsKKwkgICAgcmVnZXhwICIoLiopOiBlbmNvZGluZzogKC4qKSIgJGxpbmUgbSBmIHIKKwl9CisJc2V0IHBhdGhfYXR0cl9jYWNoZSgkYXR0ciwkcGF0aCkgJHIKKyAgICB9CisgICAgaWYgeyRyIGVxICJ1bnNwZWNpZmllZCJ9IHsKKwlyZXR1cm4gJGRlZmF1bHQKKyAgICB9CisgICAgcmV0dXJuICRyCit9CisKK3Byb2MgY2FjaGVfZ2l0YXR0ciB7YXR0ciBwYXRobGlzdH0geworICAgIGdsb2JhbCBwYXRoX2F0dHJfY2FjaGUKKyAgICBzZXQgbmV3bGlzdCB7fQorICAgIGZvcmVhY2ggcGF0aCAkcGF0aGxpc3QgeworCWlmIHshW2luZm8gZXhpc3RzIHBhdGhfYXR0cl9jYWNoZSgkYXR0ciwkcGF0aCldfSB7CisJICAgIGxhcHBlbmQgbmV3bGlzdCAkcGF0aAorCX0KKyAgICB9CisgICAgc2V0IGxpbSAxMDAwCisgICAgaWYge1t0ayB3aW5kb3dpbmdzeXN0ZW1dID09ICJ3aW4zMiJ9IHsKKwkjIHdpbmRvd3MgaGFzIGEgMzJrIGxpbWl0IG9uIHRoZSBhcmd1bWVudHMgdG8gYSBjb21tYW5kLi4uCisJc2V0IGxpbSAzMAorICAgIH0KKyAgICB3aGlsZSB7JG5ld2xpc3QgbmUge319IHsKKwlzZXQgaGVhZCBbbHJhbmdlICRuZXdsaXN0IDAgW2V4cHIgeyRsaW0gLSAxfV1dCisJc2V0IG5ld2xpc3QgW2xyYW5nZSAkbmV3bGlzdCAkbGltIGVuZF0KKwlpZiB7IVtjYXRjaCB7c2V0IHJsaXN0IFtldmFsIGV4ZWMgZ2l0IGNoZWNrLWF0dHIgJGF0dHIgLS0gJGhlYWRdfV19IHsKKwkgICAgZm9yZWFjaCByb3cgW3NwbGl0ICRybGlzdCAiXG4iXSB7CisJCWlmIHtbcmVnZXhwICIoLiopOiBlbmNvZGluZzogKC4qKSIgJHJvdyBtIHBhdGggdmFsdWVdfSB7CisJCSAgICBpZiB7W3N0cmluZyBpbmRleCAkcGF0aCAwXSBlcSAiXCIifSB7CisJCQlzZXQgcGF0aCBbZW5jb2RpbmcgY29udmVydGZyb20gW2xpbmRleCAkcGF0aCAwXV0KKwkJICAgIH0KKwkJICAgIHNldCBwYXRoX2F0dHJfY2FjaGUoJGF0dHIsJHBhdGgpICR2YWx1ZQorCQl9CisJICAgIH0KKwl9CisgICAgfQorfQorCitwcm9jIGdldF9wYXRoX2VuY29kaW5nIHtwYXRofSB7CisgICAgZ2xvYmFsIGd1aV9lbmNvZGluZyBwZXJmaWxlX2F0dHJzCisgICAgc2V0IHRjbF9lbmMgJGd1aV9lbmNvZGluZworICAgIGlmIHskcGF0aCBuZSB7fSAmJiAkcGVyZmlsZV9hdHRyc30geworCXNldCBlbmMyIFt0Y2xfZW5jb2RpbmcgW2dpdGF0dHIgJHBhdGggZW5jb2RpbmcgJHRjbF9lbmNdXQorCWlmIHskZW5jMiBuZSB7fX0geworCSAgICBzZXQgdGNsX2VuYyAkZW5jMgorCX0KKyAgICB9CisgICAgcmV0dXJuICR0Y2xfZW5jCiB9CiAKICMgRmlyc3QgY2hlY2sgdGhhdCBUY2wvVGsgaXMgcmVjZW50IGVub3VnaApAQCAtOTc3Nyw2ICsxMDY2Myw5IEBACiBjYXRjaCB7CiAgICAgc2V0IGdpdGVuY29kaW5nIFtleGVjIGdpdCBjb25maWcgLS1nZXQgaTE4bi5jb21taXRlbmNvZGluZ10KIH0KK2NhdGNoIHsKKyAgICBzZXQgZ2l0ZW5jb2RpbmcgW2V4ZWMgZ2l0IGNvbmZpZyAtLWdldCBpMThuLmxvZ291dHB1dGVuY29kaW5nXQorfQogaWYgeyRnaXRlbmNvZGluZyA9PSAiIn0gewogICAgIHNldCBnaXRlbmNvZGluZyAidXRmLTgiCiB9CkBAIC05Nzg1LDYgKzEwNjc0LDE5IEBACiAgICAgcHV0cyBzdGRlcnIgIldhcm5pbmc6IGVuY29kaW5nICRnaXRlbmNvZGluZyBpcyBub3Qgc3VwcG9ydGVkIGJ5IFRjbC9UayIKIH0KIAorc2V0IGd1aV9lbmNvZGluZyBbZW5jb2Rpbmcgc3lzdGVtXQorY2F0Y2ggeworICAgIHNldCBlbmMgW2V4ZWMgZ2l0IGNvbmZpZyAtLWdldCBndWkuZW5jb2RpbmddCisgICAgaWYgeyRlbmMgbmUge319IHsKKwlzZXQgdGNsZW5jIFt0Y2xfZW5jb2RpbmcgJGVuY10KKwlpZiB7JHRjbGVuYyBuZSB7fX0geworCSAgICBzZXQgZ3VpX2VuY29kaW5nICR0Y2xlbmMKKwl9IGVsc2UgeworCSAgICBwdXRzIHN0ZGVyciAiV2FybmluZzogZW5jb2RpbmcgJGVuYyBpcyBub3Qgc3VwcG9ydGVkIGJ5IFRjbC9UayIKKwl9CisgICAgfQorfQorCiBzZXQgbWFpbmZvbnQge0hlbHZldGljYSA5fQogc2V0IHRleHRmb250IHtDb3VyaWVyIDl9CiBzZXQgdWlmb250IHtIZWx2ZXRpY2EgOSBib2xkfQpAQCAtOTgwNiw2ICsxMDcwOCw3IEBACiBzZXQgbGltaXRkaWZmcyAxCiBzZXQgZGF0ZXRpbWVmb3JtYXQgIiVZLSVtLSVkICVIOiVNOiVTIgogc2V0IGF1dG9zZWxlY3QgMQorc2V0IHBlcmZpbGVfYXR0cnMgMAogCiBzZXQgZXh0ZGlmZnRvb2wgIm1lbGQiCiAKQEAgLTk4MTYsOSArMTA3MTksMTcgQEAKIHNldCBkaWZmY29udGV4dCAzCiBzZXQgaWdub3Jlc3BhY2UgMAogc2V0IHNlbGVjdGJnY29sb3IgZ3JheTg1CitzZXQgbWFya2JnY29sb3IgIiNlMGUwZmYiCiAKIHNldCBjaXJjbGVjb2xvcnMge3doaXRlIGJsdWUgZ3JheSBibHVlIGJsdWV9CiAKKyMgYnV0dG9uIGZvciBwb3BwaW5nIHVwIGNvbnRleHQgbWVudXMKK2lmIHtbdGsgd2luZG93aW5nc3lzdGVtXSBlcSAiYXF1YSJ9IHsKKyAgICBzZXQgY3R4YnV0IDxCdXR0b24tMj4KK30gZWxzZSB7CisgICAgc2V0IGN0eGJ1dCA8QnV0dG9uLTM+Cit9CisKICMjIEZvciBtc2djYXQgbG9hZGluZywgZmlyc3QgbG9jYXRlIHRoZSBpbnN0YWxsYXRpb24gbG9jYXRpb24uCiBpZiB7IFtpbmZvIGV4aXN0cyA6OmVudihHSVRLX01TR1NESVIpXSB9IHsKICAgICAjIyBNc2dzZGlyIHdhcyBtYW51YWxseSBzZXQgaW4gdGhlIGVudmlyb25tZW50LgpAQCAtOTg2NSw2ICsxMDc3Niw5IEBACiAgICAgZXhpdCAxCiB9CiAKK3NldCBzZWxlY3RoZWFkIHt9CitzZXQgc2VsZWN0aGVhZGlkIHt9CisKIHNldCByZXZ0cmVlYXJncyB7fQogc2V0IGNtZGxpbmVfZmlsZXMge30KIHNldCBpIDAKQEAgLTk4NzYsNiArMTA3OTAsOSBAQAogCSAgICBzZXQgY21kbGluZV9maWxlcyBbbHJhbmdlICRhcmd2IFtleHByIHskaSArIDF9XSBlbmRdCiAJICAgIGJyZWFrCiAJfQorCSItLXNlbGVjdC1jb21taXQ9KiIgeworCSAgICBzZXQgc2VsZWN0aGVhZCBbc3RyaW5nIHJhbmdlICRhcmcgMTYgZW5kXQorCX0KIAkiLS1hcmdzY21kPSoiIHsKIAkgICAgc2V0IHJldnRyZWVhcmdzY21kIFtzdHJpbmcgcmFuZ2UgJGFyZyAxMCBlbmRdCiAJfQpAQCAtOTg4Niw2ICsxMDgwMywxMCBAQAogICAgIGluY3IgaQogfQogCitpZiB7JHNlbGVjdGhlYWQgZXEgIkhFQUQifSB7CisgICAgc2V0IHNlbGVjdGhlYWQge30KK30KKwogaWYgeyRpID49IFtsbGVuZ3RoICRhcmd2XSAmJiAkcmV2dHJlZWFyZ3MgbmUge319IHsKICAgICAjIG5vIC0tIG9uIGNvbW1hbmQgbGluZSwgYnV0IHNvbWUgYXJndW1lbnRzIChvdGhlciB0aGFuIC0tYXJnc2NtZCkKICAgICBpZiB7W2NhdGNoIHsKQEAgLTk5MjksOCArMTA4NTAsOCBAQAogc2V0IGhpZ2hsaWdodF9wYXRocyB7fQogc2V0IGZpbmRwYXR0ZXJuIHt9CiBzZXQgc2VhcmNoZGlybiAtZm9yd2FyZHMKLXNldCBib2xkcm93cyB7fQotc2V0IGJvbGRuYW1lcm93cyB7fQorc2V0IGJvbGRpZHMge30KK3NldCBib2xkbmFtZWlkcyB7fQogc2V0IGRpZmZlbGlkZSB7MCAwfQogc2V0IG1hcmtpbmdtYXRjaGVzIDAKIHNldCBsaW5rZW50ZXJjb3VudCAwCkBAIC05OTc3LDggKzEwODk4LDggQEAKICAgICBzZXQgdmlld3Blcm0oMSkgMAogICAgIHNldCB2ZGF0ZW1vZGUoMSkgMAogICAgIGFkZHZpZXdtZW51IDEKLSAgICAuYmFyLnZpZXcgZW50cnljb25mIFttYyAiRWRpdCB2aWV3Li4uIl0gLXN0YXRlIG5vcm1hbAotICAgIC5iYXIudmlldyBlbnRyeWNvbmYgW21jICJEZWxldGUgdmlldyJdIC1zdGF0ZSBub3JtYWwKKyAgICAuYmFyLnZpZXcgZW50cnljb25mIFttY2EgIkVkaXQgdmlldy4uLiJdIC1zdGF0ZSBub3JtYWwKKyAgICAuYmFyLnZpZXcgZW50cnljb25mIFttY2EgIkRlbGV0ZSB2aWV3Il0gLXN0YXRlIG5vcm1hbAogfQogCiBpZiB7W2luZm8gZXhpc3RzIHBlcm12aWV3c119IHsKQEAgLTk5OTMsNCArMTA5MTQsOSBAQAogCWFkZHZpZXdtZW51ICRuCiAgICAgfQogfQorCitpZiB7W3RrIHdpbmRvd2luZ3N5c3RlbV0gZXEgIndpbjMyIn0geworICAgIGZvY3VzIC1mb3JjZSAuCit9CisKIGdldGNvbW1pdHMge30KZGlmZiAtLWdpdCBhL2dpdGstZ2l0L3BvL2RlLnBvIGIvZ2l0ay1naXQvcG8vZGUucG8KaW5kZXggMDRlZTU3MC4uODI1ZGM5OCAxMDA2NDQKLS0tIGEvZ2l0ay1naXQvcG8vZGUucG8KKysrIGIvZ2l0ay1naXQvcG8vZGUucG8KQEAgLTcsMjUgKzcsMzMgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0LWd1aVxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0wNS0yNCAyMjozMiswMjAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0wNS0yNCAyMjo0MCswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTItMDYgMjA6NDArMDEwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTItMDYgMjA6NDUrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogQ2hyaXN0aWFuIFN0aW1taW5nIDxzdGltbWluZ0B0dWhoLmRlPlxuIgogIkxhbmd1YWdlLVRlYW06IEdlcm1hblxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBnaXRrOjEwMgorIzogZ2l0azoxMTMKIG1zZ2lkICJDb3VsZG4ndCBnZXQgbGlzdCBvZiB1bm1lcmdlZCBmaWxlczoiCiBtc2dzdHIgIkxpc3RlIGRlciBuaWNodC16dXNhbW1lbmdlZsO8aHJ0ZW4gRGF0ZWllbiBuaWNodCBnZWZ1bmRlbjoiCiAKLSM6IGdpdGs6MzI5CisjOiBnaXRrOjI3MgorbXNnaWQgIkVycm9yIHBhcnNpbmcgcmV2aXNpb25zOiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gTGFkZW4gZGVyIFZlcnNpb25lbjoiCisKKyM6IGdpdGs6MzI3Cittc2dpZCAiRXJyb3IgZXhlY3V0aW5nIC0tYXJnc2NtZCBjb21tYW5kOiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gLS1hcmdzY21kIEtvbW1hbmRvOiIKKworIzogZ2l0azozNDAKIG1zZ2lkICJObyBmaWxlcyBzZWxlY3RlZDogLS1tZXJnZSBzcGVjaWZpZWQgYnV0IG5vIGZpbGVzIGFyZSB1bm1lcmdlZC4iCiBtc2dzdHIgIiIKICJLZWluZSBEYXRlaWVuIGF1c2dld8OkaGx0OiAtLW1lcmdlIGFuZ2VnZWJlbiwgZXMgZXhpc3RpZXJlbiBhYmVyIGtlaW5lIG5pY2h0LSIKICJ6dXNhbW1lbmdlZsO8aHJ0ZW4gRGF0ZWllbi4iCiAKLSM6IGdpdGs6MzMyCisjOiBnaXRrOjM0MwogbXNnaWQgIiIKICJObyBmaWxlcyBzZWxlY3RlZDogLS1tZXJnZSBzcGVjaWZpZWQgYnV0IG5vIHVubWVyZ2VkIGZpbGVzIGFyZSB3aXRoaW4gZmlsZSAiCiAibGltaXQuIgpAQCAtMzMsMjU3ICs0MSwyNzMgQEAKICJLZWluZSBEYXRlaWVuIGF1c2dld8OkaGxlOiAtLW1lcmdlIGFuZ2VnZWJlbiwgYWJlciBrZWluZSBuaWNodC0iCiAienVzYW1tZW5nZWbDvGhydGVuIERhdGVpZW4gc2luZCBpbiBkZXIgRGF0ZWlhdXN3YWhsLiIKIAotIzogZ2l0azozNTQKKyM6IGdpdGs6MzY1IGdpdGs6NTAzCiBtc2dpZCAiRXJyb3IgZXhlY3V0aW5nIGdpdCBsb2c6IgogbXNnc3RyICJGZWhsZXIgYmVpbSBBdXNmw7xocmVuIHZvbiBnaXQtbG9nOiIKIAotIzogZ2l0azozNjkKKyM6IGdpdGs6Mzc4CiBtc2dpZCAiUmVhZGluZyIKIG1zZ3N0ciAiTGVzZW4iCiAKLSM6IGdpdGs6MTUxIGdpdGs6MjE5MQorIzogZ2l0azo0MzggZ2l0azozNDYyCiBtc2dpZCAiUmVhZGluZyBjb21taXRzLi4uIgogbXNnc3RyICJWZXJzaW9uZW4gbGVzZW4uLi4iCiAKLSM6IGdpdGs6Mjc1Ci1tc2dpZCAiQ2FuJ3QgcGFyc2UgZ2l0IGxvZyBvdXRwdXQ6IgotbXNnc3RyICJBdXNnYWJlIHZvbiBnaXQtbG9nIGthbm4gbmljaHQgZXJrYW5udCB3ZXJkZW46IgotCi0jOiBnaXRrOjM4NiBnaXRrOjIxOTUKKyM6IGdpdGs6NDQxIGdpdGs6MTUyOCBnaXRrOjM0NjUKIG1zZ2lkICJObyBjb21taXRzIHNlbGVjdGVkIgogbXNnc3RyICJLZWluZSBWZXJzaW9uZW4gYXVzZ2V3w6RobHQuIgogCi0jOiBnaXRrOjUwMAorIzogZ2l0azoxMzk5Cittc2dpZCAiQ2FuJ3QgcGFyc2UgZ2l0IGxvZyBvdXRwdXQ6IgorbXNnc3RyICJBdXNnYWJlIHZvbiBnaXQtbG9nIGthbm4gbmljaHQgZXJrYW5udCB3ZXJkZW46IgorCisjOiBnaXRrOjE2MDUKIG1zZ2lkICJObyBjb21taXQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIgogbXNnc3RyICJLZWluZSBWZXJzaW9uc2luZm9ybWF0aW9uIHZlcmbDvGdiYXIiCiAKLSM6IGdpdGs6NTk5IGdpdGs6NjIxIGdpdGs6MTk1NSBnaXRrOjY0MjQgZ2l0azo3OTI0IGdpdGs6ODA4MworIzogZ2l0azoxNzA5IGdpdGs6MTczMSBnaXRrOjMyNTkgZ2l0azo3NzY0IGdpdGs6OTI5MyBnaXRrOjk0NjYKIG1zZ2lkICJPSyIKIG1zZ3N0ciAiT2siCiAKLSM6IGdpdGs6NjIzIGdpdGs6MTk1NiBnaXRrOjYxMDggZ2l0azo2MTc5IGdpdGs6NjI3NiBnaXRrOjYzMjIgZ2l0azo2NDI2Ci0jOiBnaXRrOjc5MjUgZ2l0azo4MDg0CisjOiBnaXRrOjE3MzMgZ2l0azozMjYwIGdpdGs6NzQzOSBnaXRrOjc1MTAgZ2l0azo3NjEzIGdpdGs6NzY2MCBnaXRrOjc3NjYKKyM6IGdpdGs6OTI5NCBnaXRrOjk0NjcKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIkFiYnJlY2hlbiIKIAotIzogZ2l0azo2NjEKLW1zZ2lkICJGaWxlIgotbXNnc3RyICJEYXRlaSIKLQotIzogZ2l0azo2NjMKKyM6IGdpdGs6MTgxMQogbXNnaWQgIlVwZGF0ZSIKIG1zZ3N0ciAiQWt0dWFsaXNpZXJlbiIKIAotIzogZ2l0azoxNzIyCisjOiBnaXRrOjE4MTIKIG1zZ2lkICJSZWxvYWQiCiBtc2dzdHIgIk5ldSBsYWRlbiIKIAotIzogZ2l0azoxNzIzCisjOiBnaXRrOjE4MTMKIG1zZ2lkICJSZXJlYWQgcmVmZXJlbmNlcyIKIG1zZ3N0ciAiWndlaWdlIG5ldSBsYWRlbiIKIAotIzogZ2l0azo2NjUKKyM6IGdpdGs6MTgxNAogbXNnaWQgIkxpc3QgcmVmZXJlbmNlcyIKIG1zZ3N0ciAiWndlaWdlL01hcmtpZXJ1bmdlbiBhdWZsaXN0ZW4iCiAKLSM6IGdpdGs6NjY2CisjOiBnaXRrOjE5MTUKK21zZ2lkICJTdGFydCBnaXQgZ3VpIgorbXNnc3RyICLCu2dpdCBndWnCqyBzdGFydGVuIgorCisjOiBnaXRrOjE5MTcKIG1zZ2lkICJRdWl0IgogbXNnc3RyICJCZWVuZGVuIgogCi0jOiBnaXRrOjY2OAotbXNnaWQgIkVkaXQiCi1tc2dzdHIgIkJlYXJiZWl0ZW4iCisjOiBnaXRrOjE4MTAKK21zZ2lkICJGaWxlIgorbXNnc3RyICJEYXRlaSIKIAotIzogZ2l0azo2NjkKKyM6IGdpdGs6MTgxOAogbXNnaWQgIlByZWZlcmVuY2VzIgogbXNnc3RyICJFaW5zdGVsbHVuZ2VuIgogCi0jOiBnaXRrOjY3MiBnaXRrOjE4OTIKLW1zZ2lkICJWaWV3IgotbXNnc3RyICJBbnNpY2h0IgorIzogZ2l0azoxODE3Cittc2dpZCAiRWRpdCIKK21zZ3N0ciAiQmVhcmJlaXRlbiIKIAotIzogZ2l0azo2NzMKKyM6IGdpdGs6MTgyMQogbXNnaWQgIk5ldyB2aWV3Li4uIgogbXNnc3RyICJOZXVlIEFuc2ljaHQuLi4iCiAKLSM6IGdpdGs6Njc0IGdpdGs6MjEzMyBnaXRrOjg3MjMKKyM6IGdpdGs6MTgyMgogbXNnaWQgIkVkaXQgdmlldy4uLiIKIG1zZ3N0ciAiQW5zaWNodCBiZWFyYmVpdGVuLi4uIgogCi0jOiBnaXRrOjY3NiBnaXRrOjIxMzQgZ2l0azo4NzI0CisjOiBnaXRrOjE4MjMKIG1zZ2lkICJEZWxldGUgdmlldyIKIG1zZ3N0ciAiQW5zaWNodCBsw7ZzY2hlbiIKIAotIzogZ2l0azo2NzgKKyM6IGdpdGs6MTgyNQogbXNnaWQgIkFsbCBmaWxlcyIKIG1zZ3N0ciAiQWxsZSBEYXRlaWVuIgogCi0jOiBnaXRrOjY4MgotbXNnaWQgIkhlbHAiCi1tc2dzdHIgIkhpbGZlIgorIzogZ2l0azoxODIwIGdpdGs6MzE5NgorbXNnaWQgIlZpZXciCittc2dzdHIgIkFuc2ljaHQiCiAKLSM6IGdpdGs6NjgzIGdpdGs6MTMxNworIzogZ2l0azoxODI4IGdpdGs6MjQ4NwogbXNnaWQgIkFib3V0IGdpdGsiCiBtc2dzdHIgIsOcYmVyIGdpdGsiCiAKLSM6IGdpdGs6Njg0CisjOiBnaXRrOjE4MjkKIG1zZ2lkICJLZXkgYmluZGluZ3MiCiBtc2dzdHIgIlRhc3RlbmvDvHJ6ZWwiCiAKLSM6IGdpdGs6NzQxCisjOiBnaXRrOjE4MjcKK21zZ2lkICJIZWxwIgorbXNnc3RyICJIaWxmZSIKKworIzogZ2l0azoxODg3CiBtc2dpZCAiU0hBMSBJRDogIgogbXNnc3RyICJTSEExOiIKIAotIzogZ2l0azoxODMxCisjOiBnaXRrOjE5MTgKIG1zZ2lkICJSb3ciCiBtc2dzdHIgIlplaWxlIgogCi0jOiBnaXRrOjE4NjIKKyM6IGdpdGs6MTk0OQogbXNnaWQgIkZpbmQiCiBtc2dzdHIgIlN1Y2hlIgogCi0jOiBnaXRrOjc5MgorIzogZ2l0azoxOTUwCiBtc2dpZCAibmV4dCIKIG1zZ3N0ciAibsOkY2hzdGUiCiAKLSM6IGdpdGs6NzkzCisjOiBnaXRrOjE5NTEKIG1zZ2lkICJwcmV2IgogbXNnc3RyICJ2b3JpZ2UiCiAKLSM6IGdpdGs6Nzk0CisjOiBnaXRrOjE5NTIKIG1zZ2lkICJjb21taXQiCiBtc2dzdHIgIlZlcnNpb24gbmFjaCIKIAotIzogZ2l0azo3OTcgZ2l0azo3OTkgZ2l0azoyMzU2IGdpdGs6MjM3OSBnaXRrOjI0MDMgZ2l0azo0MzA2IGdpdGs6NDM2OQorIzogZ2l0azoxOTU1IGdpdGs6MTk1NyBnaXRrOjM2MTcgZ2l0azozNjQwIGdpdGs6MzY2NCBnaXRrOjU1NTAgZ2l0azo1NjIxCiBtc2dpZCAiY29udGFpbmluZzoiCiBtc2dzdHIgIkJlc2NocmVpYnVuZzoiCiAKLSM6IGdpdGs6ODAwIGdpdGs6MTc3OCBnaXRrOjE3ODMgZ2l0azoyNDMxCisjOiBnaXRrOjE5NTggZ2l0azoyOTU0IGdpdGs6Mjk1OSBnaXRrOjM2OTIKIG1zZ2lkICJ0b3VjaGluZyBwYXRoczoiCiBtc2dzdHIgIkRhdGVpZW46IgogCi0jOiBnaXRrOjgwMSBnaXRrOjI0MzYKKyM6IGdpdGs6MTk1OSBnaXRrOjM2OTcKIG1zZ2lkICJhZGRpbmcvcmVtb3Zpbmcgc3RyaW5nOiIKIG1zZ3N0ciAiw4RuZGVydW5nZW46IgogCi0jOiBnaXRrOjgxMCBnaXRrOjgxMgorIzogZ2l0azoxOTY4IGdpdGs6MTk3MAogbXNnaWQgIkV4YWN0IgogbXNnc3RyICJFeGFrdCIKIAotIzogZ2l0azo4MTIgZ2l0azoyNTE0IGdpdGs6NDI3NAorIzogZ2l0azoxOTcwIGdpdGs6Mzc3MyBnaXRrOjU1MTgKIG1zZ2lkICJJZ25DYXNlIgogbXNnc3RyICJLZWluIEdyb8OfL0tsZWluIgogCi0jOiBnaXRrOjgxMiBnaXRrOjI0MDUgZ2l0azoyNTEyIGdpdGs6NDI3MAorIzogZ2l0azoxOTcwIGdpdGs6MzY2NiBnaXRrOjM3NzEgZ2l0azo1NTE0CiBtc2dpZCAiUmVnZXhwIgogbXNnc3RyICJSZWdleHAiCiAKLSM6IGdpdGs6ODE0IGdpdGs6ODE1IGdpdGs6MjUzMyBnaXRrOjI1NjMgZ2l0azoyNTcwIGdpdGs6NDM4MCBnaXRrOjQ0MzYKKyM6IGdpdGs6MTk3MiBnaXRrOjE5NzMgZ2l0azozNzkyIGdpdGs6MzgyMiBnaXRrOjM4MjkgZ2l0azo1NjQxIGdpdGs6NTcwOAogbXNnaWQgIkFsbCBmaWVsZHMiCiBtc2dzdHIgIkFsbGUgRmVsZGVyIgogCi0jOiBnaXRrOjgxNSBnaXRrOjI1MzEgZ2l0azoyNTYzIGdpdGs6NDMzNgorIzogZ2l0azoxOTczIGdpdGs6Mzc5MCBnaXRrOjM4MjIgZ2l0azo1NTgwCiBtc2dpZCAiSGVhZGxpbmUiCiBtc2dzdHIgIsOcYmVyc2NocmlmdCIKIAotIzogZ2l0azo4MTYgZ2l0azoyNTMxIGdpdGs6NDMzNiBnaXRrOjQ0MzYgZ2l0azo0ODI3CisjOiBnaXRrOjE5NzQgZ2l0azozNzkwIGdpdGs6NTU4MCBnaXRrOjU3MDggZ2l0azo2MTA5CiBtc2dpZCAiQ29tbWVudHMiCiBtc2dzdHIgIkJlc2NocmVpYnVuZyIKIAotIzogZ2l0azo4MTYgZ2l0azoyNTMxIGdpdGs6MjUzNSBnaXRrOjI1NzAgZ2l0azo0MzM2IGdpdGs6NDc2MyBnaXRrOjU5NTcKLSM6IGdpdGs6NTk3MgorIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjM3OTQgZ2l0azozODI5IGdpdGs6NTU4MCBnaXRrOjYwNDUgZ2l0azo3Mjg1CisjOiBnaXRrOjczMDAKIG1zZ2lkICJBdXRob3IiCiBtc2dzdHIgIkF1dG9yIgogCi0jOiBnaXRrOjgxNiBnaXRrOjI1MzEgZ2l0azo0MzM2IGdpdGs6NDc2NQorIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjU1ODAgZ2l0azo2MDQ3CiBtc2dpZCAiQ29tbWl0dGVyIgogbXNnc3RyICJFaW50cmFnZW5kZXIiCiAKLSM6IGdpdGs6ODQ1CisjOiBnaXRrOjIwMDMKIG1zZ2lkICJTZWFyY2giCiBtc2dzdHIgIlN1Y2hlIgogCi0jOiBnaXRrOjg1MgorIzogZ2l0azoyMDEwCiBtc2dpZCAiRGlmZiIKIG1zZ3N0ciAiVmVyZ2xlaWNoIgogCi0jOiBnaXRrOjg1NAorIzogZ2l0azoyMDEyCiBtc2dpZCAiT2xkIHZlcnNpb24iCiBtc2dzdHIgIkFsdGUgVmVyc2lvbiIKIAotIzogZ2l0azo4NTYKKyM6IGdpdGs6MjAxNAogbXNnaWQgIk5ldyB2ZXJzaW9uIgogbXNnc3RyICJOZXVlIFZlcnNpb24iCiAKLSM6IGdpdGs6ODU4CisjOiBnaXRrOjIwMTYKIG1zZ2lkICJMaW5lcyBvZiBjb250ZXh0IgogbXNnc3RyICJLb250ZXh0emVpbGVuIgogCi0jOiBnaXRrOjg2OAorIzogZ2l0azoyMDI2CiBtc2dpZCAiSWdub3JlIHNwYWNlIGNoYW5nZSIKIG1zZ3N0ciAiTGVlcnplaWNoZW7DpG5kZXJ1bmdlbiBpZ25vcmllcmVuIgogCi0jOiBnaXRrOjkyNgorIzogZ2l0azoyMDg0CiBtc2dpZCAiUGF0Y2giCiBtc2dzdHIgIlBhdGNoIgogCi0jOiBnaXRrOjkyOAorIzogZ2l0azoyMDg2CiBtc2dpZCAiVHJlZSIKIG1zZ3N0ciAiQmF1bSIKIAotIzogZ2l0azoxMDUzIGdpdGs6MTA2OCBnaXRrOjYwMjMKKyM6IGdpdGs6MjIxMyBnaXRrOjIyMjYKIG1zZ2lkICJEaWZmIHRoaXMgLT4gc2VsZWN0ZWQiCiBtc2dzdHIgIlZlcmdsZWljaCBkaWVzZSAtPiBnZXfDpGhsdGUiCiAKLSM6IGdpdGs6MTA1NSBnaXRrOjEwNzAgZ2l0azo2MDI0CisjOiBnaXRrOjIyMTQgZ2l0azoyMjI3CiBtc2dpZCAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIgogbXNnc3RyICJWZXJnbGVpY2ggZ2V3w6RobHRlIC0+IGRpZXNlIgogCi0jOiBnaXRrOjEwNTcgZ2l0azoxMDcyIGdpdGs6NjAyNQorIzogZ2l0azoyMjE1IGdpdGs6MjIyOAogbXNnaWQgIk1ha2UgcGF0Y2giCiBtc2dzdHIgIlBhdGNoIGVyc3RlbGxlbiIKIAotIzogZ2l0azoxMDU4IGdpdGs6NjE2MworIzogZ2l0azoyMjE2IGdpdGs6NzQ5NAogbXNnaWQgIkNyZWF0ZSB0YWciCiBtc2dzdHIgIk1hcmtpZXJ1bmcgZXJzdGVsbGVuIgogCi0jOiBnaXRrOjEwNTkgZ2l0azo2MjU2CisjOiBnaXRrOjIyMTcgZ2l0azo3NTkzCiBtc2dpZCAiV3JpdGUgY29tbWl0IHRvIGZpbGUiCiBtc2dzdHIgIlZlcnNpb24gaW4gRGF0ZWkgc2NocmVpYmVuIgogCi0jOiBnaXRrOjEwNjAgZ2l0azo2MzEwCisjOiBnaXRrOjIyMTggZ2l0azo3NjQ3CiBtc2dpZCAiQ3JlYXRlIG5ldyBicmFuY2giCiBtc2dzdHIgIk5ldWVuIFp3ZWlnIGVyc3RlbGxlbiIKIAotIzogZ2l0azoxMDYxCisjOiBnaXRrOjIyMTkKIG1zZ2lkICJDaGVycnktcGljayB0aGlzIGNvbW1pdCIKIG1zZ3N0ciAiRGllc2UgVmVyc2lvbiBwZmzDvGNrZW4iCiAKLSM6IGdpdGs6MTA2MworIzogZ2l0azoyMjIwCiBtc2dpZCAiUmVzZXQgSEVBRCBicmFuY2ggdG8gaGVyZSIKIG1zZ3N0ciAiSEVBRC1ad2VpZyBhdWYgZGllc2UgVmVyc2lvbiB6dXLDvGNrc2V0emVuIgogCi0jOiBnaXRrOjEwNzkKKyM6IGdpdGs6MjIzNAogbXNnaWQgIkNoZWNrIG91dCB0aGlzIGJyYW5jaCIKIG1zZ3N0ciAiQXVmIGRpZXNlbiBad2VpZyB1bXN0ZWxsZW4iCiAKLSM6IGdpdGs6MTA4MQorIzogZ2l0azoyMjM1CiBtc2dpZCAiUmVtb3ZlIHRoaXMgYnJhbmNoIgogbXNnc3RyICJad2VpZyBsw7ZzY2hlbiIKIAotIzogZ2l0azoxMDg3CisjOiBnaXRrOjIyNDIKIG1zZ2lkICJIaWdobGlnaHQgdGhpcyB0b28iCiBtc2dzdHIgIkRpZXNlbiBhdWNoIGhlcnZvcmhlYmVuIgogCi0jOiBnaXRrOjEwODkKKyM6IGdpdGs6MjI0MwogbXNnaWQgIkhpZ2hsaWdodCB0aGlzIG9ubHkiCiBtc2dzdHIgIk51ciBkaWVzZW4gaGVydm9yaGViZW4iCiAKLSM6IGdpdGs6MjE2MgorIzogZ2l0azoyMjQ0CiBtc2dpZCAiRXh0ZXJuYWwgZGlmZiIKIG1zZ3N0ciAiRXh0ZXJuZXIgVmVyZ2xlaWNoIgogCi0jOiBnaXRrOjI0MDMKKyM6IGdpdGs6MjI1NQorbXNnaWQgIkJsYW1lIHBhcmVudCBjb21taXQiCittc2dzdHIgIkFubm90aWVyZW4gZGVyIEVsdGVybnZlcnNpb24iCisKKyM6IGdpdGs6MjM2MAorbXNnaWQgIlNob3cgb3JpZ2luIG9mIHRoaXMgbGluZSIKK21zZ3N0ciAiSGVya3VuZnQgZGllc2VyIFplaWxlIGFuemVpZ2VuIgorCisjOiBnaXRrOjIzNjEKK21zZ2lkICJSdW4gZ2l0IGd1aSBibGFtZSBvbiB0aGlzIGxpbmUiCittc2dzdHIgIkFubm90aWVyZW4gKMK7Z2l0IGd1aSBibGFtZcKrKSB2b24gZGllc2VyIFplaWxlIgorCisjOiBnaXRrOjI2MDYKIG1zZ2lkICIiCiAiXG4iCiAiR2l0ayAtIGEgY29tbWl0IHZpZXdlciBmb3IgZ2l0XG4iCkBAIC0yOTcsNDMxICszMjEsNTQ2IEBACiAiXG4iCiAiQ29weXJpZ2h0IMKpIDIwMDUtMjAwOCBQYXVsIE1hY2tlcnJhc1xuIgogIlxuIgotIkJlbnV0enVuZyB1bmQgV2VpdGVydmVyYnJlaXR1bmcgZ2Vtw6TDnyBkZW4gQmVkaW5ndW5nZW4gZGVyIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIgorIkJlbnV0enVuZyB1bmQgV2VpdGVydmVyYnJlaXR1bmcgZ2Vtw6TDnyBkZW4gQmVkaW5ndW5nZW4gZGVyIEdOVSBHZW5lcmFsIFB1YmxpYyAiCisiTGljZW5zZSIKIAotIzogZ2l0azoxMzI2IGdpdGs6MTM4NyBnaXRrOjY1ODIKKyM6IGdpdGs6MjQ5NiBnaXRrOjI1NTcgZ2l0azo3OTQzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIlNjaGxpZcOfZW4iCiAKLSM6IGdpdGs6MTM0NQorIzogZ2l0azoyNTE1CiBtc2dpZCAiR2l0ayBrZXkgYmluZGluZ3MiCiBtc2dzdHIgIkdpdGsgVGFzdGF0dXJiZWxlZ3VuZyIKIAotIzogZ2l0azoxMzQ3CisjOiBnaXRrOjI1MTcKIG1zZ2lkICJHaXRrIGtleSBiaW5kaW5nczoiCiBtc2dzdHIgIkdpdGsgVGFzdGF0dXJiZWxlZ3VuZzoiCiAKLSM6IGdpdGs6MTM0OQorIzogZ2l0azoyNTE5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVE+XHRcdFF1aXQiCiBtc2dzdHIgIjwlcy1RPlx0XHRCZWVuZGVuIgogCi0jOiBnaXRrOjEzNTAKKyM6IGdpdGs6MjUyMAogbXNnaWQgIjxIb21lPlx0XHRNb3ZlIHRvIGZpcnN0IGNvbW1pdCIKIG1zZ3N0ciAiPFBvczE+XHRcdFp1ciBuZXVlc3RlbiBWZXJzaW9uIHNwcmluZ2VuIgogCi0jOiBnaXRrOjEzNTEKKyM6IGdpdGs6MjUyMQogbXNnaWQgIjxFbmQ+XHRcdE1vdmUgdG8gbGFzdCBjb21taXQiCiBtc2dzdHIgIjxFbmRlPlx0XHRadXIgw6RsdGVzdGVuIFZlcnNpb24gc3ByaW5nZW4iCiAKLSM6IGdpdGs6MTM1MgorIzogZ2l0azoyNTIyCiBtc2dpZCAiPFVwPiwgcCwgaVx0TW92ZSB1cCBvbmUgY29tbWl0IgogbXNnc3RyICI8SG9jaD4sIHAsIGlcdE7DpGNoc3RlIG5ldWVyZSBWZXJzaW9uIgogCi0jOiBnaXRrOjEzNTMKKyM6IGdpdGs6MjUyMwogbXNnaWQgIjxEb3duPiwgbiwga1x0TW92ZSBkb3duIG9uZSBjb21taXQiCiBtc2dzdHIgIjxSdW50ZXI+LCBuLCBrXHROw6RjaHN0ZSDDpGx0ZXJlIFZlcnNpb24iCiAKLSM6IGdpdGs6MTM1NAorIzogZ2l0azoyNTI0CiBtc2dpZCAiPExlZnQ+LCB6LCBqXHRHbyBiYWNrIGluIGhpc3RvcnkgbGlzdCIKIG1zZ3N0ciAiPExpbmtzPiwgeiwgalx0RWluZSBWZXJzaW9uIHp1csO8Y2tnZWhlbiIKIAotIzogZ2l0azoxMzU1CisjOiBnaXRrOjI1MjUKIG1zZ2lkICI8UmlnaHQ+LCB4LCBsXHRHbyBmb3J3YXJkIGluIGhpc3RvcnkgbGlzdCIKIG1zZ3N0ciAiPFJlY2h0cz4sIHgsIGxcdEVpbmUgVmVyc2lvbiB3ZWl0ZXJnZWhlbiIKIAotIzogZ2l0azoxMzU2CisjOiBnaXRrOjI1MjYKIG1zZ2lkICI8UGFnZVVwPlx0TW92ZSB1cCBvbmUgcGFnZSBpbiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPEJpbGRIb2NoPlx0RWluZSBTZWl0ZSBuYWNoIG9iZW4gYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNTcKKyM6IGdpdGs6MjUyNwogbXNnaWQgIjxQYWdlRG93bj5cdE1vdmUgZG93biBvbmUgcGFnZSBpbiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPEJpbGRSdW50ZXI+XHRFaW5lIFNlaXRlIG5hY2ggdW50ZW4gYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNTgKKyM6IGdpdGs6MjUyOAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1Ib21lPlx0U2Nyb2xsIHRvIHRvcCBvZiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPCVzLVBvczE+XHRadW0gb2JlcmVuIEVuZGUgZGVyIFZlcnNpb25zbGlzdGUgYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNTkKKyM6IGdpdGs6MjUyOQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1FbmQ+XHRTY3JvbGwgdG8gYm90dG9tIG9mIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8JXMtRW5kZT5cdFp1bSB1bnRlcmVuIEVuZGUgZGVyIFZlcnNpb25zbGlzdGUgYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNjAKKyM6IGdpdGs6MjUzMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1VcD5cdFNjcm9sbCBjb21taXQgbGlzdCB1cCBvbmUgbGluZSIKIG1zZ3N0ciAiPCVzLUhvY2g+XHRWZXJzaW9uc2xpc3RlIGVpbmUgWmVpbGUgbmFjaCBvYmVuIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzYxCisjOiBnaXRrOjI1MzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRG93bj5cdFNjcm9sbCBjb21taXQgbGlzdCBkb3duIG9uZSBsaW5lIgogbXNnc3RyICI8JXMtUnVudGVyPlx0VmVyc2lvbnNsaXN0ZSBlaW5lIFplaWxlIG5hY2ggdW50ZW4gYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNjIKKyM6IGdpdGs6MjUzMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1QYWdlVXA+XHRTY3JvbGwgY29tbWl0IGxpc3QgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjwlcy1CaWxkSG9jaD5cdFZlcnNpb25zbGlzdGUgZWluZSBTZWl0ZSBob2NoIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzYzCisjOiBnaXRrOjI1MzMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUGFnZURvd24+XHRTY3JvbGwgY29tbWl0IGxpc3QgZG93biBvbmUgcGFnZSIKIG1zZ3N0ciAiPCVzLUJpbGRSdW50ZXI+XHRWZXJzaW9uc2xpc3RlIGVpbmUgU2VpdGUgbmFjaCB1bnRlbiBibMOkdHRlcm4iCiAKLSM6IGdpdGs6MTM2NAorIzogZ2l0azoyNTM0CiBtc2dpZCAiPFNoaWZ0LVVwPlx0RmluZCBiYWNrd2FyZHMgKHVwd2FyZHMsIGxhdGVyIGNvbW1pdHMpIgogbXNnc3RyICI8VW1zY2hhbHQtSG9jaD5cdFLDvGNrd8OkcnRzIHN1Y2hlbiAobmFjaCBvYmVuOyBuZXVlcmUgVmVyc2lvbmVuKSIKIAotIzogZ2l0azoxMzY1CisjOiBnaXRrOjI1MzUKIG1zZ2lkICI8U2hpZnQtRG93bj5cdEZpbmQgZm9yd2FyZHMgKGRvd253YXJkcywgZWFybGllciBjb21taXRzKSIKIG1zZ3N0ciAiPFVtc2NoYWx0LVJ1bnRlcj4gU3VjaGVuIChuYWNoIHVudGVuOyDDpGx0ZXJlIFZlcnNpb25lbikiCiAKLSM6IGdpdGs6MTM2NgorIzogZ2l0azoyNTM2CiBtc2dpZCAiPERlbGV0ZT4sIGJcdFNjcm9sbCBkaWZmIHZpZXcgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjxFbnRmPiwgYlx0XHRWZXJnbGVpY2ggZWluZSBTZWl0ZSBuYWNoIG9iZW4gYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNjcKKyM6IGdpdGs6MjUzNwogbXNnaWQgIjxCYWNrc3BhY2U+XHRTY3JvbGwgZGlmZiB2aWV3IHVwIG9uZSBwYWdlIgogbXNnc3RyICI8TMO2c2NodGFzdGU+XHRWZXJnbGVpY2ggZWluZSBTZWl0ZSBuYWNoIG9iZW4gYmzDpHR0ZXJuIgogCi0jOiBnaXRrOjEzNjgKKyM6IGdpdGs6MjUzOAogbXNnaWQgIjxTcGFjZT5cdFx0U2Nyb2xsIGRpZmYgdmlldyBkb3duIG9uZSBwYWdlIgogbXNnc3RyICI8TGVlcnRhc3RlPlx0VmVyZ2xlaWNoIGVpbmUgU2VpdGUgbmFjaCB1bnRlbiBibMOkdHRlcm4iCiAKLSM6IGdpdGs6MTM2OQorIzogZ2l0azoyNTM5CiBtc2dpZCAidVx0XHRTY3JvbGwgZGlmZiB2aWV3IHVwIDE4IGxpbmVzIgogbXNnc3RyICJ1XHRcdFZlcmdsZWljaCB1bSAxOCBaZWlsZW4gbmFjaCBvYmVuICjCu3VwwqspIGJsw6R0dGVybiIKIAotIzogZ2l0azoxMzcwCisjOiBnaXRrOjI1NDAKIG1zZ2lkICJkXHRcdFNjcm9sbCBkaWZmIHZpZXcgZG93biAxOCBsaW5lcyIKIG1zZ3N0ciAiZFx0XHRWZXJnbGVpY2ggdW0gMTggWmVpbGVuIG5hY2ggdW50ZW4gKMK7ZG93bsKrKSBibMOkdHRlcm4iCiAKLSM6IGdpdGs6MTM3MQorIzogZ2l0azoyNTQxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUY+XHRcdEZpbmQiCiBtc2dzdHIgIjwlcy1GPlx0XHRTdWNoZW4iCiAKLSM6IGdpdGs6MTM3MgorIzogZ2l0azoyNTQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUc+XHRcdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCIKIG1zZ3N0ciAiPCVzLUc+XHRcdFdlaXRlcnN1Y2hlbiIKIAotIzogZ2l0azoxMzczCisjOiBnaXRrOjI1NDMKIG1zZ2lkICI8UmV0dXJuPlx0TW92ZSB0byBuZXh0IGZpbmQgaGl0IgogbXNnc3RyICI8RWluZ2FiZXRhc3RlPlx0V2VpdGVyc3VjaGVuIgogCi0jOiBnaXRrOjEzNzQKKyM6IGdpdGs6MjU0NAogbXNnaWQgIi9cdFx0TW92ZSB0byBuZXh0IGZpbmQgaGl0LCBvciByZWRvIGZpbmQiCiBtc2dzdHIgIi9cdFx0V2VpdGVyc3VjaGVuIG9kZXIgbmV1ZSBTdWNoZSBiZWdpbm5lbiIKIAotIzogZ2l0azoxMzc1CisjOiBnaXRrOjI1NDUKIG1zZ2lkICI/XHRcdE1vdmUgdG8gcHJldmlvdXMgZmluZCBoaXQiCiBtc2dzdHIgIj9cdFx0UsO8Y2t3w6RydHMgd2VpdGVyc3VjaGVuIgogCi0jOiBnaXRrOjEzNzYKKyM6IGdpdGs6MjU0NgogbXNnaWQgImZcdFx0U2Nyb2xsIGRpZmYgdmlldyB0byBuZXh0IGZpbGUiCiBtc2dzdHIgImZcdFx0VmVyZ2xlaWNoIHp1ciBuw6RjaHN0ZW4gRGF0ZWkgKMK7ZmlsZcKrKSBibMOkdHRlcm4iCiAKLSM6IGdpdGs6MTM3NworIzogZ2l0azoyNTQ3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVM+XHRcdFNlYXJjaCBmb3IgbmV4dCBoaXQgaW4gZGlmZiB2aWV3IgogbXNnc3RyICI8JXMtUz5cdFx0V2VpdGVyc3VjaGVuIGltIFZlcmdsZWljaCIKIAotIzogZ2l0azoxMzc4CisjOiBnaXRrOjI1NDgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUj5cdFx0U2VhcmNoIGZvciBwcmV2aW91cyBoaXQgaW4gZGlmZiB2aWV3IgogbXNnc3RyICI8JXMtUj5cdFx0UsO8Y2t3w6RydHMgd2VpdGVyc3VjaGVuIGltIFZlcmdsZWljaCIKIAotIzogZ2l0azoxMzc5CisjOiBnaXRrOjI1NDkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtS1ArPlx0SW5jcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtTnVtbWVyYmxvY2stUGx1cz5cdFNjaHJpZnRncsO2w59lIHZlcmdyw7bDn2VybiIKIAotIzogZ2l0azoxMzgwCisjOiBnaXRrOjI1NTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtcGx1cz5cdEluY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLVBsdXM+XHRTY2hyaWZ0Z3LDtsOfZSB2ZXJncsO2w59lcm4iCiAKLSM6IGdpdGs6MTM4MQorIzogZ2l0azoyNTUxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUtQLT5cdERlY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLU51bW1lcm5ibG9jay0+IFNjaHJpZnRncsO2w59lIHZlcmtsZWluZXJuIgogCi0jOiBnaXRrOjEzODIKKyM6IGdpdGs6MjU1MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1taW51cz5cdERlY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLU1pbnVzPlx0U2NocmlmdGdyw7bDn2UgdmVya2xlaW5lcm4iCiAKLSM6IGdpdGs6MTM4MworIzogZ2l0azoyNTUzCiBtc2dpZCAiPEY1Plx0XHRVcGRhdGUiCiBtc2dzdHIgIjxGNT5cdFx0QWt0dWFsaXNpZXJlbiIKIAotIzogZ2l0azoxODk2Ci1tc2dpZCAiR2l0ayB2aWV3IGRlZmluaXRpb24iCi1tc2dzdHIgIkdpdGsgQW5zaWNodGVuIgorIzogZ2l0azoyOTc5CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRXJyb3IgZ2V0dGluZyBcIiVzXCIgZnJvbSAlczoiCittc2dzdHIgIkZlaGxlciBiZWltIEhvbGVuIHZvbiDCuyVzwqsgdm9uIMK7JXPCqzoiCiAKLSM6IGdpdGs6MTkyMQotbXNnaWQgIk5hbWUiCi1tc2dzdHIgIk5hbWUiCisjOiBnaXRrOjMwMzYgZ2l0azozMDQ1CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yeSAlczoiCittc2dzdHIgIkZlaGxlciBiZWltIEVyemV1Z2VuIGVpbmVzIHRlbXBvcsOkcmVuIFZlcnplaWNobmlzc2VzIMK7JXPCqzoiCiAKLSM6IGdpdGs6MTkyNAotbXNnaWQgIlJlbWVtYmVyIHRoaXMgdmlldyIKLW1zZ3N0ciAiRGllc2UgQW5zaWNodCBzcGVpY2hlcm4iCisjOiBnaXRrOjMwNTgKK21zZ2lkICJjb21tYW5kIGZhaWxlZDoiCittc2dzdHIgIktvbW1hbmRvIGZlaGxnZXNjaGxhZ2VuOiIKIAotIzogZ2l0azozMTI2Ci1tc2dpZCAiQ29tbWl0cyB0byBpbmNsdWRlIChhcmd1bWVudHMgdG8gZ2l0IGxvZyk6IgotbXNnc3RyICJWZXJzaW9uZW4gYW56ZWlnZW4gKEFyZ3VtZW50ZSB2b24gZ2l0LWxvZyk6IgorIzogZ2l0azozMDc4Cittc2dpZCAiTm8gc3VjaCBjb21taXQiCittc2dzdHIgIlZlcnNpb24gbmljaHQgZ2VmdW5kZW4iCiAKLSM6IGdpdGs6MzEzMwotbXNnaWQgIkNvbW1hbmQgdG8gZ2VuZXJhdGUgbW9yZSBjb21taXRzIHRvIGluY2x1ZGU6IgotbXNnc3RyICJWZXJzaW9uc2xpc3RlIGR1cmNoIGZvbGdlbmRlcyBLb21tYW5kbyBlcnpldWdlbiBsYXNzZW46IgorIzogZ2l0azozMDgzCittc2dpZCAiZ2l0IGd1aSBibGFtZTogY29tbWFuZCBmYWlsZWQ6IgorbXNnc3RyICJnaXQgZ3VpIGJsYW1lOiBLb21tYW5kbyBmZWhsZ2VzY2hsYWdlbjoiCiAKLSM6IGdpdGs6MTk0MgotbXNnaWQgIkVudGVyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byBpbmNsdWRlLCBvbmUgcGVyIGxpbmU6IgotbXNnc3RyICJGb2xnZW5kZSBEYXRlaWVuIHVuZCBWZXJ6ZWljaG5pc3NlIGFuemVpZ2VuIChlaW5lIHBybyBaZWlsZSk6IgorIzogZ2l0azozMzk4CisjLCB0Y2wtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgcmVhZCBtZXJnZSBoZWFkOiAlcyIKK21zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZ3MtU3BpdHplIGtvbm50ZSBuaWNodCBnZWxlc2VuIHdlcmRlbjogJXMiCiAKLSM6IGdpdGs6MTk4OQotbXNnaWQgIkVycm9yIGluIGNvbW1pdCBzZWxlY3Rpb24gYXJndW1lbnRzOiIKLW1zZ3N0ciAiRmVobGVyIGluIGRlbiBhdXNnZXfDpGhsdGVuIFZlcnNpb25lbjoiCisjOiBnaXRrOjM0MDYKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGluZGV4OiAlcyIKK21zZ3N0ciAiRmVobGVyIGJlaW0gTGVzZW4gZGVyIEJlcmVpdHN0ZWxsdW5nICjCu2luZGV4wqspOiAlcyIKIAotIzogZ2l0azoyMDQzIGdpdGs6MjEyNyBnaXRrOjI1ODMgZ2l0azoyNTk3IGdpdGs6Mzc4MSBnaXRrOjg2ODkgZ2l0azo4NjkwCi1tc2dpZCAiTm9uZSIKLW1zZ3N0ciAiS2VpbmUiCisjOiBnaXRrOjM0MzEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBzdGFydCBnaXQgYmxhbWU6ICVzIgorbXNnc3RyICLCu2dpdCBibGFtZcKrIGtvbm50ZSBuaWNodCBnZXN0YXJ0ZXQgd2VyZGVuOiAlcyIKIAotIzogZ2l0azoyNTMxIGdpdGs6NDMzNiBnaXRrOjU5NTkgZ2l0azo1OTc0Ci1tc2dpZCAiRGF0ZSIKLW1zZ3N0ciAiRGF0dW0iCi0KLSM6IGdpdGs6MjUzMSBnaXRrOjQzMzYKLW1zZ2lkICJDRGF0ZSIKLW1zZ3N0ciAiRWludHJhZ2VkYXR1bSIKLQotIzogZ2l0azoyNjgwIGdpdGs6MjY4NQotbXNnaWQgIkRlc2NlbmRhbnQiCi1tc2dzdHIgIkFia8O2bW1saW5nIgotCi0jOiBnaXRrOjI2ODEKLW1zZ2lkICJOb3QgZGVzY2VuZGFudCIKLW1zZ3N0ciAiTmljaHQgQWJrw7ZtbWxpbmciCi0KLSM6IGdpdGs6MjY4OCBnaXRrOjI2OTMKLW1zZ2lkICJBbmNlc3RvciIKLW1zZ3N0ciAiVm9yZ8OkbmdlciIKLQotIzogZ2l0azoyNjg5Ci1tc2dpZCAiTm90IGFuY2VzdG9yIgotbXNnc3RyICJOaWNodCBWb3Jnw6RuZ2VyIgotCi0jOiBnaXRrOjI5MjQKLW1zZ2lkICJMb2NhbCBjaGFuZ2VzIGNoZWNrZWQgaW4gdG8gaW5kZXggYnV0IG5vdCBjb21taXR0ZWQiCi1tc2dzdHIgIkxva2FsZSDDhG5kZXJ1bmdlbiBiZXJlaXRnZXN0ZWxsdCwgYWJlciBuaWNodCBlaW5nZXRyYWdlbiIKLQotIzogZ2l0azoyOTU0Ci1tc2dpZCAiTG9jYWwgdW5jb21taXR0ZWQgY2hhbmdlcywgbm90IGNoZWNrZWQgaW4gdG8gaW5kZXgiCi1tc2dzdHIgIkxva2FsZSDDhG5kZXJ1bmdlbiwgbmljaHQgYmVyZWl0Z2VzdGVsbHQiCi0KLSM6IGdpdGs6NDMwNQorIzogZ2l0azozNDM0IGdpdGs6NjE2MAogbXNnaWQgIlNlYXJjaGluZyIKIG1zZ3N0ciAiU3VjaGVuIgogCi0jOiBnaXRrOjQ3NjcKKyM6IGdpdGs6MzQ2NgorIywgdGNsLWZvcm1hdAorbXNnaWQgIkVycm9yIHJ1bm5pbmcgZ2l0IGJsYW1lOiAlcyIKK21zZ3N0ciAiRmVobGVyIGJlaW0gQXVzZsO8aHJlbiB2b24gwrtnaXQgYmxhbWXCqzogJXMiCisKKyM6IGdpdGs6MzQ5NAorIywgdGNsLWZvcm1hdAorbXNnaWQgIlRoYXQgbGluZSBjb21lcyBmcm9tIGNvbW1pdCAlcywgIHdoaWNoIGlzIG5vdCBpbiB0aGlzIHZpZXciCittc2dzdHIgIiIKKyJEaWVzZSBaZWlsZSBzdGFtbXQgYXVzIFZlcnNpb24gJXMsIHdlbGNoZSBuaWNodCBpbiBkaWVzZXIgQW5zaWNodCBnZXplaWd0ICIKKyJ3aXJkLiIKKworIzogZ2l0azozNTA4Cittc2dpZCAiRXh0ZXJuYWwgZGlmZiB2aWV3ZXIgZmFpbGVkOiIKK21zZ3N0ciAiRXh0ZXJuZXMgVmVyZ2xlaWNoLShEaWZmLSlQcm9ncmFtbSBmZWhsZ2VzY2hsYWdlbjoiCisKKyM6IGdpdGs6MzIxMAorbXNnaWQgIkdpdGsgdmlldyBkZWZpbml0aW9uIgorbXNnc3RyICJHaXRrIEFuc2ljaHRlbiIKKworIzogZ2l0azozNjMwCittc2dpZCAiUmVtZW1iZXIgdGhpcyB2aWV3IgorbXNnc3RyICJEaWVzZSBBbnNpY2h0IHNwZWljaGVybiIKKworIzogZ2l0azozMjMyCittc2dpZCAiQ29tbWl0cyB0byBpbmNsdWRlIChhcmd1bWVudHMgdG8gZ2l0IGxvZyk6IgorbXNnc3RyICJWZXJzaW9uZW4gYW56ZWlnZW4gKEFyZ3VtZW50ZSB2b24gZ2l0LWxvZyk6IgorCisjOiBnaXRrOjM2MzIKK21zZ2lkICJVc2UgYWxsIHJlZnMiCittc2dzdHIgIkFsbGUgWndlaWdlIHZlcndlbmRlbiIKKworIzogZ2l0azozNjMzCittc2dpZCAiU3RyaWN0bHkgc29ydCBieSBkYXRlIgorbXNnc3RyICJTdHJlbmcgbmFjaCBEYXR1bSBzb3J0aWVyZW4iCisKKyM6IGdpdGs6MzYzNAorbXNnaWQgIk1hcmsgYnJhbmNoIHNpZGVzIgorbXNnc3RyICJad2VpZy1TZWl0ZW4gbWFya2llcmVuIgorCisjOiBnaXRrOjM2MzUKK21zZ2lkICJTaW5jZSBkYXRlOiIKK21zZ3N0ciAiVm9uIERhdHVtOiIKKworIzogZ2l0azozNjM2Cittc2dpZCAiVW50aWwgZGF0ZToiCittc2dzdHIgIkJpcyBEYXR1bToiCisKKyM6IGdpdGs6MzYzNworbXNnaWQgIk1heCBjb3VudDoiCittc2dzdHIgIk1heC4gQW56YWhsOiIKKworIzogZ2l0azozNjM4Cittc2dpZCAiU2tpcDoiCittc2dzdHIgIsOcYmVyc3ByaW5nZW46IgorCisjOiBnaXRrOjM2MzkKK21zZ2lkICJMaW1pdCB0byBmaXJzdCBwYXJlbnQiCittc2dzdHIgIkF1ZiBlcnN0ZSBFbHRlcm52ZXJzaW9uIGJlc2NocsOkbmtlbiIKKworIzogZ2l0azozNjQwCittc2dpZCAiQ29tbWFuZCB0byBnZW5lcmF0ZSBtb3JlIGNvbW1pdHMgdG8gaW5jbHVkZToiCittc2dzdHIgIlZlcnNpb25zbGlzdGUgZHVyY2ggZm9sZ2VuZGVzIEtvbW1hbmRvIGVyemV1Z2VuIGxhc3NlbjoiCisKKyM6IGdpdGs6Mzc0OQorbXNnaWQgIk5hbWUiCittc2dzdHIgIk5hbWUiCisKKyM6IGdpdGs6Mzc5NworbXNnaWQgIkVudGVyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byBpbmNsdWRlLCBvbmUgcGVyIGxpbmU6IgorbXNnc3RyICJGb2xnZW5kZSBEYXRlaWVuIHVuZCBWZXJ6ZWljaG5pc3NlIGFuemVpZ2VuIChlaW5lIHBybyBaZWlsZSk6IgorCisjOiBnaXRrOjM4MTEKK21zZ2lkICJBcHBseSAoRjUpIgorbXNnc3RyICJBbndlbmRlbiAoRjUpIgorCisjOiBnaXRrOjM4NDkKK21zZ2lkICJFcnJvciBpbiBjb21taXQgc2VsZWN0aW9uIGFyZ3VtZW50czoiCittc2dzdHIgIkZlaGxlciBpbiBkZW4gYXVzZ2V3w6RobHRlbiBWZXJzaW9uZW46IgorCisjOiBnaXRrOjMzNDcgZ2l0azozMzk5IGdpdGs6Mzg0MiBnaXRrOjM4NTYgZ2l0azo1MDYwIGdpdGs6MTAxNDEgZ2l0azoxMDE0MgorbXNnaWQgIk5vbmUiCittc2dzdHIgIktlaW5lIgorCisjOiBnaXRrOjM3OTAgZ2l0azo1NTgwIGdpdGs6NzI4NyBnaXRrOjczMDIKK21zZ2lkICJEYXRlIgorbXNnc3RyICJEYXR1bSIKKworIzogZ2l0azozNzkwIGdpdGs6NTU4MAorbXNnaWQgIkNEYXRlIgorbXNnc3RyICJFaW50cmFnZWRhdHVtIgorCisjOiBnaXRrOjM5MzkgZ2l0azozOTQ0Cittc2dpZCAiRGVzY2VuZGFudCIKK21zZ3N0ciAiQWJrw7ZtbWxpbmciCisKKyM6IGdpdGs6Mzk0MAorbXNnaWQgIk5vdCBkZXNjZW5kYW50IgorbXNnc3RyICJOaWNodCBBYmvDtm1tbGluZyIKKworIzogZ2l0azozOTQ3IGdpdGs6Mzk1MgorbXNnaWQgIkFuY2VzdG9yIgorbXNnc3RyICJWb3Jnw6RuZ2VyIgorCisjOiBnaXRrOjM5NDgKK21zZ2lkICJOb3QgYW5jZXN0b3IiCittc2dzdHIgIk5pY2h0IFZvcmfDpG5nZXIiCisKKyM6IGdpdGs6NDE4NworbXNnaWQgIkxvY2FsIGNoYW5nZXMgY2hlY2tlZCBpbiB0byBpbmRleCBidXQgbm90IGNvbW1pdHRlZCIKK21zZ3N0ciAiTG9rYWxlIMOEbmRlcnVuZ2VuIGJlcmVpdGdlc3RlbGx0LCBhYmVyIG5pY2h0IGVpbmdldHJhZ2VuIgorCisjOiBnaXRrOjQyMjAKK21zZ2lkICJMb2NhbCB1bmNvbW1pdHRlZCBjaGFuZ2VzLCBub3QgY2hlY2tlZCBpbiB0byBpbmRleCIKK21zZ3N0ciAiTG9rYWxlIMOEbmRlcnVuZ2VuLCBuaWNodCBiZXJlaXRnZXN0ZWxsdCIKKworIzogZ2l0azo2NjczCiBtc2dpZCAiVGFnczoiCiBtc2dzdHIgIk1hcmtpZXJ1bmdlbjoiCiAKLSM6IGdpdGs6NDc4NCBnaXRrOjQ3OTAgZ2l0azo1OTUyCisjOiBnaXRrOjYwNjYgZ2l0azo2MDcyIGdpdGs6NzI4MAogbXNnaWQgIlBhcmVudCIKIG1zZ3N0ciAiRWx0ZXJuIgogCi0jOiBnaXRrOjQ3OTUKKyM6IGdpdGs6NjA3NwogbXNnaWQgIkNoaWxkIgogbXNnc3RyICJLaW5kIgogCi0jOiBnaXRrOjQ4MDQKKyM6IGdpdGs6NjA4NgogbXNnaWQgIkJyYW5jaCIKIG1zZ3N0ciAiWndlaWciCiAKLSM6IGdpdGs6NDgwNworIzogZ2l0azo2MDg5CiBtc2dpZCAiRm9sbG93cyIKIG1zZ3N0ciAiRm9sZ3QgYXVmIgogCi0jOiBnaXRrOjQ4MTAKKyM6IGdpdGs6NjA5MgogbXNnaWQgIlByZWNlZGVzIgogbXNnc3RyICJWb3Jnw6RuZ2VyIHZvbiIKIAotIzogZ2l0azo1MDk0Ci1tc2dpZCAiRXJyb3IgZ2V0dGluZyBtZXJnZSBkaWZmczoiCi1tc2dzdHIgIkZlaGxlciBiZWltIExhZGVuIGRlcyBWZXJnbGVpY2hzOiIKKyM6IGdpdGs6NzIwOQorIywgdGNsLWZvcm1hdAorbXNnaWQgIkVycm9yIGdldHRpbmcgZGlmZnM6ICVzIgorbXNnc3RyICJGZWhsZXIgYmVpbSBMYWRlbiBkZXMgVmVyZ2xlaWNoczogJXMiCiAKLSM6IGdpdGs6NTc3OQorIzogZ2l0azo3NzQ4CiBtc2dpZCAiR290bzoiCiBtc2dzdHIgIkdlaGUgenU6IgogCi0jOiBnaXRrOjU3ODEKKyM6IGdpdGs6NzExNQogbXNnaWQgIlNIQTEgSUQ6IgogbXNnc3RyICJTSEExLUhhc2h3ZXJ0OiIKIAotIzogZ2l0azo1ODA2CisjOiBnaXRrOjcxMzQKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJTaG9ydCBTSEExIGlkICVzIGlzIGFtYmlndW91cyIKIG1zZ3N0ciAiS3VyemVyIFNIQTEtSGFzaHdlcnQgwrslc8KrIGlzdCBtZWhyZGV1dGlnIgogCi0jOiBnaXRrOjU4MTgKKyM6IGdpdGs6NzE0NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlNIQTEgaWQgJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJTSEExLUhhc2h3ZXJ0IMK7JXPCqyB1bmJla2FubnQiCiAKLSM6IGdpdGs6NTgyMAorIzogZ2l0azo3MTQ4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnL0hlYWQgJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJNYXJraWVydW5nL1p3ZWlnIMK7JXPCqyBpc3QgdW5iZWthbm50IgogCi0jOiBnaXRrOjU5NjIKKyM6IGdpdGs6NzI5MAogbXNnaWQgIkNoaWxkcmVuIgogbXNnc3RyICJLaW5kZXIiCiAKLSM6IGdpdGs6NjAxOQorIzogZ2l0azo3MzQ3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXQgJXMgYnJhbmNoIHRvIGhlcmUiCiBtc2dzdHIgIlp3ZWlnIMK7JXPCqyBoaWVyaGVyIHp1csO8Y2tzZXR6ZW4iCiAKLSM6IGdpdGs6NzIwNAorIzogZ2l0azo3MzQ5CiBtc2dpZCAiRGV0YWNoZWQgaGVhZDogY2FuJ3QgcmVzZXQiCiBtc2dzdHIgIlp3ZWlnc3BpdHplIGlzdCBhYmdldHJlbm50OiBadXLDvGNrc2V0emVuIG5pY2h0IG3DtmdsaWNoIgogCi0jOiBnaXRrOjcyMzYKKyM6IGdpdGs6NzM4MQogbXNnaWQgIlRvcCIKIG1zZ3N0ciAiT2JlbiIKIAotIzogZ2l0azo2MDUxCisjOiBnaXRrOjczODIKIG1zZ2lkICJGcm9tIgogbXNnc3RyICJWb24iCiAKLSM6IGdpdGs6NjA1NgorIzogZ2l0azo3Mzg3CiBtc2dpZCAiVG8iCiBtc2dzdHIgImJpcyIKIAotIzogZ2l0azo2MDc5CisjOiBnaXRrOjc0MTAKIG1zZ2lkICJHZW5lcmF0ZSBwYXRjaCIKIG1zZ3N0ciAiUGF0Y2ggZXJzdGVsbGVuIgogCi0jOiBnaXRrOjYwODEKKyM6IGdpdGs6NzQxMgogbXNnaWQgIkZyb206IgogbXNnc3RyICJWb246IgogCi0jOiBnaXRrOjYwOTAKKyM6IGdpdGs6NzQyMQogbXNnaWQgIlRvOiIKIG1zZ3N0ciAiYmlzOiIKIAotIzogZ2l0azo2MDk5CisjOiBnaXRrOjc0MzAKIG1zZ2lkICJSZXZlcnNlIgogbXNnc3RyICJVbWdla2VocnQiCiAKLSM6IGdpdGs6NjEwMSBnaXRrOjYyNzAKKyM6IGdpdGs6NzQzMiBnaXRrOjc2MDcKIG1zZ2lkICJPdXRwdXQgZmlsZToiCiBtc2dzdHIgIkF1c2dhYmVkYXRlaToiCiAKLSM6IGdpdGs6NjEwNworIzogZ2l0azo3NDM4CiBtc2dpZCAiR2VuZXJhdGUiCiBtc2dzdHIgIkVyemV1Z2VuIgogCi0jOiBnaXRrOjYxNDMKKyM6IGdpdGs6NzQ3NAogbXNnaWQgIkVycm9yIGNyZWF0aW5nIHBhdGNoOiIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gUGF0Y2ggZXJ6ZXVnZW46IgogCi0jOiBnaXRrOjYxNjUgZ2l0azo2MjU4IGdpdGs6NjMxMgorIzogZ2l0azo3NDk2IGdpdGs6NzU5NSBnaXRrOjc2NDkKIG1zZ2lkICJJRDoiCiBtc2dzdHIgIklEOiIKIAotIzogZ2l0azo2MTc0CisjOiBnaXRrOjc1MDUKIG1zZ2lkICJUYWcgbmFtZToiCiBtc2dzdHIgIk1hcmtpZXJ1bmdzbmFtZToiCiAKLSM6IGdpdGs6NjE3OCBnaXRrOjYzMjEKKyM6IGdpdGs6NzUwOSBnaXRrOjc2NTkKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIkVyc3RlbGxlbiIKIAotIzogZ2l0azo2MTkzCisjOiBnaXRrOjc1MjQKIG1zZ2lkICJObyB0YWcgbmFtZSBzcGVjaWZpZWQiCiBtc2dzdHIgIktlaW4gTWFya2llcnVuZ3NuYW1lIGFuZ2VnZWJlbiIKIAotIzogZ2l0azo2MTk3CisjOiBnaXRrOjc1MjgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJUYWcgXCIlc1wiIGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICJNYXJraWVydW5nIMK7JXPCqyBleGlzdGllcnQgYmVyZWl0cy4iCiAKLSM6IGdpdGs6NjIwMworIzogZ2l0azo3NTM0CiBtc2dpZCAiRXJyb3IgY3JlYXRpbmcgdGFnOiIKIG1zZ3N0ciAiRmVobGVyIGJlaSBNYXJraWVydW5nIGVyc3RlbGxlbjoiCiAKLSM6IGdpdGs6NjI2NworIzogZ2l0azo3NjA0CiBtc2dpZCAiQ29tbWFuZDoiCiBtc2dzdHIgIktvbW1hbmRvOiIKIAotIzogZ2l0azo2Mjc1CisjOiBnaXRrOjc2MTIKIG1zZ2lkICJXcml0ZSIKIG1zZ3N0ciAiU2NocmVpYmVuIgogCi0jOiBnaXRrOjYyOTEKKyM6IGdpdGs6NzYyOAogbXNnaWQgIkVycm9yIHdyaXRpbmcgY29tbWl0OiIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gU2NocmVpYmVuIGRlciBWZXJzaW9uOiIKIAotIzogZ2l0azo2MzE3CisjOiBnaXRrOjc2NTQKIG1zZ2lkICJOYW1lOiIKIG1zZ3N0ciAiTmFtZToiCiAKLSM6IGdpdGs6NjMzNgorIzogZ2l0azo3Njc0CiBtc2dpZCAiUGxlYXNlIHNwZWNpZnkgYSBuYW1lIGZvciB0aGUgbmV3IGJyYW5jaCIKIG1zZ3N0ciAiQml0dGUgZ2ViZW4gU2llIGVpbmVuIE5hbWVuIGbDvHIgZGVuIG5ldWVuIFp3ZWlnIGFuLiIKIAotIzogZ2l0azo2MzY1CisjOiBnaXRrOjgzMjgKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJyVzJyBhbHJlYWR5IGV4aXN0cy4gT3ZlcndyaXRlPyIKK21zZ3N0ciAiWndlaWcgwrslc8KrIGV4aXN0aWVydCBiZXJlaXRzLiBTb2xsIGVyIMO8YmVyc2NocmllYmVuIHdlcmRlbj8iCisKKyM6IGdpdGs6ODM5NAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBpcyBhbHJlYWR5IGluY2x1ZGVkIGluIGJyYW5jaCAlcyAtLSByZWFsbHkgcmUtYXBwbHkgaXQ/IgogbXNnc3RyICIiCiAiVmVyc2lvbiDCuyVzwqsgaXN0IGJlcmVpdHMgaW0gWndlaWcgwrslc8KrIGVudGhhbHRlbiAtLSB0cm90emRlbSBlcm5ldXQgIgogImVpbnRyYWdlbj8iCiAKLSM6IGdpdGs6NjM3MAorIzogZ2l0azo3NzE4CiBtc2dpZCAiQ2hlcnJ5LXBpY2tpbmciCiBtc2dzdHIgIlZlcnNpb24gcGZsw7xja2VuIgogCi0jOiBnaXRrOjYzODIKKyM6IGdpdGs6ODQwOAorIywgdGNsLWZvcm1hdAorbXNnaWQgIiIKKyJDaGVycnktcGljayBmYWlsZWQgYmVjYXVzZSBvZiBsb2NhbCBjaGFuZ2VzIHRvIGZpbGUgJyVzJy5cbiIKKyJQbGVhc2UgY29tbWl0LCByZXNldCBvciBzdGFzaCB5b3VyIGNoYW5nZXMgYW5kIHRyeSBhZ2Fpbi4iCittc2dzdHIgIiIKKyJQZmzDvGNrZW4gZmVobGdlc2NobGFnZW4sIGRhIG5vY2ggbG9rYWxlIMOEbmRlcnVuZ2VuIGluIERhdGVpIMK7JXPCq1xuIgorInZvcmxpZWdlbi4gQml0dGUgZGllc2Ugw4RuZGVydW5nZW4gZWludHJhZ2VuLCB6dXLDvGNrc2V0emVuIG9kZXJcbiIKKyJ6d2lzY2hlbnNwZWljaGVybiAowrtnaXQgc3Rhc2jCuykgdW5kIGRhbm4gZXJuZXV0IHZlcnN1Y2hlbi4iCisKKyM6IGdpdGs6ODQxNAorbXNnaWQgIiIKKyJDaGVycnktcGljayBmYWlsZWQgYmVjYXVzZSBvZiBtZXJnZSBjb25mbGljdC5cbiIKKyJEbyB5b3Ugd2lzaCB0byBydW4gZ2l0IGNpdG9vbCB0byByZXNvbHZlIGl0PyIKK21zZ3N0ciAiIgorIlBmbMO8Y2tlbiBmZWhsZ2VzY2hsYWdlbiwgZGEgZWluIFp1c2FtbWVuZsO8aHJ1bmdzLUtvbmZsaWt0IGF1ZmdldHJldGVuXG4iCisiaXN0LiBTb2xsIGRhcyDCu2dpdCBjaXRvb2zCqyAoWnVzYW1tZW5mw7xocnVuZ3MtV2Vya3pldWcpIGF1ZmdlcnVmZW5cbiIKKyJ3ZXJkZW4sIHVtIGRpZXNlbiBLb25mbGlrdCBhdWZ6dWzDtnNlbj8iCisKKyM6IGdpdGs6ODQzMAogbXNnaWQgIk5vIGNoYW5nZXMgY29tbWl0dGVkIgogbXNnc3RyICJLZWluZSDDhG5kZXJ1bmdlbiBlaW5nZXRyYWdlbiIKIAotIzogZ2l0azo2NDA1CisjOiBnaXRrOjc3NDUKIG1zZ2lkICJDb25maXJtIHJlc2V0IgogbXNnc3RyICJadXLDvGNrc2V0emVuIGJlc3TDpHRpZ2VuIgogCi0jOiBnaXRrOjY0MDcKKyM6IGdpdGs6Nzc0NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlc2V0IGJyYW5jaCAlcyB0byAlcz8iCiBtc2dzdHIgIlp3ZWlnIMK7JXPCqyBhdWYgwrslc8KrIHp1csO8Y2tzZXR6ZW4/IgogCi0jOiBnaXRrOjY0MTEKKyM6IGdpdGs6Nzc1MQogbXNnaWQgIlJlc2V0IHR5cGU6IgogbXNnc3RyICJBcnQgZGVzIFp1csO8Y2tzZXR6ZW5zOiIKIAotIzogZ2l0azo2NDE1CisjOiBnaXRrOjc3NTUKIG1zZ2lkICJTb2Z0OiBMZWF2ZSB3b3JraW5nIHRyZWUgYW5kIGluZGV4IHVudG91Y2hlZCIKIG1zZ3N0ciAiSGFybWxvczogQXJiZWl0c2tvcGllIHVuZCBCZXJlaXRzdGVsbHVuZyB1bnZlcsOkbmRlcnQiCiAKLSM6IGdpdGs6NjQxOAorIzogZ2l0azo3NzU4CiBtc2dpZCAiTWl4ZWQ6IExlYXZlIHdvcmtpbmcgdHJlZSB1bnRvdWNoZWQsIHJlc2V0IGluZGV4IgogbXNnc3RyICIiCiAiR2VtaXNjaHQ6IEFyYmVpdHNrb3BpZSB1bnZlcsOkbmRlcnQsXG4iCiAiQmVyZWl0c3RlbGx1bmcgenVyw7xja2dlc2V0enQiCiAKLSM6IGdpdGs6NjQyMQorIzogZ2l0azo3NzYxCiBtc2dpZCAiIgogIkhhcmQ6IFJlc2V0IHdvcmtpbmcgdHJlZSBhbmQgaW5kZXhcbiIKICIoZGlzY2FyZCBBTEwgbG9jYWwgY2hhbmdlcykiCkBAIC03MjksMjEgKzg2OCwyMSBAQAogIkhhcnQ6IEFyYmVpdHNrb3BpZSB1bmQgQmVyZWl0c3RlbGx1bmdcbiIKICIoQWxsZSBsb2thbGVuIMOEbmRlcnVuZ2VuIHdlcmRlbiBnZWzDtnNjaHQpIgogCi0jOiBnaXRrOjY0MzcKKyM6IGdpdGs6Nzc3NwogbXNnaWQgIlJlc2V0dGluZyIKIG1zZ3N0ciAiWnVyw7xja3NldHplbiIKIAotIzogZ2l0azo2NDk0CisjOiBnaXRrOjc4MzQKIG1zZ2lkICJDaGVja2luZyBvdXQiCiBtc2dzdHIgIlVtc3RlbGxlbiIKIAotIzogZ2l0azo2NTI0CisjOiBnaXRrOjc4ODUKIG1zZ2lkICJDYW5ub3QgZGVsZXRlIHRoZSBjdXJyZW50bHkgY2hlY2tlZC1vdXQgYnJhbmNoIgogbXNnc3RyICIiCiAiRGVyIFp3ZWlnLCBhdWYgZGVuIGRpZSBBcmJlaXRza29waWUgbW9tZW50YW4gdW1nZXN0ZWxsdCBpc3QsIGthbm4gbmljaHQgIgogImdlbMO2c2NodCB3ZXJkZW4uIgogCi0jOiBnaXRrOjY1MzAKKyM6IGdpdGs6Nzg5MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgY29tbWl0cyBvbiBicmFuY2ggJXMgYXJlbid0IG9uIGFueSBvdGhlciBicmFuY2guXG4iCkBAIC03NTIsMTYgKzg5MSwxNiBAQAogIkRpZSBWZXJzaW9uZW4gYXVmIFp3ZWlnIMK7JXPCqyBleGlzdGllcmVuIGF1ZiBrZWluZW0gYW5kZXJlbiBad2VpZy5cbiIKICJad2VpZyDCuyVzwqsgdHJvdHpkZW0gbMO2c2NoZW4/IgogCi0jOiBnaXRrOjY1NjEKKyM6IGdpdGs6NzkyMgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlRhZ3MgYW5kIGhlYWRzOiAlcyIKIG1zZ3N0ciAiTWFya2llcnVuZ2VuIHVuZCBad2VpZ2U6ICVzIgogCi0jOiBnaXRrOjY1NzUKKyM6IGdpdGs6NzkzNgogbXNnaWQgIkZpbHRlciIKIG1zZ3N0ciAiRmlsdGVybiIKIAotIzogZ2l0azo2ODY5CisjOiBnaXRrOjgyMzAKIG1zZ2lkICIiCiAiRXJyb3IgcmVhZGluZyBjb21taXQgdG9wb2xvZ3kgaW5mb3JtYXRpb247IGJyYW5jaCBhbmQgcHJlY2VkaW5nL2ZvbGxvd2luZyAiCiAidGFnIGluZm9ybWF0aW9uIHdpbGwgYmUgaW5jb21wbGV0ZS4iCkBAIC03NjksMTI1ICs5MDgsMTU3IEBACiAiRmVobGVyIGJlaW0gTGVzZW4gZGVyIFN0cnVrdHVyaW5mb3JtYXRpb25lbjsgWndlaWdlIHVuZCBWb3Jnw6RuZ2VyL05hY2hmb2xnZXIgIgogIkluZm9ybWF0aW9uZW4gd2VyZGVuIHVudm9sbHN0w6RuZGlnIHNlaW4uIgogCi0jOiBnaXRrOjc4NTMKKyM6IGdpdGs6OTIxNgogbXNnaWQgIlRhZyIKIG1zZ3N0ciAiTWFya2llcnVuZyIKIAotIzogZ2l0azo3ODUzCisjOiBnaXRrOjkyMTYKIG1zZ2lkICJJZCIKIG1zZ3N0ciAiSWQiCiAKLSM6IGdpdGs6Nzg5MworIzogZ2l0azo5MjYyCiBtc2dpZCAiR2l0ayBmb250IGNob29zZXIiCiBtc2dzdHIgIkdpdGsgU2NocmlmdGVuIHfDpGhsZW4iCiAKLSM6IGdpdGs6NzkxMAorIzogZ2l0azo5Mjc5CiBtc2dpZCAiQiIKIG1zZ3N0ciAiRiIKIAotIzogZ2l0azo3OTEzCisjOiBnaXRrOjkyODIKIG1zZ2lkICJJIgogbXNnc3RyICJLIgogCi0jOiBnaXRrOjgwMDYKKyM6IGdpdGs6OTM3NQogbXNnaWQgIkdpdGsgcHJlZmVyZW5jZXMiCiBtc2dzdHIgIkdpdGsgRWluc3RlbGx1bmdlbiIKIAotIzogZ2l0azo4MDA3CisjOiBnaXRrOjkzNzYKIG1zZ2lkICJDb21taXQgbGlzdCBkaXNwbGF5IG9wdGlvbnMiCiBtc2dzdHIgIkFuemVpZ2UgVmVyc2lvbnNsaXN0ZSIKIAotIzogZ2l0azo4MDEwCisjOiBnaXRrOjkzNzkKIG1zZ2lkICJNYXhpbXVtIGdyYXBoIHdpZHRoIChsaW5lcykiCiBtc2dzdHIgIk1heGltYWxlIEdyYXBoZW5icmVpdGUgKFplaWxlbikiCiAKLSM6IGdpdGs6ODAxNAorIzogZ2l0azo5MzgzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTWF4aW11bSBncmFwaCB3aWR0aCAoJSBvZiBwYW5lKSIKIG1zZ3N0ciAiTWF4aW1hbGUgR3JhcGhlbmJyZWl0ZSAoJSBkZXMgRmVuc3RlcnMpIgogCi0jOiBnaXRrOjgwMTkKKyM6IGdpdGs6OTM4OAogbXNnaWQgIlNob3cgbG9jYWwgY2hhbmdlcyIKIG1zZ3N0ciAiTG9rYWxlIMOEbmRlcnVuZ2VuIGFuemVpZ2VuIgogCi0jOiBnaXRrOjgwMjQKKyM6IGdpdGs6OTM5MwogbXNnaWQgIkF1dG8tc2VsZWN0IFNIQTEiCiBtc2dzdHIgIlNIQTEtSGFzaHdlcnQgYXV0b21hdGlzY2ggbWFya2llcmVuIgogCi0jOiBnaXRrOjgwMjkKKyM6IGdpdGs6OTM5OAogbXNnaWQgIkRpZmYgZGlzcGxheSBvcHRpb25zIgogbXNnc3RyICJBbnplaWdlIFZlcmdsZWljaCIKIAotIzogZ2l0azo4MDMxCisjOiBnaXRrOjk0MDAKIG1zZ2lkICJUYWIgc3BhY2luZyIKIG1zZ3N0ciAiVGFidWxhdG9yYnJlaXRlIgogCi0jOiBnaXRrOjgwMzUKKyM6IGdpdGs6OTQwNAogbXNnaWQgIkRpc3BsYXkgbmVhcmJ5IHRhZ3MiCiBtc2dzdHIgIk5haGVsaWVnZW5kZSDDnGJlcnNjaHJpZnRlbiBhbnplaWdlbiIKIAotIzogZ2l0azo4MDQwCisjOiBnaXRrOjk0MDkKIG1zZ2lkICJMaW1pdCBkaWZmcyB0byBsaXN0ZWQgcGF0aHMiCiBtc2dzdHIgIlZlcmdsZWljaCBudXIgZsO8ciBhbmdlemVpZ3RlIFBmYWRlIgogCi0jOiBnaXRrOjkyNjQKKyM6IGdpdGs6OTQxNAorbXNnaWQgIlN1cHBvcnQgcGVyLWZpbGUgZW5jb2RpbmdzIgorbXNnc3RyICJaZWljaGVua29kaWVydW5nIHBybyBEYXRlaSBlcm1pdHRlbG4iCisKKyM6IGdpdGs6OTQyMQogbXNnaWQgIkV4dGVybmFsIGRpZmYgdG9vbCIKIG1zZ3N0ciAiRXh0ZXJuZXMgVmVyZ2xlaWNoLShEaWZmLSlQcm9ncmFtbSIKIAotIzogZ2l0azo5MjY2CisjOiBnaXRrOjk0MjMKIG1zZ2lkICJDaG9vc2UuLi4iCiBtc2dzdHIgIlfDpGhsZW4uLi4iCiAKLSM6IGdpdGs6OTI3MQorIzogZ2l0azo5NDI4CiBtc2dpZCAiQ29sb3JzOiBwcmVzcyB0byBjaG9vc2UiCiBtc2dzdHIgIkZhcmJlbjogS2xpY2tlbiB6dW0gV8OkaGxlbiIKIAotIzogZ2l0azo4MDQ4CisjOiBnaXRrOjk0MzEKIG1zZ2lkICJCYWNrZ3JvdW5kIgogbXNnc3RyICJIaW50ZXJncnVuZCIKIAotIzogZ2l0azo4MDUyCisjOiBnaXRrOjEwMTUzIGdpdGs6MTAxODMKK21zZ2lkICJiYWNrZ3JvdW5kIgorbXNnc3RyICJIaW50ZXJncnVuZCIKKworIzogZ2l0azoxMDE1NgogbXNnaWQgIkZvcmVncm91bmQiCiBtc2dzdHIgIlZvcmRlcmdydW5kIgogCi0jOiBnaXRrOjgwNTYKKyM6IGdpdGs6MTAxNTcKK21zZ2lkICJmb3JlZ3JvdW5kIgorbXNnc3RyICJWb3JkZXJncnVuZCIKKworIzogZ2l0azoxMDE2MAogbXNnaWQgIkRpZmY6IG9sZCBsaW5lcyIKIG1zZ3N0ciAiVmVyZ2xlaWNoOiBBbHRlIFplaWxlbiIKIAotIzogZ2l0azo4MDYxCisjOiBnaXRrOjEwMTYxCittc2dpZCAiZGlmZiBvbGQgbGluZXMiCittc2dzdHIgIlZlcmdsZWljaCAtIEFsdGUgWmVpbGVuIgorCisjOiBnaXRrOjEwMTY1CiBtc2dpZCAiRGlmZjogbmV3IGxpbmVzIgogbXNnc3RyICJWZXJnbGVpY2g6IE5ldWUgWmVpbGVuIgogCi0jOiBnaXRrOjgwNjYKKyM6IGdpdGs6MTAxNjYKK21zZ2lkICJkaWZmIG5ldyBsaW5lcyIKK21zZ3N0ciAiVmVyZ2xlaWNoIC0gTmV1ZSBaZWlsZW4iCisKKyM6IGdpdGs6MTAxNzAKIG1zZ2lkICJEaWZmOiBodW5rIGhlYWRlciIKIG1zZ3N0ciAiVmVyZ2xlaWNoOiDDhG5kZXJ1bmdzdGl0ZWwiCiAKLSM6IGdpdGs6ODA3MgorIzogZ2l0azoxMDE3MgorbXNnaWQgImRpZmYgaHVuayBoZWFkZXIiCittc2dzdHIgIlZlcmdsZWljaCAtIMOEbmRlcnVuZ3N0aXRlbCIKKworIzogZ2l0azoxMDE3NgorbXNnaWQgIk1hcmtlZCBsaW5lIGJnIgorbXNnc3RyICJNYXJraWVydGUgWmVpbGUgSGludGVyZ3J1bmQiCisKKyM6IGdpdGs6MTAxNzgKK21zZ2lkICJtYXJrZWQgbGluZSBiYWNrZ3JvdW5kIgorbXNnc3RyICJtYXJraWVydGUgWmVpbGUgSGludGVyZ3J1bmQiCisKKyM6IGdpdGs6MTAxODIKIG1zZ2lkICJTZWxlY3QgYmciCiBtc2dzdHIgIkhpbnRlcmdydW5kZmFyYmUgQXVzd8OkaGxlbiIKIAotIzogZ2l0azo4MDc2CisjOiBnaXRrOjk0NTkKIG1zZ2lkICJGb250czogcHJlc3MgdG8gY2hvb3NlIgogbXNnc3RyICJTY2hyaWZ0YXJ0OiBLbGlja2VuIHp1bSBXw6RobGVuIgogCi0jOiBnaXRrOjgwNzgKKyM6IGdpdGs6OTQ2MQogbXNnaWQgIk1haW4gZm9udCIKIG1zZ3N0ciAiUHJvZ3JhbW1zY2hyaWZ0YXJ0IgogCi0jOiBnaXRrOjgwNzkKKyM6IGdpdGs6OTQ2MgogbXNnaWQgIkRpZmYgZGlzcGxheSBmb250IgogbXNnc3RyICJWZXJnbGVpY2giCiAKLSM6IGdpdGs6ODA4MAorIzogZ2l0azo5NDYzCiBtc2dpZCAiVXNlciBpbnRlcmZhY2UgZm9udCIKIG1zZ3N0ciAiQmVzY2hyaWZ0dW5nZW4iCiAKLSM6IGdpdGs6ODA5NgorIzogZ2l0azo5NDg4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiR2l0azogY2hvb3NlIGNvbG9yIGZvciAlcyIKIG1zZ3N0ciAiR2l0azogRmFyYmUgd8OkaGxlbiBmw7xyICVzIgogCi0jOiBnaXRrOjg0NzcKKyM6IGdpdGs6OTkzNAogbXNnaWQgIiIKICJTb3JyeSwgZ2l0ayBjYW5ub3QgcnVuIHdpdGggdGhpcyB2ZXJzaW9uIG9mIFRjbC9Uay5cbiIKICIgR2l0ayByZXF1aXJlcyBhdCBsZWFzdCBUY2wvVGsgOC40LiIKQEAgLTg5NSwyNCArMTA2NiwyNCBAQAogIkdpdGsgbMOkdWZ0IG5pY2h0IG1pdCBkaWVzZXIgVmVyc2lvbiB2b24gVGNsL1RrLlxuIgogIkdpdGsgYmVuw7Z0aWd0IG1pbmRlc3RlbnMgVGNsL1RrIDguNC4iCiAKLSM6IGdpdGs6ODU2NgorIzogZ2l0azoxMDA0NwogbXNnaWQgIkNhbm5vdCBmaW5kIGEgZ2l0IHJlcG9zaXRvcnkgaGVyZS4iCiBtc2dzdHIgIktlaW4gR2l0LVByb2pla3RhcmNoaXYgZ2VmdW5kZW4uIgogCi0jOiBnaXRrOjg1NzAKKyM6IGdpdGs6MTAwNTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZmluZCB0aGUgZ2l0IGRpcmVjdG9yeSBcIiVzXCIuIgogbXNnc3RyICJHaXQtVmVyemVpY2huaXMgwrslc8KrIHd1cmRlIG5pY2h0IGdlZnVuZGVuLiIKIAotIzogZ2l0azo4NjEzCisjOiBnaXRrOjEwMDk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQW1iaWd1b3VzIGFyZ3VtZW50ICclcyc6IGJvdGggcmV2aXNpb24gYW5kIGZpbGVuYW1lIgogbXNnc3RyICJNZWhyZGV1dGlnZSBBbmdhYmUgwrslc8KrOiBTb3dvaGwgVmVyc2lvbiBhbHMgYXVjaCBEYXRlaW5hbWUgZXhpc3RpZXJ0LiIKIAotIzogZ2l0azo4NjI1CisjOiBnaXRrOjEwMTEwCiBtc2dpZCAiQmFkIGFyZ3VtZW50cyB0byBnaXRrOiIKIG1zZ3N0ciAiRmFsc2NoZSBLb21tYW5kb3plaWxlbi1QYXJhbWV0ZXIgZsO8ciBnaXRrOiIKIAotIzogZ2l0azo5OTE1CisjOiBnaXRrOjEwMTcwCiBtc2dpZCAiQ29tbWFuZCBsaW5lIgogbXNnc3RyICJLb21tYW5kb3plaWxlIgpkaWZmIC0tZ2l0IGEvZ2l0ay1naXQvcG8vZXMucG8gYi9naXRrLWdpdC9wby9lcy5wbwppbmRleCAyY2IxNDg2Li4wZTE5YjVlIDEwMDY0NAotLS0gYS9naXRrLWdpdC9wby9lcy5wbworKysgYi9naXRrLWdpdC9wby9lcy5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0a1xuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0wMy0xMyAxNzoyOSswMTAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTAtMTggMjI6MDMrMTEwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMDMtMjUgMTE6MjArMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogU2FudGlhZ28gR2FsYSA8c2FudGlhZ28uZ2FsYUBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU3BhbmlzaFxuIgpAQCAtMTYsNjc2ICsxNiw3MDIgQEAKICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGdpdGs6MTExCi1tc2dpZCAiRXJyb3IgZXhlY3V0aW5nIGdpdCByZXYtbGlzdDoiCi1tc2dzdHIgIkVycm9yIGFsIGVqZWN1dGFyIGdpdCByZXYtbGlzdDoiCisjOiBnaXRrOjExMworbXNnaWQgIkNvdWxkbid0IGdldCBsaXN0IG9mIHVubWVyZ2VkIGZpbGVzOiIKK21zZ3N0ciAiSW1wb3NpYmxlIG9idGVuZXIgbGEgbGlzdGEgZGUgYXJjaGl2b3MgcGVuZGllbnRlcyBkZSBmdXNpw7NuOiIKIAotIzogZ2l0azoxMjQKKyM6IGdpdGs6MzQwCittc2dpZCAiTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyBmaWxlcyBhcmUgdW5tZXJnZWQuIgorbXNnc3RyICIiCisiTm8gaGF5IGFyY2hpdm9zIHNlbGVjY2lvbmFkb3M6IHNlIHNlbGVjY2lvbsOzIGxhIG9wY2nDs24gLS1tZXJnZSBwZXJvIG5vIGhheSAiCisiYXJjaGl2b3MgcGVuZGllbnRlcyBkZSBmdXNpw7NuLiIKKworIzogZ2l0azozNDMKK21zZ2lkICIiCisiTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyB1bm1lcmdlZCBmaWxlcyBhcmUgd2l0aGluIGZpbGUgIgorImxpbWl0LiIKK21zZ3N0ciAiIgorIk5vIGhheSBhcmNoaXZvcyBzZWxlY2Npb25hZG9zOiBzZSBzZWxlY2Npb27DsyBsYSBvcGNpw7NuIC0tbWVyZ2UgcGVybyBsb3MgIgorImFyY2hpdm9zIGVzcGVjaWZpY2Fkb3Mgbm8gbmVjZXNpdGFuIGZ1c2nDs24uIgorCisjOiBnaXRrOjM3OAogbXNnaWQgIlJlYWRpbmciCiBtc2dzdHIgIkxleWVuZG8iCiAKLSM6IGdpdGs6MTUxIGdpdGs6MjE5MQorIzogZ2l0azo0MzggZ2l0azozNDYyCiBtc2dpZCAiUmVhZGluZyBjb21taXRzLi4uIgogbXNnc3RyICJMZXllbmRvIHJldmlzaW9uZXMuLi4iCiAKLSM6IGdpdGs6Mjc1Ci1tc2dpZCAiQ2FuJ3QgcGFyc2UgZ2l0IGxvZyBvdXRwdXQ6IgotbXNnc3RyICJFcnJvciBhbmFsaXphbmRvIGxhIHNhbGlkYSBkZSBnaXQgbG9nOiIKLQotIzogZ2l0azozODYgZ2l0azoyMTk1CisjOiBnaXRrOjQ0MSBnaXRrOjE1MjggZ2l0azozNDY1CiBtc2dpZCAiTm8gY29tbWl0cyBzZWxlY3RlZCIKIG1zZ3N0ciAiTm8gc2Ugc2VsZWNjaW9uYXJvbiByZXZpc2lvbmVzIgogCi0jOiBnaXRrOjUwMAorIzogZ2l0azoxMzk5Cittc2dpZCAiQ2FuJ3QgcGFyc2UgZ2l0IGxvZyBvdXRwdXQ6IgorbXNnc3RyICJFcnJvciBhbmFsaXphbmRvIGxhIHNhbGlkYSBkZSBnaXQgbG9nOiIKKworIzogZ2l0azoxNjA1CiBtc2dpZCAiTm8gY29tbWl0IGluZm9ybWF0aW9uIGF2YWlsYWJsZSIKIG1zZ3N0ciAiRmFsdGEgaW5mb3JtYWNpw7NuIHNvYnJlIGxhcyByZXZpc2lvbmVzIgogCi0jOiBnaXRrOjU5OSBnaXRrOjYyMSBnaXRrOjE5NTUgZ2l0azo2NDIzIGdpdGs6NzkyMyBnaXRrOjgwODIKKyM6IGdpdGs6MTcwOSBnaXRrOjE3MzEgZ2l0azozMjU5IGdpdGs6Nzc2NCBnaXRrOjkyOTMgZ2l0azo5NDY2CiBtc2dpZCAiT0siCiBtc2dzdHIgIkFjZXB0YXIiCiAKLSM6IGdpdGs6NjIzIGdpdGs6MTk1NiBnaXRrOjYxMDcgZ2l0azo2MTc4IGdpdGs6NjI3NSBnaXRrOjYzMjEgZ2l0azo2NDI1Ci0jOiBnaXRrOjc5MjQgZ2l0azo4MDgzCisjOiBnaXRrOjE3MzMgZ2l0azozMjYwIGdpdGs6NzQzOSBnaXRrOjc1MTAgZ2l0azo3NjEzIGdpdGs6NzY2MCBnaXRrOjc3NjYKKyM6IGdpdGs6OTI5NCBnaXRrOjk0NjcKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIkNhbmNlbGFyIgogCi0jOiBnaXRrOjY2MQotbXNnaWQgIkZpbGUiCi1tc2dzdHIgIkFyY2hpdm8iCi0KLSM6IGdpdGs6NjYzCisjOiBnaXRrOjE4MTEKIG1zZ2lkICJVcGRhdGUiCiBtc2dzdHIgIkFjdHVhbGl6YXIiCiAKLSM6IGdpdGs6NjY0CisjOiBnaXRrOjE4MTMKIG1zZ2lkICJSZXJlYWQgcmVmZXJlbmNlcyIKIG1zZ3N0ciAiUmVsZWVyIHJlZmVyZW5jaWFzIgogCi0jOiBnaXRrOjY2NQorIzogZ2l0azoxODE0CiBtc2dpZCAiTGlzdCByZWZlcmVuY2VzIgogbXNnc3RyICJMaXN0YSBkZSByZWZlcmVuY2lhcyIKIAotIzogZ2l0azo2NjYKKyM6IGdpdGs6MTgxNQogbXNnaWQgIlF1aXQiCiBtc2dzdHIgIlNhbGlyIgogCi0jOiBnaXRrOjY2OAotbXNnaWQgIkVkaXQiCi1tc2dzdHIgIkVkaXRhciIKKyM6IGdpdGs6MTgxMAorbXNnaWQgIkZpbGUiCittc2dzdHIgIkFyY2hpdm8iCiAKLSM6IGdpdGs6NjY5CisjOiBnaXRrOjE4MTgKIG1zZ2lkICJQcmVmZXJlbmNlcyIKIG1zZ3N0ciAiUHJlZmVyZW5jaWFzIgogCi0jOiBnaXRrOjY3MiBnaXRrOjE4OTIKLW1zZ2lkICJWaWV3IgotbXNnc3RyICJWaXN0YSIKKyM6IGdpdGs6MTgxNworbXNnaWQgIkVkaXQiCittc2dzdHIgIkVkaXRhciIKIAotIzogZ2l0azo2NzMKKyM6IGdpdGs6MTgyMQogbXNnaWQgIk5ldyB2aWV3Li4uIgogbXNnc3RyICJOdWV2YSB2aXN0YS4uLiIKIAotIzogZ2l0azo2NzQgZ2l0azoyMTMzIGdpdGs6ODcyMgorIzogZ2l0azoxODIyCiBtc2dpZCAiRWRpdCB2aWV3Li4uIgogbXNnc3RyICJNb2RpZmljYXIgdmlzdGEuLi4iCiAKLSM6IGdpdGs6Njc2IGdpdGs6MjEzNCBnaXRrOjg3MjMKKyM6IGdpdGs6MTgyMwogbXNnaWQgIkRlbGV0ZSB2aWV3IgogbXNnc3RyICJFbGltaW5hciB2aXN0YSIKIAotIzogZ2l0azo2NzgKKyM6IGdpdGs6MTgyNQogbXNnaWQgIkFsbCBmaWxlcyIKIG1zZ3N0ciAiVG9kb3MgbG9zIGFyY2hpdm9zIgogCi0jOiBnaXRrOjY4MgotbXNnaWQgIkhlbHAiCi1tc2dzdHIgIkF5dWRhIgorIzogZ2l0azoxODIwIGdpdGs6MzE5NgorbXNnaWQgIlZpZXciCittc2dzdHIgIlZpc3RhIgogCi0jOiBnaXRrOjY4MyBnaXRrOjEzMTcKKyM6IGdpdGs6MTgyOCBnaXRrOjI0ODcKIG1zZ2lkICJBYm91dCBnaXRrIgogbXNnc3RyICJBY2VyY2EgZGUgZ2l0ayIKIAotIzogZ2l0azo2ODQKKyM6IGdpdGs6MTgyOQogbXNnaWQgIktleSBiaW5kaW5ncyIKIG1zZ3N0ciAiQ29tYmluYWNpb25lcyBkZSB0ZWNsYXMiCiAKLSM6IGdpdGs6NzQxCisjOiBnaXRrOjE4MjcKK21zZ2lkICJIZWxwIgorbXNnc3RyICJBeXVkYSIKKworIzogZ2l0azoxODg3CiBtc2dpZCAiU0hBMSBJRDogIgogbXNnc3RyICJTSEExIElEOiAiCiAKLSM6IGdpdGs6NzkxCisjOiBnaXRrOjE5MTgKK21zZ2lkICJSb3ciCittc2dzdHIgIiIKKworIzogZ2l0azoxOTQ5CiBtc2dpZCAiRmluZCIKIG1zZ3N0ciAiQnVzY2FyIgogCi0jOiBnaXRrOjc5MgorIzogZ2l0azoxOTUwCiBtc2dpZCAibmV4dCIKIG1zZ3N0ciAiPDwiCiAKLSM6IGdpdGs6NzkzCisjOiBnaXRrOjE5NTEKIG1zZ2lkICJwcmV2IgogbXNnc3RyICI+PiIKIAotIzogZ2l0azo3OTQKKyM6IGdpdGs6MTk1MgogbXNnaWQgImNvbW1pdCIKIG1zZ3N0ciAicmV2aXNpw7NuIgogCi0jOiBnaXRrOjc5NyBnaXRrOjc5OSBnaXRrOjIzNTYgZ2l0azoyMzc5IGdpdGs6MjQwMyBnaXRrOjQzMDYgZ2l0azo0MzY5CisjOiBnaXRrOjE5NTUgZ2l0azoxOTU3IGdpdGs6MzYxNyBnaXRrOjM2NDAgZ2l0azozNjY0IGdpdGs6NTU1MCBnaXRrOjU2MjEKIG1zZ2lkICJjb250YWluaW5nOiIKIG1zZ3N0ciAicXVlIGNvbnRpZW5lOiIKIAotIzogZ2l0azo4MDAgZ2l0azoxNzc4IGdpdGs6MTc4MyBnaXRrOjI0MzEKKyM6IGdpdGs6MTk1OCBnaXRrOjI5NTQgZ2l0azoyOTU5IGdpdGs6MzY5MgogbXNnaWQgInRvdWNoaW5nIHBhdGhzOiIKIG1zZ3N0ciAicXVlIG1vZGlmaWNhIGxhIHJ1dGE6IgogCi0jOiBnaXRrOjgwMSBnaXRrOjI0MzYKKyM6IGdpdGs6MTk1OSBnaXRrOjM2OTcKIG1zZ2lkICJhZGRpbmcvcmVtb3Zpbmcgc3RyaW5nOiIKIG1zZ3N0ciAicXVlIGHDsWFkZS9lbGltaW5hIGNhZGVuYToiCiAKLSM6IGdpdGs6ODEwIGdpdGs6ODEyCisjOiBnaXRrOjE5NjggZ2l0azoxOTcwCiBtc2dpZCAiRXhhY3QiCiBtc2dzdHIgIkV4YWN0byIKIAotIzogZ2l0azo4MTIgZ2l0azoyNTE0IGdpdGs6NDI3NAorIzogZ2l0azoxOTcwIGdpdGs6Mzc3MyBnaXRrOjU1MTgKIG1zZ2lkICJJZ25DYXNlIgogbXNnc3RyICJOb01hecO6cyIKIAotIzogZ2l0azo4MTIgZ2l0azoyNDA1IGdpdGs6MjUxMiBnaXRrOjQyNzAKKyM6IGdpdGs6MTk3MCBnaXRrOjM2NjYgZ2l0azozNzcxIGdpdGs6NTUxNAogbXNnaWQgIlJlZ2V4cCIKIG1zZ3N0ciAiUmVnZXgiCiAKLSM6IGdpdGs6ODE0IGdpdGs6ODE1IGdpdGs6MjUzMyBnaXRrOjI1NjMgZ2l0azoyNTcwIGdpdGs6NDM4MCBnaXRrOjQ0MzYKKyM6IGdpdGs6MTk3MiBnaXRrOjE5NzMgZ2l0azozNzkyIGdpdGs6MzgyMiBnaXRrOjM4MjkgZ2l0azo1NjQxIGdpdGs6NTcwOAogbXNnaWQgIkFsbCBmaWVsZHMiCiBtc2dzdHIgIlRvZG9zIGxvcyBjYW1wb3MiCiAKLSM6IGdpdGs6ODE1IGdpdGs6MjUzMSBnaXRrOjI1NjMgZ2l0azo0MzM2CisjOiBnaXRrOjE5NzMgZ2l0azozNzkwIGdpdGs6MzgyMiBnaXRrOjU1ODAKIG1zZ2lkICJIZWFkbGluZSIKIG1zZ3N0ciAiVMOtdHVsbyIKIAotIzogZ2l0azo4MTYgZ2l0azoyNTMxIGdpdGs6NDMzNiBnaXRrOjQ0MzYgZ2l0azo0ODI3CisjOiBnaXRrOjE5NzQgZ2l0azozNzkwIGdpdGs6NTU4MCBnaXRrOjU3MDggZ2l0azo2MTA5CiBtc2dpZCAiQ29tbWVudHMiCiBtc2dzdHIgIkNvbWVudGFyaW9zIgogCi0jOiBnaXRrOjgxNiBnaXRrOjI1MzEgZ2l0azoyNTM1IGdpdGs6MjU3MCBnaXRrOjQzMzYgZ2l0azo0NzYzIGdpdGs6NTk1NgotIzogZ2l0azo1OTcxCisjOiBnaXRrOjE5NzQgZ2l0azozNzkwIGdpdGs6Mzc5NCBnaXRrOjM4MjkgZ2l0azo1NTgwIGdpdGs6NjA0NSBnaXRrOjcyODUKKyM6IGdpdGs6NzMwMAogbXNnaWQgIkF1dGhvciIKIG1zZ3N0ciAiQXV0b3IiCiAKLSM6IGdpdGs6ODE2IGdpdGs6MjUzMSBnaXRrOjQzMzYgZ2l0azo0NzY1CisjOiBnaXRrOjE5NzQgZ2l0azozNzkwIGdpdGs6NTU4MCBnaXRrOjYwNDcKIG1zZ2lkICJDb21taXR0ZXIiCiBtc2dzdHIgIiIKIAotIzogZ2l0azo4NDUKKyM6IGdpdGs6MjAwMwogbXNnaWQgIlNlYXJjaCIKIG1zZ3N0ciAiQnVzY2FyIgogCi0jOiBnaXRrOjg1MgorIzogZ2l0azoyMDEwCiBtc2dpZCAiRGlmZiIKIG1zZ3N0ciAiRGlmZXJlbmNpYSIKIAotIzogZ2l0azo4NTQKKyM6IGdpdGs6MjAxMgogbXNnaWQgIk9sZCB2ZXJzaW9uIgogbXNnc3RyICJWZXJzacOzbiBhbnRpZ3VhIgogCi0jOiBnaXRrOjg1NgorIzogZ2l0azoyMDE0CiBtc2dpZCAiTmV3IHZlcnNpb24iCiBtc2dzdHIgIlZlcnNpw7NuIG51ZXZhIgogCi0jOiBnaXRrOjg1OAorIzogZ2l0azoyMDE2CiBtc2dpZCAiTGluZXMgb2YgY29udGV4dCIKIG1zZ3N0ciAiTMOtbmVhcyBkZSBjb250ZXh0byIKIAotIzogZ2l0azo4NjgKKyM6IGdpdGs6MjAyNgogbXNnaWQgIklnbm9yZSBzcGFjZSBjaGFuZ2UiCiBtc2dzdHIgIklnbm9yYSBjYW1iaW9zIGRlIGVzcGFjaWFkbyIKIAotIzogZ2l0azo5MjYKKyM6IGdpdGs6MjA4NAogbXNnaWQgIlBhdGNoIgogbXNnc3RyICJQYXJjaGUiCiAKLSM6IGdpdGs6OTI4CisjOiBnaXRrOjIwODYKIG1zZ2lkICJUcmVlIgogbXNnc3RyICLDgXJib2wiCiAKLSM6IGdpdGs6MTA1MyBnaXRrOjEwNjggZ2l0azo2MDIyCisjOiBnaXRrOjIyMTMgZ2l0azoyMjI2CiBtc2dpZCAiRGlmZiB0aGlzIC0+IHNlbGVjdGVkIgogbXNnc3RyICJEaWZlcmVuY2lhIGRlIGVzdGEgLT4gc2VsZWNjaW9uYWRhIgogCi0jOiBnaXRrOjEwNTUgZ2l0azoxMDcwIGdpdGs6NjAyMworIzogZ2l0azoyMjE0IGdpdGs6MjIyNwogbXNnaWQgIkRpZmYgc2VsZWN0ZWQgLT4gdGhpcyIKIG1zZ3N0ciAiRGlmZXJlbmNpYSBkZSBzZWxlY2Npb25hZGEgLT4gZXN0YSIKIAotIzogZ2l0azoxMDU3IGdpdGs6MTA3MiBnaXRrOjYwMjQKKyM6IGdpdGs6MjIxNSBnaXRrOjIyMjgKIG1zZ2lkICJNYWtlIHBhdGNoIgogbXNnc3RyICJDcmVhciBwYXRjaCIKIAotIzogZ2l0azoxMDU4IGdpdGs6NjE2MgorIzogZ2l0azoyMjE2IGdpdGs6NzQ5NAogbXNnaWQgIkNyZWF0ZSB0YWciCiBtc2dzdHIgIkNyZWFyIGV0aXF1ZXRhIgogCi0jOiBnaXRrOjEwNTkgZ2l0azo2MjU1CisjOiBnaXRrOjIyMTcgZ2l0azo3NTkzCiBtc2dpZCAiV3JpdGUgY29tbWl0IHRvIGZpbGUiCiBtc2dzdHIgIkVzY3JpYmlyIHJldmlzaW9uZXMgYSBhcmNoaXZvIgogCi0jOiBnaXRrOjEwNjAgZ2l0azo2MzA5CisjOiBnaXRrOjIyMTggZ2l0azo3NjQ3CiBtc2dpZCAiQ3JlYXRlIG5ldyBicmFuY2giCiBtc2dzdHIgIkNyZWFyIG51ZXZhIHJhbWEiCiAKLSM6IGdpdGs6MTA2MQorIzogZ2l0azoyMjE5CiBtc2dpZCAiQ2hlcnJ5LXBpY2sgdGhpcyBjb21taXQiCiBtc2dzdHIgIkHDsWFkaXIgZXN0YSByZXZpc2nDs24gYSBsYSByYW1hIGFjdHVhbCAoY2hlcnJ5LXBpY2spIgogCi0jOiBnaXRrOjEwNjMKKyM6IGdpdGs6MjIyMAogbXNnaWQgIlJlc2V0IEhFQUQgYnJhbmNoIHRvIGhlcmUiCiBtc2dzdHIgIlRyYWVyIGxhIHJhbWEgSEVBRCBhcXXDrSIKIAotIzogZ2l0azoxMDc5CisjOiBnaXRrOjIyMzQKIG1zZ2lkICJDaGVjayBvdXQgdGhpcyBicmFuY2giCiBtc2dzdHIgIkNhbWJpYXIgYSBlc3RhIHJhbWEiCiAKLSM6IGdpdGs6MTA4MQorIzogZ2l0azoyMjM1CiBtc2dpZCAiUmVtb3ZlIHRoaXMgYnJhbmNoIgogbXNnc3RyICJFbGltaW5hciBlc3RhIHJhbWEiCiAKLSM6IGdpdGs6MTA4NworIzogZ2l0azoyMjQyCiBtc2dpZCAiSGlnaGxpZ2h0IHRoaXMgdG9vIgogbXNnc3RyICJTZWxlY2Npb25hciB0YW1iacOpbiIKIAotIzogZ2l0azoxMDg5CisjOiBnaXRrOjIyNDMKIG1zZ2lkICJIaWdobGlnaHQgdGhpcyBvbmx5IgogbXNnc3RyICJTZWxlY2Npb25hciBzw7NsbyIKIAotIzogZ2l0azoxMzE4CisjOiBnaXRrOjIyNDUKK21zZ2lkICJCbGFtZSBwYXJlbnQgY29tbWl0IgorbXNnc3RyICIiCisKKyM6IGdpdGs6MjQ4OAogbXNnaWQgIiIKICJcbiIKICJHaXRrIC0gYSBjb21taXQgdmlld2VyIGZvciBnaXRcbiIKICJcbiIKLSJDb3B5cmlnaHQgwqkgMjAwNS0yMDA2IFBhdWwgTWFja2VycmFzXG4iCisiQ29weXJpZ2h0IMKpIDIwMDUtMjAwOCBQYXVsIE1hY2tlcnJhc1xuIgogIlxuIgogIlVzZSBhbmQgcmVkaXN0cmlidXRlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UiCiBtc2dzdHIgIiIKICJcbiIKICJHaXRrIC0gdW4gdmlzdWFsaXphZG9yIGRlIHJldmlzaW9uZXMgcGFyYSBnaXRcbiIKICJcbiIKLSJDb3B5cmlnaHQgwqkgMjAwNS0yMDA2IFBhdWwgTWFja2VycmFzXG4iCisiQ29weXJpZ2h0IMKpIDIwMDUtMjAwOCBQYXVsIE1hY2tlcnJhc1xuIgogIlxuIgotIlVzbyB5IHJlZGlzdHJpYnVjacOzbiBwZXJtaXRpZG9zIHNlZ8O6biBsb3MgdMOpcm1pbm9zIGRlIGxhIExpY2VuY2lhIFDDumJsaWNhIEdlbmVyYWwgZGUgIgotIkdOVSAoR05VIEdQTCkiCisiVXNvIHkgcmVkaXN0cmlidWNpw7NuIHBlcm1pdGlkb3Mgc2Vnw7puIGxvcyB0w6lybWlub3MgZGUgbGEgTGljZW5jaWEgUMO6YmxpY2EgIgorIkdlbmVyYWwgZGUgR05VIChHTlUgR1BMKSIKIAotIzogZ2l0azoxMzI2IGdpdGs6MTM4NyBnaXRrOjY1ODEKKyM6IGdpdGs6MjQ5NiBnaXRrOjI1NTcgZ2l0azo3OTQzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIkNlcnJhciIKIAotIzogZ2l0azoxMzQ1CisjOiBnaXRrOjI1MTUKIG1zZ2lkICJHaXRrIGtleSBiaW5kaW5ncyIKIG1zZ3N0ciAiQ29tYmluYWNpb25lcyBkZSB0ZWNsYSBkZSBHaXRrIgogCi0jOiBnaXRrOjEzNDcKKyM6IGdpdGs6MjUxNwogbXNnaWQgIkdpdGsga2V5IGJpbmRpbmdzOiIKIG1zZ3N0ciAiQ29tYmluYWNpb25lcyBkZSB0ZWNsYSBkZSBHaXRrOiIKIAotIzogZ2l0azoxMzQ5CisjOiBnaXRrOjI1MTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUT5cdFx0UXVpdCIKIG1zZ3N0ciAiPCVzLVE+XHRcdFNhbGlyIgogCi0jOiBnaXRrOjEzNTAKKyM6IGdpdGs6MjUyMAogbXNnaWQgIjxIb21lPlx0XHRNb3ZlIHRvIGZpcnN0IGNvbW1pdCIKIG1zZ3N0ciAiPEhvbWU+XHRcdElyIGEgbGEgcHJpbWVyYSByZXZpc2nDs24iCiAKLSM6IGdpdGs6MTM1MQorIzogZ2l0azoyNTIxCiBtc2dpZCAiPEVuZD5cdFx0TW92ZSB0byBsYXN0IGNvbW1pdCIKIG1zZ3N0ciAiPEVuZD5cdFx0SXIgYSBsYSDDumx0aW1hIHJldmlzacOzbiIKIAotIzogZ2l0azoxMzUyCisjOiBnaXRrOjI1MjIKIG1zZ2lkICI8VXA+LCBwLCBpXHRNb3ZlIHVwIG9uZSBjb21taXQiCiBtc2dzdHIgIjxVcD4sIHAsIGlcdFN1YmlyIHVuYSByZXZpc2nDs24iCiAKLSM6IGdpdGs6MTM1MworIzogZ2l0azoyNTIzCiBtc2dpZCAiPERvd24+LCBuLCBrXHRNb3ZlIGRvd24gb25lIGNvbW1pdCIKIG1zZ3N0ciAiPERvd24+LCBuLCBrXHRCYWphciB1bmEgcmV2aXNpw7NuIgogCi0jOiBnaXRrOjEzNTQKKyM6IGdpdGs6MjUyNAogbXNnaWQgIjxMZWZ0Piwgeiwgalx0R28gYmFjayBpbiBoaXN0b3J5IGxpc3QiCiBtc2dzdHIgIjxMZWZ0Piwgeiwgalx0UmV0cm9jZWRlciBlbiBsYSBoaXN0b3JpYSIKIAotIzogZ2l0azoxMzU1CisjOiBnaXRrOjI1MjUKIG1zZ2lkICI8UmlnaHQ+LCB4LCBsXHRHbyBmb3J3YXJkIGluIGhpc3RvcnkgbGlzdCIKIG1zZ3N0ciAiPFJpZ2h0PiwgeCwgbFx0QXZhbnphciBlbiBsYSBoaXN0b3JpYSIKIAotIzogZ2l0azoxMzU2CisjOiBnaXRrOjI1MjYKIG1zZ2lkICI8UGFnZVVwPlx0TW92ZSB1cCBvbmUgcGFnZSBpbiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPFBhZ2VVcD5cdFN1YmlyIHVuYSBww6FnaW5hIGVuIGxhIGxpc3RhIGRlIHJldmlzaW9uZXMiCiAKLSM6IGdpdGs6MTM1NworIzogZ2l0azoyNTI3CiBtc2dpZCAiPFBhZ2VEb3duPlx0TW92ZSBkb3duIG9uZSBwYWdlIGluIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8UGFnZURvd24+XHRCYWphciB1bmEgcMOhZ2luYSBlbiBsYSBsaXN0YSBkZSByZXZpc2lvbmVzIgogCi0jOiBnaXRrOjEzNTgKKyM6IGdpdGs6MjUyOAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1Ib21lPlx0U2Nyb2xsIHRvIHRvcCBvZiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPCVzLUhvbWU+XHREZXNwbGF6YXJzZSBhbCBpbmljaW8gZGUgbGEgbGlzdGEgZGUgcmV2aXNpb25lcyIKIAotIzogZ2l0azoxMzU5CisjOiBnaXRrOjI1MjkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRW5kPlx0U2Nyb2xsIHRvIGJvdHRvbSBvZiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPCVzLUVuZD5cdERlc3BsYXphcnNlIGFsIGZpbmFsIGRlIGxhIGxpc3RhIGRlIHJldmlzaW9uZXMiCiAKLSM6IGdpdGs6MTM2MAorIzogZ2l0azoyNTMwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVVwPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IHVwIG9uZSBsaW5lIgogbXNnc3RyICI8JXMtVXA+XHREZXNwbGF6YXIgdW5hIGzDrW5lYSBoYWNpYSBhcnJpYmEgbGEgbGlzdGEgZGUgcmV2aXNpb25lcyIKIAotIzogZ2l0azoxMzYxCisjOiBnaXRrOjI1MzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRG93bj5cdFNjcm9sbCBjb21taXQgbGlzdCBkb3duIG9uZSBsaW5lIgogbXNnc3RyICI8JXMtRG93bj5cdERlc3BsYXphciB1bmEgbMOtbmVhIGhhY2lhIGFiYWpvIGxhIGxpc3RhIGRlIHJldmlzaW9uZXMiCiAKLSM6IGdpdGs6MTM2MgorIzogZ2l0azoyNTMyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVBhZ2VVcD5cdFNjcm9sbCBjb21taXQgbGlzdCB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPCVzLVBhZ2VVcD5cdERlc3BsYXphciB1bmEgcMOhZ2luYSBoYWNpYSBhcnJpYmEgbGEgbGlzdGEgZGUgcmV2aXNpb25lcyIKIAotIzogZ2l0azoxMzYzCisjOiBnaXRrOjI1MzMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUGFnZURvd24+XHRTY3JvbGwgY29tbWl0IGxpc3QgZG93biBvbmUgcGFnZSIKIG1zZ3N0ciAiPCVzLVBhZ2VEb3duPlx0RGVzcGxhemFyIHVuYSBww6FnaW5hIGhhY2lhIGFiYWpvIGxhIGxpc3RhIGRlIHJldmlzaW9uZXMiCiAKLSM6IGdpdGs6MTM2NAorIzogZ2l0azoyNTM0CiBtc2dpZCAiPFNoaWZ0LVVwPlx0RmluZCBiYWNrd2FyZHMgKHVwd2FyZHMsIGxhdGVyIGNvbW1pdHMpIgogbXNnc3RyICI8U2hpZnQtVXA+XHRCdXNjYXIgaGFjaWEgYXRyw6FzIChhcnJpYmEsIHJldmlzaW9uZXMgc2lndWllbnRlcykiCiAKLSM6IGdpdGs6MTM2NQorIzogZ2l0azoyNTM1CiBtc2dpZCAiPFNoaWZ0LURvd24+XHRGaW5kIGZvcndhcmRzIChkb3dud2FyZHMsIGVhcmxpZXIgY29tbWl0cykiCiBtc2dzdHIgIjxTaGlmdC1Eb3duPlx0QnVzY2FyIGhhY2lhIGFkZWxhbnRlIChhYmFqbywgcmV2aXNpb25lcyBhbnRlcmlvcmVzKSIKIAotIzogZ2l0azoxMzY2CisjOiBnaXRrOjI1MzYKIG1zZ2lkICI8RGVsZXRlPiwgYlx0U2Nyb2xsIGRpZmYgdmlldyB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPERlbGV0ZT4sIGJcdERlc3BsYXphIGhhY2lhIGFycmliYSB1bmEgcMOhZ2luYSBsYSB2aXN0YSBkZSBkaWZlcmVuY2lhcyIKIAotIzogZ2l0azoxMzY3CisjOiBnaXRrOjI1MzcKIG1zZ2lkICI8QmFja3NwYWNlPlx0U2Nyb2xsIGRpZmYgdmlldyB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPEJhY2tzcGFjZT5cdERlc3BsYXphIGhhY2lhIGFycmliYSB1bmEgcMOhZ2luYSBsYSB2aXN0YSBkZSBkaWZlcmVuY2lhcyIKIAotIzogZ2l0azoxMzY4CisjOiBnaXRrOjI1MzgKIG1zZ2lkICI8U3BhY2U+XHRcdFNjcm9sbCBkaWZmIHZpZXcgZG93biBvbmUgcGFnZSIKIG1zZ3N0ciAiPFNwYWNlPlx0XHREZXNwbGF6YSBoYWNpYSBhYmFqbyB1bmEgcMOhZ2luYSBsYSB2aXN0YSBkZSBkaWZlcmVuY2lhcyIKIAotIzogZ2l0azoxMzY5CisjOiBnaXRrOjI1MzkKIG1zZ2lkICJ1XHRcdFNjcm9sbCBkaWZmIHZpZXcgdXAgMTggbGluZXMiCiBtc2dzdHIgInVcdFx0RGVzcGxhemEgaGFjaWEgYXJyaWJhIDE4IGzDrW5lYXMgbGEgdmlzdGEgZGUgZGlmZXJlbmNpYXMiCiAKLSM6IGdpdGs6MTM3MAorIzogZ2l0azoyNTQwCiBtc2dpZCAiZFx0XHRTY3JvbGwgZGlmZiB2aWV3IGRvd24gMTggbGluZXMiCiBtc2dzdHIgImRcdFx0RGVzcGxhemEgaGFjaWEgYWJham8gMTggbMOtbmVhcyBsYSB2aXN0YSBkZSBkaWZlcmVuY2lhcyIKIAotIzogZ2l0azoxMzcxCisjOiBnaXRrOjI1NDEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRj5cdFx0RmluZCIKIG1zZ3N0ciAiPCVzLUY+XHRcdEJ1c2NhciIKIAotIzogZ2l0azoxMzcyCisjOiBnaXRrOjI1NDIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRz5cdFx0TW92ZSB0byBuZXh0IGZpbmQgaGl0IgogbXNnc3RyICI8JXMtRz5cdFx0QnVzY2FyIGVsIHNpZ3VpZW50ZSIKIAotIzogZ2l0azoxMzczCisjOiBnaXRrOjI1NDMKIG1zZ2lkICI8UmV0dXJuPlx0TW92ZSB0byBuZXh0IGZpbmQgaGl0IgogbXNnc3RyICI8UmV0dXJuPlx0QnVzY2FyIGVsIHNpZ3VpZW50ZSIKIAotIzogZ2l0azoxMzc0CisjOiBnaXRrOjI1NDQKIG1zZ2lkICIvXHRcdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCwgb3IgcmVkbyBmaW5kIgogbXNnc3RyICIvXHRcdEJ1c2NhciBlbCBzaWd1aWVudGUsIG8gcmVpbmljaWFyIGxhIGLDunNxdWVkYSIKIAotIzogZ2l0azoxMzc1CisjOiBnaXRrOjI1NDUKIG1zZ2lkICI/XHRcdE1vdmUgdG8gcHJldmlvdXMgZmluZCBoaXQiCiBtc2dzdHIgIj9cdFx0QnVzY2FyIGVsIGFudGVyaW9yIgogCi0jOiBnaXRrOjEzNzYKKyM6IGdpdGs6MjU0NgogbXNnaWQgImZcdFx0U2Nyb2xsIGRpZmYgdmlldyB0byBuZXh0IGZpbGUiCiBtc2dzdHIgImZcdFx0RGVzcGxhemFyIGxhIHZpc3RhIGRlIGRpZmVyZW5jaWFzIGFsIGFyY2hpdm8gc2lndWllbnRlIgogCi0jOiBnaXRrOjEzNzcKKyM6IGdpdGs6MjU0NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1TPlx0XHRTZWFyY2ggZm9yIG5leHQgaGl0IGluIGRpZmYgdmlldyIKIG1zZ3N0ciAiPCVzLVM+XHRcdEJ1c2NhciBzaWd1aWVudGUgZW4gbGEgdmlzdGEgZGUgZGlmZXJlbmNpYXMiCiAKLSM6IGdpdGs6MTM3OAorIzogZ2l0azoyNTQ4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVI+XHRcdFNlYXJjaCBmb3IgcHJldmlvdXMgaGl0IGluIGRpZmYgdmlldyIKIG1zZ3N0ciAiPCVzLVI+XHRcdEJ1c2NhciBhbnRlcmlvciBlbiBsYSB2aXN0YSBkZSBkaWZlcmVuY2lhcyIKIAotIzogZ2l0azoxMzc5CisjOiBnaXRrOjI1NDkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtS1ArPlx0SW5jcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtS1ArPlx0QXVtZW50YXIgdGFtYcOxbyBkZWwgdGV4dG8iCiAKLSM6IGdpdGs6MTM4MAorIzogZ2l0azoyNTUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLXBsdXM+XHRJbmNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1wbHVzPlx0QXVtZW50YXIgdGFtYcOxbyBkZWwgdGV4dG8iCiAKLSM6IGdpdGs6MTM4MQorIzogZ2l0azoyNTUxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUtQLT5cdERlY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLUtQLT5cdERpc21pbnVpciB0YW1hw7FvIGRlbCB0ZXh0byIKIAotIzogZ2l0azoxMzgyCisjOiBnaXRrOjI1NTIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtbWludXM+XHREZWNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1taW51cz5cdERpc21pbnVpciB0YW1hw7FvIGRlbCB0ZXh0byIKIAotIzogZ2l0azoxMzgzCisjOiBnaXRrOjI1NTMKIG1zZ2lkICI8RjU+XHRcdFVwZGF0ZSIKIG1zZ3N0ciAiPEY1Plx0XHRBY3R1YWxpemFyIgogCi0jOiBnaXRrOjE4OTYKKyM6IGdpdGs6MzIwMAogbXNnaWQgIkdpdGsgdmlldyBkZWZpbml0aW9uIgogbXNnc3RyICJEZWZpbmljacOzbiBkZSB2aXN0YXMgZGUgR2l0ayIKIAotIzogZ2l0azoxOTIxCisjOiBnaXRrOjMyMjUKIG1zZ2lkICJOYW1lIgogbXNnc3RyICJOb21icmUiCiAKLSM6IGdpdGs6MTkyNAorIzogZ2l0azozMjI4CiBtc2dpZCAiUmVtZW1iZXIgdGhpcyB2aWV3IgogbXNnc3RyICJSZWNvcmRhciBlc3RhIHZpc3RhIgogCi0jOiBnaXRrOjE5MjgKLW1zZ2lkICJDb21taXRzIHRvIGluY2x1ZGUgKGFyZ3VtZW50cyB0byBnaXQgcmV2LWxpc3QpOiIKLW1zZ3N0ciAiUmV2aXNpb25lcyBhIGluY2x1aXIgKGFyZ3VtZW50b3MgYSBnaXQgcmV2LWxpc3QpOiIKKyM6IGdpdGs6MzIzMgorbXNnaWQgIkNvbW1pdHMgdG8gaW5jbHVkZSAoYXJndW1lbnRzIHRvIGdpdCBsb2cpOiIKK21zZ3N0ciAiUmV2aXNpb25lcyBhIGluY2x1aXIgKGFyZ3VtZW50b3MgYSBnaXQgbG9nKToiCiAKLSM6IGdpdGs6MTkzNQorIzogZ2l0azozMjM5CiBtc2dpZCAiQ29tbWFuZCB0byBnZW5lcmF0ZSBtb3JlIGNvbW1pdHMgdG8gaW5jbHVkZToiCiBtc2dzdHIgIkNvbWFuZG8gcXVlIGdlbmVyYSBtw6FzIHJldmlzaW9uZXMgYSBpbmNsdWlyOiIKIAotIzogZ2l0azoxOTQyCisjOiBnaXRrOjMyNDYKIG1zZ2lkICJFbnRlciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZSwgb25lIHBlciBsaW5lOiIKIG1zZ3N0ciAiSW50cm9kdWNpciBhcmNoaXZvcyB5IGRpcmVjdG9yaW9zIGEgaW5jbHVpciwgdW5vIHBvciBsw61uZWE6IgogCi0jOiBnaXRrOjE5ODkKKyM6IGdpdGs6MzI5MwogbXNnaWQgIkVycm9yIGluIGNvbW1pdCBzZWxlY3Rpb24gYXJndW1lbnRzOiIKIG1zZ3N0ciAiRXJyb3IgZW4gbG9zIGFyZ3VtZW50b3MgZGUgc2VsZWNjacOzbiBkZSBsYXMgcmV2aXNpb25lczoiCiAKLSM6IGdpdGs6MjA0MyBnaXRrOjIxMjcgZ2l0azoyNTgzIGdpdGs6MjU5NyBnaXRrOjM3ODEgZ2l0azo4Njg4IGdpdGs6ODY4OQorIzogZ2l0azozMzQ3IGdpdGs6MzM5OSBnaXRrOjM4NDIgZ2l0azozODU2IGdpdGs6NTA2MCBnaXRrOjEwMTQxIGdpdGs6MTAxNDIKIG1zZ2lkICJOb25lIgogbXNnc3RyICJOaW5ndW5vIgogCi0jOiBnaXRrOjI1MzEgZ2l0azo0MzM2IGdpdGs6NTk1OCBnaXRrOjU5NzMKKyM6IGdpdGs6Mzc5MCBnaXRrOjU1ODAgZ2l0azo3Mjg3IGdpdGs6NzMwMgogbXNnaWQgIkRhdGUiCiBtc2dzdHIgIkZlY2hhIgogCi0jOiBnaXRrOjI1MzEgZ2l0azo0MzM2CisjOiBnaXRrOjM3OTAgZ2l0azo1NTgwCiBtc2dpZCAiQ0RhdGUiCiBtc2dzdHIgIkZlY2hhIGRlIGNyZWFjacOzbiIKIAotIzogZ2l0azoyNjgwIGdpdGs6MjY4NQorIzogZ2l0azozOTM5IGdpdGs6Mzk0NAogbXNnaWQgIkRlc2NlbmRhbnQiCiBtc2dzdHIgIkRlc2NlbmRpZW50ZSIKIAotIzogZ2l0azoyNjgxCisjOiBnaXRrOjM5NDAKIG1zZ2lkICJOb3QgZGVzY2VuZGFudCIKIG1zZ3N0ciAiTm8gZGVzY2VuZGllbnRlIgogCi0jOiBnaXRrOjI2ODggZ2l0azoyNjkzCisjOiBnaXRrOjM5NDcgZ2l0azozOTUyCiBtc2dpZCAiQW5jZXN0b3IiCiBtc2dzdHIgIkFudGVwYXNhZG8iCiAKLSM6IGdpdGs6MjY4OQorIzogZ2l0azozOTQ4CiBtc2dpZCAiTm90IGFuY2VzdG9yIgogbXNnc3RyICJObyBhbnRlcGFzYWRvIgogCi0jOiBnaXRrOjI5MjQKKyM6IGdpdGs6NDE4NwogbXNnaWQgIkxvY2FsIGNoYW5nZXMgY2hlY2tlZCBpbiB0byBpbmRleCBidXQgbm90IGNvbW1pdHRlZCIKIG1zZ3N0ciAiQ2FtYmlvcyBsb2NhbGVzIGHDsWFkaWRvcyBhbCDDrW5kaWNlIHBlcm8gc2luIGNvbXBsZXRhciByZXZpc2nDs24iCiAKLSM6IGdpdGs6Mjk1NAorIzogZ2l0azo0MjIwCiBtc2dpZCAiTG9jYWwgdW5jb21taXR0ZWQgY2hhbmdlcywgbm90IGNoZWNrZWQgaW4gdG8gaW5kZXgiCiBtc2dzdHIgIkNhbWJpb3MgbG9jYWxlcyBzaW4gYcOxYWRpciBhbCDDrW5kaWNlIgogCi0jOiBnaXRrOjQzMDUKKyM6IGdpdGs6NTU0OQogbXNnaWQgIlNlYXJjaGluZyIKIG1zZ3N0ciAiQnVzY2FuZG8iCiAKLSM6IGdpdGs6NDc2NworIzogZ2l0azo2MDQ5CiBtc2dpZCAiVGFnczoiCiBtc2dzdHIgIkV0aXF1ZXRhczoiCiAKLSM6IGdpdGs6NDc4NCBnaXRrOjQ3OTAgZ2l0azo1OTUxCisjOiBnaXRrOjYwNjYgZ2l0azo2MDcyIGdpdGs6NzI4MAogbXNnaWQgIlBhcmVudCIKIG1zZ3N0ciAiUGFkcmUiCiAKLSM6IGdpdGs6NDc5NQorIzogZ2l0azo2MDc3CiBtc2dpZCAiQ2hpbGQiCiBtc2dzdHIgIkhpamEiCiAKLSM6IGdpdGs6NDgwNAorIzogZ2l0azo2MDg2CiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJSYW1hIgogCi0jOiBnaXRrOjQ4MDcKKyM6IGdpdGs6NjA4OQogbXNnaWQgIkZvbGxvd3MiCiBtc2dzdHIgIlNpZ3VlLWEiCiAKLSM6IGdpdGs6NDgxMAorIzogZ2l0azo2MDkyCiBtc2dpZCAiUHJlY2VkZXMiCiBtc2dzdHIgIlByZWNlZGUtYSIKIAotIzogZ2l0azo1MDkzCisjOiBnaXRrOjYzNzgKIG1zZ2lkICJFcnJvciBnZXR0aW5nIG1lcmdlIGRpZmZzOiIKIG1zZ3N0ciAiRXJyb3IgYWwgbGVlciBsYXMgZGlmZXJlbmNpYXMgZGUgZnVzacOzbjoiCiAKLSM6IGdpdGs6NTc3OAorIzogZ2l0azo3MTEzCiBtc2dpZCAiR290bzoiCiBtc2dzdHIgIklyIGE6IgogCi0jOiBnaXRrOjU3ODAKKyM6IGdpdGs6NzExNQogbXNnaWQgIlNIQTEgSUQ6IgogbXNnc3RyICJTSEExIElEOiIKIAotIzogZ2l0azo1ODA1CisjOiBnaXRrOjcxMzQKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJTaG9ydCBTSEExIGlkICVzIGlzIGFtYmlndW91cyIKIG1zZ3N0ciAiTGEgaWQgU0hBMSBhYnJldmlhZGEgJXMgZXMgYW1iaWd1YSIKIAotIzogZ2l0azo1ODE3CisjOiBnaXRrOjcxNDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJTSEExIGlkICVzIGlzIG5vdCBrbm93biIKIG1zZ3N0ciAiTGEgaWQgU0hBMSAlcyBlcyBkZXNjb25vY2lkYSIKIAotIzogZ2l0azo1ODE5CisjOiBnaXRrOjcxNDgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJUYWcvSGVhZCAlcyBpcyBub3Qga25vd24iCiBtc2dzdHIgIkxhIGV0aXF1ZXRhL3JhbWEgJXMgZXMgZGVjb25vY2lkYSIKIAotIzogZ2l0azo1OTYxCisjOiBnaXRrOjcyOTAKIG1zZ2lkICJDaGlsZHJlbiIKIG1zZ3N0ciAiSGlqYXMiCiAKLSM6IGdpdGs6NjAxOAorIzogZ2l0azo3MzQ3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXQgJXMgYnJhbmNoIHRvIGhlcmUiCiBtc2dzdHIgIlBvbmVyIGxhIHJhbWEgJXMgZW4gZXN0YSByZXZpc2nDs24iCiAKLSM6IGdpdGs6NjA0OQorIzogZ2l0azo3MzQ5Cittc2dpZCAiRGV0YWNoZWQgaGVhZDogY2FuJ3QgcmVzZXQiCittc2dzdHIgIiIKKworIzogZ2l0azo3MzgxCiBtc2dpZCAiVG9wIgogbXNnc3RyICJPcmlnZW4iCiAKLSM6IGdpdGs6NjA1MAorIzogZ2l0azo3MzgyCiBtc2dpZCAiRnJvbSIKIG1zZ3N0ciAiRGUiCiAKLSM6IGdpdGs6NjA1NQorIzogZ2l0azo3Mzg3CiBtc2dpZCAiVG8iCiBtc2dzdHIgIkEiCiAKLSM6IGdpdGs6NjA3OAorIzogZ2l0azo3NDEwCiBtc2dpZCAiR2VuZXJhdGUgcGF0Y2giCiBtc2dzdHIgIkdlbmVyYXIgcGFyY2hlIgogCi0jOiBnaXRrOjYwODAKKyM6IGdpdGs6NzQxMgogbXNnaWQgIkZyb206IgogbXNnc3RyICJEZToiCiAKLSM6IGdpdGs6NjA4OQorIzogZ2l0azo3NDIxCiBtc2dpZCAiVG86IgogbXNnc3RyICJQYXJhOiIKIAotIzogZ2l0azo2MDk4CisjOiBnaXRrOjc0MzAKIG1zZ2lkICJSZXZlcnNlIgogbXNnc3RyICJJbnZlcnRpciIKIAotIzogZ2l0azo2MTAwIGdpdGs6NjI2OQorIzogZ2l0azo3NDMyIGdpdGs6NzYwNwogbXNnaWQgIk91dHB1dCBmaWxlOiIKIG1zZ3N0ciAiRXNjcmliaXIgYSBhcmNoaXZvOiIKIAotIzogZ2l0azo2MTA2CisjOiBnaXRrOjc0MzgKIG1zZ2lkICJHZW5lcmF0ZSIKIG1zZ3N0ciAiR2VuZXJhciIKIAotIzogZ2l0azo2MTQyCisjOiBnaXRrOjc0NzQKIG1zZ2lkICJFcnJvciBjcmVhdGluZyBwYXRjaDoiCiBtc2dzdHIgIkVycm9yIGVuIGxhIGNyZWFjacOzbiBkZWwgcGFyY2hlOiIKIAotIzogZ2l0azo2MTY0IGdpdGs6NjI1NyBnaXRrOjYzMTEKKyM6IGdpdGs6NzQ5NiBnaXRrOjc1OTUgZ2l0azo3NjQ5CiBtc2dpZCAiSUQ6IgogbXNnc3RyICJJRDoiCiAKLSM6IGdpdGs6NjE3MworIzogZ2l0azo3NTA1CiBtc2dpZCAiVGFnIG5hbWU6IgogbXNnc3RyICJOb21icmUgZGUgZXRpcXVldGE6IgogCi0jOiBnaXRrOjYxNzcgZ2l0azo2MzIwCisjOiBnaXRrOjc1MDkgZ2l0azo3NjU5CiBtc2dpZCAiQ3JlYXRlIgogbXNnc3RyICJDcmVhciIKIAotIzogZ2l0azo2MTkyCisjOiBnaXRrOjc1MjQKIG1zZ2lkICJObyB0YWcgbmFtZSBzcGVjaWZpZWQiCiBtc2dzdHIgIk5vIHNlIGhhIGVzcGVjaWZpY2FkbyBldGlxdWV0YSIKIAotIzogZ2l0azo2MTk2CisjOiBnaXRrOjc1MjgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJUYWcgXCIlc1wiIGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICJMYSBldGlxdWV0YSBcIiVzXCIgeWEgZXhpc3RlIgogCi0jOiBnaXRrOjYyMDIKKyM6IGdpdGs6NzUzNAogbXNnaWQgIkVycm9yIGNyZWF0aW5nIHRhZzoiCiBtc2dzdHIgIkVycm9yIGFsIGNyZWFyIGxhIGV0aXF1ZXRhOiIKIAotIzogZ2l0azo2MjY2CisjOiBnaXRrOjc2MDQKIG1zZ2lkICJDb21tYW5kOiIKIG1zZ3N0ciAiQ29tYW5kbzoiCiAKLSM6IGdpdGs6NjI3NAorIzogZ2l0azo3NjEyCiBtc2dpZCAiV3JpdGUiCiBtc2dzdHIgIkVzY3JpYmlyIgogCi0jOiBnaXRrOjYyOTAKKyM6IGdpdGs6NzYyOAogbXNnaWQgIkVycm9yIHdyaXRpbmcgY29tbWl0OiIKIG1zZ3N0ciAiRXJyb3IgYWwgZXNjcmliaXIgcmV2aXNpw7NuOiIKIAotIzogZ2l0azo2MzE2CisjOiBnaXRrOjc2NTQKIG1zZ2lkICJOYW1lOiIKIG1zZ3N0ciAiTm9tYnJlOiIKIAotIzogZ2l0azo2MzM1CisjOiBnaXRrOjc2NzQKIG1zZ2lkICJQbGVhc2Ugc3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBuZXcgYnJhbmNoIgogbXNnc3RyICJFc3BlY2lmaXF1ZSB1biBub21icmUgcGFyYSBsYSBudWV2YSByYW1hIgogCi0jOiBnaXRrOjYzNjQKKyM6IGdpdGs6NzcwMwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBpcyBhbHJlYWR5IGluY2x1ZGVkIGluIGJyYW5jaCAlcyAtLSByZWFsbHkgcmUtYXBwbHkgaXQ/IgogbXNnc3RyICJMYSByZXZpc2nDs24gJXMgeWEgZXN0w6EgaW5jbHVpZGEgZW4gbGEgcmFtYSAlcyAtLSDCv1ZvbHZlciBhIGFwbGljYXJsYT8iCiAKLSM6IGdpdGs6NjM2OQorIzogZ2l0azo3NzA4CiBtc2dpZCAiQ2hlcnJ5LXBpY2tpbmciCiBtc2dzdHIgIkVsaWdpZW5kbyByZXZpc2lvbmVzIChjaGVycnktcGlja2luZykiCiAKLSM6IGdpdGs6NjM4MQorIzogZ2l0azo3NzIwCiBtc2dpZCAiTm8gY2hhbmdlcyBjb21taXR0ZWQiCiBtc2dzdHIgIk5vIHNlIGhhbiBndWFyZGFkbyBjYW1iaW9zIgogCi0jOiBnaXRrOjY0MDQKKyM6IGdpdGs6Nzc0NQogbXNnaWQgIkNvbmZpcm0gcmVzZXQiCiBtc2dzdHIgIkNvbmZpcm1hciBnaXQgcmVzZXQiCiAKLSM6IGdpdGs6NjQwNgorIzogZ2l0azo3NzQ3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXQgYnJhbmNoICVzIHRvICVzPyIKIG1zZ3N0ciAiwr9SZXBvbmVyIGxhIHJhbWEgJXMgYSAlcz8iCiAKLSM6IGdpdGs6NjQxMAorIzogZ2l0azo3NzUxCiBtc2dpZCAiUmVzZXQgdHlwZToiCiBtc2dzdHIgIlRpcG8gZGUgcmVwb3NpY2nDs246IgogCi0jOiBnaXRrOjY0MTQKKyM6IGdpdGs6Nzc1NQogbXNnaWQgIlNvZnQ6IExlYXZlIHdvcmtpbmcgdHJlZSBhbmQgaW5kZXggdW50b3VjaGVkIgogbXNnc3RyICJTdWF2ZTogTm8gYWx0ZXJhIGxhIGNvcGlhIGRlIHRyYWJham8gbmkgZWwgw61uZGljZSIKIAotIzogZ2l0azo2NDE3CisjOiBnaXRrOjc3NTgKIG1zZ2lkICJNaXhlZDogTGVhdmUgd29ya2luZyB0cmVlIHVudG91Y2hlZCwgcmVzZXQgaW5kZXgiCiBtc2dzdHIgIk1peHRhOiBBY3R1YWxpemEgZWwgw61uZGljZSwgbm8gYWx0ZXJhIGxhIGNvcGlhIGRlIHRyYWJham8iCiAKLSM6IGdpdGs6NjQyMAorIzogZ2l0azo3NzYxCiBtc2dpZCAiIgogIkhhcmQ6IFJlc2V0IHdvcmtpbmcgdHJlZSBhbmQgaW5kZXhcbiIKICIoZGlzY2FyZCBBTEwgbG9jYWwgY2hhbmdlcykiCkBAIC02OTMsMTkgKzcxOSwxOSBAQAogIkR1cmE6IEFjdHVhbGl6YSBlbCDDrW5kaWNlIHkgbGEgY29waWEgZGUgdHJhYmFqb1xuIgogIihhYmFuZG9uYSBUT0RBUyBsYXMgbW9kaWZpY2FjaW9uZXMgbG9jYWxlcykiCiAKLSM6IGdpdGs6NjQzNgorIzogZ2l0azo3Nzc3CiBtc2dpZCAiUmVzZXR0aW5nIgogbXNnc3RyICJSZXBvbmllbmRvIgogCi0jOiBnaXRrOjY0OTMKKyM6IGdpdGs6NzgzNAogbXNnaWQgIkNoZWNraW5nIG91dCIKIG1zZ3N0ciAiQ3JlYW5kbyBjb3BpYSBkZSB0cmFiYWpvIgogCi0jOiBnaXRrOjY1MjMKKyM6IGdpdGs6Nzg4NQogbXNnaWQgIkNhbm5vdCBkZWxldGUgdGhlIGN1cnJlbnRseSBjaGVja2VkLW91dCBicmFuY2giCiBtc2dzdHIgIk5vIHNlIHB1ZWRlIGJvcnJhciBsYSByYW1hIGFjdHVhbCIKIAotIzogZ2l0azo2NTI5CisjOiBnaXRrOjc4OTEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGNvbW1pdHMgb24gYnJhbmNoICVzIGFyZW4ndCBvbiBhbnkgb3RoZXIgYnJhbmNoLlxuIgpAQCAtNzE0LDEzNCArNzQwLDE0NiBAQAogIkxhcyByZXZpc2lvbmVzIGRlIGxhIHJhbWEgJXMgbm8gZXN0w6FuIHByZXNlbnRlcyBlbiBvdHJhcyByYW1hcy5cbiIKICLCv0JvcnJhciBsYSByYW1hICVzPyIKIAotIzogZ2l0azo2NTYwCisjOiBnaXRrOjc5MjIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJUYWdzIGFuZCBoZWFkczogJXMiCiBtc2dzdHIgIkV0aXF1ZXRhcyB5IHJhbWFzOiAlcyIKIAotIzogZ2l0azo2NTc0CisjOiBnaXRrOjc5MzYKIG1zZ2lkICJGaWx0ZXIiCiBtc2dzdHIgIkZpbHRybyIKIAotIzogZ2l0azo2ODY4CisjOiBnaXRrOjgyMzAKIG1zZ2lkICIiCiAiRXJyb3IgcmVhZGluZyBjb21taXQgdG9wb2xvZ3kgaW5mb3JtYXRpb247IGJyYW5jaCBhbmQgcHJlY2VkaW5nL2ZvbGxvd2luZyAiCiAidGFnIGluZm9ybWF0aW9uIHdpbGwgYmUgaW5jb21wbGV0ZS4iCiBtc2dzdHIgIiIKLSJFcnJvciBhbCBsZWVyIGxhIHRvcG9sb2fDrWEgZGUgcmV2aXNpb25lczogbGEgaW5mb3JtYWNpw7NuIHNvYnJlICIKLSJsYXMgcmFtYXMgeSBldGlxdWV0YXMgcHJlY2VkZW50ZXMgeSBzaWd1aWVudGVzIHNlcsOhIGluY29tcGxldGEuIgorIkVycm9yIGFsIGxlZXIgbGEgdG9wb2xvZ8OtYSBkZSByZXZpc2lvbmVzOiBsYSBpbmZvcm1hY2nDs24gc29icmUgbGFzIHJhbWFzIHkgIgorImV0aXF1ZXRhcyBwcmVjZWRlbnRlcyB5IHNpZ3VpZW50ZXMgc2Vyw6EgaW5jb21wbGV0YS4iCiAKLSM6IGdpdGs6Nzg1MgorIzogZ2l0azo5MjE2CiBtc2dpZCAiVGFnIgogbXNnc3RyICJFdGlxdWV0YSIKIAotIzogZ2l0azo3ODUyCisjOiBnaXRrOjkyMTYKIG1zZ2lkICJJZCIKIG1zZ3N0ciAiSWQiCiAKLSM6IGdpdGs6Nzg5MgorIzogZ2l0azo5MjYyCiBtc2dpZCAiR2l0ayBmb250IGNob29zZXIiCiBtc2dzdHIgIlNlbGVjdG9yIGRlIHRpcG9ncmFmw61hcyBnaXRrIgogCi0jOiBnaXRrOjc5MDkKKyM6IGdpdGs6OTI3OQogbXNnaWQgIkIiCiBtc2dzdHIgIkIiCiAKLSM6IGdpdGs6NzkxMgorIzogZ2l0azo5MjgyCiBtc2dpZCAiSSIKIG1zZ3N0ciAiSSIKIAotIzogZ2l0azo4MDA1CisjOiBnaXRrOjkzNzUKIG1zZ2lkICJHaXRrIHByZWZlcmVuY2VzIgogbXNnc3RyICJQcmVmZXJlbmNpYXMgZGUgZ2l0ayIKIAotIzogZ2l0azo4MDA2CisjOiBnaXRrOjkzNzYKIG1zZ2lkICJDb21taXQgbGlzdCBkaXNwbGF5IG9wdGlvbnMiCiBtc2dzdHIgIk9wY2lvbmVzIGRlIHZpc3VhbGl6YWNpw7NuIGRlIGxhIGxpc3RhIGRlIHJldmlzaW9uZXMiCiAKLSM6IGdpdGs6ODAwOQorIzogZ2l0azo5Mzc5CiBtc2dpZCAiTWF4aW11bSBncmFwaCB3aWR0aCAobGluZXMpIgogbXNnc3RyICJBbmNobyBtw6F4aW1vIGRlbCBncsOhZmljbyAoZW4gbMOtbmVhcykiCiAKLSM6IGdpdGs6ODAxMworIzogZ2l0azo5MzgzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiTWF4aW11bSBncmFwaCB3aWR0aCAoJSBvZiBwYW5lKSIKIG1zZ3N0ciAiQW5jaG8gbcOheGltbyBkZWwgZ3LDoWZpY28gKGVuICUgZGVsIHBhbmVsKSIKIAotIzogZ2l0azo4MDE4CisjOiBnaXRrOjkzODgKIG1zZ2lkICJTaG93IGxvY2FsIGNoYW5nZXMiCiBtc2dzdHIgIk1vc3RyYXIgY2FtYmlvcyBsb2NhbGVzIgogCi0jOiBnaXRrOjgwMjMKKyM6IGdpdGs6OTM5MwogbXNnaWQgIkF1dG8tc2VsZWN0IFNIQTEiCiBtc2dzdHIgIlNlbGVjY2lvbmFyIGF1dG9tw6F0aWNhbWVudGUgU0hBMSBoYXNoIgogCi0jOiBnaXRrOjgwMjgKKyM6IGdpdGs6OTM5OAogbXNnaWQgIkRpZmYgZGlzcGxheSBvcHRpb25zIgogbXNnc3RyICJPcGNpb25lcyBkZSB2aXN1YWxpemFjacOzbiBkZSBkaWZlcmVuY2lhcyIKIAotIzogZ2l0azo4MDMwCisjOiBnaXRrOjk0MDAKIG1zZ2lkICJUYWIgc3BhY2luZyIKIG1zZ3N0ciAiRXNwYWNpYWRvIGRlIHRhYnVsYWRvciIKIAotIzogZ2l0azo4MDM0CisjOiBnaXRrOjk0MDQKIG1zZ2lkICJEaXNwbGF5IG5lYXJieSB0YWdzIgogbXNnc3RyICJNb3N0cmFyIGV0aXF1ZXRhcyBjZXJjYW5hcyIKIAotIzogZ2l0azo4MDM5CisjOiBnaXRrOjk0MDkKIG1zZ2lkICJMaW1pdCBkaWZmcyB0byBsaXN0ZWQgcGF0aHMiCiBtc2dzdHIgIkxpbWl0YXIgbGFzIGRpZmVyZW5jaWFzIGEgbGFzIHJ1dGFzIHNlbGVjY2lvbmFkYXMiCiAKLSM6IGdpdGs6ODA0NAorIzogZ2l0azo5NDE0Cittc2dpZCAiU3VwcG9ydCBwZXItZmlsZSBlbmNvZGluZ3MiCittc2dzdHIgIiIKKworIzogZ2l0azo5NDIxCittc2dpZCAiRXh0ZXJuYWwgZGlmZiB0b29sIgorbXNnc3RyICIiCisKKyM6IGdpdGs6OTQyMworbXNnaWQgIkNob29zZS4uLiIKK21zZ3N0ciAiIgorCisjOiBnaXRrOjk0MjgKIG1zZ2lkICJDb2xvcnM6IHByZXNzIHRvIGNob29zZSIKIG1zZ3N0ciAiQ29sb3JlczogcHVsc2UgcGFyYSBzZWxlY2Npb25hciIKIAotIzogZ2l0azo4MDQ3CisjOiBnaXRrOjk0MzEKIG1zZ2lkICJCYWNrZ3JvdW5kIgogbXNnc3RyICJGb25kbyIKIAotIzogZ2l0azo4MDUxCisjOiBnaXRrOjk0MzUKIG1zZ2lkICJGb3JlZ3JvdW5kIgogbXNnc3RyICJQcmltZXIgcGxhbm8iCiAKLSM6IGdpdGs6ODA1NQorIzogZ2l0azo5NDM5CiBtc2dpZCAiRGlmZjogb2xkIGxpbmVzIgogbXNnc3RyICJEaWZmOiBsw61uZWFzIHZpZWphcyIKIAotIzogZ2l0azo4MDYwCisjOiBnaXRrOjk0NDQKIG1zZ2lkICJEaWZmOiBuZXcgbGluZXMiCiBtc2dzdHIgIkRpZmY6IGzDrW5lYXMgbnVldmFzIgogCi0jOiBnaXRrOjgwNjUKKyM6IGdpdGs6OTQ0OQogbXNnaWQgIkRpZmY6IGh1bmsgaGVhZGVyIgogbXNnc3RyICJEaWZmOiBjYWJlY2VyYSBkZSBmcmFnbWVudG8iCiAKLSM6IGdpdGs6ODA3MQorIzogZ2l0azo5NDU1CiBtc2dpZCAiU2VsZWN0IGJnIgogbXNnc3RyICJDb2xvciBkZSBmb25kbyBkZSBsYSBzZWxlY2Npw7NuIgogCi0jOiBnaXRrOjgwNzUKKyM6IGdpdGs6OTQ1OQogbXNnaWQgIkZvbnRzOiBwcmVzcyB0byBjaG9vc2UiCiBtc2dzdHIgIlRpcG9ncmFmw61hczogcHVsc2UgcGFyYSBlbGVnaXIiCiAKLSM6IGdpdGs6ODA3NworIzogZ2l0azo5NDYxCiBtc2dpZCAiTWFpbiBmb250IgogbXNnc3RyICJUaXBvZ3JhZsOtYSBwcmluY2lwYWwiCiAKLSM6IGdpdGs6ODA3OAorIzogZ2l0azo5NDYyCiBtc2dpZCAiRGlmZiBkaXNwbGF5IGZvbnQiCiBtc2dzdHIgIlRpcG9ncmFmw61hIHBhcmEgZGlmZXJlbmNpYXMiCiAKLSM6IGdpdGs6ODA3OQorIzogZ2l0azo5NDYzCiBtc2dpZCAiVXNlciBpbnRlcmZhY2UgZm9udCIKIG1zZ3N0ciAiVGlwb2dyYWbDrWEgcGFyYSBpbnRlcmZheiBkZSB1c3VhcmlvIgogCi0jOiBnaXRrOjgwOTUKKyM6IGdpdGs6OTQ4OAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkdpdGs6IGNob29zZSBjb2xvciBmb3IgJXMiCiBtc2dzdHIgIkdpdGs6IGVsZWdpciBjb2xvciBwYXJhICVzIgogCi0jOiBnaXRrOjg0NzYKKyM6IGdpdGs6OTkzNAogbXNnaWQgIiIKICJTb3JyeSwgZ2l0ayBjYW5ub3QgcnVuIHdpdGggdGhpcyB2ZXJzaW9uIG9mIFRjbC9Uay5cbiIKICIgR2l0ayByZXF1aXJlcyBhdCBsZWFzdCBUY2wvVGsgOC40LiIKQEAgLTg0OSw0MiArODg3LDI1IEBACiAiRXN0YSB2ZXJzacOzbiBkZSBUY2wvVGsgZXMgZGVtYXNpYWRvIGFudGlndWEuXG4iCiAiIEdpdGsgcmVxdWllcmUgVGNsL1RrIHZlcnNpw7NuIDguNCBvIHN1cGVyaW9yLiIKIAotIzogZ2l0azo4NTY1CisjOiBnaXRrOjEwMDQ3CiBtc2dpZCAiQ2Fubm90IGZpbmQgYSBnaXQgcmVwb3NpdG9yeSBoZXJlLiIKIG1zZ3N0ciAiTm8gaGF5IHVuIHJlcG9zaXRvcmlvIGdpdCBhcXXDrS4iCiAKLSM6IGdpdGs6ODU2OQorIzogZ2l0azoxMDA1MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBmaW5kIHRoZSBnaXQgZGlyZWN0b3J5IFwiJXNcIi4iCiBtc2dzdHIgIk5vIGhheSBkaXJlY3RvcmlvIGdpdCBcIiVzXCIuIgogCi0jOiBnaXRrOjg2MTIKKyM6IGdpdGs6MTAwOTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJBbWJpZ3VvdXMgYXJndW1lbnQgJyVzJzogYm90aCByZXZpc2lvbiBhbmQgZmlsZW5hbWUiCi1tc2dzdHIgIkFyZ3VtZW50byBhbWJpZ3VvOiAnJXMnIGVzIHRhbnRvIHVuYSByZXZpc2nDs24gY29tbyB1biBub21icmUgZGUgYXJjaGl2byIKK21zZ3N0ciAiIgorIkFyZ3VtZW50byBhbWJpZ3VvOiAnJXMnIGVzIHRhbnRvIHVuYSByZXZpc2nDs24gY29tbyB1biBub21icmUgZGUgYXJjaGl2byIKIAotIzogZ2l0azo4NjI0CisjOiBnaXRrOjEwMTEwCiBtc2dpZCAiQmFkIGFyZ3VtZW50cyB0byBnaXRrOiIKIG1zZ3N0ciAiQXJndW1lbnRvcyBpbmNvcnJlY3RvcyBhIEdpdGs6IgogCi0jOiBnaXRrOjg2MzYKLW1zZ2lkICJDb3VsZG4ndCBnZXQgbGlzdCBvZiB1bm1lcmdlZCBmaWxlczoiCi1tc2dzdHIgIkltcG9zaWJsZSBvYnRlbmVyIGxhIGxpc3RhIGRlIGFyY2hpdm9zIHBlbmRpZW50ZXMgZGUgZnVzacOzbjoiCi0KLSM6IGdpdGs6ODY1MgotbXNnaWQgIk5vIGZpbGVzIHNlbGVjdGVkOiAtLW1lcmdlIHNwZWNpZmllZCBidXQgbm8gZmlsZXMgYXJlIHVubWVyZ2VkLiIKLW1zZ3N0ciAiIgotIk5vIGhheSBhcmNoaXZvcyBzZWxlY2Npb25hZG9zOiBzZSBzZWxlY2Npb27DsyBsYSBvcGNpw7NuIC0tbWVyZ2UgcGVybyBubyBoYXkgIgotImFyY2hpdm9zIHBlbmRpZW50ZXMgZGUgZnVzacOzbi4iCi0KLSM6IGdpdGs6ODY1NQotbXNnaWQgIiIKLSJObyBmaWxlcyBzZWxlY3RlZDogLS1tZXJnZSBzcGVjaWZpZWQgYnV0IG5vIHVubWVyZ2VkIGZpbGVzIGFyZSB3aXRoaW4gZmlsZSAiCi0ibGltaXQuIgotbXNnc3RyICIiCi0iTm8gaGF5IGFyY2hpdm9zIHNlbGVjY2lvbmFkb3M6IHNlIHNlbGVjY2lvbsOzIGxhIG9wY2nDs24gLS1tZXJnZSBwZXJvIGxvcyBhcmNoaXZvcyAiCi0iZXNwZWNpZmljYWRvcyBubyBuZWNlc2l0YW4gZnVzacOzbi4iCi0KLSM6IGdpdGs6ODcxNgorIzogZ2l0azoxMDE3MAogbXNnaWQgIkNvbW1hbmQgbGluZSIKIG1zZ3N0ciAiTMOtbmVhIGRlIGNvbWFuZG9zIgpkaWZmIC0tZ2l0IGEvZ2l0ay1naXQvcG8vaXQucG8gYi9naXRrLWdpdC9wby9pdC5wbwppbmRleCBkMGY0YzJlLi5lODljOTU3IDEwMDY0NAotLS0gYS9naXRrLWdpdC9wby9pdC5wbworKysgYi9naXRrLWdpdC9wby9pdC5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0a1xuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwOC0wMy0xMyAxNzoyOSswMTAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMTAtMTggMjI6MDMrMTEwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMDMtMTMgMTc6MzQrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTWljaGVsZSBCYWxsYWJpbyA8YmFycmFfY3VkYUBrYXRhbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogSXRhbGlhblxuIgpAQCAtMTYsNjc2ICsxNiw3MDYgQEAKICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGdpdGs6MTExCi1tc2dpZCAiRXJyb3IgZXhlY3V0aW5nIGdpdCByZXYtbGlzdDoiCi1tc2dzdHIgIkVycm9yZSBuZWxsJ2VzZWN1emlvbmUgZGkgZ2l0IHJldi1saXN0OiIKKyM6IGdpdGs6MTEzCittc2dpZCAiQ291bGRuJ3QgZ2V0IGxpc3Qgb2YgdW5tZXJnZWQgZmlsZXM6IgorbXNnc3RyICJJbXBvc3NpYmlsZSBvdHRlbmVyZSBsJ2VsZW5jbyBkZWkgZmlsZSBpbiBhdHRlc2EgZGkgZnVzaW9uZToiCiAKLSM6IGdpdGs6MTI0CisjOiBnaXRrOjM0MAorbXNnaWQgIk5vIGZpbGVzIHNlbGVjdGVkOiAtLW1lcmdlIHNwZWNpZmllZCBidXQgbm8gZmlsZXMgYXJlIHVubWVyZ2VkLiIKK21zZ3N0ciAiIgorIk5lc3N1biBmaWxlIHNlbGV6aW9uYXRvOiDDqCBzdGF0YSBzcGVjaWZpY2F0YSBsJ29wemlvbmUgLS1tZXJnZSBtYSBub24gY2kgIgorInNvbm8gZmlsZSBpbiBhdHRlc2EgZGkgZnVzaW9uZS4iCisKKyM6IGdpdGs6MzQzCittc2dpZCAiIgorIk5vIGZpbGVzIHNlbGVjdGVkOiAtLW1lcmdlIHNwZWNpZmllZCBidXQgbm8gdW5tZXJnZWQgZmlsZXMgYXJlIHdpdGhpbiBmaWxlICIKKyJsaW1pdC4iCittc2dzdHIgIiIKKyJOZXNzdW4gZmlsZSBzZWxlemlvbmF0bzogw6ggc3RhdGEgc3BlY2lmaWNhdGEgbCdvcHppb25lIC0tbWVyZ2UgbWEgaSBmaWxlICIKKyJzcGVjaWZpY2F0aSBub24gc29ubyBpbiBhdHRlc2EgZGkgZnVzaW9uZS4iCisKKyM6IGdpdGs6MzY1IGdpdGs6NTAzCittc2dpZCAiRXJyb3IgZXhlY3V0aW5nIGdpdCBsb2c6IgorbXNnc3RyICJFcnJvcmUgbmVsbCdlc2VjdXppb25lIGRpIGdpdCBsb2c6IgorCisjOiBnaXRrOjM3OAogbXNnaWQgIlJlYWRpbmciCiBtc2dzdHIgIkxldHR1cmEgaW4gY29yc28iCiAKLSM6IGdpdGs6MTUxIGdpdGs6MjE5MQorIzogZ2l0azo0MzggZ2l0azozNDYyCiBtc2dpZCAiUmVhZGluZyBjb21taXRzLi4uIgogbXNnc3RyICJMZXR0dXJhIGRlbGxlIHJldmlzaW9uaSBpbiBjb3Jzby4uLiIKIAotIzogZ2l0azoyNzUKLW1zZ2lkICJDYW4ndCBwYXJzZSBnaXQgbG9nIG91dHB1dDoiCi1tc2dzdHIgIkltcG9zc2liaWxlIGVsYWJvcmFyZSBpIGRhdGkgZGkgZ2l0IGxvZzoiCi0KLSM6IGdpdGs6Mzg2IGdpdGs6MjE5NQorIzogZ2l0azo0NDEgZ2l0azoxNTI4IGdpdGs6MzQ2NQogbXNnaWQgIk5vIGNvbW1pdHMgc2VsZWN0ZWQiCiBtc2dzdHIgIk5lc3N1bmEgcmV2aXNpb25lIHNlbGV6aW9uYXRhIgogCi0jOiBnaXRrOjUwMAorIzogZ2l0azoxMzk5Cittc2dpZCAiQ2FuJ3QgcGFyc2UgZ2l0IGxvZyBvdXRwdXQ6IgorbXNnc3RyICJJbXBvc3NpYmlsZSBlbGFib3JhcmUgaSBkYXRpIGRpIGdpdCBsb2c6IgorCisjOiBnaXRrOjE2MDUKIG1zZ2lkICJObyBjb21taXQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIgogbXNnc3RyICJOZXNzdW5hIGluZm9ybWF6aW9uZSBkaXNwb25pYmlsZSBzdWxsZSByZXZpc2lvbmkiCiAKLSM6IGdpdGs6NTk5IGdpdGs6NjIxIGdpdGs6MTk1NSBnaXRrOjY0MjMgZ2l0azo3OTIzIGdpdGs6ODA4MgorIzogZ2l0azoxNzA5IGdpdGs6MTczMSBnaXRrOjMyNTkgZ2l0azo3NzY0IGdpdGs6OTI5MyBnaXRrOjk0NjYKIG1zZ2lkICJPSyIKIG1zZ3N0ciAiT0siCiAKLSM6IGdpdGs6NjIzIGdpdGs6MTk1NiBnaXRrOjYxMDcgZ2l0azo2MTc4IGdpdGs6NjI3NSBnaXRrOjYzMjEgZ2l0azo2NDI1Ci0jOiBnaXRrOjc5MjQgZ2l0azo4MDgzCisjOiBnaXRrOjE3MzMgZ2l0azozMjYwIGdpdGs6NzQzOSBnaXRrOjc1MTAgZ2l0azo3NjEzIGdpdGs6NzY2MCBnaXRrOjc3NjYKKyM6IGdpdGs6OTI5NCBnaXRrOjk0NjcKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIkFubnVsbGEiCiAKLSM6IGdpdGs6NjYxCi1tc2dpZCAiRmlsZSIKLW1zZ3N0ciAiRmlsZSIKLQotIzogZ2l0azo2NjMKKyM6IGdpdGs6MTgxMQogbXNnaWQgIlVwZGF0ZSIKIG1zZ3N0ciAiQWdnaW9ybmEiCiAKLSM6IGdpdGs6NjY0CisjOiBnaXRrOjE4MTMKIG1zZ2lkICJSZXJlYWQgcmVmZXJlbmNlcyIKIG1zZ3N0ciAiUmlsZWdnaSByaWZlcmltZW50aSIKIAotIzogZ2l0azo2NjUKKyM6IGdpdGs6MTgxNAogbXNnaWQgIkxpc3QgcmVmZXJlbmNlcyIKIG1zZ3N0ciAiRWxlbmNhIHJpZmVyaW1lbnRpIgogCi0jOiBnaXRrOjY2NgorIzogZ2l0azoxODE1CiBtc2dpZCAiUXVpdCIKIG1zZ3N0ciAiRXNjaSIKIAotIzogZ2l0azo2NjgKLW1zZ2lkICJFZGl0IgotbXNnc3RyICJNb2RpZmljYSIKKyM6IGdpdGs6MTgxMAorbXNnaWQgIkZpbGUiCittc2dzdHIgIkZpbGUiCiAKLSM6IGdpdGs6NjY5CisjOiBnaXRrOjE4MTgKIG1zZ2lkICJQcmVmZXJlbmNlcyIKIG1zZ3N0ciAiUHJlZmVyZW56ZSIKIAotIzogZ2l0azo2NzIgZ2l0azoxODkyCi1tc2dpZCAiVmlldyIKLW1zZ3N0ciAiVmlzdGEiCisjOiBnaXRrOjE4MTcKK21zZ2lkICJFZGl0IgorbXNnc3RyICJNb2RpZmljYSIKIAotIzogZ2l0azo2NzMKKyM6IGdpdGs6MTgyMQogbXNnaWQgIk5ldyB2aWV3Li4uIgogbXNnc3RyICJOdW92YSB2aXN0YS4uLiIKIAotIzogZ2l0azo2NzQgZ2l0azoyMTMzIGdpdGs6ODcyMgorIzogZ2l0azoxODIyCiBtc2dpZCAiRWRpdCB2aWV3Li4uIgogbXNnc3RyICJNb2RpZmljYSB2aXN0YS4uLiIKIAotIzogZ2l0azo2NzYgZ2l0azoyMTM0IGdpdGs6ODcyMworIzogZ2l0azoxODIzCiBtc2dpZCAiRGVsZXRlIHZpZXciCiBtc2dzdHIgIkVsaW1pbmEgdmlzdGEiCiAKLSM6IGdpdGs6Njc4CisjOiBnaXRrOjE4MjUKIG1zZ2lkICJBbGwgZmlsZXMiCiBtc2dzdHIgIlR1dHRpIGkgZmlsZSIKIAotIzogZ2l0azo2ODIKLW1zZ2lkICJIZWxwIgotbXNnc3RyICJBaXV0byIKKyM6IGdpdGs6MTgyMCBnaXRrOjMxOTYKK21zZ2lkICJWaWV3IgorbXNnc3RyICJWaXN0YSIKIAotIzogZ2l0azo2ODMgZ2l0azoxMzE3CisjOiBnaXRrOjE4MjggZ2l0azoyNDg3CiBtc2dpZCAiQWJvdXQgZ2l0ayIKIG1zZ3N0ciAiSW5mb3JtYXppb25pIHN1IGdpdGsiCiAKLSM6IGdpdGs6Njg0CisjOiBnaXRrOjE4MjkKIG1zZ2lkICJLZXkgYmluZGluZ3MiCiBtc2dzdHIgIlNjb3JjaWF0b2llIGRhIHRhc3RpZXJhIgogCi0jOiBnaXRrOjc0MQorIzogZ2l0azoxODI3Cittc2dpZCAiSGVscCIKK21zZ3N0ciAiQWl1dG8iCisKKyM6IGdpdGs6MTg4NwogbXNnaWQgIlNIQTEgSUQ6ICIKIG1zZ3N0ciAiU0hBMSBJRDogIgogCi0jOiBnaXRrOjc5MQorIzogZ2l0azoxOTE4Cittc2dpZCAiUm93IgorbXNnc3RyICIiCisKKyM6IGdpdGs6MTk0OQogbXNnaWQgIkZpbmQiCiBtc2dzdHIgIlRyb3ZhIgogCi0jOiBnaXRrOjc5MgorIzogZ2l0azoxOTUwCiBtc2dpZCAibmV4dCIKIG1zZ3N0ciAic3VjYyIKIAotIzogZ2l0azo3OTMKKyM6IGdpdGs6MTk1MQogbXNnaWQgInByZXYiCiBtc2dzdHIgInByZWMiCiAKLSM6IGdpdGs6Nzk0CisjOiBnaXRrOjE5NTIKIG1zZ2lkICJjb21taXQiCiBtc2dzdHIgInJldmlzaW9uZSIKIAotIzogZ2l0azo3OTcgZ2l0azo3OTkgZ2l0azoyMzU2IGdpdGs6MjM3OSBnaXRrOjI0MDMgZ2l0azo0MzA2IGdpdGs6NDM2OQorIzogZ2l0azoxOTU1IGdpdGs6MTk1NyBnaXRrOjM2MTcgZ2l0azozNjQwIGdpdGs6MzY2NCBnaXRrOjU1NTAgZ2l0azo1NjIxCiBtc2dpZCAiY29udGFpbmluZzoiCiBtc2dzdHIgImNvbnRlbmVudGU6IgogCi0jOiBnaXRrOjgwMCBnaXRrOjE3NzggZ2l0azoxNzgzIGdpdGs6MjQzMQorIzogZ2l0azoxOTU4IGdpdGs6Mjk1NCBnaXRrOjI5NTkgZ2l0azozNjkyCiBtc2dpZCAidG91Y2hpbmcgcGF0aHM6IgogbXNnc3RyICJjaGUgcmlndWFyZGEgaSBwZXJjb3JzaToiCiAKLSM6IGdpdGs6ODAxIGdpdGs6MjQzNgorIzogZ2l0azoxOTU5IGdpdGs6MzY5NwogbXNnaWQgImFkZGluZy9yZW1vdmluZyBzdHJpbmc6IgogbXNnc3RyICJjaGUgYWdnaXVuZ2UvcmltdW92ZSBsYSBzdHJpbmdhOiIKIAotIzogZ2l0azo4MTAgZ2l0azo4MTIKKyM6IGdpdGs6MTk2OCBnaXRrOjE5NzAKIG1zZ2lkICJFeGFjdCIKIG1zZ3N0ciAiRXNhdHRvIgogCi0jOiBnaXRrOjgxMiBnaXRrOjI1MTQgZ2l0azo0Mjc0CisjOiBnaXRrOjE5NzAgZ2l0azozNzczIGdpdGs6NTUxOAogbXNnaWQgIklnbkNhc2UiCiBtc2dzdHIgIiIKIAotIzogZ2l0azo4MTIgZ2l0azoyNDA1IGdpdGs6MjUxMiBnaXRrOjQyNzAKKyM6IGdpdGs6MTk3MCBnaXRrOjM2NjYgZ2l0azozNzcxIGdpdGs6NTUxNAogbXNnaWQgIlJlZ2V4cCIKIG1zZ3N0ciAiIgogCi0jOiBnaXRrOjgxNCBnaXRrOjgxNSBnaXRrOjI1MzMgZ2l0azoyNTYzIGdpdGs6MjU3MCBnaXRrOjQzODAgZ2l0azo0NDM2CisjOiBnaXRrOjE5NzIgZ2l0azoxOTczIGdpdGs6Mzc5MiBnaXRrOjM4MjIgZ2l0azozODI5IGdpdGs6NTY0MSBnaXRrOjU3MDgKIG1zZ2lkICJBbGwgZmllbGRzIgogbXNnc3RyICJUdXR0aSBpIGNhbXBpIgogCi0jOiBnaXRrOjgxNSBnaXRrOjI1MzEgZ2l0azoyNTYzIGdpdGs6NDMzNgorIzogZ2l0azoxOTczIGdpdGs6Mzc5MCBnaXRrOjM4MjIgZ2l0azo1NTgwCiBtc2dpZCAiSGVhZGxpbmUiCiBtc2dzdHIgIlRpdG9sbyIKIAotIzogZ2l0azo4MTYgZ2l0azoyNTMxIGdpdGs6NDMzNiBnaXRrOjQ0MzYgZ2l0azo0ODI3CisjOiBnaXRrOjE5NzQgZ2l0azozNzkwIGdpdGs6NTU4MCBnaXRrOjU3MDggZ2l0azo2MTA5CiBtc2dpZCAiQ29tbWVudHMiCiBtc2dzdHIgIkNvbW1lbnRpIgogCi0jOiBnaXRrOjgxNiBnaXRrOjI1MzEgZ2l0azoyNTM1IGdpdGs6MjU3MCBnaXRrOjQzMzYgZ2l0azo0NzYzIGdpdGs6NTk1NgotIzogZ2l0azo1OTcxCisjOiBnaXRrOjE5NzQgZ2l0azozNzkwIGdpdGs6Mzc5NCBnaXRrOjM4MjkgZ2l0azo1NTgwIGdpdGs6NjA0NSBnaXRrOjcyODUKKyM6IGdpdGs6NzMwMAogbXNnaWQgIkF1dGhvciIKIG1zZ3N0ciAiQXV0b3JlIgogCi0jOiBnaXRrOjgxNiBnaXRrOjI1MzEgZ2l0azo0MzM2IGdpdGs6NDc2NQorIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjU1ODAgZ2l0azo2MDQ3CiBtc2dpZCAiQ29tbWl0dGVyIgogbXNnc3RyICJSZXZpc2lvbmUgY3JlYXRhIGRhIgogCi0jOiBnaXRrOjg0NQorIzogZ2l0azoyMDAzCiBtc2dpZCAiU2VhcmNoIgogbXNnc3RyICJDZXJjYSIKIAotIzogZ2l0azo4NTIKKyM6IGdpdGs6MjAxMAogbXNnaWQgIkRpZmYiCiBtc2dzdHIgIiIKIAotIzogZ2l0azo4NTQKKyM6IGdpdGs6MjAxMgogbXNnaWQgIk9sZCB2ZXJzaW9uIgogbXNnc3RyICJWZWNjaGlhIHZlcnNpb25lIgogCi0jOiBnaXRrOjg1NgorIzogZ2l0azoyMDE0CiBtc2dpZCAiTmV3IHZlcnNpb24iCiBtc2dzdHIgIk51b3ZhIHZlcnNpb25lIgogCi0jOiBnaXRrOjg1OAorIzogZ2l0azoyMDE2CiBtc2dpZCAiTGluZXMgb2YgY29udGV4dCIKIG1zZ3N0ciAiTGluZWUgZGkgY29udGVzdG8iCiAKLSM6IGdpdGs6ODY4CisjOiBnaXRrOjIwMjYKIG1zZ2lkICJJZ25vcmUgc3BhY2UgY2hhbmdlIgogbXNnc3RyICJJZ25vcmEgbW9kaWZpY2hlIGFnbGkgc3BhemkiCiAKLSM6IGdpdGs6OTI2CisjOiBnaXRrOjIwODQKIG1zZ2lkICJQYXRjaCIKIG1zZ3N0ciAiTW9kaWZpY2hlIgogCi0jOiBnaXRrOjkyOAorIzogZ2l0azoyMDg2CiBtc2dpZCAiVHJlZSIKIG1zZ3N0ciAiRGlyZWN0b3J5IgogCi0jOiBnaXRrOjEwNTMgZ2l0azoxMDY4IGdpdGs6NjAyMgorIzogZ2l0azoyMjEzIGdpdGs6MjIyNgogbXNnaWQgIkRpZmYgdGhpcyAtPiBzZWxlY3RlZCIKIG1zZ3N0ciAiRGlmZiBxdWVzdG8gLT4gc2VsZXppb25hdG8iCiAKLSM6IGdpdGs6MTA1NSBnaXRrOjEwNzAgZ2l0azo2MDIzCisjOiBnaXRrOjIyMTQgZ2l0azoyMjI3CiBtc2dpZCAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIgogbXNnc3RyICJEaWZmIHNlbGV6aW9uYXRvIC0+IHF1ZXN0byIKIAotIzogZ2l0azoxMDU3IGdpdGs6MTA3MiBnaXRrOjYwMjQKKyM6IGdpdGs6MjIxNSBnaXRrOjIyMjgKIG1zZ2lkICJNYWtlIHBhdGNoIgogbXNnc3RyICJDcmVhIHBhdGNoIgogCi0jOiBnaXRrOjEwNTggZ2l0azo2MTYyCisjOiBnaXRrOjIyMTYgZ2l0azo3NDk0CiBtc2dpZCAiQ3JlYXRlIHRhZyIKIG1zZ3N0ciAiQ3JlYSBldGljaGV0dGEiCiAKLSM6IGdpdGs6MTA1OSBnaXRrOjYyNTUKKyM6IGdpdGs6MjIxNyBnaXRrOjc1OTMKIG1zZ2lkICJXcml0ZSBjb21taXQgdG8gZmlsZSIKIG1zZ3N0ciAiU2NyaXZpIHJldmlzaW9uZSBpbiB1biBmaWxlIgogCi0jOiBnaXRrOjEwNjAgZ2l0azo2MzA5CisjOiBnaXRrOjIyMTggZ2l0azo3NjQ3CiBtc2dpZCAiQ3JlYXRlIG5ldyBicmFuY2giCiBtc2dzdHIgIkNyZWEgdW4gbnVvdm8gcmFtbyIKIAotIzogZ2l0azoxMDYxCisjOiBnaXRrOjIyMTkKIG1zZ2lkICJDaGVycnktcGljayB0aGlzIGNvbW1pdCIKIG1zZ3N0ciAiUG9ydGEgcXVlc3RhIHJldmlzaW9uZSBpbiBjaW1hIGFsIHJhbW8gYXR0dWFsZSIKIAotIzogZ2l0azoxMDYzCisjOiBnaXRrOjIyMjAKIG1zZ2lkICJSZXNldCBIRUFEIGJyYW5jaCB0byBoZXJlIgogbXNnc3RyICJBZ2dpb3JuYSBpbCByYW1vIEhFQUQgYSBxdWVzdGEgcmV2aXNpb25lIgogCi0jOiBnaXRrOjEwNzkKKyM6IGdpdGs6MjIzNAogbXNnaWQgIkNoZWNrIG91dCB0aGlzIGJyYW5jaCIKIG1zZ3N0ciAiQXR0aXZhIHF1ZXN0byByYW1vIgogCi0jOiBnaXRrOjEwODEKKyM6IGdpdGs6MjIzNQogbXNnaWQgIlJlbW92ZSB0aGlzIGJyYW5jaCIKIG1zZ3N0ciAiRWxpbWluYSBxdWVzdG8gcmFtbyIKIAotIzogZ2l0azoxMDg3CisjOiBnaXRrOjIyNDIKIG1zZ2lkICJIaWdobGlnaHQgdGhpcyB0b28iCiBtc2dzdHIgIkV2aWRlbnppYSBhbmNoZSBxdWVzdG8iCiAKLSM6IGdpdGs6MTA4OQorIzogZ2l0azoyMjQzCiBtc2dpZCAiSGlnaGxpZ2h0IHRoaXMgb25seSIKIG1zZ3N0ciAiRXZpZGVuemlhIHNvbG8gcXVlc3RvIgogCi0jOiBnaXRrOjEzMTgKKyM6IGdpdGs6MjI0NQorbXNnaWQgIkJsYW1lIHBhcmVudCBjb21taXQiCittc2dzdHIgIiIKKworIzogZ2l0azoyNDg4CiBtc2dpZCAiIgogIlxuIgogIkdpdGsgLSBhIGNvbW1pdCB2aWV3ZXIgZm9yIGdpdFxuIgogIlxuIgotIkNvcHlyaWdodCDCqSAyMDA1LTIwMDYgUGF1bCBNYWNrZXJyYXNcbiIKKyJDb3B5cmlnaHQgwqkgMjAwNS0yMDA4IFBhdWwgTWFja2VycmFzXG4iCiAiXG4iCiAiVXNlIGFuZCByZWRpc3RyaWJ1dGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSIKIG1zZ3N0ciAiIgogIlxuIgogIkdpdGsgLSB1biB2aXN1YWxpenphdG9yZSBkaSByZXZpc2lvbmkgcGVyIGdpdFxuIgogIlxuIgotIkNvcHlyaWdodCDCqSAyMDA1LTIwMDYgUGF1bCBNYWNrZXJyYXNcbiIKKyJDb3B5cmlnaHQgwqkgMjAwNS0yMDA4IFBhdWwgTWFja2VycmFzXG4iCiAiXG4iCiAiVXRpbGl6em8gZSByZWRpc3RyaWJ1emlvbmUgcGVybWVzc2kgc290dG8gaSB0ZXJtaW5pIGRlbGxhIEdOVSBHZW5lcmFsIFB1YmxpYyAiCiAiTGljZW5zZSIKIAotIzogZ2l0azoxMzI2IGdpdGs6MTM4NyBnaXRrOjY1ODEKKyM6IGdpdGs6MjQ5NiBnaXRrOjI1NTcgZ2l0azo3OTQzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIkNoaXVkaSIKIAotIzogZ2l0azoxMzQ1CisjOiBnaXRrOjI1MTUKIG1zZ2lkICJHaXRrIGtleSBiaW5kaW5ncyIKIG1zZ3N0ciAiU2NvcmNpYXRvaWUgZGEgdGFzdGllcmEgZGkgR2l0ayIKIAotIzogZ2l0azoxMzQ3CisjOiBnaXRrOjI1MTcKIG1zZ2lkICJHaXRrIGtleSBiaW5kaW5nczoiCiBtc2dzdHIgIlNjb3JjaWF0b2llIGRhIHRhc3RpZXJhIGRpIEdpdGs6IgogCi0jOiBnaXRrOjEzNDkKKyM6IGdpdGs6MjUxOQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1RPlx0XHRRdWl0IgogbXNnc3RyICI8JXMtUT5cdFx0RXNjaSIKIAotIzogZ2l0azoxMzUwCisjOiBnaXRrOjI1MjAKIG1zZ2lkICI8SG9tZT5cdFx0TW92ZSB0byBmaXJzdCBjb21taXQiCiBtc2dzdHIgIjxIb21lPlx0XHRWYWkgYWxsYSBwcmltYSByZXZpc2lvbmUiCiAKLSM6IGdpdGs6MTM1MQorIzogZ2l0azoyNTIxCiBtc2dpZCAiPEVuZD5cdFx0TW92ZSB0byBsYXN0IGNvbW1pdCIKIG1zZ3N0ciAiPEVuZD5cdFx0VmFpIGFsbCd1bHRpbWEgcmV2aXNpb25lIgogCi0jOiBnaXRrOjEzNTIKKyM6IGdpdGs6MjUyMgogbXNnaWQgIjxVcD4sIHAsIGlcdE1vdmUgdXAgb25lIGNvbW1pdCIKIG1zZ3N0ciAiPFVwPiwgcCwgaVx0VmFpIHBpw7kgaW4gYWx0byBkaSB1bmEgcmV2aXNpb25lIgogCi0jOiBnaXRrOjEzNTMKKyM6IGdpdGs6MjUyMwogbXNnaWQgIjxEb3duPiwgbiwga1x0TW92ZSBkb3duIG9uZSBjb21taXQiCiBtc2dzdHIgIjxEb3duPiwgbiwga1x0VmFpIHBpw7kgaW4gYmFzc28gZGkgdW5hIHJldmlzaW9uZSIKIAotIzogZ2l0azoxMzU0CisjOiBnaXRrOjI1MjQKIG1zZ2lkICI8TGVmdD4sIHosIGpcdEdvIGJhY2sgaW4gaGlzdG9yeSBsaXN0IgogbXNnc3RyICI8TGVmdD4sIHosIGpcdFRvcm5hIGluZGlldHJvIG5lbGxhIGNyb25vbG9naWEiCiAKLSM6IGdpdGs6MTM1NQorIzogZ2l0azoyNTI1CiBtc2dpZCAiPFJpZ2h0PiwgeCwgbFx0R28gZm9yd2FyZCBpbiBoaXN0b3J5IGxpc3QiCiBtc2dzdHIgIjxSaWdodD4sIHgsIGxcdFZhaSBhdmFudGkgbmVsbGEgY3Jvbm9sb2dpYSIKIAotIzogZ2l0azoxMzU2CisjOiBnaXRrOjI1MjYKIG1zZ2lkICI8UGFnZVVwPlx0TW92ZSB1cCBvbmUgcGFnZSBpbiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPFBhZ2VVcD5cdFZhaSBwacO5IGluIGFsdG8gZGkgdW5hIHBhZ2luYSBuZWxsYSBsaXN0YSBkZWxsZSByZXZpc2lvbmkiCiAKLSM6IGdpdGs6MTM1NworIzogZ2l0azoyNTI3CiBtc2dpZCAiPFBhZ2VEb3duPlx0TW92ZSBkb3duIG9uZSBwYWdlIGluIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8UGFnZURvd24+XHRWYWkgcGnDuSBpbiBiYXNzbyBkaSB1bmEgcGFnaW5hIG5lbGxhIGxpc3RhIGRlbGxlIHJldmlzaW9uaSIKIAotIzogZ2l0azoxMzU4CisjOiBnaXRrOjI1MjgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtSG9tZT5cdFNjcm9sbCB0byB0b3Agb2YgY29tbWl0IGxpc3QiCiBtc2dzdHIgIjwlcy1Ib21lPlx0U2NvcnJpIGFsbGEgY2ltYSBkZWxsYSBsaXN0YSBkZWxsZSByZXZpc2lvbmkiCiAKLSM6IGdpdGs6MTM1OQorIzogZ2l0azoyNTI5CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUVuZD5cdFNjcm9sbCB0byBib3R0b20gb2YgY29tbWl0IGxpc3QiCiBtc2dzdHIgIjwlcy1FbmQ+XHRTY29ycmkgYWxsYSBmaW5lIGRlbGxhIGxpc3RhIGRlbGxlIHJldmlzaW9uaSIKIAotIzogZ2l0azoxMzYwCisjOiBnaXRrOjI1MzAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtVXA+XHRTY3JvbGwgY29tbWl0IGxpc3QgdXAgb25lIGxpbmUiCiBtc2dzdHIgIjwlcy1VcD5cdFNjb3JyaSBsYSBsaXN0YSBkZWxsZSByZXZpc2lvbmkgaW4gYWx0byBkaSB1bmEgcmlnYSIKIAotIzogZ2l0azoxMzYxCisjOiBnaXRrOjI1MzEKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRG93bj5cdFNjcm9sbCBjb21taXQgbGlzdCBkb3duIG9uZSBsaW5lIgogbXNnc3RyICI8JXMtRG93bj5cdFNjb3JyaSBsYSBsaXN0YSBkZWxsZSByZXZpc2lvbmkgaW4gYmFzc28gZGkgdW5hIHJpZ2EiCiAKLSM6IGdpdGs6MTM2MgorIzogZ2l0azoyNTMyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVBhZ2VVcD5cdFNjcm9sbCBjb21taXQgbGlzdCB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPCVzLVBhZ2VVcD5cdFNjb3JyaSBsYSBsaXN0YSBkZWxsZSByZXZpc2lvbmkgaW4gYWx0byBkaSB1bmEgcGFnaW5hIgogCi0jOiBnaXRrOjEzNjMKKyM6IGdpdGs6MjUzMwogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1QYWdlRG93bj5cdFNjcm9sbCBjb21taXQgbGlzdCBkb3duIG9uZSBwYWdlIgogbXNnc3RyICI8JXMtUGFnZURvd24+XHRTY29ycmkgbGEgbGlzdGEgZGVsbGUgcmV2aXNpb25pIGluIGJhc3NvIGRpIHVuYSBwYWdpbmEiCiAKLSM6IGdpdGs6MTM2NAorIzogZ2l0azoyNTM0CiBtc2dpZCAiPFNoaWZ0LVVwPlx0RmluZCBiYWNrd2FyZHMgKHVwd2FyZHMsIGxhdGVyIGNvbW1pdHMpIgogbXNnc3RyICI8U2hpZnQtVXA+XHRUcm92YSBhbGwnaW5kaWV0cm8gKHZlcnNvIGwnYWx0bywgcmV2aXNpb25pIHN1Y2Nlc3NpdmUpIgogCi0jOiBnaXRrOjEzNjUKKyM6IGdpdGs6MjUzNQogbXNnaWQgIjxTaGlmdC1Eb3duPlx0RmluZCBmb3J3YXJkcyAoZG93bndhcmRzLCBlYXJsaWVyIGNvbW1pdHMpIgogbXNnc3RyICI8U2hpZnQtRG93bj5cdFRyb3ZhIGluIGF2YW50aSAodmVyc28gaWwgYmFzc28sIHJldmlzaW9uaSBwcmVjZWRlbnRpKSIKIAotIzogZ2l0azoxMzY2CisjOiBnaXRrOjI1MzYKIG1zZ2lkICI8RGVsZXRlPiwgYlx0U2Nyb2xsIGRpZmYgdmlldyB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPERlbGV0ZT4sIGJcdFNjb3JyaSBsYSB2aXN0YSBkZWxsZSBkaWZmZXJlbnplIGluIGFsdG8gZGkgdW5hIHBhZ2luYSIKIAotIzogZ2l0azoxMzY3CisjOiBnaXRrOjI1MzcKIG1zZ2lkICI8QmFja3NwYWNlPlx0U2Nyb2xsIGRpZmYgdmlldyB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPEJhY2tzcGFjZT5cdFNjb3JyaSBsYSB2aXN0YSBkZWxsZSBkaWZmZXJlbnplIGluIGFsdG8gZGkgdW5hIHBhZ2luYSIKIAotIzogZ2l0azoxMzY4CisjOiBnaXRrOjI1MzgKIG1zZ2lkICI8U3BhY2U+XHRcdFNjcm9sbCBkaWZmIHZpZXcgZG93biBvbmUgcGFnZSIKIG1zZ3N0ciAiPFNwYWNlPlx0XHRTY29ycmkgbGEgdmlzdGEgZGVsbGUgZGlmZmVyZW56ZSBpbiBiYXNzbyBkaSB1bmEgcGFnaW5hIgogCi0jOiBnaXRrOjEzNjkKKyM6IGdpdGs6MjUzOQogbXNnaWQgInVcdFx0U2Nyb2xsIGRpZmYgdmlldyB1cCAxOCBsaW5lcyIKIG1zZ3N0ciAidVx0XHRTY29ycmkgbGEgdmlzdGEgZGVsbGUgZGlmZmVyZW56ZSBpbiBhbHRvIGRpIDE4IGxpbmVlIgogCi0jOiBnaXRrOjEzNzAKKyM6IGdpdGs6MjU0MAogbXNnaWQgImRcdFx0U2Nyb2xsIGRpZmYgdmlldyBkb3duIDE4IGxpbmVzIgogbXNnc3RyICJkXHRcdFNjb3JyaSBsYSB2aXN0YSBkZWxsZSBkaWZmZXJlbnplIGluIGJhc3NvIGRpIDE4IGxpbmVlIgogCi0jOiBnaXRrOjEzNzEKKyM6IGdpdGs6MjU0MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1GPlx0XHRGaW5kIgogbXNnc3RyICI8JXMtRj5cdFx0VHJvdmEiCiAKLSM6IGdpdGs6MTM3MgorIzogZ2l0azoyNTQyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUc+XHRcdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCIKIG1zZ3N0ciAiPCVzLUc+XHRcdFRyb3ZhIGluIGF2YW50aSIKIAotIzogZ2l0azoxMzczCisjOiBnaXRrOjI1NDMKIG1zZ2lkICI8UmV0dXJuPlx0TW92ZSB0byBuZXh0IGZpbmQgaGl0IgogbXNnc3RyICI8UmV0dXJuPlx0VHJvdmEgaW4gYXZhbnRpIgogCi0jOiBnaXRrOjEzNzQKKyM6IGdpdGs6MjU0NAogbXNnaWQgIi9cdFx0TW92ZSB0byBuZXh0IGZpbmQgaGl0LCBvciByZWRvIGZpbmQiCiBtc2dzdHIgIi9cdFx0VHJvdmEgaW4gYXZhbnRpLCBvIGNlcmNhIGRpIG51b3ZvIgogCi0jOiBnaXRrOjEzNzUKKyM6IGdpdGs6MjU0NQogbXNnaWQgIj9cdFx0TW92ZSB0byBwcmV2aW91cyBmaW5kIGhpdCIKIG1zZ3N0ciAiP1x0XHRUcm92YSBhbGwnaW5kaWV0cm8iCiAKLSM6IGdpdGs6MTM3NgorIzogZ2l0azoyNTQ2CiBtc2dpZCAiZlx0XHRTY3JvbGwgZGlmZiB2aWV3IHRvIG5leHQgZmlsZSIKIG1zZ3N0ciAiZlx0XHRTY29ycmkgbGEgdmlzdGEgZGVsbGUgZGlmZmVyZW56ZSBhbCBmaWxlIHN1Y2Nlc3Npdm8iCiAKLSM6IGdpdGs6MTM3NworIzogZ2l0azoyNTQ3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVM+XHRcdFNlYXJjaCBmb3IgbmV4dCBoaXQgaW4gZGlmZiB2aWV3IgogbXNnc3RyICI8JXMtUz5cdFx0Q2VyY2EgaW4gYXZhbnRpIG5lbGxhIHZpc3RhIGRlbGxlIGRpZmZlcmVuemUiCiAKLSM6IGdpdGs6MTM3OAorIzogZ2l0azoyNTQ4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVI+XHRcdFNlYXJjaCBmb3IgcHJldmlvdXMgaGl0IGluIGRpZmYgdmlldyIKIG1zZ3N0ciAiPCVzLVI+XHRcdENlcmNhIGFsbCdpbmRpZXRybyBuZWxsYSB2aXN0YSBkZWxsZSBkaWZmZXJlbnplIgogCi0jOiBnaXRrOjEzNzkKKyM6IGdpdGs6MjU0OQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1LUCs+XHRJbmNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1LUCs+XHRBdW1lbnRhIGdyYW5kZXp6YSBjYXJhdHRlcmUiCiAKLSM6IGdpdGs6MTM4MAorIzogZ2l0azoyNTUwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLXBsdXM+XHRJbmNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1wbHVzPlx0QXVtZW50YSBncmFuZGV6emEgY2FyYXR0ZXJlIgogCi0jOiBnaXRrOjEzODEKKyM6IGdpdGs6MjU1MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1LUC0+XHREZWNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1LUC0+XHREaW1pbnVpc2NpIGdyYW5kZXp6YSBjYXJhdHRlcmUiCiAKLSM6IGdpdGs6MTM4MgorIzogZ2l0azoyNTUyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLW1pbnVzPlx0RGVjcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtbWludXM+XHREaW1pbnVpc2NpIGdyYW5kZXp6YSBjYXJhdHRlcmUiCiAKLSM6IGdpdGs6MTM4MworIzogZ2l0azoyNTUzCiBtc2dpZCAiPEY1Plx0XHRVcGRhdGUiCiBtc2dzdHIgIjxGNT5cdFx0QWdnaW9ybmEiCiAKLSM6IGdpdGs6MTg5NgorIzogZ2l0azozMjAwCiBtc2dpZCAiR2l0ayB2aWV3IGRlZmluaXRpb24iCiBtc2dzdHIgIlNjZWx0YSB2aXN0YSBHaXRrIgogCi0jOiBnaXRrOjE5MjEKKyM6IGdpdGs6MzIyNQogbXNnaWQgIk5hbWUiCiBtc2dzdHIgIk5vbWUiCiAKLSM6IGdpdGs6MTkyNAorIzogZ2l0azozMjI4CiBtc2dpZCAiUmVtZW1iZXIgdGhpcyB2aWV3IgogbXNnc3RyICJSaWNvcmRhIHF1ZXN0YSB2aXN0YSIKIAotIzogZ2l0azoxOTI4Ci1tc2dpZCAiQ29tbWl0cyB0byBpbmNsdWRlIChhcmd1bWVudHMgdG8gZ2l0IHJldi1saXN0KToiCi1tc2dzdHIgIlJldmlzaW9uaSBkYSBpbmNsdWRlcmUgKGFyZ29tZW50aSBkaSBnaXQgcmV2LWxpc3QpOiIKKyM6IGdpdGs6MzIzMgorbXNnaWQgIkNvbW1pdHMgdG8gaW5jbHVkZSAoYXJndW1lbnRzIHRvIGdpdCBsb2cpOiIKK21zZ3N0ciAiUmV2aXNpb25pIGRhIGluY2x1ZGVyZSAoYXJnb21lbnRpIGRpIGdpdCBsb2cpOiIKIAotIzogZ2l0azoxOTM1CisjOiBnaXRrOjMyMzkKIG1zZ2lkICJDb21tYW5kIHRvIGdlbmVyYXRlIG1vcmUgY29tbWl0cyB0byBpbmNsdWRlOiIKIG1zZ3N0ciAiQ29tYW5kbyBjaGUgZ2VuZXJhIGFsdHJlIHJldmlzaW9uaSBkYSB2aXN1YWxpenphcmU6IgogCi0jOiBnaXRrOjE5NDIKKyM6IGdpdGs6MzI0NgogbXNnaWQgIkVudGVyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byBpbmNsdWRlLCBvbmUgcGVyIGxpbmU6IgogbXNnc3RyICJJbnNlcmlyZSBmaWxlIGUgZGlyZWN0b3J5IGRhIGluY2x1ZGVyZSwgdW5vIHBlciByaWdhOiIKIAotIzogZ2l0azoxOTg5CisjOiBnaXRrOjMyOTMKIG1zZ2lkICJFcnJvciBpbiBjb21taXQgc2VsZWN0aW9uIGFyZ3VtZW50czoiCiBtc2dzdHIgIkVycm9yZSBuZWdsaSBhcmdvbWVudGkgZGkgc2VsZXppb25lIGRlbGxlIHJldmlzaW9uaToiCiAKLSM6IGdpdGs6MjA0MyBnaXRrOjIxMjcgZ2l0azoyNTgzIGdpdGs6MjU5NyBnaXRrOjM3ODEgZ2l0azo4Njg4IGdpdGs6ODY4OQorIzogZ2l0azozMzQ3IGdpdGs6MzM5OSBnaXRrOjM4NDIgZ2l0azozODU2IGdpdGs6NTA2MCBnaXRrOjEwMTQxIGdpdGs6MTAxNDIKIG1zZ2lkICJOb25lIgogbXNnc3RyICJOZXNzdW5vIgogCi0jOiBnaXRrOjI1MzEgZ2l0azo0MzM2IGdpdGs6NTk1OCBnaXRrOjU5NzMKKyM6IGdpdGs6Mzc5MCBnaXRrOjU1ODAgZ2l0azo3Mjg3IGdpdGs6NzMwMgogbXNnaWQgIkRhdGUiCiBtc2dzdHIgIkRhdGEiCiAKLSM6IGdpdGs6MjUzMSBnaXRrOjQzMzYKKyM6IGdpdGs6Mzc5MCBnaXRrOjU1ODAKIG1zZ2lkICJDRGF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBnaXRrOjI2ODAgZ2l0azoyNjg1CisjOiBnaXRrOjM5MzkgZ2l0azozOTQ0CiBtc2dpZCAiRGVzY2VuZGFudCIKIG1zZ3N0ciAiRGlzY2VuZGVudGUiCiAKLSM6IGdpdGs6MjY4MQorIzogZ2l0azozOTQwCiBtc2dpZCAiTm90IGRlc2NlbmRhbnQiCiBtc2dzdHIgIk5vbiBkaXNjZW5kZW50ZSIKIAotIzogZ2l0azoyNjg4IGdpdGs6MjY5MworIzogZ2l0azozOTQ3IGdpdGs6Mzk1MgogbXNnaWQgIkFuY2VzdG9yIgogbXNnc3RyICJBc2NlbmRlbnRlIgogCi0jOiBnaXRrOjI2ODkKKyM6IGdpdGs6Mzk0OAogbXNnaWQgIk5vdCBhbmNlc3RvciIKIG1zZ3N0ciAiTm9uIGFzY2VuZGVudGUiCiAKLSM6IGdpdGs6MjkyNAorIzogZ2l0azo0MTg3CiBtc2dpZCAiTG9jYWwgY2hhbmdlcyBjaGVja2VkIGluIHRvIGluZGV4IGJ1dCBub3QgY29tbWl0dGVkIgogbXNnc3RyICJNb2RpZmljaGUgbG9jYWxpIHByZXNlbnRpIG5lbGwnaW5kaWNlIG1hIG5vbiBuZWxsJ2FyY2hpdmlvIgogCi0jOiBnaXRrOjI5NTQKKyM6IGdpdGs6NDIyMAogbXNnaWQgIkxvY2FsIHVuY29tbWl0dGVkIGNoYW5nZXMsIG5vdCBjaGVja2VkIGluIHRvIGluZGV4IgogbXNnc3RyICJNb2RpZmljaGUgbG9jYWxpIG5vbiBwcmVzZW50aSBuw6kgbmVsbCdhcmNoaXZpbyBuw6kgbmVsbCdpbmRpY2UiCiAKLSM6IGdpdGs6NDMwNQorIzogZ2l0azo1NTQ5CiBtc2dpZCAiU2VhcmNoaW5nIgogbXNnc3RyICJSaWNlcmNhIGluIGNvcnNvIgogCi0jOiBnaXRrOjQ3NjcKKyM6IGdpdGs6NjA0OQogbXNnaWQgIlRhZ3M6IgogbXNnc3RyICJFdGljaGV0dGU6IgogCi0jOiBnaXRrOjQ3ODQgZ2l0azo0NzkwIGdpdGs6NTk1MQorIzogZ2l0azo2MDY2IGdpdGs6NjA3MiBnaXRrOjcyODAKIG1zZ2lkICJQYXJlbnQiCiBtc2dzdHIgIkdlbml0b3JlIgogCi0jOiBnaXRrOjQ3OTUKKyM6IGdpdGs6NjA3NwogbXNnaWQgIkNoaWxkIgogbXNnc3RyICJGaWdsaW8iCiAKLSM6IGdpdGs6NDgwNAorIzogZ2l0azo2MDg2CiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJSYW1vIgogCi0jOiBnaXRrOjQ4MDcKKyM6IGdpdGs6NjA4OQogbXNnaWQgIkZvbGxvd3MiCiBtc2dzdHIgIlNlZ3VlIgogCi0jOiBnaXRrOjQ4MTAKKyM6IGdpdGs6NjA5MgogbXNnaWQgIlByZWNlZGVzIgogbXNnc3RyICJQcmVjZWRlIgogCi0jOiBnaXRrOjUwOTMKKyM6IGdpdGs6NjM3OAogbXNnaWQgIkVycm9yIGdldHRpbmcgbWVyZ2UgZGlmZnM6IgogbXNnc3RyICJFcnJvcmUgbmVsbGEgbGV0dHVyYSBkZWxsZSBkaWZmZXJlbnplIGRpIGZ1c2lvbmU6IgogCi0jOiBnaXRrOjU3NzgKKyM6IGdpdGs6NzExMwogbXNnaWQgIkdvdG86IgogbXNnc3RyICJWYWkgYToiCiAKLSM6IGdpdGs6NTc4MAorIzogZ2l0azo3MTE1CiBtc2dpZCAiU0hBMSBJRDoiCiBtc2dzdHIgIlNIQTEgSUQ6IgogCi0jOiBnaXRrOjU4MDUKKyM6IGdpdGs6NzEzNAogIywgdGNsLWZvcm1hdAogbXNnaWQgIlNob3J0IFNIQTEgaWQgJXMgaXMgYW1iaWd1b3VzIgogbXNnc3RyICJMYSBTSEExIGlkIGFiYnJldmlhdGEgJXMgw6ggYW1iaWd1YSIKIAotIzogZ2l0azo1ODE3CisjOiBnaXRrOjcxNDYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJTSEExIGlkICVzIGlzIG5vdCBrbm93biIKIG1zZ3N0ciAiTGEgU0hBMSBpZCAlcyDDqCBzY29ub3NjaXV0YSIKIAotIzogZ2l0azo1ODE5CisjOiBnaXRrOjcxNDgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJUYWcvSGVhZCAlcyBpcyBub3Qga25vd24iCiBtc2dzdHIgIkwnZXRpY2hldHRhL3JhbW8gJXMgw6ggc2Nvbm9zY2l1dG8iCiAKLSM6IGdpdGs6NTk2MQorIzogZ2l0azo3MjkwCiBtc2dpZCAiQ2hpbGRyZW4iCiBtc2dzdHIgIkZpZ2xpIgogCi0jOiBnaXRrOjYwMTgKKyM6IGdpdGs6NzM0NwogIywgdGNsLWZvcm1hdAogbXNnaWQgIlJlc2V0ICVzIGJyYW5jaCB0byBoZXJlIgogbXNnc3RyICJBZ2dpb3JuYSBpbCByYW1vICVzIGEgcXVlc3RhIHJldmlzaW9uZSIKIAotIzogZ2l0azo2MDQ5CisjOiBnaXRrOjczNDkKK21zZ2lkICJEZXRhY2hlZCBoZWFkOiBjYW4ndCByZXNldCIKK21zZ3N0ciAiIgorCisjOiBnaXRrOjczODEKIG1zZ2lkICJUb3AiCiBtc2dzdHIgIkluaXppbyIKIAotIzogZ2l0azo2MDUwCisjOiBnaXRrOjczODIKIG1zZ2lkICJGcm9tIgogbXNnc3RyICJEYSIKIAotIzogZ2l0azo2MDU1CisjOiBnaXRrOjczODcKIG1zZ2lkICJUbyIKIG1zZ3N0ciAiQSIKIAotIzogZ2l0azo2MDc4CisjOiBnaXRrOjc0MTAKIG1zZ2lkICJHZW5lcmF0ZSBwYXRjaCIKIG1zZ3N0ciAiR2VuZXJhIHBhdGNoIgogCi0jOiBnaXRrOjYwODAKKyM6IGdpdGs6NzQxMgogbXNnaWQgIkZyb206IgogbXNnc3RyICJEYToiCiAKLSM6IGdpdGs6NjA4OQorIzogZ2l0azo3NDIxCiBtc2dpZCAiVG86IgogbXNnc3RyICJBOiIKIAotIzogZ2l0azo2MDk4CisjOiBnaXRrOjc0MzAKIG1zZ2lkICJSZXZlcnNlIgogbXNnc3RyICJJbnZlcnRpIgogCi0jOiBnaXRrOjYxMDAgZ2l0azo2MjY5CisjOiBnaXRrOjc0MzIgZ2l0azo3NjA3CiBtc2dpZCAiT3V0cHV0IGZpbGU6IgogbXNnc3RyICJTY3Jpdmkgc3VsIGZpbGU6IgogCi0jOiBnaXRrOjYxMDYKKyM6IGdpdGs6NzQzOAogbXNnaWQgIkdlbmVyYXRlIgogbXNnc3RyICJHZW5lcmEiCiAKLSM6IGdpdGs6NjE0MgorIzogZ2l0azo3NDc0CiBtc2dpZCAiRXJyb3IgY3JlYXRpbmcgcGF0Y2g6IgogbXNnc3RyICJFcnJvcmUgbmVsbGEgY3JlYXppb25lIGRlbGxhIHBhdGNoOiIKIAotIzogZ2l0azo2MTY0IGdpdGs6NjI1NyBnaXRrOjYzMTEKKyM6IGdpdGs6NzQ5NiBnaXRrOjc1OTUgZ2l0azo3NjQ5CiBtc2dpZCAiSUQ6IgogbXNnc3RyICJJRDoiCiAKLSM6IGdpdGs6NjE3MworIzogZ2l0azo3NTA1CiBtc2dpZCAiVGFnIG5hbWU6IgogbXNnc3RyICJOb21lIGV0aWNoZXR0YToiCiAKLSM6IGdpdGs6NjE3NyBnaXRrOjYzMjAKKyM6IGdpdGs6NzUwOSBnaXRrOjc2NTkKIG1zZ2lkICJDcmVhdGUiCiBtc2dzdHIgIkNyZWEiCiAKLSM6IGdpdGs6NjE5MgorIzogZ2l0azo3NTI0CiBtc2dpZCAiTm8gdGFnIG5hbWUgc3BlY2lmaWVkIgogbXNnc3RyICJOZXNzdW5hIGV0aWNoZXR0YSBzcGVjaWZpY2F0YSIKIAotIzogZ2l0azo2MTk2CisjOiBnaXRrOjc1MjgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJUYWcgXCIlc1wiIGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICJMJ2V0aWNoZXR0YSBcIiVzXCIgZXNpc3RlIGdpw6AiCiAKLSM6IGdpdGs6NjIwMgorIzogZ2l0azo3NTM0CiBtc2dpZCAiRXJyb3IgY3JlYXRpbmcgdGFnOiIKIG1zZ3N0ciAiRXJyb3JlIG5lbGxhIGNyZWF6aW9uZSBkZWxsJ2V0aWNoZXR0YToiCiAKLSM6IGdpdGs6NjI2NgorIzogZ2l0azo3NjA0CiBtc2dpZCAiQ29tbWFuZDoiCiBtc2dzdHIgIkNvbWFuZG86IgogCi0jOiBnaXRrOjYyNzQKKyM6IGdpdGs6NzYxMgogbXNnaWQgIldyaXRlIgogbXNnc3RyICJTY3JpdmkiCiAKLSM6IGdpdGs6NjI5MAorIzogZ2l0azo3NjI4CiBtc2dpZCAiRXJyb3Igd3JpdGluZyBjb21taXQ6IgogbXNnc3RyICJFcnJvcmUgbmVsbGEgc2NyaXR0dXJhIGRlbGxhIHJldmlzaW9uZToiCiAKLSM6IGdpdGs6NjMxNgorIzogZ2l0azo3NjU0CiBtc2dpZCAiTmFtZToiCiBtc2dzdHIgIk5vbWU6IgogCi0jOiBnaXRrOjYzMzUKKyM6IGdpdGs6NzY3NAogbXNnaWQgIlBsZWFzZSBzcGVjaWZ5IGEgbmFtZSBmb3IgdGhlIG5ldyBicmFuY2giCiBtc2dzdHIgIlNwZWNpZmljYXJlIHVuIG5vbWUgcGVyIGlsIG51b3ZvIHJhbW8iCiAKLSM6IGdpdGs6NjM2NAorIzogZ2l0azo3NzAzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGlzIGFscmVhZHkgaW5jbHVkZWQgaW4gYnJhbmNoICVzIC0tIHJlYWxseSByZS1hcHBseSBpdD8iCiBtc2dzdHIgIkxhIHJldmlzaW9uZSAlcyDDqCBnacOgIGluY2x1c2EgbmVsIHJhbW8gJXMgLS0gYXBwbGljYXJsYSBkaSBudW92bz8iCiAKLSM6IGdpdGs6NjM2OQorIzogZ2l0azo3NzA4CiBtc2dpZCAiQ2hlcnJ5LXBpY2tpbmciCiBtc2dzdHIgIiIKIAotIzogZ2l0azo2MzgxCisjOiBnaXRrOjc3MjAKIG1zZ2lkICJObyBjaGFuZ2VzIGNvbW1pdHRlZCIKIG1zZ3N0ciAiTmVzc3VuYSBtb2RpZmljYSBhcmNoaXZpYXRhIgogCi0jOiBnaXRrOjY0MDQKKyM6IGdpdGs6Nzc0NQogbXNnaWQgIkNvbmZpcm0gcmVzZXQiCiBtc2dzdHIgIkNvbmZlcm1hIGdpdCByZXNldCIKIAotIzogZ2l0azo2NDA2CisjOiBnaXRrOjc3NDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXNldCBicmFuY2ggJXMgdG8gJXM/IgogbXNnc3RyICJBZ2dpb3JuYXJlIGlsIHJhbW8gJXMgYSAlcz8iCiAKLSM6IGdpdGs6NjQxMAorIzogZ2l0azo3NzUxCiBtc2dpZCAiUmVzZXQgdHlwZToiCiBtc2dzdHIgIlRpcG8gZGkgYWdnaW9ybmFtZW50bzoiCiAKLSM6IGdpdGs6NjQxNAorIzogZ2l0azo3NzU1CiBtc2dpZCAiU29mdDogTGVhdmUgd29ya2luZyB0cmVlIGFuZCBpbmRleCB1bnRvdWNoZWQiCiBtc2dzdHIgIlNvZnQ6IExhc2NpYSBsYSBkaXJlY29yeSBkaSBsYXZvcm8gZSBsJ2luZGljZSBjb21lIHNvbm8iCiAKLSM6IGdpdGs6NjQxNworIzogZ2l0azo3NzU4CiBtc2dpZCAiTWl4ZWQ6IExlYXZlIHdvcmtpbmcgdHJlZSB1bnRvdWNoZWQsIHJlc2V0IGluZGV4IgogbXNnc3RyICJNaXhlZDogTGFzY2lhIGxhIGRpcmVjdG9yeSBkaSBsYXZvcm8gY29tZSDDqCwgYWdnaW9ybmEgbCdpbmRpY2UiCiAKLSM6IGdpdGs6NjQyMAorIzogZ2l0azo3NzYxCiBtc2dpZCAiIgogIkhhcmQ6IFJlc2V0IHdvcmtpbmcgdHJlZSBhbmQgaW5kZXhcbiIKICIoZGlzY2FyZCBBTEwgbG9jYWwgY2hhbmdlcykiCkBAIC02OTMsMTkgKzcyMywxOSBAQAogIkhhcmQ6IEFnZ2lvcm5hIGxhIGRpcmVjdG9yeSBkaSBsYXZvcm8gZSBsJ2luZGljZVxuIgogIihhYmJhbmRvbmEgVFVUVEUgbGUgbW9kaWZpY2hlIGxvY2FsaSkiCiAKLSM6IGdpdGs6NjQzNgorIzogZ2l0azo3Nzc3CiBtc2dpZCAiUmVzZXR0aW5nIgogbXNnc3RyICJnaXQgcmVzZXQgaW4gY29yc28iCiAKLSM6IGdpdGs6NjQ5MworIzogZ2l0azo3ODM0CiBtc2dpZCAiQ2hlY2tpbmcgb3V0IgogbXNnc3RyICJBdHRpdmF6aW9uZSBpbiBjb3JzbyIKIAotIzogZ2l0azo2NTIzCisjOiBnaXRrOjc4ODUKIG1zZ2lkICJDYW5ub3QgZGVsZXRlIHRoZSBjdXJyZW50bHkgY2hlY2tlZC1vdXQgYnJhbmNoIgogbXNnc3RyICJJbXBvc3NpYmlsZSBjYW5jZWxsYXJlIGlsIHJhbW8gYXR0dWFsbWVudGUgYXR0aXZvIgogCi0jOiBnaXRrOjY1MjkKKyM6IGdpdGs6Nzg5MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgY29tbWl0cyBvbiBicmFuY2ggJXMgYXJlbid0IG9uIGFueSBvdGhlciBicmFuY2guXG4iCkBAIC03MTQsMTYgKzc0NCwxNiBAQAogIkxlIHJldmlzaW9uaSBuZWwgcmFtbyAlcyBub24gc29ubyBwcmVzZW50aSBzdSBhbHRyaSByYW1pLlxuIgogIkNhbmNlbGxhcmUgaWwgcmFtbyAlcz8iCiAKLSM6IGdpdGs6NjU2MAorIzogZ2l0azo3OTIyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFncyBhbmQgaGVhZHM6ICVzIgogbXNnc3RyICJFdGljaGV0dGUgZSByYW1pOiAlcyIKIAotIzogZ2l0azo2NTc0CisjOiBnaXRrOjc5MzYKIG1zZ2lkICJGaWx0ZXIiCiBtc2dzdHIgIkZpbHRybyIKIAotIzogZ2l0azo2ODY4CisjOiBnaXRrOjgyMzAKIG1zZ2lkICIiCiAiRXJyb3IgcmVhZGluZyBjb21taXQgdG9wb2xvZ3kgaW5mb3JtYXRpb247IGJyYW5jaCBhbmQgcHJlY2VkaW5nL2ZvbGxvd2luZyAiCiAidGFnIGluZm9ybWF0aW9uIHdpbGwgYmUgaW5jb21wbGV0ZS4iCkBAIC03MzEsMTE3ICs3NjEsMTI5IEBACiAiRXJyb3JlIG5lbGxhIGxldHR1cmEgZGVsbGEgdG9wb2xvZ2lhIGRlbGxlIHJldmlzaW9uaTogbGUgaW5mb3JtYXppb25pIHN1bCAiCiAicmFtbyBlIGxlIGV0aWNoZXR0ZSBwcmVjZWRlbnRpIGUgc2VndWVudGkgc2FyYW5ubyBpbmNvbXBsZXRlLiIKIAotIzogZ2l0azo3ODUyCisjOiBnaXRrOjkyMTYKIG1zZ2lkICJUYWciCiBtc2dzdHIgIkV0aWNoZXR0YSIKIAotIzogZ2l0azo3ODUyCisjOiBnaXRrOjkyMTYKIG1zZ2lkICJJZCIKIG1zZ3N0ciAiSWQiCiAKLSM6IGdpdGs6Nzg5MgorIzogZ2l0azo5MjYyCiBtc2dpZCAiR2l0ayBmb250IGNob29zZXIiCiBtc2dzdHIgIlNjZWx0YSBjYXJhdHRlcmkgZ2l0ayIKIAotIzogZ2l0azo3OTA5CisjOiBnaXRrOjkyNzkKIG1zZ2lkICJCIgogbXNnc3RyICJCIgogCi0jOiBnaXRrOjc5MTIKKyM6IGdpdGs6OTI4MgogbXNnaWQgIkkiCiBtc2dzdHIgIkkiCiAKLSM6IGdpdGs6ODAwNQorIzogZ2l0azo5Mzc1CiBtc2dpZCAiR2l0ayBwcmVmZXJlbmNlcyIKIG1zZ3N0ciAiUHJlZmVyZW56ZSBnaXRrIgogCi0jOiBnaXRrOjgwMDYKKyM6IGdpdGs6OTM3NgogbXNnaWQgIkNvbW1pdCBsaXN0IGRpc3BsYXkgb3B0aW9ucyIKIG1zZ3N0ciAiT3B6aW9uaSB2aXN1YWxpenphemlvbmUgZGVsbCdlbGVuY28gcmV2aXNpb25pIgogCi0jOiBnaXRrOjgwMDkKKyM6IGdpdGs6OTM3OQogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKGxpbmVzKSIKIG1zZ3N0ciAiTGFyZ2hlenphIG1hc3NpbWEgZGVsIGdyYWZpY28gKGluIGxpbmVlKSIKIAotIzogZ2l0azo4MDEzCisjOiBnaXRrOjkzODMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJNYXhpbXVtIGdyYXBoIHdpZHRoICglIG9mIHBhbmUpIgogbXNnc3RyICJMYXJnaGV6emEgbWFzc2ltYSBkZWwgZ3JhZmljbyAoJSBkZWwgcGFubmVsbG8pIgogCi0jOiBnaXRrOjgwMTgKKyM6IGdpdGs6OTM4OAogbXNnaWQgIlNob3cgbG9jYWwgY2hhbmdlcyIKIG1zZ3N0ciAiTW9zdHJhIG1vZGlmaWNoZSBsb2NhbGkiCiAKLSM6IGdpdGs6ODAyMworIzogZ2l0azo5MzkzCiBtc2dpZCAiQXV0by1zZWxlY3QgU0hBMSIKIG1zZ3N0ciAiU2VsZXppb25hIGF1dG9tYXRpY2FtZW50ZSBTSEExIGhhc2giCiAKLSM6IGdpdGs6ODAyOAorIzogZ2l0azo5Mzk4CiBtc2dpZCAiRGlmZiBkaXNwbGF5IG9wdGlvbnMiCiBtc2dzdHIgIk9wemlvbmkgZGkgdmlzdWFsaXp6YXppb25lIGRlbGxlIGRpZmZlcmVuemUiCiAKLSM6IGdpdGs6ODAzMAorIzogZ2l0azo5NDAwCiBtc2dpZCAiVGFiIHNwYWNpbmciCiBtc2dzdHIgIlNwYXppYXR1cmEgdGFidWxhemlvbmkiCiAKLSM6IGdpdGs6ODAzNAorIzogZ2l0azo5NDA0CiBtc2dpZCAiRGlzcGxheSBuZWFyYnkgdGFncyIKIG1zZ3N0ciAiTW9zdHJhIGV0aWNoZXR0ZSB2aWNpbmUiCiAKLSM6IGdpdGs6ODAzOQorIzogZ2l0azo5NDA5CiBtc2dpZCAiTGltaXQgZGlmZnMgdG8gbGlzdGVkIHBhdGhzIgogbXNnc3RyICJMaW1pdGEgbGUgZGlmZmVyZW56ZSBhaSBwZXJjb3JzaSBlbGVuY2F0aSIKIAotIzogZ2l0azo4MDQ0CisjOiBnaXRrOjk0MTQKK21zZ2lkICJTdXBwb3J0IHBlci1maWxlIGVuY29kaW5ncyIKK21zZ3N0ciAiIgorCisjOiBnaXRrOjk0MjEKK21zZ2lkICJFeHRlcm5hbCBkaWZmIHRvb2wiCittc2dzdHIgIiIKKworIzogZ2l0azo5NDIzCittc2dpZCAiQ2hvb3NlLi4uIgorbXNnc3RyICIiCisKKyM6IGdpdGs6OTQyOAogbXNnaWQgIkNvbG9yczogcHJlc3MgdG8gY2hvb3NlIgogbXNnc3RyICJDb2xvcmk6IHByZW1lcmUgcGVyIHNjZWdsaWVyZSIKIAotIzogZ2l0azo4MDQ3CisjOiBnaXRrOjk0MzEKIG1zZ2lkICJCYWNrZ3JvdW5kIgogbXNnc3RyICJTZm9uZG8iCiAKLSM6IGdpdGs6ODA1MQorIzogZ2l0azo5NDM1CiBtc2dpZCAiRm9yZWdyb3VuZCIKIG1zZ3N0ciAiUHJpbW8gcGlhbm8iCiAKLSM6IGdpdGs6ODA1NQorIzogZ2l0azo5NDM5CiBtc2dpZCAiRGlmZjogb2xkIGxpbmVzIgogbXNnc3RyICJEaWZmOiB2ZWNjaGllIGxpbmVlIgogCi0jOiBnaXRrOjgwNjAKKyM6IGdpdGs6OTQ0NAogbXNnaWQgIkRpZmY6IG5ldyBsaW5lcyIKIG1zZ3N0ciAiRGlmZjogbnVvdmUgbGluZWUiCiAKLSM6IGdpdGs6ODA2NQorIzogZ2l0azo5NDQ5CiBtc2dpZCAiRGlmZjogaHVuayBoZWFkZXIiCiBtc2dzdHIgIkRpZmY6IGludGVzdGF6aW9uZSBkZWxsYSBzZXppb25lIgogCi0jOiBnaXRrOjgwNzEKKyM6IGdpdGs6OTQ1NQogbXNnaWQgIlNlbGVjdCBiZyIKIG1zZ3N0ciAiU2ZvbmRvIHNlbGV6aW9uZSIKIAotIzogZ2l0azo4MDc1CisjOiBnaXRrOjk0NTkKIG1zZ2lkICJGb250czogcHJlc3MgdG8gY2hvb3NlIgogbXNnc3RyICJDYXJhdHRlcmU6IHByZW1lcmUgcGVyIHNjZWdsaWVyZSIKIAotIzogZ2l0azo4MDc3CisjOiBnaXRrOjk0NjEKIG1zZ2lkICJNYWluIGZvbnQiCiBtc2dzdHIgIkNhcmF0dGVyZSBwcmluY2lwYWxlIgogCi0jOiBnaXRrOjgwNzgKKyM6IGdpdGs6OTQ2MgogbXNnaWQgIkRpZmYgZGlzcGxheSBmb250IgogbXNnc3RyICJDYXJhdHRlcmUgcGVyIGRpZmZlcmVuemUiCiAKLSM6IGdpdGs6ODA3OQorIzogZ2l0azo5NDYzCiBtc2dpZCAiVXNlciBpbnRlcmZhY2UgZm9udCIKIG1zZ3N0ciAiQ2FyYXR0ZXJlIHBlciBpbnRlcmZhY2NpYSB1dGVudGUiCiAKLSM6IGdpdGs6ODA5NQorIzogZ2l0azo5NDg4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiR2l0azogY2hvb3NlIGNvbG9yIGZvciAlcyIKIG1zZ3N0ciAiR2l0azogc2NlZ2xpZXJlIHVuIGNvbG9yZSBwZXIgJXMiCiAKLSM6IGdpdGs6ODQ3NgorIzogZ2l0azo5OTM0CiBtc2dpZCAiIgogIlNvcnJ5LCBnaXRrIGNhbm5vdCBydW4gd2l0aCB0aGlzIHZlcnNpb24gb2YgVGNsL1RrLlxuIgogIiBHaXRrIHJlcXVpcmVzIGF0IGxlYXN0IFRjbC9UayA4LjQuIgpAQCAtODQ5LDQyICs4OTEsMjQgQEAKICJRdWVzdGEgdmVyc2lvbmUgZGkgVGNsL1RrIG5vbiBwdcOyIGF2dmlhcmUgZ2l0ay5cbiIKICIgR2l0ayByaWNoaWVkZSBUY2wvVGsgdmVyc2lvbmUgOC40IG8gc3VwZXJpb3JlLiIKIAotIzogZ2l0azo4NTY1CisjOiBnaXRrOjEwMDQ3CiBtc2dpZCAiQ2Fubm90IGZpbmQgYSBnaXQgcmVwb3NpdG9yeSBoZXJlLiIKIG1zZ3N0ciAiQXJjaGl2aW8gZ2l0IG5vbiB0cm92YXRvLiIKIAotIzogZ2l0azo4NTY5CisjOiBnaXRrOjEwMDUxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGZpbmQgdGhlIGdpdCBkaXJlY3RvcnkgXCIlc1wiLiIKIG1zZ3N0ciAiRGlyZWN0b3J5IGdpdCBcIiVzXCIgbm9uIHRyb3ZhdGEuIgogCi0jOiBnaXRrOjg2MTIKKyM6IGdpdGs6MTAwOTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJBbWJpZ3VvdXMgYXJndW1lbnQgJyVzJzogYm90aCByZXZpc2lvbiBhbmQgZmlsZW5hbWUiCiBtc2dzdHIgIkFyZ29tZW50byBhbWJpZ3VvOiAnJXMnIMOoIHNpYSByZXZpc2lvbmUgY2hlIG5vbWUgZGkgZmlsZSIKIAotIzogZ2l0azo4NjI0CisjOiBnaXRrOjEwMTEwCiBtc2dpZCAiQmFkIGFyZ3VtZW50cyB0byBnaXRrOiIKIG1zZ3N0ciAiR2l0azogYXJnb21lbnRpIGVycmF0aToiCiAKLSM6IGdpdGs6ODYzNgotbXNnaWQgIkNvdWxkbid0IGdldCBsaXN0IG9mIHVubWVyZ2VkIGZpbGVzOiIKLW1zZ3N0ciAiSW1wb3NzaWJpbGUgb3R0ZW5lcmUgbCdlbGVuY28gZGVpIGZpbGUgaW4gYXR0ZXNhIGRpIGZ1c2lvbmU6IgotCi0jOiBnaXRrOjg2NTIKLW1zZ2lkICJObyBmaWxlcyBzZWxlY3RlZDogLS1tZXJnZSBzcGVjaWZpZWQgYnV0IG5vIGZpbGVzIGFyZSB1bm1lcmdlZC4iCi1tc2dzdHIgIiIKLSJOZXNzdW4gZmlsZSBzZWxlemlvbmF0bzogw6ggc3RhdGEgc3BlY2lmaWNhdGEgbCdvcHppb25lIC0tbWVyZ2UgbWEgbm9uIGNpICIKLSJzb25vIGZpbGUgaW4gYXR0ZXNhIGRpIGZ1c2lvbmUuIgotCi0jOiBnaXRrOjg2NTUKLW1zZ2lkICIiCi0iTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyB1bm1lcmdlZCBmaWxlcyBhcmUgd2l0aGluIGZpbGUgIgotImxpbWl0LiIKLW1zZ3N0ciAiIgotIk5lc3N1biBmaWxlIHNlbGV6aW9uYXRvOiDDqCBzdGF0YSBzcGVjaWZpY2F0YSBsJ29wemlvbmUgLS1tZXJnZSBtYSBpIGZpbGUgIgotInNwZWNpZmljYXRpIG5vbiBzb25vIGluIGF0dGVzYSBkaSBmdXNpb25lLiIKLQotIzogZ2l0azo4NzE2CisjOiBnaXRrOjEwMTcwCiBtc2dpZCAiQ29tbWFuZCBsaW5lIgogbXNnc3RyICJMaW5lYSBkaSBjb21hbmRvIgpkaWZmIC0tZ2l0IGEvZ2l0ay1naXQvcG8vc3YucG8gYi9naXRrLWdpdC9wby9zdi5wbwppbmRleCBlMWVjZmI3Li45NDdiNTNmIDEwMDY0NAotLS0gYS9naXRrLWdpdC9wby9zdi5wbworKysgYi9naXRrLWdpdC9wby9zdi5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogc3ZcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDgtMDgtMDMgMTg6NTgrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA4LTEwLTE4IDIyOjAzKzExMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTA4LTAzIDE5OjAzKzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IE1pa2FlbCBNYWdudXNzb24gPG1pa2FjaHVAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IFN3ZWRpc2ggPHN2QGxpLm9yZz5cbiIKQEAgLTE2LDE3ICsxNiwxNyBAQAogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKIAotIzogZ2l0azoxMDIKKyM6IGdpdGs6MTEzCiBtc2dpZCAiQ291bGRuJ3QgZ2V0IGxpc3Qgb2YgdW5tZXJnZWQgZmlsZXM6IgogbXNnc3RyICJLdW5kZSBpbnRhIGjDpG10YSBsaXN0YSDDtnZlciBlaiBzYW1tYW5zbGFnbmEgZmlsZXI6IgogCi0jOiBnaXRrOjMyOQorIzogZ2l0azozNDAKIG1zZ2lkICJObyBmaWxlcyBzZWxlY3RlZDogLS1tZXJnZSBzcGVjaWZpZWQgYnV0IG5vIGZpbGVzIGFyZSB1bm1lcmdlZC4iCiBtc2dzdHIgIiIKICJJbmdhIGZpbGVyIHZhbGRlczogLS1tZXJnZSBhbmdhdnMgbWVuIGRldCBmaW5ucyBpbmdhIGZpbGVyIHNvbSBpbnRlIGhhciAiCiAic2xhZ2l0cyBzYW1tYW4uIgogCi0jOiBnaXRrOjMzMgorIzogZ2l0azozNDMKIG1zZ2lkICIiCiAiTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyB1bm1lcmdlZCBmaWxlcyBhcmUgd2l0aGluIGZpbGUgIgogImxpbWl0LiIKQEAgLTM0LDI1NyArMzQsMjYxIEBACiAiSW5nYSBmaWxlciB2YWxkZXM6IC0tbWVyZ2UgYW5nYXZzIG1lbiBkZXQgZmlubnMgaW5nYSBmaWxlciBpbm9tICIKICJmaWxiZWdyw6Ruc25pbmdlbi4iCiAKLSM6IGdpdGs6MzU0CisjOiBnaXRrOjM2NSBnaXRrOjUwMwogbXNnaWQgIkVycm9yIGV4ZWN1dGluZyBnaXQgbG9nOiIKIG1zZ3N0ciAiRmVsIHZpZCBrw7ZybmluZyBhdiBnaXQgbG9nOiIKIAotIzogZ2l0azozNjkKKyM6IGdpdGs6Mzc4CiBtc2dpZCAiUmVhZGluZyIKIG1zZ3N0ciAiTMOkc2VyIgogCi0jOiBnaXRrOjQwMCBnaXRrOjMzNTYKKyM6IGdpdGs6NDM4IGdpdGs6MzQ2MgogbXNnaWQgIlJlYWRpbmcgY29tbWl0cy4uLiIKIG1zZ3N0ciAiTMOkc2VyIGluY2hlY2tuaW5nYXIuLi4iCiAKLSM6IGdpdGs6NDAzIGdpdGs6MTQ4MCBnaXRrOjMzNTkKKyM6IGdpdGs6NDQxIGdpdGs6MTUyOCBnaXRrOjM0NjUKIG1zZ2lkICJObyBjb21taXRzIHNlbGVjdGVkIgogbXNnc3RyICJJbmdhIGluY2hlY2tuaW5nYXIgbWFya2VyYWRlIgogCi0jOiBnaXRrOjEzNTgKKyM6IGdpdGs6MTM5OQogbXNnaWQgIkNhbid0IHBhcnNlIGdpdCBsb2cgb3V0cHV0OiIKIG1zZ3N0ciAiS2FuIGludGUgdG9sa2EgdXRkYXRhIGZyw6VuIGdpdCBsb2c6IgogCi0jOiBnaXRrOjE1NTcKKyM6IGdpdGs6MTYwNQogbXNnaWQgIk5vIGNvbW1pdCBpbmZvcm1hdGlvbiBhdmFpbGFibGUiCiBtc2dzdHIgIkluZ2VuIGluY2hlY2tuaW5nc2luZm9ybWF0aW9uIMOkciB0aWxsZ8OkbmdsaWciCiAKLSM6IGdpdGs6MTY1NCBnaXRrOjE2NzYgZ2l0azozMTUwIGdpdGs6NzYyMCBnaXRrOjkxNDkgZ2l0azo5MzE3CisjOiBnaXRrOjE3MDkgZ2l0azoxNzMxIGdpdGs6MzI1OSBnaXRrOjc3NjQgZ2l0azo5MjkzIGdpdGs6OTQ2NgogbXNnaWQgIk9LIgogbXNnc3RyICJPSyIKIAotIzogZ2l0azoxNjc4IGdpdGs6MzE1MSBnaXRrOjcyOTYgZ2l0azo3MzY3IGdpdGs6NzQ3MCBnaXRrOjc1MTYgZ2l0azo3NjIyCi0jOiBnaXRrOjkxNTAgZ2l0azo5MzE4CisjOiBnaXRrOjE3MzMgZ2l0azozMjYwIGdpdGs6NzQzOSBnaXRrOjc1MTAgZ2l0azo3NjEzIGdpdGs6NzY2MCBnaXRrOjc3NjYKKyM6IGdpdGs6OTI5NCBnaXRrOjk0NjcKIG1zZ2lkICJDYW5jZWwiCiBtc2dzdHIgIkF2YnJ5dCIKIAotIzogZ2l0azoxNzE2Ci1tc2dpZCAiRmlsZSIKLW1zZ3N0ciAiQXJraXYiCi0KLSM6IGdpdGs6MTcxOAorIzogZ2l0azoxODExCiBtc2dpZCAiVXBkYXRlIgogbXNnc3RyICJVcHBkYXRlcmEiCiAKLSM6IGdpdGs6MTcxOQorIzogZ2l0azoxODEyCiBtc2dpZCAiUmVsb2FkIgogbXNnc3RyICJMYWRkYSBvbSIKIAotIzogZ2l0azoxNzIwCisjOiBnaXRrOjE4MTMKIG1zZ2lkICJSZXJlYWQgcmVmZXJlbmNlcyIKIG1zZ3N0ciAiTMOkcyBvbSByZWZlcmVuc2VyIgogCi0jOiBnaXRrOjE3MjEKKyM6IGdpdGs6MTgxNAogbXNnaWQgIkxpc3QgcmVmZXJlbmNlcyIKIG1zZ3N0ciAiVmlzYSByZWZlcmVuc2VyIgogCi0jOiBnaXRrOjE3MjIKKyM6IGdpdGs6MTgxNQogbXNnaWQgIlF1aXQiCiBtc2dzdHIgIkF2c2x1dGEiCiAKLSM6IGdpdGs6MTcyNAotbXNnaWQgIkVkaXQiCi1tc2dzdHIgIlJlZGlnZXJhIgorIzogZ2l0azoxODEwCittc2dpZCAiRmlsZSIKK21zZ3N0ciAiQXJraXYiCiAKLSM6IGdpdGs6MTcyNQorIzogZ2l0azoxODE4CiBtc2dpZCAiUHJlZmVyZW5jZXMiCiBtc2dzdHIgIkluc3TDpGxsbmluZ2FyIgogCi0jOiBnaXRrOjE3MjggZ2l0azozMDg3Ci1tc2dpZCAiVmlldyIKLW1zZ3N0ciAiVmlzYSIKKyM6IGdpdGs6MTgxNworbXNnaWQgIkVkaXQiCittc2dzdHIgIlJlZGlnZXJhIgogCi0jOiBnaXRrOjE3MjkKKyM6IGdpdGs6MTgyMQogbXNnaWQgIk5ldyB2aWV3Li4uIgogbXNnc3RyICJOeSB2eS4uLiIKIAotIzogZ2l0azoxNzMwIGdpdGs6MzI5OCBnaXRrOjk5MzIKKyM6IGdpdGs6MTgyMgogbXNnaWQgIkVkaXQgdmlldy4uLiIKIG1zZ3N0ciAiw4RuZHJhIHZ5Li4uIgogCi0jOiBnaXRrOjE3MzIgZ2l0azozMjk5IGdpdGs6OTkzMworIzogZ2l0azoxODIzCiBtc2dpZCAiRGVsZXRlIHZpZXciCiBtc2dzdHIgIlRhIGJvcnQgdnkiCiAKLSM6IGdpdGs6MTczNAorIzogZ2l0azoxODI1CiBtc2dpZCAiQWxsIGZpbGVzIgogbXNnc3RyICJBbGxhIGZpbGVyIgogCi0jOiBnaXRrOjE3MzgKLW1zZ2lkICJIZWxwIgotbXNnc3RyICJIasOkbHAiCisjOiBnaXRrOjE4MjAgZ2l0azozMTk2Cittc2dpZCAiVmlldyIKK21zZ3N0ciAiVmlzYSIKIAotIzogZ2l0azoxNzM5IGdpdGs6MjM5OQorIzogZ2l0azoxODI4IGdpdGs6MjQ4NwogbXNnaWQgIkFib3V0IGdpdGsiCiBtc2dzdHIgIk9tIGdpdGsiCiAKLSM6IGdpdGs6MTc0MAorIzogZ2l0azoxODI5CiBtc2dpZCAiS2V5IGJpbmRpbmdzIgogbXNnc3RyICJUYW5nZW50Ym9yZHNiaW5kbmluZ2FyIgogCi0jOiBnaXRrOjE3OTcKKyM6IGdpdGs6MTgyNworbXNnaWQgIkhlbHAiCittc2dzdHIgIkhqw6RscCIKKworIzogZ2l0azoxODg3CiBtc2dpZCAiU0hBMSBJRDogIgogbXNnc3RyICJTSEExLWlkOiAiCiAKLSM6IGdpdGs6MTgyOAorIzogZ2l0azoxOTE4CiBtc2dpZCAiUm93IgogbXNnc3RyICJSYWQiCiAKLSM6IGdpdGs6MTg1OQorIzogZ2l0azoxOTQ5CiBtc2dpZCAiRmluZCIKIG1zZ3N0ciAiU8O2ayIKIAotIzogZ2l0azoxODYwCisjOiBnaXRrOjE5NTAKIG1zZ2lkICJuZXh0IgogbXNnc3RyICJuw6RzdGEiCiAKLSM6IGdpdGs6MTg2MQorIzogZ2l0azoxOTUxCiBtc2dpZCAicHJldiIKIG1zZ3N0ciAiZsO2cmVnIgogCi0jOiBnaXRrOjE4NjIKKyM6IGdpdGs6MTk1MgogbXNnaWQgImNvbW1pdCIKIG1zZ3N0ciAiaW5jaGVja25pbmciCiAKLSM6IGdpdGs6MTg2NSBnaXRrOjE4NjcgZ2l0azozNTExIGdpdGs6MzUzNCBnaXRrOjM1NTggZ2l0azo1NDQxIGdpdGs6NTUxMgorIzogZ2l0azoxOTU1IGdpdGs6MTk1NyBnaXRrOjM2MTcgZ2l0azozNjQwIGdpdGs6MzY2NCBnaXRrOjU1NTAgZ2l0azo1NjIxCiBtc2dpZCAiY29udGFpbmluZzoiCiBtc2dzdHIgInNvbSBpbm5laMOlbGxlcjoiCiAKLSM6IGdpdGs6MTg2OCBnaXRrOjI4NjYgZ2l0azoyODcxIGdpdGs6MzU4NgorIzogZ2l0azoxOTU4IGdpdGs6Mjk1NCBnaXRrOjI5NTkgZ2l0azozNjkyCiBtc2dpZCAidG91Y2hpbmcgcGF0aHM6IgogbXNnc3RyICJzb20gcsO2ciBzw7ZrdsOkZzoiCiAKLSM6IGdpdGs6MTg2OSBnaXRrOjM1OTEKKyM6IGdpdGs6MTk1OSBnaXRrOjM2OTcKIG1zZ2lkICJhZGRpbmcvcmVtb3Zpbmcgc3RyaW5nOiIKIG1zZ3N0ciAic29tIGzDpGdnZXIvdGlsbCB0YXIgYm9ydCBzdHLDpG5nOiIKIAotIzogZ2l0azoxODc4IGdpdGs6MTg4MAorIzogZ2l0azoxOTY4IGdpdGs6MTk3MAogbXNnaWQgIkV4YWN0IgogbXNnc3RyICJFeGFrdCIKIAotIzogZ2l0azoxODgwIGdpdGs6MzY2NyBnaXRrOjU0MDkKKyM6IGdpdGs6MTk3MCBnaXRrOjM3NzMgZ2l0azo1NTE4CiBtc2dpZCAiSWduQ2FzZSIKIG1zZ3N0ciAiSWduVmVyc2FsZXIiCiAKLSM6IGdpdGs6MTg4MCBnaXRrOjM1NjAgZ2l0azozNjY1IGdpdGs6NTQwNQorIzogZ2l0azoxOTcwIGdpdGs6MzY2NiBnaXRrOjM3NzEgZ2l0azo1NTE0CiBtc2dpZCAiUmVnZXhwIgogbXNnc3RyICJSZWcudXR0ci4iCiAKLSM6IGdpdGs6MTg4MiBnaXRrOjE4ODMgZ2l0azozNjg2IGdpdGs6MzcxNiBnaXRrOjM3MjMgZ2l0azo1NTMyIGdpdGs6NTU5OQorIzogZ2l0azoxOTcyIGdpdGs6MTk3MyBnaXRrOjM3OTIgZ2l0azozODIyIGdpdGs6MzgyOSBnaXRrOjU2NDEgZ2l0azo1NzA4CiBtc2dpZCAiQWxsIGZpZWxkcyIKIG1zZ3N0ciAiQWxsYSBmw6RsdCIKIAotIzogZ2l0azoxODgzIGdpdGs6MzY4NCBnaXRrOjM3MTYgZ2l0azo1NDcxCisjOiBnaXRrOjE5NzMgZ2l0azozNzkwIGdpdGs6MzgyMiBnaXRrOjU1ODAKIG1zZ2lkICJIZWFkbGluZSIKIG1zZ3N0ciAiUnVicmlrIgogCi0jOiBnaXRrOjE4ODQgZ2l0azozNjg0IGdpdGs6NTQ3MSBnaXRrOjU1OTkgZ2l0azo2MDAwCisjOiBnaXRrOjE5NzQgZ2l0azozNzkwIGdpdGs6NTU4MCBnaXRrOjU3MDggZ2l0azo2MTA5CiBtc2dpZCAiQ29tbWVudHMiCiBtc2dzdHIgIktvbW1lbnRhcmVyIgogCi0jOiBnaXRrOjE4ODQgZ2l0azozNjg0IGdpdGs6MzY4OCBnaXRrOjM3MjMgZ2l0azo1NDcxIGdpdGs6NTkzNiBnaXRrOjcxNDIKLSM6IGdpdGs6NzE1NworIzogZ2l0azoxOTc0IGdpdGs6Mzc5MCBnaXRrOjM3OTQgZ2l0azozODI5IGdpdGs6NTU4MCBnaXRrOjYwNDUgZ2l0azo3Mjg1CisjOiBnaXRrOjczMDAKIG1zZ2lkICJBdXRob3IiCiBtc2dzdHIgIkbDtnJmYXR0YXJlIgogCi0jOiBnaXRrOjE4ODQgZ2l0azozNjg0IGdpdGs6NTQ3MSBnaXRrOjU5MzgKKyM6IGdpdGs6MTk3NCBnaXRrOjM3OTAgZ2l0azo1NTgwIGdpdGs6NjA0NwogbXNnaWQgIkNvbW1pdHRlciIKIG1zZ3N0ciAiSW5jaGVja2FyZSIKIAotIzogZ2l0azoxOTEzCisjOiBnaXRrOjIwMDMKIG1zZ2lkICJTZWFyY2giCiBtc2dzdHIgIlPDtmsiCiAKLSM6IGdpdGs6MTkyMAorIzogZ2l0azoyMDEwCiBtc2dpZCAiRGlmZiIKIG1zZ3N0ciAiRGlmZiIKIAotIzogZ2l0azoxOTIyCisjOiBnaXRrOjIwMTIKIG1zZ2lkICJPbGQgdmVyc2lvbiIKIG1zZ3N0ciAiR2FtbWFsIHZlcnNpb24iCiAKLSM6IGdpdGs6MTkyNAorIzogZ2l0azoyMDE0CiBtc2dpZCAiTmV3IHZlcnNpb24iCiBtc2dzdHIgIk55IHZlcnNpb24iCiAKLSM6IGdpdGs6MTkyNgorIzogZ2l0azoyMDE2CiBtc2dpZCAiTGluZXMgb2YgY29udGV4dCIKIG1zZ3N0ciAiUmFkZXIgc2FtbWFuaGFuZyIKIAotIzogZ2l0azoxOTM2CisjOiBnaXRrOjIwMjYKIG1zZ2lkICJJZ25vcmUgc3BhY2UgY2hhbmdlIgogbXNnc3RyICJJZ25vcmVyYSDDpG5kcmluZ2FyIGkgYmxhbmtzdGVnIgogCi0jOiBnaXRrOjE5OTQKKyM6IGdpdGs6MjA4NAogbXNnaWQgIlBhdGNoIgogbXNnc3RyICJQYXRjaCIKIAotIzogZ2l0azoxOTk2CisjOiBnaXRrOjIwODYKIG1zZ2lkICJUcmVlIgogbXNnc3RyICJUcsOkZCIKIAotIzogZ2l0azoyMTIxIGdpdGs6MjEzNiBnaXRrOjcyMTEKKyM6IGdpdGs6MjIxMyBnaXRrOjIyMjYKIG1zZ2lkICJEaWZmIHRoaXMgLT4gc2VsZWN0ZWQiCiBtc2dzdHIgIkRpZmYgZGVubmEgLT4gbWFya2VyYWQiCiAKLSM6IGdpdGs6MjEyMyBnaXRrOjIxMzggZ2l0azo3MjEyCisjOiBnaXRrOjIyMTQgZ2l0azoyMjI3CiBtc2dpZCAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIgogbXNnc3RyICJEaWZmIG1hcmtlcmFkIC0+IGRlbm5hIgogCi0jOiBnaXRrOjIxMjUgZ2l0azoyMTQwIGdpdGs6NzIxMworIzogZ2l0azoyMjE1IGdpdGs6MjIyOAogbXNnaWQgIk1ha2UgcGF0Y2giCiBtc2dzdHIgIlNrYXBhIHBhdGNoIgogCi0jOiBnaXRrOjIxMjYgZ2l0azo3MzUxCisjOiBnaXRrOjIyMTYgZ2l0azo3NDk0CiBtc2dpZCAiQ3JlYXRlIHRhZyIKIG1zZ3N0ciAiU2thcGEgdGFnZyIKIAotIzogZ2l0azoyMTI3IGdpdGs6NzQ1MAorIzogZ2l0azoyMjE3IGdpdGs6NzU5MwogbXNnaWQgIldyaXRlIGNvbW1pdCB0byBmaWxlIgogbXNnc3RyICJTa3JpdiBpbmNoZWNrbmluZyB0aWxsIGZpbCIKIAotIzogZ2l0azoyMTI4IGdpdGs6NzUwNAorIzogZ2l0azoyMjE4IGdpdGs6NzY0NwogbXNnaWQgIkNyZWF0ZSBuZXcgYnJhbmNoIgogbXNnc3RyICJTa2FwYSBueSBncmVuIgogCi0jOiBnaXRrOjIxMjkKKyM6IGdpdGs6MjIxOQogbXNnaWQgIkNoZXJyeS1waWNrIHRoaXMgY29tbWl0IgogbXNnc3RyICJQbG9ja2EgZGVubmEgaW5jaGVja25pbmciCiAKLSM6IGdpdGs6MjEzMQorIzogZ2l0azoyMjIwCiBtc2dpZCAiUmVzZXQgSEVBRCBicmFuY2ggdG8gaGVyZSIKIG1zZ3N0ciAiw4V0ZXJzdMOkbGwgSEVBRC1ncmVuZW4gaGl0IgogCi0jOiBnaXRrOjIxNDcKKyM6IGdpdGs6MjIzNAogbXNnaWQgIkNoZWNrIG91dCB0aGlzIGJyYW5jaCIKIG1zZ3N0ciAiQ2hlY2thIHV0IGRlbm5hIGdyZW4iCiAKLSM6IGdpdGs6MjE0OQorIzogZ2l0azoyMjM1CiBtc2dpZCAiUmVtb3ZlIHRoaXMgYnJhbmNoIgogbXNnc3RyICJUYSBib3J0IGRlbm5hIGdyZW4iCiAKLSM6IGdpdGs6MjE1NQorIzogZ2l0azoyMjQyCiBtc2dpZCAiSGlnaGxpZ2h0IHRoaXMgdG9vIgogbXNnc3RyICJNYXJrZXJhIMOkdmVuIGRldHRhIgogCi0jOiBnaXRrOjIxNTcKKyM6IGdpdGs6MjI0MwogbXNnaWQgIkhpZ2hsaWdodCB0aGlzIG9ubHkiCiBtc2dzdHIgIk1hcmtlcmEgYmFyYSBkZXR0YSIKIAotIzogZ2l0azoyMTU5CisjOiBnaXRrOjIyNDQKIG1zZ2lkICJFeHRlcm5hbCBkaWZmIgogbXNnc3RyICJFeHRlcm4gZGlmZiIKIAotIzogZ2l0azoyNDAwCisjOiBnaXRrOjIyNDUKK21zZ2lkICJCbGFtZSBwYXJlbnQgY29tbWl0IgorbXNnc3RyICIiCisKKyM6IGdpdGs6MjQ4OAogbXNnaWQgIiIKICJcbiIKICJHaXRrIC0gYSBjb21taXQgdmlld2VyIGZvciBnaXRcbiIKQEAgLTMwMCw0MjcgKzMwNCw0MjcgQEAKICJcbiIKICJBbnbDpG5kIG9jaCB2aWRhcmVmw7ZybWVkbGEgZW5saWd0IHZpbGxrb3JlbiBpIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIgogCi0jOiBnaXRrOjI0MDggZ2l0azoyNDY5IGdpdGs6Nzc5OQorIzogZ2l0azoyNDk2IGdpdGs6MjU1NyBnaXRrOjc5NDMKIG1zZ2lkICJDbG9zZSIKIG1zZ3N0ciAiU3TDpG5nIgogCi0jOiBnaXRrOjI0MjcKKyM6IGdpdGs6MjUxNQogbXNnaWQgIkdpdGsga2V5IGJpbmRpbmdzIgogbXNnc3RyICJUYW5nZW50Ym9yZHNiaW5kbmluZ2FyIGbDtnIgR2l0ayIKIAotIzogZ2l0azoyNDI5CisjOiBnaXRrOjI1MTcKIG1zZ2lkICJHaXRrIGtleSBiaW5kaW5nczoiCiBtc2dzdHIgIlRhbmdlbnRib3Jkc2JpbmRuaW5nYXIgZsO2ciBHaXRrOiIKIAotIzogZ2l0azoyNDMxCisjOiBnaXRrOjI1MTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUT5cdFx0UXVpdCIKIG1zZ3N0ciAiPCVzLVE+XHRcdEF2c2x1dGEiCiAKLSM6IGdpdGs6MjQzMgorIzogZ2l0azoyNTIwCiBtc2dpZCAiPEhvbWU+XHRcdE1vdmUgdG8gZmlyc3QgY29tbWl0IgogbXNnc3RyICI8SG9tZT5cdFx0R8OlIHRpbGwgZsO2cnN0YSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyNDMzCisjOiBnaXRrOjI1MjEKIG1zZ2lkICI8RW5kPlx0XHRNb3ZlIHRvIGxhc3QgY29tbWl0IgogbXNnc3RyICI8RW5kPlx0XHRHw6UgdGlsbCBzaXN0YSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyNDM0CisjOiBnaXRrOjI1MjIKIG1zZ2lkICI8VXA+LCBwLCBpXHRNb3ZlIHVwIG9uZSBjb21taXQiCiBtc2dzdHIgIjxVcHA+LCBwLCBpXHRHw6UgZW4gaW5jaGVja25pbmcgdXBwIgogCi0jOiBnaXRrOjI0MzUKKyM6IGdpdGs6MjUyMwogbXNnaWQgIjxEb3duPiwgbiwga1x0TW92ZSBkb3duIG9uZSBjb21taXQiCiBtc2dzdHIgIjxOZWQ+LCBuLCBrXHRHw6UgZW4gaW5jaGVja25pbmcgbmVkIgogCi0jOiBnaXRrOjI0MzYKKyM6IGdpdGs6MjUyNAogbXNnaWQgIjxMZWZ0Piwgeiwgalx0R28gYmFjayBpbiBoaXN0b3J5IGxpc3QiCiBtc2dzdHIgIjxWw6Ruc3Rlcj4sIHosIGpcdEfDpSBiYWvDpXQgaSBoaXN0b3Jpa2VuIgogCi0jOiBnaXRrOjI0MzcKKyM6IGdpdGs6MjUyNQogbXNnaWQgIjxSaWdodD4sIHgsIGxcdEdvIGZvcndhcmQgaW4gaGlzdG9yeSBsaXN0IgogbXNnc3RyICI8SMO2Z2VyPiwgeCwgbFx0R8OlIGZyYW3DpXQgaSBoaXN0b3Jpa2VuIgogCi0jOiBnaXRrOjI0MzgKKyM6IGdpdGs6MjUyNgogbXNnaWQgIjxQYWdlVXA+XHRNb3ZlIHVwIG9uZSBwYWdlIGluIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8UGFnZVVwPlx0R8OlIHVwcCBlbiBzaWRhIGkgaW5jaGVja25pbmdzbGlzdGFuIgogCi0jOiBnaXRrOjI0MzkKKyM6IGdpdGs6MjUyNwogbXNnaWQgIjxQYWdlRG93bj5cdE1vdmUgZG93biBvbmUgcGFnZSBpbiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPFBhZ2VEb3duPlx0R8OlIG5lZCBlbiBzaWRhIGkgaW5jaGVja25pbmdzbGlzdGFuIgogCi0jOiBnaXRrOjI0NDAKKyM6IGdpdGs6MjUyOAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1Ib21lPlx0U2Nyb2xsIHRvIHRvcCBvZiBjb21taXQgbGlzdCIKIG1zZ3N0ciAiPCVzLUhvbWU+XHRSdWxsYSB0aWxsIGLDtnJqYW4gYXYgaW5jaGVja25pbmdzbGlzdGFuIgogCi0jOiBnaXRrOjI0NDEKKyM6IGdpdGs6MjUyOQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1FbmQ+XHRTY3JvbGwgdG8gYm90dG9tIG9mIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8JXMtRW5kPlx0UnVsbGEgdGlsbCBzbHV0ZXQgYXYgaW5jaGVja25pbmdzbGlzdGFuIgogCi0jOiBnaXRrOjI0NDIKKyM6IGdpdGs6MjUzMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1VcD5cdFNjcm9sbCBjb21taXQgbGlzdCB1cCBvbmUgbGluZSIKIG1zZ3N0ciAiPCVzLVVwcD5cdFJ1bGxhIGluY2hlY2tuaW5nc2xpc3RhbiB1cHAgZXR0IHN0ZWciCiAKLSM6IGdpdGs6MjQ0MworIzogZ2l0azoyNTMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLURvd24+XHRTY3JvbGwgY29tbWl0IGxpc3QgZG93biBvbmUgbGluZSIKIG1zZ3N0ciAiPCVzLU5lZD5cdFJ1bGxhIGluY2hlY2tuaW5nc2xpc3RhbiBuZWQgZXR0IHN0ZWciCiAKLSM6IGdpdGs6MjQ0NAorIzogZ2l0azoyNTMyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVBhZ2VVcD5cdFNjcm9sbCBjb21taXQgbGlzdCB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPCVzLVBhZ2VVcD5cdFJ1bGxhIGluY2hlY2tuaW5nc2xpc3RhbiB1cHAgZW4gc2lkYSIKIAotIzogZ2l0azoyNDQ1CisjOiBnaXRrOjI1MzMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUGFnZURvd24+XHRTY3JvbGwgY29tbWl0IGxpc3QgZG93biBvbmUgcGFnZSIKIG1zZ3N0ciAiPCVzLVBhZ2VEb3duPlx0UnVsbGEgaW5jaGVja25pbmdzbGlzdGFuIG5lZCBlbiBzaWRhIgogCi0jOiBnaXRrOjI0NDYKKyM6IGdpdGs6MjUzNAogbXNnaWQgIjxTaGlmdC1VcD5cdEZpbmQgYmFja3dhcmRzICh1cHdhcmRzLCBsYXRlciBjb21taXRzKSIKIG1zZ3N0ciAiPFNraWZ0LVVwcD5cdFPDtmsgYmFrw6V0ICh1cHDDpXQsIHNlbmFyZSBpbmNoZWNrbmluZ2FyKSIKIAotIzogZ2l0azoyNDQ3CisjOiBnaXRrOjI1MzUKIG1zZ2lkICI8U2hpZnQtRG93bj5cdEZpbmQgZm9yd2FyZHMgKGRvd253YXJkcywgZWFybGllciBjb21taXRzKSIKIG1zZ3N0ciAiPFNraWZ0LU5lZD5cdFPDtmsgZnJhbcOldCAobmVkw6V0LCB0aWRpZ2FyZSBpbmNoZWNrbmluZ2FyKSIKIAotIzogZ2l0azoyNDQ4CisjOiBnaXRrOjI1MzYKIG1zZ2lkICI8RGVsZXRlPiwgYlx0U2Nyb2xsIGRpZmYgdmlldyB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPERlbGV0ZT4sIGJcdFJ1bGxhIGRpZmZ2aXNuaW5nZW4gdXBwIGVuIHNpZGEiCiAKLSM6IGdpdGs6MjQ0OQorIzogZ2l0azoyNTM3CiBtc2dpZCAiPEJhY2tzcGFjZT5cdFNjcm9sbCBkaWZmIHZpZXcgdXAgb25lIHBhZ2UiCiBtc2dzdHIgIjxCYWtzdGVnPlx0UnVsbGEgZGlmZnZpc25pbmdlbiB1cHAgZW4gc2lkYSIKIAotIzogZ2l0azoyNDUwCisjOiBnaXRrOjI1MzgKIG1zZ2lkICI8U3BhY2U+XHRcdFNjcm9sbCBkaWZmIHZpZXcgZG93biBvbmUgcGFnZSIKIG1zZ3N0ciAiPEJsYW5rc3RlZz5cdFJ1bGxhIGRpZmZ2aXNuaW5nZW4gbmVkIGVuIHNpZGEiCiAKLSM6IGdpdGs6MjQ1MQorIzogZ2l0azoyNTM5CiBtc2dpZCAidVx0XHRTY3JvbGwgZGlmZiB2aWV3IHVwIDE4IGxpbmVzIgogbXNnc3RyICJ1XHRcdFJ1bGxhIGRpZmZ2aXNuaW5nZW4gdXBwIDE4IHJhZGVyIgogCi0jOiBnaXRrOjI0NTIKKyM6IGdpdGs6MjU0MAogbXNnaWQgImRcdFx0U2Nyb2xsIGRpZmYgdmlldyBkb3duIDE4IGxpbmVzIgogbXNnc3RyICJkXHRcdFJ1bGxhIGRpZmZ2aXNuaW5nZW4gbmVkIDE4IHJhZGVyIgogCi0jOiBnaXRrOjI0NTMKKyM6IGdpdGs6MjU0MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1GPlx0XHRGaW5kIgogbXNnc3RyICI8JXMtRj5cdFx0U8O2ayIKIAotIzogZ2l0azoyNDU0CisjOiBnaXRrOjI1NDIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRz5cdFx0TW92ZSB0byBuZXh0IGZpbmQgaGl0IgogbXNnc3RyICI8JXMtRz5cdFx0R8OlIHRpbGwgbsOkc3RhIHPDtmt0csOkZmYiCiAKLSM6IGdpdGs6MjQ1NQorIzogZ2l0azoyNTQzCiBtc2dpZCAiPFJldHVybj5cdE1vdmUgdG8gbmV4dCBmaW5kIGhpdCIKIG1zZ3N0ciAiPFJldHVybj5cdFx0R8OlIHRpbGwgbsOkc3RhIHPDtmt0csOkZmYiCiAKLSM6IGdpdGs6MjQ1NgorIzogZ2l0azoyNTQ0CiBtc2dpZCAiL1x0XHRNb3ZlIHRvIG5leHQgZmluZCBoaXQsIG9yIHJlZG8gZmluZCIKIG1zZ3N0ciAiL1x0XHRHw6UgdGlsbCBuw6RzdGEgc8O2a3Ryw6RmZiwgZWxsZXIgc8O2ayBww6Ugbnl0dCIKIAotIzogZ2l0azoyNDU3CisjOiBnaXRrOjI1NDUKIG1zZ2lkICI/XHRcdE1vdmUgdG8gcHJldmlvdXMgZmluZCBoaXQiCiBtc2dzdHIgIj9cdFx0R8OlIHRpbGwgZsO2cmVnw6VlbmRlIHPDtmt0csOkZmYiCiAKLSM6IGdpdGs6MjQ1OAorIzogZ2l0azoyNTQ2CiBtc2dpZCAiZlx0XHRTY3JvbGwgZGlmZiB2aWV3IHRvIG5leHQgZmlsZSIKIG1zZ3N0ciAiZlx0XHRSdWxsYSBkaWZmdmlzbmluZ2VuIHRpbGwgbsOkc3RhIGZpbCIKIAotIzogZ2l0azoyNDU5CisjOiBnaXRrOjI1NDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUz5cdFx0U2VhcmNoIGZvciBuZXh0IGhpdCBpbiBkaWZmIHZpZXciCiBtc2dzdHIgIjwlcy1TPlx0XHRHw6UgdGlsbCBuw6RzdGEgc8O2a3Ryw6RmZiBpIGRpZmZ2aXNuaW5nZW4iCiAKLSM6IGdpdGs6MjQ2MAorIzogZ2l0azoyNTQ4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVI+XHRcdFNlYXJjaCBmb3IgcHJldmlvdXMgaGl0IGluIGRpZmYgdmlldyIKIG1zZ3N0ciAiPCVzLVI+XHRcdEfDpSB0aWxsIGbDtnJlZ8OlZW5kZSBzw7ZrdHLDpGZmIGkgZGlmZnZpc25pbmdlbiIKIAotIzogZ2l0azoyNDYxCisjOiBnaXRrOjI1NDkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtS1ArPlx0SW5jcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtTnVtKz5cdMOWa2EgdGVja2Vuc3RvcmxlayIKIAotIzogZ2l0azoyNDYyCisjOiBnaXRrOjI1NTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtcGx1cz5cdEluY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLXBsdXM+XHTDlmthIHRlY2tlbnN0b3JsZWsiCiAKLSM6IGdpdGs6MjQ2MworIzogZ2l0azoyNTUxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUtQLT5cdERlY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLU51bS0+XHRNaW5za2EgdGVja2Vuc3RvcmxlayIKIAotIzogZ2l0azoyNDY0CisjOiBnaXRrOjI1NTIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtbWludXM+XHREZWNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1taW51cz5cdE1pbnNrYSB0ZWNrZW5zdG9ybGVrIgogCi0jOiBnaXRrOjI0NjUKKyM6IGdpdGs6MjU1MwogbXNnaWQgIjxGNT5cdFx0VXBkYXRlIgogbXNnc3RyICI8RjU+XHRcdFVwcGRhdGVyYSIKIAotIzogZ2l0azozMDkxCisjOiBnaXRrOjMyMDAKIG1zZ2lkICJHaXRrIHZpZXcgZGVmaW5pdGlvbiIKIG1zZ3N0ciAiRGVmaW5pdGlvbiBhdiBHaXRrLXZ5IgogCi0jOiBnaXRrOjMxMTYKKyM6IGdpdGs6MzIyNQogbXNnaWQgIk5hbWUiCiBtc2dzdHIgIk5hbW4iCiAKLSM6IGdpdGs6MzExOQorIzogZ2l0azozMjI4CiBtc2dpZCAiUmVtZW1iZXIgdGhpcyB2aWV3IgogbXNnc3RyICJTcGFyYSBkZW5uYSB2eSIKIAotIzogZ2l0azozMTIzCisjOiBnaXRrOjMyMzIKIG1zZ2lkICJDb21taXRzIHRvIGluY2x1ZGUgKGFyZ3VtZW50cyB0byBnaXQgbG9nKToiCiBtc2dzdHIgIkluY2hlY2tuaW5nYXIgYXR0IHRhIG1lZCAoYXJndW1lbnQgdGlsbCBnaXQgbG9nKToiCiAKLSM6IGdpdGs6MzEzMAorIzogZ2l0azozMjM5CiBtc2dpZCAiQ29tbWFuZCB0byBnZW5lcmF0ZSBtb3JlIGNvbW1pdHMgdG8gaW5jbHVkZToiCiBtc2dzdHIgIktvbW1hbmRvIGbDtnIgYXR0IGdlbmVyZXJhIGZsZXIgaW5jaGVja25pbmdhciBhdHQgdGEgbWVkOiIKIAotIzogZ2l0azozMTM3CisjOiBnaXRrOjMyNDYKIG1zZ2lkICJFbnRlciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZSwgb25lIHBlciBsaW5lOiIKIG1zZ3N0ciAiQW5nZSBmaWxlciBvY2gga2F0YWxvZ2VyIGF0dCB0YSBtZWQsIGVuIHBlciByYWQ6IgogCi0jOiBnaXRrOjMxODQKKyM6IGdpdGs6MzI5MwogbXNnaWQgIkVycm9yIGluIGNvbW1pdCBzZWxlY3Rpb24gYXJndW1lbnRzOiIKIG1zZ3N0ciAiRmVsIGkgYXJndW1lbnQgZsO2ciB2YWwgYXYgaW5jaGVja25pbmdhcjoiCiAKLSM6IGdpdGs6MzIzOCBnaXRrOjMyOTAgZ2l0azozNzM2IGdpdGs6Mzc1MCBnaXRrOjQ5NTEgZ2l0azo5ODk2IGdpdGs6OTg5NworIzogZ2l0azozMzQ3IGdpdGs6MzM5OSBnaXRrOjM4NDIgZ2l0azozODU2IGdpdGs6NTA2MCBnaXRrOjEwMTQxIGdpdGs6MTAxNDIKIG1zZ2lkICJOb25lIgogbXNnc3RyICJJbmdldCIKIAotIzogZ2l0azozNjg0IGdpdGs6NTQ3MSBnaXRrOjcxNDQgZ2l0azo3MTU5CisjOiBnaXRrOjM3OTAgZ2l0azo1NTgwIGdpdGs6NzI4NyBnaXRrOjczMDIKIG1zZ2lkICJEYXRlIgogbXNnc3RyICJEYXR1bSIKIAotIzogZ2l0azozNjg0IGdpdGs6NTQ3MQorIzogZ2l0azozNzkwIGdpdGs6NTU4MAogbXNnaWQgIkNEYXRlIgogbXNnc3RyICJTa2FwYXQgZGF0dW0iCiAKLSM6IGdpdGs6MzgzMyBnaXRrOjM4MzgKKyM6IGdpdGs6MzkzOSBnaXRrOjM5NDQKIG1zZ2lkICJEZXNjZW5kYW50IgogbXNnc3RyICJBdmtvbWxpbmciCiAKLSM6IGdpdGs6MzgzNAorIzogZ2l0azozOTQwCiBtc2dpZCAiTm90IGRlc2NlbmRhbnQiCiBtc2dzdHIgIkludGUgYXZrb21saW5nIgogCi0jOiBnaXRrOjM4NDEgZ2l0azozODQ2CisjOiBnaXRrOjM5NDcgZ2l0azozOTUyCiBtc2dpZCAiQW5jZXN0b3IiCiBtc2dzdHIgIkbDtnJmYWRlciIKIAotIzogZ2l0azozODQyCisjOiBnaXRrOjM5NDgKIG1zZ2lkICJOb3QgYW5jZXN0b3IiCiBtc2dzdHIgIkludGUgZsO2cmZhZGVyIgogCi0jOiBnaXRrOjQwNzgKKyM6IGdpdGs6NDE4NwogbXNnaWQgIkxvY2FsIGNoYW5nZXMgY2hlY2tlZCBpbiB0byBpbmRleCBidXQgbm90IGNvbW1pdHRlZCIKIG1zZ3N0ciAiTG9rYWxhIMOkbmRyaW5nYXIgc3BhcmFkZSBpIGluZGV4ZXQgbWVuIGludGUgaW5jaGVja2FkZSIKIAotIzogZ2l0azo0MTExCisjOiBnaXRrOjQyMjAKIG1zZ2lkICJMb2NhbCB1bmNvbW1pdHRlZCBjaGFuZ2VzLCBub3QgY2hlY2tlZCBpbiB0byBpbmRleCIKIG1zZ3N0ciAiTG9rYWxhIMOkbmRyaW5nYXIsIGVqIHNwYXJhZGUgaSBpbmRleGV0IgogCi0jOiBnaXRrOjU0NDAKKyM6IGdpdGs6NTU0OQogbXNnaWQgIlNlYXJjaGluZyIKIG1zZ3N0ciAiU8O2a2VyIgogCi0jOiBnaXRrOjU5NDAKKyM6IGdpdGs6NjA0OQogbXNnaWQgIlRhZ3M6IgogbXNnc3RyICJUYWdnYXI6IgogCi0jOiBnaXRrOjU5NTcgZ2l0azo1OTYzIGdpdGs6NzEzNworIzogZ2l0azo2MDY2IGdpdGs6NjA3MiBnaXRrOjcyODAKIG1zZ2lkICJQYXJlbnQiCiBtc2dzdHIgIkbDtnLDpGxkZXIiCiAKLSM6IGdpdGs6NTk2OAorIzogZ2l0azo2MDc3CiBtc2dpZCAiQ2hpbGQiCiBtc2dzdHIgIkJhcm4iCiAKLSM6IGdpdGs6NTk3NworIzogZ2l0azo2MDg2CiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJHcmVuIgogCi0jOiBnaXRrOjU5ODAKKyM6IGdpdGs6NjA4OQogbXNnaWQgIkZvbGxvd3MiCiBtc2dzdHIgIkbDtmxqZXIiCiAKLSM6IGdpdGs6NTk4MworIzogZ2l0azo2MDkyCiBtc2dpZCAiUHJlY2VkZXMiCiBtc2dzdHIgIkbDtnJlZ8OlciIKIAotIzogZ2l0azo2MjY3CisjOiBnaXRrOjYzNzgKIG1zZ2lkICJFcnJvciBnZXR0aW5nIG1lcmdlIGRpZmZzOiIKIG1zZ3N0ciAiRmVsIHZpZCBow6RtdG5pbmcgYXYgc2FtbWFuc2xhZ25pbmdzZGlmZjoiCiAKLSM6IGdpdGs6Njk3MAorIzogZ2l0azo3MTEzCiBtc2dpZCAiR290bzoiCiBtc2dzdHIgIkfDpSB0aWxsOiIKIAotIzogZ2l0azo2OTcyCisjOiBnaXRrOjcxMTUKIG1zZ2lkICJTSEExIElEOiIKIG1zZ3N0ciAiU0hBMS1pZDoiCiAKLSM6IGdpdGs6Njk5MQorIzogZ2l0azo3MTM0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiU2hvcnQgU0hBMSBpZCAlcyBpcyBhbWJpZ3VvdXMiCiBtc2dzdHIgIkbDtnJrb3J0YXQgU0hBMS1pZCAlcyDDpHIgdHZldHlkaWd0IgogCi0jOiBnaXRrOjcwMDMKKyM6IGdpdGs6NzE0NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlNIQTEgaWQgJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJTSEEtaWQ6dCAlcyDDpHIgaW50ZSBrw6RudCIKIAotIzogZ2l0azo3MDA1CisjOiBnaXRrOjcxNDgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJUYWcvSGVhZCAlcyBpcyBub3Qga25vd24iCiBtc2dzdHIgIlRhZ2cvaHV2dWQgJXMgw6RyIG9rw6RudCIKIAotIzogZ2l0azo3MTQ3CisjOiBnaXRrOjcyOTAKIG1zZ2lkICJDaGlsZHJlbiIKIG1zZ3N0ciAiQmFybiIKIAotIzogZ2l0azo3MjA0CisjOiBnaXRrOjczNDcKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXNldCAlcyBicmFuY2ggdG8gaGVyZSIKIG1zZ3N0ciAiw4V0ZXJzdMOkbGwgZ3JlbmVuICVzIGhpdCIKIAotIzogZ2l0azo3MjA2CisjOiBnaXRrOjczNDkKIG1zZ2lkICJEZXRhY2hlZCBoZWFkOiBjYW4ndCByZXNldCIKIG1zZ3N0ciAiRnLDpW5rb3BwbGFkIGhlYWQ6IGthbiBpbnRlIMOldGVyc3TDpGxsYSIKIAotIzogZ2l0azo3MjM4CisjOiBnaXRrOjczODEKIG1zZ2lkICJUb3AiCiBtc2dzdHIgIlRvcHAiCiAKLSM6IGdpdGs6NzIzOQorIzogZ2l0azo3MzgyCiBtc2dpZCAiRnJvbSIKIG1zZ3N0ciAiRnLDpW4iCiAKLSM6IGdpdGs6NzI0NAorIzogZ2l0azo3Mzg3CiBtc2dpZCAiVG8iCiBtc2dzdHIgIlRpbGwiCiAKLSM6IGdpdGs6NzI2NworIzogZ2l0azo3NDEwCiBtc2dpZCAiR2VuZXJhdGUgcGF0Y2giCiBtc2dzdHIgIkdlbmVyZXJhIHBhdGNoIgogCi0jOiBnaXRrOjcyNjkKKyM6IGdpdGs6NzQxMgogbXNnaWQgIkZyb206IgogbXNnc3RyICJGcsOlbjoiCiAKLSM6IGdpdGs6NzI3OAorIzogZ2l0azo3NDIxCiBtc2dpZCAiVG86IgogbXNnc3RyICJUaWxsOiIKIAotIzogZ2l0azo3Mjg3CisjOiBnaXRrOjc0MzAKIG1zZ2lkICJSZXZlcnNlIgogbXNnc3RyICJWw6RuZCIKIAotIzogZ2l0azo3Mjg5IGdpdGs6NzQ2NAorIzogZ2l0azo3NDMyIGdpdGs6NzYwNwogbXNnaWQgIk91dHB1dCBmaWxlOiIKIG1zZ3N0ciAiVXRkYXRhZmlsOiIKIAotIzogZ2l0azo3Mjk1CisjOiBnaXRrOjc0MzgKIG1zZ2lkICJHZW5lcmF0ZSIKIG1zZ3N0ciAiR2VuZXJlcmEiCiAKLSM6IGdpdGs6NzMzMQorIzogZ2l0azo3NDc0CiBtc2dpZCAiRXJyb3IgY3JlYXRpbmcgcGF0Y2g6IgogbXNnc3RyICJGZWwgdmlkIGdlbmVyZXJpbmcgYXYgcGF0Y2g6IgogCi0jOiBnaXRrOjczNTMgZ2l0azo3NDUyIGdpdGs6NzUwNgorIzogZ2l0azo3NDk2IGdpdGs6NzU5NSBnaXRrOjc2NDkKIG1zZ2lkICJJRDoiCiBtc2dzdHIgIklkOiIKIAotIzogZ2l0azo3MzYyCisjOiBnaXRrOjc1MDUKIG1zZ2lkICJUYWcgbmFtZToiCiBtc2dzdHIgIlRhZ2duYW1uOiIKIAotIzogZ2l0azo3MzY2IGdpdGs6NzUxNQorIzogZ2l0azo3NTA5IGdpdGs6NzY1OQogbXNnaWQgIkNyZWF0ZSIKIG1zZ3N0ciAiU2thcGEiCiAKLSM6IGdpdGs6NzM4MQorIzogZ2l0azo3NTI0CiBtc2dpZCAiTm8gdGFnIG5hbWUgc3BlY2lmaWVkIgogbXNnc3RyICJJbmdldCB0YWdnbmFtbiBhbmdhdnMiCiAKLSM6IGdpdGs6NzM4NQorIzogZ2l0azo3NTI4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIKIG1zZ3N0ciAiVGFnZ2VuIFwiJXNcIiBmaW5ucyByZWRhbiIKIAotIzogZ2l0azo3MzkxCisjOiBnaXRrOjc1MzQKIG1zZ2lkICJFcnJvciBjcmVhdGluZyB0YWc6IgogbXNnc3RyICJGZWwgdmlkIHNrYXBhbmRlIGF2IHRhZ2c6IgogCi0jOiBnaXRrOjc0NjEKKyM6IGdpdGs6NzYwNAogbXNnaWQgIkNvbW1hbmQ6IgogbXNnc3RyICJLb21tYW5kbzoiCiAKLSM6IGdpdGs6NzQ2OQorIzogZ2l0azo3NjEyCiBtc2dpZCAiV3JpdGUiCiBtc2dzdHIgIlNrcml2IgogCi0jOiBnaXRrOjc0ODUKKyM6IGdpdGs6NzYyOAogbXNnaWQgIkVycm9yIHdyaXRpbmcgY29tbWl0OiIKIG1zZ3N0ciAiRmVsIHZpZCBza3Jpdm5pbmcgYXYgaW5jaGVja25pbmc6IgogCi0jOiBnaXRrOjc1MTEKKyM6IGdpdGs6NzY1NAogbXNnaWQgIk5hbWU6IgogbXNnc3RyICJOYW1uOiIKIAotIzogZ2l0azo3NTMwCisjOiBnaXRrOjc2NzQKIG1zZ2lkICJQbGVhc2Ugc3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBuZXcgYnJhbmNoIgogbXNnc3RyICJBbmdlIGV0dCBuYW1uIGbDtnIgZGVuIG55YSBncmVuZW4iCiAKLSM6IGdpdGs6NzU1OQorIzogZ2l0azo3NzAzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGlzIGFscmVhZHkgaW5jbHVkZWQgaW4gYnJhbmNoICVzIC0tIHJlYWxseSByZS1hcHBseSBpdD8iCiBtc2dzdHIgIiIKICJJbmNoZWNrbmluZ2VuICVzIGZpbm5zIHJlZGFuIHDDpSBncmVuZW4gJXMgLS0gc2thbGwgZGVuIHZlcmtsaWdlbiBhcHBsaWNlcmFzICIKICJww6Ugbnl0dD8iCiAKLSM6IGdpdGs6NzU2NAorIzogZ2l0azo3NzA4CiBtc2dpZCAiQ2hlcnJ5LXBpY2tpbmciCiBtc2dzdHIgIlBsb2NrYXIiCiAKLSM6IGdpdGs6NzU3NgorIzogZ2l0azo3NzIwCiBtc2dpZCAiTm8gY2hhbmdlcyBjb21taXR0ZWQiCiBtc2dzdHIgIkluZ2Egw6RuZHJpbmdhciBpbmNoZWNrYWRlIgogCi0jOiBnaXRrOjc2MDEKKyM6IGdpdGs6Nzc0NQogbXNnaWQgIkNvbmZpcm0gcmVzZXQiCiBtc2dzdHIgIkJla3LDpGZ0YSDDpXRlcnN0w6RsbG5pbmciCiAKLSM6IGdpdGs6NzYwMworIzogZ2l0azo3NzQ3CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXQgYnJhbmNoICVzIHRvICVzPyIKIG1zZ3N0ciAiw4V0ZXJzdMOkbGxhIGdyZW5lbiAlcyB0aWxsICVzPyIKIAotIzogZ2l0azo3NjA3CisjOiBnaXRrOjc3NTEKIG1zZ2lkICJSZXNldCB0eXBlOiIKIG1zZ3N0ciAiVHlwIGF2IMOldGVyc3TDpGxsbmluZzoiCiAKLSM6IGdpdGs6NzYxMQorIzogZ2l0azo3NzU1CiBtc2dpZCAiU29mdDogTGVhdmUgd29ya2luZyB0cmVlIGFuZCBpbmRleCB1bnRvdWNoZWQiCiBtc2dzdHIgIk1qdWs6IFLDtnIgaW50ZSB1dGNoZWNrbmluZyBvY2ggaW5kZXgiCiAKLSM6IGdpdGs6NzYxNAorIzogZ2l0azo3NzU4CiBtc2dpZCAiTWl4ZWQ6IExlYXZlIHdvcmtpbmcgdHJlZSB1bnRvdWNoZWQsIHJlc2V0IGluZGV4IgogbXNnc3RyICJCbGFuZGFkOiBSw7ZyIGludGUgdXRjaGVja25pbmcsIMOldGVyc3TDpGxsIGluZGV4IgogCi0jOiBnaXRrOjc2MTcKKyM6IGdpdGs6Nzc2MQogbXNnaWQgIiIKICJIYXJkOiBSZXNldCB3b3JraW5nIHRyZWUgYW5kIGluZGV4XG4iCiAiKGRpc2NhcmQgQUxMIGxvY2FsIGNoYW5nZXMpIgpAQCAtNzI4LDE5ICs3MzIsMTkgQEAKICJIw6VyZDogw4V0ZXJzdMOkbGwgdXRjaGVja25pbmcgb2NoIGluZGV4XG4iCiAiKGbDtnJrYXN0YXIgQUxMQSBsb2thbGEgw6RuZHJpbmdhcikiCiAKLSM6IGdpdGs6NzYzMworIzogZ2l0azo3Nzc3CiBtc2dpZCAiUmVzZXR0aW5nIgogbXNnc3RyICLDhXRlcnN0w6RsbGVyIgogCi0jOiBnaXRrOjc2OTAKKyM6IGdpdGs6NzgzNAogbXNnaWQgIkNoZWNraW5nIG91dCIKIG1zZ3N0ciAiQ2hlY2thciB1dCIKIAotIzogZ2l0azo3NzQxCisjOiBnaXRrOjc4ODUKIG1zZ2lkICJDYW5ub3QgZGVsZXRlIHRoZSBjdXJyZW50bHkgY2hlY2tlZC1vdXQgYnJhbmNoIgogbXNnc3RyICJLYW4gaW50ZSB0YSBib3J0IGRlbiBqdXN0IG51IHV0Y2hlY2thZGUgZ3JlbmVuIgogCi0jOiBnaXRrOjc3NDcKKyM6IGdpdGs6Nzg5MQogIywgdGNsLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgY29tbWl0cyBvbiBicmFuY2ggJXMgYXJlbid0IG9uIGFueSBvdGhlciBicmFuY2guXG4iCkBAIC03NDksMTYgKzc1MywxNiBAQAogIkluY2hlY2tuaW5nYXJuYSBww6UgZ3JlbmVuICVzIGV4aXN0ZXJhciBpbnRlIHDDpSBuw6Vnb24gYW5uYW4gZ3Jlbi5cbiIKICJWaWxsIGR1IHZlcmtsaWdlbiB0YSBib3J0IGdyZW5lbiAlcz8iCiAKLSM6IGdpdGs6Nzc3OAorIzogZ2l0azo3OTIyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFncyBhbmQgaGVhZHM6ICVzIgogbXNnc3RyICJUYWdnYXIgb2NoIGh1dnVkZW46ICVzIgogCi0jOiBnaXRrOjc3OTIKKyM6IGdpdGs6NzkzNgogbXNnaWQgIkZpbHRlciIKIG1zZ3N0ciAiRmlsdGVyIgogCi0jOiBnaXRrOjgwODYKKyM6IGdpdGs6ODIzMAogbXNnaWQgIiIKICJFcnJvciByZWFkaW5nIGNvbW1pdCB0b3BvbG9neSBpbmZvcm1hdGlvbjsgYnJhbmNoIGFuZCBwcmVjZWRpbmcvZm9sbG93aW5nICIKICJ0YWcgaW5mb3JtYXRpb24gd2lsbCBiZSBpbmNvbXBsZXRlLiIKQEAgLTc2NiwxMjUgKzc3MCwxMjkgQEAKICJGZWwgdmlkIGzDpHNuaW5nIGF2IGluZm9ybWF0aW9uIG9tIGluY2hlY2tuaW5nc3RvcG9sb2dpOyBpbmZvcm1hdGlvbiBvbSAiCiAiZ3JlbmFyIG9jaCBmw7ZyZWfDpWVuZGUvc2VuYXJlIHRhZ2dhciBrb21tZXIgaW50ZSB2YXJhIGtvbXBsZXR0LiIKIAotIzogZ2l0azo5MDcyCisjOiBnaXRrOjkyMTYKIG1zZ2lkICJUYWciCiBtc2dzdHIgIlRhZ2ciCiAKLSM6IGdpdGs6OTA3MgorIzogZ2l0azo5MjE2CiBtc2dpZCAiSWQiCiBtc2dzdHIgIklkIgogCi0jOiBnaXRrOjkxMTgKKyM6IGdpdGs6OTI2MgogbXNnaWQgIkdpdGsgZm9udCBjaG9vc2VyIgogbXNnc3RyICJUZWNrZW5zbml0dHN2w6RsamFyZSBmw7ZyIEdpdGsiCiAKLSM6IGdpdGs6OTEzNQorIzogZ2l0azo5Mjc5CiBtc2dpZCAiQiIKIG1zZ3N0ciAiRiIKIAotIzogZ2l0azo5MTM4CisjOiBnaXRrOjkyODIKIG1zZ2lkICJJIgogbXNnc3RyICJLIgogCi0jOiBnaXRrOjkyMzEKKyM6IGdpdGs6OTM3NQogbXNnaWQgIkdpdGsgcHJlZmVyZW5jZXMiCiBtc2dzdHIgIkluc3TDpGxsbmluZ2FyIGbDtnIgR2l0ayIKIAotIzogZ2l0azo5MjMyCisjOiBnaXRrOjkzNzYKIG1zZ2lkICJDb21taXQgbGlzdCBkaXNwbGF5IG9wdGlvbnMiCiBtc2dzdHIgIkFsdGVybmF0aXYgZsO2ciBpbmNoZWNrbmluZ3NsaXN0dnkiCiAKLSM6IGdpdGs6OTIzNQorIzogZ2l0azo5Mzc5CiBtc2dpZCAiTWF4aW11bSBncmFwaCB3aWR0aCAobGluZXMpIgogbXNnc3RyICJNYXhpbWFsIGdyYWZicmVkZCAocmFkZXIpIgogCi0jOiBnaXRrOjkyMzkKKyM6IGdpdGs6OTM4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKCUgb2YgcGFuZSkiCiBtc2dzdHIgIk1heGltYWwgZ3JhZmJyZWRkICglIGF2IHJ1dGEpIgogCi0jOiBnaXRrOjkyNDQKKyM6IGdpdGs6OTM4OAogbXNnaWQgIlNob3cgbG9jYWwgY2hhbmdlcyIKIG1zZ3N0ciAiVmlzYSBsb2thbGEgw6RuZHJpbmdhciIKIAotIzogZ2l0azo5MjQ5CisjOiBnaXRrOjkzOTMKIG1zZ2lkICJBdXRvLXNlbGVjdCBTSEExIgogbXNnc3RyICJWw6RsaiBTSEExIGF1dG9tYXRpc2t0IgogCi0jOiBnaXRrOjkyNTQKKyM6IGdpdGs6OTM5OAogbXNnaWQgIkRpZmYgZGlzcGxheSBvcHRpb25zIgogbXNnc3RyICJBbHRlcm5hdGl2IGbDtnIgZGlmZnZ5IgogCi0jOiBnaXRrOjkyNTYKKyM6IGdpdGs6OTQwMAogbXNnaWQgIlRhYiBzcGFjaW5nIgogbXNnc3RyICJCbGFua3N0ZWcgZsO2ciB0YWJ1bGF0b3J0ZWNrZW4iCiAKLSM6IGdpdGs6OTI2MAorIzogZ2l0azo5NDA0CiBtc2dpZCAiRGlzcGxheSBuZWFyYnkgdGFncyIKIG1zZ3N0ciAiVmlzYSBuw6RybGlnZ2FuZGUgdGFnZ2FyIgogCi0jOiBnaXRrOjkyNjUKKyM6IGdpdGs6OTQwOQogbXNnaWQgIkxpbWl0IGRpZmZzIHRvIGxpc3RlZCBwYXRocyIKIG1zZ3N0ciAiQmVncsOkbnNhIGRpZmYgdGlsbCBsaXN0YWRlIHPDtmt2w6RnYXIiCiAKLSM6IGdpdGs6OTI3MgorIzogZ2l0azo5NDE0Cittc2dpZCAiU3VwcG9ydCBwZXItZmlsZSBlbmNvZGluZ3MiCittc2dzdHIgIiIKKworIzogZ2l0azo5NDIxCiBtc2dpZCAiRXh0ZXJuYWwgZGlmZiB0b29sIgogbXNnc3RyICJFeHRlcm50IGRpZmYtdmVya3R5ZyIKIAotIzogZ2l0azo5Mjc0CisjOiBnaXRrOjk0MjMKIG1zZ2lkICJDaG9vc2UuLi4iCiBtc2dzdHIgIlbDpGxqLi4uIgogCi0jOiBnaXRrOjkyNzkKKyM6IGdpdGs6OTQyOAogbXNnaWQgIkNvbG9yczogcHJlc3MgdG8gY2hvb3NlIgogbXNnc3RyICJGw6RyZ2VyOiB0cnljayBmw7ZyIGF0dCB2w6RsamEiCiAKLSM6IGdpdGs6OTI4MgorIzogZ2l0azo5NDMxCiBtc2dpZCAiQmFja2dyb3VuZCIKIG1zZ3N0ciAiQmFrZ3J1bmQiCiAKLSM6IGdpdGs6OTI4NgorIzogZ2l0azo5NDM1CiBtc2dpZCAiRm9yZWdyb3VuZCIKIG1zZ3N0ciAiRsO2cmdydW5kIgogCi0jOiBnaXRrOjkyOTAKKyM6IGdpdGs6OTQzOQogbXNnaWQgIkRpZmY6IG9sZCBsaW5lcyIKIG1zZ3N0ciAiRGlmZjogZ2FtbGEgcmFkZXIiCiAKLSM6IGdpdGs6OTI5NQorIzogZ2l0azo5NDQ0CiBtc2dpZCAiRGlmZjogbmV3IGxpbmVzIgogbXNnc3RyICJEaWZmOiBueWEgcmFkZXIiCiAKLSM6IGdpdGs6OTMwMAorIzogZ2l0azo5NDQ5CiBtc2dpZCAiRGlmZjogaHVuayBoZWFkZXIiCiBtc2dzdHIgIkRpZmY6IGRlbGh1dnVkIgogCi0jOiBnaXRrOjkzMDYKKyM6IGdpdGs6OTQ1NQogbXNnaWQgIlNlbGVjdCBiZyIKIG1zZ3N0ciAiTWFya2VyYWQgYmFrZ3J1bmQiCiAKLSM6IGdpdGs6OTMxMAorIzogZ2l0azo5NDU5CiBtc2dpZCAiRm9udHM6IHByZXNzIHRvIGNob29zZSIKIG1zZ3N0ciAiVGVja2Vuc25pdHQ6IHRyeWNrIGbDtnIgYXR0IHbDpGxqYSIKIAotIzogZ2l0azo5MzEyCisjOiBnaXRrOjk0NjEKIG1zZ2lkICJNYWluIGZvbnQiCiBtc2dzdHIgIkh1dnVkdGVja2Vuc25pdHQiCiAKLSM6IGdpdGs6OTMxMworIzogZ2l0azo5NDYyCiBtc2dpZCAiRGlmZiBkaXNwbGF5IGZvbnQiCiBtc2dzdHIgIlRlY2tlbnNuaXR0IGbDtnIgZGlmZnZpc25pbmciCiAKLSM6IGdpdGs6OTMxNAorIzogZ2l0azo5NDYzCiBtc2dpZCAiVXNlciBpbnRlcmZhY2UgZm9udCIKIG1zZ3N0ciAiVGVja2Vuc25pdHQgZsO2ciBhbnbDpG5kYXJncsOkbnNzbml0dCIKIAotIzogZ2l0azo5MzM5CisjOiBnaXRrOjk0ODgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJHaXRrOiBjaG9vc2UgY29sb3IgZm9yICVzIgogbXNnc3RyICJHaXRrOiB2w6RsaiBmw6RyZyBmw7ZyICVzIgogCi0jOiBnaXRrOjk3MjAKKyM6IGdpdGs6OTkzNAogbXNnaWQgIiIKICJTb3JyeSwgZ2l0ayBjYW5ub3QgcnVuIHdpdGggdGhpcyB2ZXJzaW9uIG9mIFRjbC9Uay5cbiIKICIgR2l0ayByZXF1aXJlcyBhdCBsZWFzdCBUY2wvVGsgOC40LiIKQEAgLTg5MiwyNCArOTAwLDI0IEBACiAiR2l0ayBrYW4gdHl2w6RyciBpbnRlIGvDtnJhIG1lZCBkZW5uYSB2ZXJzaW9uIGF2IFRjbC9Uay5cbiIKICIgR2l0ayBrcsOkdmVyIMOldG1pbnN0b25lIFRjbC9UayA4LjQuIgogCi0jOiBnaXRrOjk4MTIKKyM6IGdpdGs6MTAwNDcKIG1zZ2lkICJDYW5ub3QgZmluZCBhIGdpdCByZXBvc2l0b3J5IGhlcmUuIgogbXNnc3RyICJIaXR0YXIgaW5nZXQgZ2l0ay1hcmtpdiBow6RyLiIKIAotIzogZ2l0azo5ODE2CisjOiBnaXRrOjEwMDUxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGZpbmQgdGhlIGdpdCBkaXJlY3RvcnkgXCIlc1wiLiIKIG1zZ3N0ciAiSGl0dGFyIGludGUgZ2l0LWthdGFsb2dlbiBcIiVzXCIuIgogCi0jOiBnaXRrOjk4NTMKKyM6IGdpdGs6MTAwOTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJBbWJpZ3VvdXMgYXJndW1lbnQgJyVzJzogYm90aCByZXZpc2lvbiBhbmQgZmlsZW5hbWUiCiBtc2dzdHIgIlR2ZXR5ZGlndCBhcmd1bWVudCBcIiVzXCI6IGLDpWRlIHJldmlzaW9uIG9jaCBmaWxuYW1uIgogCi0jOiBnaXRrOjk4NjUKKyM6IGdpdGs6MTAxMTAKIG1zZ2lkICJCYWQgYXJndW1lbnRzIHRvIGdpdGs6IgogbXNnc3RyICJGZWxha3RpZ2EgYXJndW1lbnQgdGlsbCBnaXRrOiIKIAotIzogZ2l0azo5OTI1CisjOiBnaXRrOjEwMTcwCiBtc2dpZCAiQ29tbWFuZCBsaW5lIgogbXNnc3RyICJLb21tYW5kb3JhZCIKZGlmZiAtLWdpdCBhL2dpdHdlYi9JTlNUQUxMIGIvZ2l0d2ViL0lOU1RBTEwKaW5kZXggMjY5NjdlMi4uMThjOWNlMyAxMDA2NDQKLS0tIGEvZ2l0d2ViL0lOU1RBTEwKKysrIGIvZ2l0d2ViL0lOU1RBTEwKQEAgLTE2Niw2ICsxNjYsMjcgQEAKICAgc2hvd3MgcmVwb3NpdG9yaWVzIG9ubHkgaWYgdGhpcyBmaWxlIGV4aXN0cyBpbiBpdHMgb2JqZWN0IGRhdGFiYXNlCiAgIChpZiBkaXJlY3RvcnkgaGFzIHRoZSBtYWdpYyBmaWxlIG5hbWVkICRleHBvcnRfb2spLgogCistIEZpbmFsbHksIGl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgYW4gYXJiaXRyYXJ5IHBlcmwgc3Vicm91dGluZSB0aGF0CisgIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIHByb2plY3QgdG8gZGV0ZXJtaW5lIGlmIGl0IGNhbiBiZSBleHBvcnRlZC4KKyAgVGhlIHN1YnJvdXRpbmUgcmVjZWl2ZXMgYW4gYWJzb2x1dGUgcGF0aCB0byB0aGUgcHJvamVjdCBhcyBpdHMgb25seQorICBwYXJhbWV0ZXIuCisKKyAgRm9yIGV4YW1wbGUsIGlmIHlvdSB1c2UgbW9kX3BlcmwgdG8gcnVuIHRoZSBzY3JpcHQsIGFuZCBoYXZlIGR1bWIKKyAgaHR0cCBwcm90b2NvbCBhdXRoZW50aWNhdGlvbiBjb25maWd1cmVkIGZvciB5b3VyIHJlcG9zaXRvcmllcywgeW91CisgIGNhbiB1c2UgdGhlIGZvbGxvd2luZyBob29rIHRvIGFsbG93IGFjY2VzcyBvbmx5IGlmIHRoZSB1c2VyIGlzCisgIGF1dGhvcml6ZWQgdG8gcmVhZCB0aGUgZmlsZXM6CisKKyAgICAkZXhwb3J0X2F1dGhfaG9vayA9IHN1YiB7CisgICAgICAgIHVzZSBBcGFjaGUyOjpTdWJSZXF1ZXN0ICgpOworICAgICAgICB1c2UgQXBhY2hlMjo6Q29uc3QgLWNvbXBpbGUgPT4gcXcoSFRUUF9PSyk7CisgICAgICAgIG15ICRwYXRoID0gIiRfWzBdL0hFQUQiOworICAgICAgICBteSAkciAgICA9IEFwYWNoZTI6OlJlcXVlc3RVdGlsLT5yZXF1ZXN0OworICAgICAgICBteSAkc3ViICA9ICRyLT5sb29rdXBfZmlsZSgkcGF0aCk7CisgICAgICAgIHJldHVybiAkc3ViLT5maWxlbmFtZSBlcSAkcGF0aAorICAgICAgICAgICAgJiYgJHN1Yi0+c3RhdHVzID09IEFwYWNoZTI6OkNvbnN0OjpIVFRQX09LOworICAgIH07CisKKwogR2VuZXJhdGluZyBwcm9qZWN0cyBsaXN0IHVzaW5nIGdpdHdlYgogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCmRpZmYgLS1naXQgYS9naXR3ZWIvZ2l0d2ViLmNzcyBiL2dpdHdlYi9naXR3ZWIuY3NzCmluZGV4IGFhMGVlY2EuLmEwMWVhYzggMTAwNjQ0Ci0tLSBhL2dpdHdlYi9naXR3ZWIuY3NzCisrKyBiL2dpdHdlYi9naXR3ZWIuY3NzCkBAIC00MzUsNiArNDM1LDEwIEBACiAJcmlnaHQ6IDEycHgKIH0KIAorcC5wcm9qc2VhcmNoIHsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKIHRkLmxpbmVuciB7CiAJdGV4dC1hbGlnbjogcmlnaHQ7CiB9CkBAIC00ODEsNiArNDg1LDE5IEBACiAJYm9yZGVyLWNvbG9yOiAjZmZjY2ZmICNmZjAwZWUgI2ZmMDBlZSAjZmZjY2ZmOwogfQogCitzcGFuLnJlZnMgc3BhbiBhIHsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJY29sb3I6IGluaGVyaXQ7Cit9CisKK3NwYW4ucmVmcyBzcGFuIGE6aG92ZXIgeworCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCitzcGFuLnJlZnMgc3Bhbi5pbmRpcmVjdCB7CisJZm9udC1zdHlsZTogaXRhbGljOworfQorCiBzcGFuLnJlZnMgc3Bhbi5yZWYgewogCWJhY2tncm91bmQtY29sb3I6ICNhYWFhZmY7CiAJYm9yZGVyLWNvbG9yOiAjY2NjY2ZmICMwMDMzY2MgIzAwMzNjYyAjY2NjY2ZmOwpkaWZmIC0tZ2l0IGEvZ2l0d2ViL2dpdHdlYi5wZXJsIGIvZ2l0d2ViL2dpdHdlYi5wZXJsCmluZGV4IDgwNDY3MGMuLjk5ZjcxYjQgMTAwNzU1Ci0tLSBhL2dpdHdlYi9naXR3ZWIucGVybAorKysgYi9naXR3ZWIvZ2l0d2ViLnBlcmwKQEAgLTI5LDcgKzI5LDkgQEAKIAogIyBpZiB3ZSdyZSBjYWxsZWQgd2l0aCBQQVRIX0lORk8sIHdlIGhhdmUgdG8gc3RyaXAgdGhhdAogIyBmcm9tIHRoZSBVUkwgdG8gZmluZCBvdXIgcmVhbCBVUkwKLWlmIChteSAkcGF0aF9pbmZvID0gJEVOVnsiUEFUSF9JTkZPIn0pIHsKKyMgd2UgbWFrZSAkcGF0aF9pbmZvIGdsb2JhbCBiZWNhdXNlIGl0J3MgYWxzbyB1c2VkIGxhdGVyIG9uCitvdXIgJHBhdGhfaW5mbyA9ICRFTlZ7IlBBVEhfSU5GTyJ9OworaWYgKCRwYXRoX2luZm8pIHsKIAkkbXlfdXJsID1+IHMsXFEkcGF0aF9pbmZvXEUkLCw7CiAJJG15X3VyaSA9fiBzLFxRJHBhdGhfaW5mb1xFJCwsOwogfQpAQCAtOTMsNiArOTUsMTEgQEAKICMgKG9ubHkgZWZmZWN0aXZlIGlmIHRoaXMgdmFyaWFibGUgZXZhbHVhdGVzIHRvIHRydWUpCiBvdXIgJGV4cG9ydF9vayA9ICIrK0dJVFdFQl9FWFBPUlRfT0srKyI7CiAKKyMgc2hvdyByZXBvc2l0b3J5IG9ubHkgaWYgdGhpcyBzdWJyb3V0aW5lIHJldHVybnMgdHJ1ZQorIyB3aGVuIGdpdmVuIHRoZSBwYXRoIHRvIHRoZSBwcm9qZWN0LCBmb3IgZXhhbXBsZToKKyMgICAgc3ViIHsgcmV0dXJuIC1lICIkX1swXS9naXQtZGFlbW9uLWV4cG9ydC1vayI7IH0KK291ciAkZXhwb3J0X2F1dGhfaG9vayA9IHVuZGVmOworCiAjIG9ubHkgYWxsb3cgdmlld2luZyBvZiByZXBvc2l0b3JpZXMgYWxzbyBzaG93biBvbiB0aGUgb3ZlcnZpZXcgcGFnZQogb3VyICRzdHJpY3RfZXhwb3J0ID0gIisrR0lUV0VCX1NUUklDVF9FWFBPUlQrKyI7CiAKQEAgLTE4Myw3ICsxOTAsOSBAQAogCSMgaWYgdGhlcmUgaXMgbm8gJ3N1Yicga2V5IChubyBmZWF0dXJlLXN1YiksIHRoZW4gZmVhdHVyZSBjYW5ub3QgYmUKIAkjIG92ZXJyaWRlbgogCSMKLQkjIHVzZSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSg8ZmVhdHVyZT4pIHRvIGNoZWNrIGlmIDxmZWF0dXJlPiBpcyBlbmFibGVkCisJIyB1c2UgZ2l0d2ViX2dldF9mZWF0dXJlKDxmZWF0dXJlPikgdG8gcmV0cmlldmUgdGhlIDxmZWF0dXJlPiB2YWx1ZQorCSMgKGFuIGFycmF5KSBvciBnaXR3ZWJfY2hlY2tfZmVhdHVyZSg8ZmVhdHVyZT4pIHRvIGNoZWNrIGlmIDxmZWF0dXJlPgorCSMgaXMgZW5hYmxlZAogCiAJIyBFbmFibGUgdGhlICdibGFtZScgYmxvYiB2aWV3LCBzaG93aW5nIHRoZSBsYXN0IGNvbW1pdCB0aGF0IG1vZGlmaWVkCiAJIyBlYWNoIGxpbmUgaW4gdGhlIGZpbGUuIFRoaXMgY2FuIGJlIHZlcnkgQ1BVLWludGVuc2l2ZS4KQEAgLTI4Myw5ICsyOTIsNDcgQEAKIAknZm9ya3MnID0+IHsKIAkJJ292ZXJyaWRlJyA9PiAwLAogCQknZGVmYXVsdCcgPT4gWzBdfSwKKworCSMgSW5zZXJ0IGN1c3RvbSBsaW5rcyB0byB0aGUgYWN0aW9uIGJhciBvZiBhbGwgcHJvamVjdCBwYWdlcy4KKwkjIFRoaXMgZW5hYmxlcyB5b3UgbWFpbmx5IHRvIGxpbmsgdG8gdGhpcmQtcGFydHkgc2NyaXB0cyBpbnRlZ3JhdGluZworCSMgaW50byBnaXR3ZWI7IGUuZy4gZ2l0LWJyb3dzZXIgZm9yIGdyYXBoaWNhbCBoaXN0b3J5IHJlcHJlc2VudGF0aW9uCisJIyBvciBjdXN0b20gd2ViLWJhc2VkIHJlcG9zaXRvcnkgYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlLgorCisJIyBUaGUgJ2RlZmF1bHQnIHZhbHVlIGNvbnNpc3RzIG9mIGEgbGlzdCBvZiB0cmlwbGV0cyBpbiB0aGUgZm9ybQorCSMgKGxhYmVsLCBsaW5rLCBwb3NpdGlvbikgd2hlcmUgcG9zaXRpb24gaXMgdGhlIGxhYmVsIGFmdGVyIHdoaWNoCisJIyB0byBpbnNlcnQgdGhlIGxpbmsgYW5kIGxpbmsgaXMgYSBmb3JtYXQgc3RyaW5nIHdoZXJlICVuIGV4cGFuZHMKKwkjIHRvIHRoZSBwcm9qZWN0IG5hbWUsICVmIHRvIHRoZSBwcm9qZWN0IHBhdGggd2l0aGluIHRoZSBmaWxlc3lzdGVtLAorCSMgJWggdG8gdGhlIGN1cnJlbnQgaGFzaCAoaCBnaXR3ZWIgcGFyYW1ldGVyKSBhbmQgJWIgdG8gdGhlIGN1cnJlbnQKKwkjIGhhc2ggYmFzZSAoaGIgZ2l0d2ViIHBhcmFtZXRlcik7ICUlIGV4cGFuZHMgdG8gJS4KKworCSMgVG8gZW5hYmxlIHN5c3RlbSB3aWRlIGhhdmUgaW4gJEdJVFdFQl9DT05GSUcgZS5nLgorCSMgJGZlYXR1cmV7J2FjdGlvbnMnfXsnZGVmYXVsdCd9ID0gWygnZ3JhcGhpY2xvZycsCisJIyAJJy9naXQtYnJvd3Nlci9ieS1jb21taXQuaHRtbD9yPSVuJywgJ3N1bW1hcnknKV07CisJIyBQcm9qZWN0IHNwZWNpZmljIG92ZXJyaWRlIGlzIG5vdCBzdXBwb3J0ZWQuCisJJ2FjdGlvbnMnID0+IHsKKwkJJ292ZXJyaWRlJyA9PiAwLAorCQknZGVmYXVsdCcgPT4gW119LAorCisJIyBBbGxvdyBnaXR3ZWIgc2NhbiBwcm9qZWN0IGNvbnRlbnQgdGFncyBkZXNjcmliZWQgaW4gY3RhZ3MvCisJIyBvZiBwcm9qZWN0IHJlcG9zaXRvcnksIGFuZCBkaXNwbGF5IHRoZSBwb3B1bGFyIFdlYiAyLjAtaXNoCisJIyAidGFnIGNsb3VkIiBuZWFyIHRoZSBwcm9qZWN0IGxpc3QuIE5vdGUgdGhhdCB0aGlzIGlzIHNvbWV0aGluZworCSMgQ09NUExFVEVMWSBkaWZmZXJlbnQgZnJvbSB0aGUgbm9ybWFsIEdpdCB0YWdzLgorCisJIyBnaXR3ZWIgYnkgaXRzZWxmIGNhbiBzaG93IGV4aXN0aW5nIHRhZ3MsIGJ1dCBpdCBkb2VzIG5vdCBoYW5kbGUKKwkjIHRhZ2dpbmcgaXRzZWxmOyB5b3UgbmVlZCBhbiBleHRlcm5hbCBhcHBsaWNhdGlvbiBmb3IgdGhhdC4KKwkjIEZvciBhbiBleGFtcGxlIHNjcmlwdCwgY2hlY2sgR2lyb2NjbydzIGNnaS90YWdwcm9qLmNnaS4KKwkjIFlvdSBtYXkgd2FudCB0byBpbnN0YWxsIHRoZSBIVE1MOjpUYWdDbG91ZCBQZXJsIG1vZHVsZSB0byBnZXQKKwkjIGEgcHJldHR5IHRhZyBjbG91ZCBpbnN0ZWFkIG9mIGp1c3QgYSBsaXN0IG9mIHRhZ3MuCisKKwkjIFRvIGVuYWJsZSBzeXN0ZW0gd2lkZSBoYXZlIGluICRHSVRXRUJfQ09ORklHCisJIyAkZmVhdHVyZXsnY3RhZ3MnfXsnZGVmYXVsdCd9ID0gWydwYXRoX3RvX3RhZ19zY3JpcHQnXTsKKwkjIFByb2plY3Qgc3BlY2lmaWMgb3ZlcnJpZGUgaXMgbm90IHN1cHBvcnRlZC4KKwknY3RhZ3MnID0+IHsKKwkJJ292ZXJyaWRlJyA9PiAwLAorCQknZGVmYXVsdCcgPT4gWzBdfSwKICk7CiAKLXN1YiBnaXR3ZWJfY2hlY2tfZmVhdHVyZSB7CitzdWIgZ2l0d2ViX2dldF9mZWF0dXJlIHsKIAlteSAoJG5hbWUpID0gQF87CiAJcmV0dXJuIHVubGVzcyBleGlzdHMgJGZlYXR1cmV7JG5hbWV9OwogCW15ICgkc3ViLCAkb3ZlcnJpZGUsIEBkZWZhdWx0cykgPSAoCkBAIC0zMDAsNiArMzQ3LDIyIEBACiAJcmV0dXJuICRzdWItPihAZGVmYXVsdHMpOwogfQogCisjIEEgd3JhcHBlciB0byBjaGVjayBpZiBhIGdpdmVuIGZlYXR1cmUgaXMgZW5hYmxlZC4KKyMgV2l0aCB0aGlzLCB5b3UgY2FuIHNheQorIworIyAgIG15ICRib29sX2ZlYXQgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnYm9vbF9mZWF0Jyk7CisjICAgZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2Jvb2xfZmVhdCcpIG9yIHNvbWVjb2RlOworIworIyBpbnN0ZWFkIG9mCisjCisjICAgbXkgKCRib29sX2ZlYXQpID0gZ2l0d2ViX2dldF9mZWF0dXJlKCdib29sX2ZlYXQnKTsKKyMgICAoZ2l0d2ViX2dldF9mZWF0dXJlKCdib29sX2ZlYXQnKSlbMF0gb3Igc29tZWNvZGU7CisjCitzdWIgZ2l0d2ViX2NoZWNrX2ZlYXR1cmUgeworCXJldHVybiAoZ2l0d2ViX2dldF9mZWF0dXJlKEBfKSlbMF07Cit9CisKKwogc3ViIGZlYXR1cmVfYmxhbWUgewogCW15ICgkdmFsKSA9IGdpdF9nZXRfcHJvamVjdF9jb25maWcoJ2JsYW1lJywgJy0tYm9vbCcpOwogCkBAIC0zNjEsNyArNDI0LDggQEAKIHN1YiBjaGVja19leHBvcnRfb2sgewogCW15ICgkZGlyKSA9IEBfOwogCXJldHVybiAoY2hlY2tfaGVhZF9saW5rKCRkaXIpICYmCi0JCSghJGV4cG9ydF9vayB8fCAtZSAiJGRpci8kZXhwb3J0X29rIikpOworCQkoISRleHBvcnRfb2sgfHwgLWUgIiRkaXIvJGV4cG9ydF9vayIpICYmCisJCSghJGV4cG9ydF9hdXRoX2hvb2sgfHwgJGV4cG9ydF9hdXRoX2hvb2stPigkZGlyKSkpOwogfQogCiAjIHByb2Nlc3MgYWx0ZXJuYXRlIG5hbWVzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CkBAIC0zOTEsMTYyICs0NTUsNDMgQEAKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIGlucHV0IHZhbGlkYXRpb24gYW5kIGRpc3BhdGNoCi1vdXIgJGFjdGlvbiA9ICRjZ2ktPnBhcmFtKCdhJyk7Ci1pZiAoZGVmaW5lZCAkYWN0aW9uKSB7Ci0JaWYgKCRhY3Rpb24gPX4gbS9bXjAtOWEtekEtWlwuXC1fXS8pIHsKLQkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgYWN0aW9uIHBhcmFtZXRlciIpOwotCX0KLX0KIAotIyBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBwYXRobmFtZXMKLW91ciAkcHJvamVjdCA9ICRjZ2ktPnBhcmFtKCdwJyk7Ci1pZiAoZGVmaW5lZCAkcHJvamVjdCkgewotCWlmICghdmFsaWRhdGVfcGF0aG5hbWUoJHByb2plY3QpIHx8Ci0JICAgICEoLWQgIiRwcm9qZWN0cm9vdC8kcHJvamVjdCIpIHx8Ci0JICAgICFjaGVja19oZWFkX2xpbmsoIiRwcm9qZWN0cm9vdC8kcHJvamVjdCIpIHx8Ci0JICAgICgkZXhwb3J0X29rICYmICEoLWUgIiRwcm9qZWN0cm9vdC8kcHJvamVjdC8kZXhwb3J0X29rIikpIHx8Ci0JICAgICgkc3RyaWN0X2V4cG9ydCAmJiAhcHJvamVjdF9pbl9saXN0KCRwcm9qZWN0KSkpIHsKLQkJdW5kZWYgJHByb2plY3Q7Ci0JCWRpZV9lcnJvcig0MDQsICJObyBzdWNoIHByb2plY3QiKTsKLQl9Ci19CisjIGlucHV0IHBhcmFtZXRlcnMgY2FuIGJlIGNvbGxlY3RlZCBmcm9tIGEgdmFyaWV0eSBvZiBzb3VyY2VzIChwcmVzZW50bHksIENHSQorIyBhbmQgUEFUSF9JTkZPKSwgc28gd2UgZGVmaW5lIGFuICVpbnB1dF9wYXJhbXMgaGFzaCB0aGF0IGNvbGxlY3RzIHRoZW0gYWxsCisjIHRvZ2V0aGVyIGR1cmluZyB2YWxpZGF0aW9uOiB0aGlzIGFsbG93cyBzdWJzZXF1ZW50IHVzZXMgKGUuZy4gaHJlZigpKSB0byBiZQorIyBhZ25vc3RpYyBvZiB0aGUgcGFyYW1ldGVyIG9yaWdpbgogCi1vdXIgJGZpbGVfbmFtZSA9ICRjZ2ktPnBhcmFtKCdmJyk7Ci1pZiAoZGVmaW5lZCAkZmlsZV9uYW1lKSB7Ci0JaWYgKCF2YWxpZGF0ZV9wYXRobmFtZSgkZmlsZV9uYW1lKSkgewotCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBmaWxlIHBhcmFtZXRlciIpOwotCX0KLX0KK291ciAlaW5wdXRfcGFyYW1zID0gKCk7CiAKLW91ciAkZmlsZV9wYXJlbnQgPSAkY2dpLT5wYXJhbSgnZnAnKTsKLWlmIChkZWZpbmVkICRmaWxlX3BhcmVudCkgewotCWlmICghdmFsaWRhdGVfcGF0aG5hbWUoJGZpbGVfcGFyZW50KSkgewotCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBmaWxlIHBhcmVudCBwYXJhbWV0ZXIiKTsKLQl9Ci19CisjIGlucHV0IHBhcmFtZXRlcnMgYXJlIHN0b3JlZCB3aXRoIHRoZSBsb25nIHBhcmFtZXRlciBuYW1lIGFzIGtleS4gVGhpcyB3aWxsCisjIGFsc28gYmUgdXNlZCBpbiB0aGUgaHJlZiBzdWJyb3V0aW5lIHRvIGNvbnZlcnQgcGFyYW1ldGVycyB0byB0aGVpciBDR0kKKyMgZXF1aXZhbGVudCwgYW5kIHNpbmNlIHRoZSBocmVmKCkgdXNhZ2UgaXMgdGhlIG1vc3QgZnJlcXVlbnQgb25lLCB3ZSBzdG9yZQorIyB0aGUgbmFtZSAtPiBDR0kga2V5IG1hcHBpbmcgaGVyZSwgaW5zdGVhZCBvZiB0aGUgcmV2ZXJzZS4KKyMKKyMgWFhYOiBXYXJuaW5nOiBJZiB5b3UgdG91Y2ggdGhpcywgY2hlY2sgdGhlIHNlYXJjaCBmb3JtIGZvciB1cGRhdGluZywKKyMgdG9vLgogCi0jIHBhcmFtZXRlcnMgd2hpY2ggYXJlIHJlZm5hbWVzCi1vdXIgJGhhc2ggPSAkY2dpLT5wYXJhbSgnaCcpOwotaWYgKGRlZmluZWQgJGhhc2gpIHsKLQlpZiAoIXZhbGlkYXRlX3JlZm5hbWUoJGhhc2gpKSB7Ci0JCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGhhc2ggcGFyYW1ldGVyIik7Ci0JfQotfQotCi1vdXIgJGhhc2hfcGFyZW50ID0gJGNnaS0+cGFyYW0oJ2hwJyk7Ci1pZiAoZGVmaW5lZCAkaGFzaF9wYXJlbnQpIHsKLQlpZiAoIXZhbGlkYXRlX3JlZm5hbWUoJGhhc2hfcGFyZW50KSkgewotCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBoYXNoIHBhcmVudCBwYXJhbWV0ZXIiKTsKLQl9Ci19Ci0KLW91ciAkaGFzaF9iYXNlID0gJGNnaS0+cGFyYW0oJ2hiJyk7Ci1pZiAoZGVmaW5lZCAkaGFzaF9iYXNlKSB7Ci0JaWYgKCF2YWxpZGF0ZV9yZWZuYW1lKCRoYXNoX2Jhc2UpKSB7Ci0JCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGhhc2ggYmFzZSBwYXJhbWV0ZXIiKTsKLQl9Ci19Ci0KLW15ICVhbGxvd2VkX29wdGlvbnMgPSAoCi0JIi0tbm8tbWVyZ2VzIiA9PiBbIHF3KHJzcyBhdG9tIGxvZyBzaG9ydGxvZyBoaXN0b3J5KSBdLAorb3VyIEBjZ2lfcGFyYW1fbWFwcGluZyA9ICgKKwlwcm9qZWN0ID0+ICJwIiwKKwlhY3Rpb24gPT4gImEiLAorCWZpbGVfbmFtZSA9PiAiZiIsCisJZmlsZV9wYXJlbnQgPT4gImZwIiwKKwloYXNoID0+ICJoIiwKKwloYXNoX3BhcmVudCA9PiAiaHAiLAorCWhhc2hfYmFzZSA9PiAiaGIiLAorCWhhc2hfcGFyZW50X2Jhc2UgPT4gImhwYiIsCisJcGFnZSA9PiAicGciLAorCW9yZGVyID0+ICJvIiwKKwlzZWFyY2h0ZXh0ID0+ICJzIiwKKwlzZWFyY2h0eXBlID0+ICJzdCIsCisJc25hcHNob3RfZm9ybWF0ID0+ICJzZiIsCisJZXh0cmFfb3B0aW9ucyA9PiAib3B0IiwKKwlzZWFyY2hfdXNlX3JlZ2V4cCA9PiAic3IiLAogKTsKK291ciAlY2dpX3BhcmFtX21hcHBpbmcgPSBAY2dpX3BhcmFtX21hcHBpbmc7CiAKLW91ciBAZXh0cmFfb3B0aW9ucyA9ICRjZ2ktPnBhcmFtKCdvcHQnKTsKLWlmIChkZWZpbmVkIEBleHRyYV9vcHRpb25zKSB7Ci0JZm9yZWFjaCBteSAkb3B0IChAZXh0cmFfb3B0aW9ucykgewotCQlpZiAobm90IGV4aXN0cyAkYWxsb3dlZF9vcHRpb25zeyRvcHR9KSB7Ci0JCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBvcHRpb24gcGFyYW1ldGVyIik7Ci0JCX0KLQkJaWYgKG5vdCBncmVwKC9eJGFjdGlvbiQvLCBAeyRhbGxvd2VkX29wdGlvbnN7JG9wdH19KSkgewotCQkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgb3B0aW9uIHBhcmFtZXRlciBmb3IgdGhpcyBhY3Rpb24iKTsKLQkJfQotCX0KLX0KLQotb3VyICRoYXNoX3BhcmVudF9iYXNlID0gJGNnaS0+cGFyYW0oJ2hwYicpOwotaWYgKGRlZmluZWQgJGhhc2hfcGFyZW50X2Jhc2UpIHsKLQlpZiAoIXZhbGlkYXRlX3JlZm5hbWUoJGhhc2hfcGFyZW50X2Jhc2UpKSB7Ci0JCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGhhc2ggcGFyZW50IGJhc2UgcGFyYW1ldGVyIik7Ci0JfQotfQotCi0jIG90aGVyIHBhcmFtZXRlcnMKLW91ciAkcGFnZSA9ICRjZ2ktPnBhcmFtKCdwZycpOwotaWYgKGRlZmluZWQgJHBhZ2UpIHsKLQlpZiAoJHBhZ2UgPX4gbS9bXjAtOV0vKSB7Ci0JCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIHBhZ2UgcGFyYW1ldGVyIik7Ci0JfQotfQotCi1vdXIgJHNlYXJjaHR5cGUgPSAkY2dpLT5wYXJhbSgnc3QnKTsKLWlmIChkZWZpbmVkICRzZWFyY2h0eXBlKSB7Ci0JaWYgKCRzZWFyY2h0eXBlID1+IG0vW15hLXpdLykgewotCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBzZWFyY2h0eXBlIHBhcmFtZXRlciIpOwotCX0KLX0KLQotb3VyICRzZWFyY2hfdXNlX3JlZ2V4cCA9ICRjZ2ktPnBhcmFtKCdzcicpOwotCi1vdXIgJHNlYXJjaHRleHQgPSAkY2dpLT5wYXJhbSgncycpOwotb3VyICRzZWFyY2hfcmVnZXhwOwotaWYgKGRlZmluZWQgJHNlYXJjaHRleHQpIHsKLQlpZiAobGVuZ3RoKCRzZWFyY2h0ZXh0KSA8IDIpIHsKLQkJZGllX2Vycm9yKDQwMywgIkF0IGxlYXN0IHR3byBjaGFyYWN0ZXJzIGFyZSByZXF1aXJlZCBmb3Igc2VhcmNoIHBhcmFtZXRlciIpOwotCX0KLQkkc2VhcmNoX3JlZ2V4cCA9ICRzZWFyY2hfdXNlX3JlZ2V4cCA/ICRzZWFyY2h0ZXh0IDogcXVvdGVtZXRhICRzZWFyY2h0ZXh0OwotfQotCi0jIG5vdyByZWFkIFBBVEhfSU5GTyBhbmQgdXNlIGl0IGFzIGFsdGVybmF0aXZlIHRvIHBhcmFtZXRlcnMKLXN1YiBldmFsdWF0ZV9wYXRoX2luZm8gewotCXJldHVybiBpZiBkZWZpbmVkICRwcm9qZWN0OwotCW15ICRwYXRoX2luZm8gPSAkRU5WeyJQQVRIX0lORk8ifTsKLQlyZXR1cm4gaWYgISRwYXRoX2luZm87Ci0JJHBhdGhfaW5mbyA9fiBzLF4vKywsOwotCXJldHVybiBpZiAhJHBhdGhfaW5mbzsKLQkjIGZpbmQgd2hpY2ggcGFydCBvZiBQQVRIX0lORk8gaXMgcHJvamVjdAotCSRwcm9qZWN0ID0gJHBhdGhfaW5mbzsKLQkkcHJvamVjdCA9fiBzLC8rJCwsOwotCXdoaWxlICgkcHJvamVjdCAmJiAhY2hlY2tfaGVhZF9saW5rKCIkcHJvamVjdHJvb3QvJHByb2plY3QiKSkgewotCQkkcHJvamVjdCA9fiBzLC8qW14vXSokLCw7Ci0JfQotCSMgdmFsaWRhdGUgcHJvamVjdAotCSRwcm9qZWN0ID0gdmFsaWRhdGVfcGF0aG5hbWUoJHByb2plY3QpOwotCWlmICghJHByb2plY3QgfHwKLQkgICAgKCRleHBvcnRfb2sgJiYgIS1lICIkcHJvamVjdHJvb3QvJHByb2plY3QvJGV4cG9ydF9vayIpIHx8Ci0JICAgICgkc3RyaWN0X2V4cG9ydCAmJiAhcHJvamVjdF9pbl9saXN0KCRwcm9qZWN0KSkpIHsKLQkJdW5kZWYgJHByb2plY3Q7Ci0JCXJldHVybjsKLQl9Ci0JIyBkbyBub3QgY2hhbmdlIGFueSBwYXJhbWV0ZXJzIGlmIGFuIGFjdGlvbiBpcyBnaXZlbiB1c2luZyB0aGUgcXVlcnkgc3RyaW5nCi0JcmV0dXJuIGlmICRhY3Rpb247Ci0JJHBhdGhfaW5mbyA9fiBzLF5cUSRwcm9qZWN0XEUvKiwsOwotCW15ICgkcmVmbmFtZSwgJHBhdGhuYW1lKSA9IHNwbGl0KC86LywgJHBhdGhfaW5mbywgMik7Ci0JaWYgKGRlZmluZWQgJHBhdGhuYW1lKSB7Ci0JCSMgd2UgZ290ICJwcm9qZWN0LmdpdC9icmFuY2g6ZmlsZW5hbWUiIG9yICJwcm9qZWN0LmdpdC9icmFuY2g6ZGlyLyIKLQkJIyB3ZSBjb3VsZCB1c2UgZ2l0X2dldF90eXBlKGJyYW5jaDpwYXRobmFtZSksIGJ1dCBpdCBuZWVkcyAkZ2l0X2RpcgotCQkkcGF0aG5hbWUgPX4gcyxeLyssLDsKLQkJaWYgKCEkcGF0aG5hbWUgfHwgc3Vic3RyKCRwYXRobmFtZSwgLTEpIGVxICIvIikgewotCQkJJGFjdGlvbiAgfHw9ICJ0cmVlIjsKLQkJCSRwYXRobmFtZSA9fiBzLC8kLCw7Ci0JCX0gZWxzZSB7Ci0JCQkkYWN0aW9uICB8fD0gImJsb2JfcGxhaW4iOwotCQl9Ci0JCSRoYXNoX2Jhc2UgfHw9IHZhbGlkYXRlX3JlZm5hbWUoJHJlZm5hbWUpOwotCQkkZmlsZV9uYW1lIHx8PSB2YWxpZGF0ZV9wYXRobmFtZSgkcGF0aG5hbWUpOwotCX0gZWxzaWYgKGRlZmluZWQgJHJlZm5hbWUpIHsKLQkJIyB3ZSBnb3QgInByb2plY3QuZ2l0L2JyYW5jaCIKLQkJJGFjdGlvbiB8fD0gInNob3J0bG9nIjsKLQkJJGhhc2ggICB8fD0gdmFsaWRhdGVfcmVmbmFtZSgkcmVmbmFtZSk7Ci0JfQotfQotZXZhbHVhdGVfcGF0aF9pbmZvKCk7Ci0KLSMgcGF0aCB0byB0aGUgY3VycmVudCBnaXQgcmVwb3NpdG9yeQotb3VyICRnaXRfZGlyOwotJGdpdF9kaXIgPSAiJHByb2plY3Ryb290LyRwcm9qZWN0IiBpZiAkcHJvamVjdDsKLQotIyBkaXNwYXRjaAotbXkgJWFjdGlvbnMgPSAoCisjIHdlIHdpbGwgYWxzbyBuZWVkIHRvIGtub3cgdGhlIHBvc3NpYmxlIGFjdGlvbnMsIGZvciB2YWxpZGF0aW9uCitvdXIgJWFjdGlvbnMgPSAoCiAJImJsYW1lIiA9PiBcJmdpdF9ibGFtZSwKIAkiYmxvYmRpZmYiID0+IFwmZ2l0X2Jsb2JkaWZmLAogCSJibG9iZGlmZl9wbGFpbiIgPT4gXCZnaXRfYmxvYmRpZmZfcGxhaW4sCkBAIC01NzYsNiArNTIxLDI3NSBAQAogCSJwcm9qZWN0X2luZGV4IiA9PiBcJmdpdF9wcm9qZWN0X2luZGV4LAogKTsKIAorIyBmaW5hbGx5LCB3ZSBoYXZlIHRoZSBoYXNoIG9mIGFsbG93ZWQgZXh0cmFfb3B0aW9ucyBmb3IgdGhlIGNvbW1hbmRzIHRoYXQKKyMgYWxsb3cgdGhlbQorb3VyICVhbGxvd2VkX29wdGlvbnMgPSAoCisJIi0tbm8tbWVyZ2VzIiA9PiBbIHF3KHJzcyBhdG9tIGxvZyBzaG9ydGxvZyBoaXN0b3J5KSBdLAorKTsKKworIyBmaWxsICVpbnB1dF9wYXJhbXMgd2l0aCB0aGUgQ0dJIHBhcmFtZXRlcnMuIEFsbCB2YWx1ZXMgZXhjZXB0IGZvciAnb3B0JworIyBzaG91bGQgYmUgc2luZ2xlIHZhbHVlcywgYnV0IG9wdCBjYW4gYmUgYW4gYXJyYXkuIFdlIHNob3VsZCBwcm9iYWJseQorIyBidWlsZCBhbiBhcnJheSBvZiBwYXJhbWV0ZXJzIHRoYXQgY2FuIGJlIG11bHRpLXZhbHVlZCwgYnV0IHNpbmNlIGZvciB0aGUgdGltZQorIyBiZWluZyBpdCdzIG9ubHkgdGhpcyBvbmUsIHdlIGp1c3Qgc2luZ2xlIGl0IG91dAord2hpbGUgKG15ICgkbmFtZSwgJHN5bWJvbCkgPSBlYWNoICVjZ2lfcGFyYW1fbWFwcGluZykgeworCWlmICgkc3ltYm9sIGVxICdvcHQnKSB7CisJCSRpbnB1dF9wYXJhbXN7JG5hbWV9ID0gWyAkY2dpLT5wYXJhbSgkc3ltYm9sKSBdOworCX0gZWxzZSB7CisJCSRpbnB1dF9wYXJhbXN7JG5hbWV9ID0gJGNnaS0+cGFyYW0oJHN5bWJvbCk7CisJfQorfQorCisjIG5vdyByZWFkIFBBVEhfSU5GTyBhbmQgdXBkYXRlIHRoZSBwYXJhbWV0ZXIgbGlzdCBmb3IgbWlzc2luZyBwYXJhbWV0ZXJzCitzdWIgZXZhbHVhdGVfcGF0aF9pbmZvIHsKKwlyZXR1cm4gaWYgZGVmaW5lZCAkaW5wdXRfcGFyYW1zeydwcm9qZWN0J307CisJcmV0dXJuIGlmICEkcGF0aF9pbmZvOworCSRwYXRoX2luZm8gPX4gcyxeLyssLDsKKwlyZXR1cm4gaWYgISRwYXRoX2luZm87CisKKwkjIGZpbmQgd2hpY2ggcGFydCBvZiBQQVRIX0lORk8gaXMgcHJvamVjdAorCW15ICRwcm9qZWN0ID0gJHBhdGhfaW5mbzsKKwkkcHJvamVjdCA9fiBzLC8rJCwsOworCXdoaWxlICgkcHJvamVjdCAmJiAhY2hlY2tfaGVhZF9saW5rKCIkcHJvamVjdHJvb3QvJHByb2plY3QiKSkgeworCQkkcHJvamVjdCA9fiBzLC8qW14vXSokLCw7CisJfQorCXJldHVybiB1bmxlc3MgJHByb2plY3Q7CisJJGlucHV0X3BhcmFtc3sncHJvamVjdCd9ID0gJHByb2plY3Q7CisKKwkjIGRvIG5vdCBjaGFuZ2UgYW55IHBhcmFtZXRlcnMgaWYgYW4gYWN0aW9uIGlzIGdpdmVuIHVzaW5nIHRoZSBxdWVyeSBzdHJpbmcKKwlyZXR1cm4gaWYgJGlucHV0X3BhcmFtc3snYWN0aW9uJ307CisJJHBhdGhfaW5mbyA9fiBzLF5cUSRwcm9qZWN0XEUvKiwsOworCisJIyBuZXh0LCBjaGVjayBpZiB3ZSBoYXZlIGFuIGFjdGlvbgorCW15ICRhY3Rpb24gPSAkcGF0aF9pbmZvOworCSRhY3Rpb24gPX4gcywvLiokLCw7CisJaWYgKGV4aXN0cyAkYWN0aW9uc3skYWN0aW9ufSkgeworCQkkcGF0aF9pbmZvID1+IHMsXiRhY3Rpb24vKiwsOworCQkkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSA9ICRhY3Rpb247CisJfQorCisJIyBsaXN0IG9mIGFjdGlvbnMgdGhhdCB3YW50IGhhc2hfYmFzZSBpbnN0ZWFkIG9mIGhhc2gsIGJ1dCBjYW4gaGF2ZSBubworCSMgcGF0aG5hbWUgKGYpIHBhcmFtZXRlcgorCW15IEB3YW50c19iYXNlID0gKAorCQkndHJlZScsCisJCSdoaXN0b3J5JywKKwkpOworCisJIyB3ZSB3YW50IHRvIGNhdGNoCisJIyBbJGhhc2hfcGFyZW50X2Jhc2VbOiRmaWxlX3BhcmVudF0uLl0kaGFzaF9wYXJlbnRbOiRmaWxlX25hbWVdCisJbXkgKCRwYXJlbnRyZWZuYW1lLCAkcGFyZW50cGF0aG5hbWUsICRyZWZuYW1lLCAkcGF0aG5hbWUpID0KKwkJKCRwYXRoX2luZm8gPX4gL14oPzooLis/KSg/OjooLispKT9cLlwuKT8oLis/KSg/OjooLispKT8kLyk7CisKKwkjIGZpcnN0LCBhbmFseXplIHRoZSAnY3VycmVudCcgcGFydAorCWlmIChkZWZpbmVkICRwYXRobmFtZSkgeworCQkjIHdlIGdvdCAiYnJhbmNoOmZpbGVuYW1lIiBvciAiYnJhbmNoOmRpci8iCisJCSMgd2UgY291bGQgdXNlIGdpdF9nZXRfdHlwZShicmFuY2g6cGF0aG5hbWUpLCBidXQ6CisJCSMgLSBpdCBuZWVkcyAkZ2l0X2RpcgorCQkjIC0gaXQgZG9lcyBhIGdpdCgpIGNhbGwKKwkJIyAtIHRoZSBjb252ZW50aW9uIG9mIHRlcm1pbmF0aW5nIGRpcmVjdG9yaWVzIHdpdGggYSBzbGFzaAorCQkjICAgbWFrZXMgaXQgc3VwZXJmbHVvdXMKKwkJIyAtIGVtYmVkZGluZyB0aGUgYWN0aW9uIGluIHRoZSBQQVRIX0lORk8gd291bGQgbWFrZSBpdCBldmVuCisJCSMgICBtb3JlIHN1cGVyZmx1b3VzCisJCSRwYXRobmFtZSA9fiBzLF4vKywsOworCQlpZiAoISRwYXRobmFtZSB8fCBzdWJzdHIoJHBhdGhuYW1lLCAtMSkgZXEgIi8iKSB7CisJCQkkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB8fD0gInRyZWUiOworCQkJJHBhdGhuYW1lID1+IHMsLyQsLDsKKwkJfSBlbHNlIHsKKwkJCSMgdGhlIGRlZmF1bHQgYWN0aW9uIGRlcGVuZHMgb24gd2hldGhlciB3ZSBoYWQgcGFyZW50IGluZm8KKwkJCSMgb3Igbm90CisJCQlpZiAoJHBhcmVudHJlZm5hbWUpIHsKKwkJCQkkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB8fD0gImJsb2JkaWZmX3BsYWluIjsKKwkJCX0gZWxzZSB7CisJCQkJJGlucHV0X3BhcmFtc3snYWN0aW9uJ30gfHw9ICJibG9iX3BsYWluIjsKKwkJCX0KKwkJfQorCQkkaW5wdXRfcGFyYW1zeydoYXNoX2Jhc2UnfSB8fD0gJHJlZm5hbWU7CisJCSRpbnB1dF9wYXJhbXN7J2ZpbGVfbmFtZSd9IHx8PSAkcGF0aG5hbWU7CisJfSBlbHNpZiAoZGVmaW5lZCAkcmVmbmFtZSkgeworCQkjIHdlIGdvdCAiYnJhbmNoIi4gSW4gdGhpcyBjYXNlIHdlIGhhdmUgdG8gY2hvb3NlIGlmIHdlIGhhdmUgdG8KKwkJIyBzZXQgaGFzaCBvciBoYXNoX2Jhc2UuCisJCSMKKwkJIyBNb3N0IG9mIHRoZSBhY3Rpb25zIHdpdGhvdXQgYSBwYXRobmFtZSBvbmx5IHdhbnQgaGFzaCB0byBiZQorCQkjIHNldCwgZXhjZXB0IGZvciB0aGUgb25lcyBzcGVjaWZpZWQgaW4gQHdhbnRzX2Jhc2UgdGhhdCB3YW50CisJCSMgaGFzaF9iYXNlIGluc3RlYWQuIEl0IHNob3VsZCBhbHNvIGJlIG5vdGVkIHRoYXQgaGFuZC1jcmFmdGVkCisJCSMgbGlua3MgaGF2aW5nICdoaXN0b3J5JyBhcyBhbiBhY3Rpb24gYW5kIG5vIHBhdGhuYW1lIG9yIGhhc2gKKwkJIyBzZXQgd2lsbCBmYWlsLCBidXQgdGhhdCBoYXBwZW5zIHJlZ2FyZGxlc3Mgb2YgUEFUSF9JTkZPLgorCQkkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB8fD0gInNob3J0bG9nIjsKKwkJaWYgKGdyZXAgeyAkXyBlcSAkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB9IEB3YW50c19iYXNlKSB7CisJCQkkaW5wdXRfcGFyYW1zeydoYXNoX2Jhc2UnfSB8fD0gJHJlZm5hbWU7CisJCX0gZWxzZSB7CisJCQkkaW5wdXRfcGFyYW1zeydoYXNoJ30gfHw9ICRyZWZuYW1lOworCQl9CisJfQorCisJIyBuZXh0LCBoYW5kbGUgdGhlICdwYXJlbnQnIHBhcnQsIGlmIHByZXNlbnQKKwlpZiAoZGVmaW5lZCAkcGFyZW50cmVmbmFtZSkgeworCQkjIGEgbWlzc2luZyBwYXRoc3BlYyBkZWZhdWx0cyB0byB0aGUgJ2N1cnJlbnQnIGZpbGVuYW1lLCBhbGxvd2luZyBlLmcuCisJCSMgc29tZXByb2plY3QvYmxvYmRpZmYvb2xkcmV2Li5uZXdyZXY6L2ZpbGVuYW1lCisJCWlmICgkcGFyZW50cGF0aG5hbWUpIHsKKwkJCSRwYXJlbnRwYXRobmFtZSA9fiBzLF4vKywsOworCQkJJHBhcmVudHBhdGhuYW1lID1+IHMsLyQsLDsKKwkJCSRpbnB1dF9wYXJhbXN7J2ZpbGVfcGFyZW50J30gfHw9ICRwYXJlbnRwYXRobmFtZTsKKwkJfSBlbHNlIHsKKwkJCSRpbnB1dF9wYXJhbXN7J2ZpbGVfcGFyZW50J30gfHw9ICRpbnB1dF9wYXJhbXN7J2ZpbGVfbmFtZSd9OworCQl9CisJCSMgd2UgYXNzdW1lIHRoYXQgaGFzaF9wYXJlbnRfYmFzZSBpcyB3YW50ZWQgaWYgYSBwYXRoIHdhcyBzcGVjaWZpZWQsCisJCSMgb3IgaWYgdGhlIGFjdGlvbiB3YW50cyBoYXNoX2Jhc2UgaW5zdGVhZCBvZiBoYXNoCisJCWlmIChkZWZpbmVkICRpbnB1dF9wYXJhbXN7J2ZpbGVfcGFyZW50J30gfHwKKwkJCWdyZXAgeyAkXyBlcSAkaW5wdXRfcGFyYW1zeydhY3Rpb24nfSB9IEB3YW50c19iYXNlKSB7CisJCQkkaW5wdXRfcGFyYW1zeydoYXNoX3BhcmVudF9iYXNlJ30gfHw9ICRwYXJlbnRyZWZuYW1lOworCQl9IGVsc2UgeworCQkJJGlucHV0X3BhcmFtc3snaGFzaF9wYXJlbnQnfSB8fD0gJHBhcmVudHJlZm5hbWU7CisJCX0KKwl9CisKKwkjIGZvciB0aGUgc25hcHNob3QgYWN0aW9uLCB3ZSBhbGxvdyBVUkxzIGluIHRoZSBmb3JtCisJIyAkcHJvamVjdC9zbmFwc2hvdC8kaGFzaC5leHQKKwkjIHdoZXJlIC5leHQgZGV0ZXJtaW5lcyB0aGUgc25hcHNob3QgYW5kIGdldHMgcmVtb3ZlZCBmcm9tIHRoZQorCSMgcGFzc2VkICRyZWZuYW1lIHRvIHByb3ZpZGUgdGhlICRoYXNoLgorCSMKKwkjIFRvIGJlIGFibGUgdG8gdGVsbCB0aGF0ICRyZWZuYW1lIGluY2x1ZGVzIHRoZSBmb3JtYXQgZXh0ZW5zaW9uLCB3ZQorCSMgcmVxdWlyZSB0aGUgZm9sbG93aW5nIHR3byBjb25kaXRpb25zIHRvIGJlIHNhdGlzZmllZDoKKwkjIC0gdGhlIGhhc2ggaW5wdXQgcGFyYW1ldGVyIE1VU1QgaGF2ZSBiZWVuIHNldCBmcm9tIHRoZSAkcmVmbmFtZSBwYXJ0CisJIyAgIG9mIHRoZSBVUkwgKGkuZS4gdGhleSBtdXN0IGJlIGVxdWFsKQorCSMgLSB0aGUgc25hcHNob3QgZm9ybWF0IE1VU1QgTk9UIGhhdmUgYmVlbiBkZWZpbmVkIGFscmVhZHkgKGUuZy4gZnJvbQorCSMgICBDR0kgcGFyYW1ldGVyIHNmKQorCSMgSXQncyBhbHNvIHVzZWxlc3MgdG8gdHJ5IGFueSBtYXRjaGluZyB1bmxlc3MgJHJlZm5hbWUgaGFzIGEgZG90LAorCSMgc28gd2UgY2hlY2sgZm9yIHRoYXQgdG9vCisJaWYgKGRlZmluZWQgJGlucHV0X3BhcmFtc3snYWN0aW9uJ30gJiYKKwkJJGlucHV0X3BhcmFtc3snYWN0aW9uJ30gZXEgJ3NuYXBzaG90JyAmJgorCQlkZWZpbmVkICRyZWZuYW1lICYmIGluZGV4KCRyZWZuYW1lLCAnLicpICE9IC0xICYmCisJCSRyZWZuYW1lIGVxICRpbnB1dF9wYXJhbXN7J2hhc2gnfSAmJgorCQkhZGVmaW5lZCAkaW5wdXRfcGFyYW1zeydzbmFwc2hvdF9mb3JtYXQnfSkgeworCQkjIFdlIGxvb3Agb3ZlciB0aGUga25vd24gc25hcHNob3QgZm9ybWF0cywgY2hlY2tpbmcgZm9yCisJCSMgZXh0ZW5zaW9ucy4gQWxsb3dlZCBleHRlbnNpb25zIGFyZSBib3RoIHRoZSBkZWZpbmVkIHN1ZmZpeAorCQkjICh3aGljaCBpbmNsdWRlcyB0aGUgaW5pdGlhbCBkb3QgYWxyZWFkeSkgYW5kIHRoZSBzbmFwc2hvdAorCQkjIGZvcm1hdCBrZXkgaXRzZWxmLCB3aXRoIGEgcHJlcGVuZGVkIGRvdAorCQl3aGlsZSAobXkgKCRmbXQsICVvcHQpID0gZWFjaCAla25vd25fc25hcHNob3RfZm9ybWF0cykgeworCQkJbXkgJGhhc2ggPSAkcmVmbmFtZTsKKwkJCW15ICRzZng7CisJCQkkaGFzaCA9fiBzLyhcUSRvcHR7J3N1ZmZpeCd9XEV8XFEuJGZtdFxFKSQvLzsKKwkJCW5leHQgdW5sZXNzICRzZnggPSAkMTsKKwkJCSMgYSB2YWxpZCBzdWZmaXggd2FzIGZvdW5kLCBzbyBzZXQgdGhlIHNuYXBzaG90IGZvcm1hdAorCQkJIyBhbmQgcmVzZXQgdGhlIGhhc2ggcGFyYW1ldGVyCisJCQkkaW5wdXRfcGFyYW1zeydzbmFwc2hvdF9mb3JtYXQnfSA9ICRmbXQ7CisJCQkkaW5wdXRfcGFyYW1zeydoYXNoJ30gPSAkaGFzaDsKKwkJCSMgd2UgYWxzbyBzZXQgdGhlIGZvcm1hdCBzdWZmaXggdG8gdGhlIG9uZSByZXF1ZXN0ZWQKKwkJCSMgaW4gdGhlIFVSTDogdGhpcyB3YXkgYSByZXF1ZXN0IGZvciBlLmcuIC50Z3ogcmV0dXJucworCQkJIyBhIC50Z3ogaW5zdGVhZCBvZiBhIC50YXIuZ3oKKwkJCSRrbm93bl9zbmFwc2hvdF9mb3JtYXRzeyRmbXR9eydzdWZmaXgnfSA9ICRzZng7CisJCQlsYXN0OworCQl9CisJfQorfQorZXZhbHVhdGVfcGF0aF9pbmZvKCk7CisKK291ciAkYWN0aW9uID0gJGlucHV0X3BhcmFtc3snYWN0aW9uJ307CitpZiAoZGVmaW5lZCAkYWN0aW9uKSB7CisJaWYgKCF2YWxpZGF0ZV9hY3Rpb24oJGFjdGlvbikpIHsKKwkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgYWN0aW9uIHBhcmFtZXRlciIpOworCX0KK30KKworIyBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBwYXRobmFtZXMKK291ciAkcHJvamVjdCA9ICRpbnB1dF9wYXJhbXN7J3Byb2plY3QnfTsKK2lmIChkZWZpbmVkICRwcm9qZWN0KSB7CisJaWYgKCF2YWxpZGF0ZV9wcm9qZWN0KCRwcm9qZWN0KSkgeworCQl1bmRlZiAkcHJvamVjdDsKKwkJZGllX2Vycm9yKDQwNCwgIk5vIHN1Y2ggcHJvamVjdCIpOworCX0KK30KKworb3VyICRmaWxlX25hbWUgPSAkaW5wdXRfcGFyYW1zeydmaWxlX25hbWUnfTsKK2lmIChkZWZpbmVkICRmaWxlX25hbWUpIHsKKwlpZiAoIXZhbGlkYXRlX3BhdGhuYW1lKCRmaWxlX25hbWUpKSB7CisJCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGZpbGUgcGFyYW1ldGVyIik7CisJfQorfQorCitvdXIgJGZpbGVfcGFyZW50ID0gJGlucHV0X3BhcmFtc3snZmlsZV9wYXJlbnQnfTsKK2lmIChkZWZpbmVkICRmaWxlX3BhcmVudCkgeworCWlmICghdmFsaWRhdGVfcGF0aG5hbWUoJGZpbGVfcGFyZW50KSkgeworCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBmaWxlIHBhcmVudCBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKKyMgcGFyYW1ldGVycyB3aGljaCBhcmUgcmVmbmFtZXMKK291ciAkaGFzaCA9ICRpbnB1dF9wYXJhbXN7J2hhc2gnfTsKK2lmIChkZWZpbmVkICRoYXNoKSB7CisJaWYgKCF2YWxpZGF0ZV9yZWZuYW1lKCRoYXNoKSkgeworCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBoYXNoIHBhcmFtZXRlciIpOworCX0KK30KKworb3VyICRoYXNoX3BhcmVudCA9ICRpbnB1dF9wYXJhbXN7J2hhc2hfcGFyZW50J307CitpZiAoZGVmaW5lZCAkaGFzaF9wYXJlbnQpIHsKKwlpZiAoIXZhbGlkYXRlX3JlZm5hbWUoJGhhc2hfcGFyZW50KSkgeworCQlkaWVfZXJyb3IoNDAwLCAiSW52YWxpZCBoYXNoIHBhcmVudCBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKK291ciAkaGFzaF9iYXNlID0gJGlucHV0X3BhcmFtc3snaGFzaF9iYXNlJ307CitpZiAoZGVmaW5lZCAkaGFzaF9iYXNlKSB7CisJaWYgKCF2YWxpZGF0ZV9yZWZuYW1lKCRoYXNoX2Jhc2UpKSB7CisJCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIGhhc2ggYmFzZSBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKK291ciBAZXh0cmFfb3B0aW9ucyA9IEB7JGlucHV0X3BhcmFtc3snZXh0cmFfb3B0aW9ucyd9fTsKKyMgQGV4dHJhX29wdGlvbnMgaXMgYWx3YXlzIGRlZmluZWQsIHNpbmNlIGl0IGNhbiBvbmx5IGJlIChjdXJyZW50bHkpIHNldCBmcm9tCisjIENHSSwgYW5kICRjZ2ktPnBhcmFtKCkgcmV0dXJucyB0aGUgZW1wdHkgYXJyYXkgaW4gYXJyYXkgY29udGV4dCBpZiB0aGUgcGFyYW0KKyMgaXMgbm90IHNldAorZm9yZWFjaCBteSAkb3B0IChAZXh0cmFfb3B0aW9ucykgeworCWlmIChub3QgZXhpc3RzICRhbGxvd2VkX29wdGlvbnN7JG9wdH0pIHsKKwkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgb3B0aW9uIHBhcmFtZXRlciIpOworCX0KKwlpZiAobm90IGdyZXAoL14kYWN0aW9uJC8sIEB7JGFsbG93ZWRfb3B0aW9uc3skb3B0fX0pKSB7CisJCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIG9wdGlvbiBwYXJhbWV0ZXIgZm9yIHRoaXMgYWN0aW9uIik7CisJfQorfQorCitvdXIgJGhhc2hfcGFyZW50X2Jhc2UgPSAkaW5wdXRfcGFyYW1zeydoYXNoX3BhcmVudF9iYXNlJ307CitpZiAoZGVmaW5lZCAkaGFzaF9wYXJlbnRfYmFzZSkgeworCWlmICghdmFsaWRhdGVfcmVmbmFtZSgkaGFzaF9wYXJlbnRfYmFzZSkpIHsKKwkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgaGFzaCBwYXJlbnQgYmFzZSBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKKyMgb3RoZXIgcGFyYW1ldGVycworb3VyICRwYWdlID0gJGlucHV0X3BhcmFtc3sncGFnZSd9OworaWYgKGRlZmluZWQgJHBhZ2UpIHsKKwlpZiAoJHBhZ2UgPX4gbS9bXjAtOV0vKSB7CisJCWRpZV9lcnJvcig0MDAsICJJbnZhbGlkIHBhZ2UgcGFyYW1ldGVyIik7CisJfQorfQorCitvdXIgJHNlYXJjaHR5cGUgPSAkaW5wdXRfcGFyYW1zeydzZWFyY2h0eXBlJ307CitpZiAoZGVmaW5lZCAkc2VhcmNodHlwZSkgeworCWlmICgkc2VhcmNodHlwZSA9fiBtL1teYS16XS8pIHsKKwkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgc2VhcmNodHlwZSBwYXJhbWV0ZXIiKTsKKwl9Cit9CisKK291ciAkc2VhcmNoX3VzZV9yZWdleHAgPSAkaW5wdXRfcGFyYW1zeydzZWFyY2hfdXNlX3JlZ2V4cCd9OworCitvdXIgJHNlYXJjaHRleHQgPSAkaW5wdXRfcGFyYW1zeydzZWFyY2h0ZXh0J307CitvdXIgJHNlYXJjaF9yZWdleHA7CitpZiAoZGVmaW5lZCAkc2VhcmNodGV4dCkgeworCWlmIChsZW5ndGgoJHNlYXJjaHRleHQpIDwgMikgeworCQlkaWVfZXJyb3IoNDAzLCAiQXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgYXJlIHJlcXVpcmVkIGZvciBzZWFyY2ggcGFyYW1ldGVyIik7CisJfQorCSRzZWFyY2hfcmVnZXhwID0gJHNlYXJjaF91c2VfcmVnZXhwID8gJHNlYXJjaHRleHQgOiBxdW90ZW1ldGEgJHNlYXJjaHRleHQ7Cit9CisKKyMgcGF0aCB0byB0aGUgY3VycmVudCBnaXQgcmVwb3NpdG9yeQorb3VyICRnaXRfZGlyOworJGdpdF9kaXIgPSAiJHByb2plY3Ryb290LyRwcm9qZWN0IiBpZiAkcHJvamVjdDsKKworIyBsaXN0IG9mIHN1cHBvcnRlZCBzbmFwc2hvdCBmb3JtYXRzCitvdXIgQHNuYXBzaG90X2ZtdHMgPSBnaXR3ZWJfZ2V0X2ZlYXR1cmUoJ3NuYXBzaG90Jyk7CitAc25hcHNob3RfZm10cyA9IGZpbHRlcl9zbmFwc2hvdF9mbXRzKEBzbmFwc2hvdF9mbXRzKTsKKworIyBkaXNwYXRjaAogaWYgKCFkZWZpbmVkICRhY3Rpb24pIHsKIAlpZiAoZGVmaW5lZCAkaGFzaCkgewogCQkkYWN0aW9uID0gZ2l0X2dldF90eXBlKCRoYXNoKTsKQEAgLTYwNSw1NSArODE5LDk2IEBACiAJIyBkZWZhdWx0IGlzIHRvIHVzZSAtYWJzb2x1dGUgdXJsKCkgaS5lLiAkbXlfdXJpCiAJbXkgJGhyZWYgPSAkcGFyYW1zey1mdWxsfSA/ICRteV91cmwgOiAkbXlfdXJpOwogCi0JIyBYWFg6IFdhcm5pbmc6IElmIHlvdSB0b3VjaCB0aGlzLCBjaGVjayB0aGUgc2VhcmNoIGZvcm0gZm9yIHVwZGF0aW5nLAotCSMgdG9vLgotCi0JbXkgQG1hcHBpbmcgPSAoCi0JCXByb2plY3QgPT4gInAiLAotCQlhY3Rpb24gPT4gImEiLAotCQlmaWxlX25hbWUgPT4gImYiLAotCQlmaWxlX3BhcmVudCA9PiAiZnAiLAotCQloYXNoID0+ICJoIiwKLQkJaGFzaF9wYXJlbnQgPT4gImhwIiwKLQkJaGFzaF9iYXNlID0+ICJoYiIsCi0JCWhhc2hfcGFyZW50X2Jhc2UgPT4gImhwYiIsCi0JCXBhZ2UgPT4gInBnIiwKLQkJb3JkZXIgPT4gIm8iLAotCQlzZWFyY2h0ZXh0ID0+ICJzIiwKLQkJc2VhcmNodHlwZSA9PiAic3QiLAotCQlzbmFwc2hvdF9mb3JtYXQgPT4gInNmIiwKLQkJZXh0cmFfb3B0aW9ucyA9PiAib3B0IiwKLQkJc2VhcmNoX3VzZV9yZWdleHAgPT4gInNyIiwKLQkpOwotCW15ICVtYXBwaW5nID0gQG1hcHBpbmc7Ci0KIAkkcGFyYW1zeydwcm9qZWN0J30gPSAkcHJvamVjdCB1bmxlc3MgZXhpc3RzICRwYXJhbXN7J3Byb2plY3QnfTsKIAogCWlmICgkcGFyYW1zey1yZXBsYXl9KSB7Ci0JCXdoaWxlIChteSAoJG5hbWUsICRzeW1ib2wpID0gZWFjaCAlbWFwcGluZykgeworCQl3aGlsZSAobXkgKCRuYW1lLCAkc3ltYm9sKSA9IGVhY2ggJWNnaV9wYXJhbV9tYXBwaW5nKSB7CiAJCQlpZiAoIWV4aXN0cyAkcGFyYW1zeyRuYW1lfSkgewotCQkJCSMgdG8gYWxsb3cgZm9yIG11bHRpdmFsdWVkIHBhcmFtcyB3ZSB1c2UgYXJyYXlyZWYgZm9ybQotCQkJCSRwYXJhbXN7JG5hbWV9ID0gWyAkY2dpLT5wYXJhbSgkc3ltYm9sKSBdOworCQkJCSRwYXJhbXN7JG5hbWV9ID0gJGlucHV0X3BhcmFtc3skbmFtZX07CiAJCQl9CiAJCX0KIAl9CiAKLQlteSAoJHVzZV9wYXRoaW5mbykgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgncGF0aGluZm8nKTsKKwlteSAkdXNlX3BhdGhpbmZvID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3BhdGhpbmZvJyk7CiAJaWYgKCR1c2VfcGF0aGluZm8pIHsKLQkJIyB1c2UgUEFUSF9JTkZPIGZvciBwcm9qZWN0IG5hbWUKKwkJIyB0cnkgdG8gcHV0IGFzIG1hbnkgcGFyYW1ldGVycyBhcyBwb3NzaWJsZSBpbiBQQVRIX0lORk86CisJCSMgICAtIHByb2plY3QgbmFtZQorCQkjICAgLSBhY3Rpb24KKwkJIyAgIC0gaGFzaF9wYXJlbnQgb3IgaGFzaF9wYXJlbnRfYmFzZTovZmlsZV9wYXJlbnQKKwkJIyAgIC0gaGFzaCBvciBoYXNoX2Jhc2U6L2ZpbGVuYW1lCisJCSMgICAtIHRoZSBzbmFwc2hvdF9mb3JtYXQgYXMgYW4gYXBwcm9wcmlhdGUgc3VmZml4CisKKwkJIyBXaGVuIHRoZSBzY3JpcHQgaXMgdGhlIHJvb3QgRGlyZWN0b3J5SW5kZXggZm9yIHRoZSBkb21haW4sCisJCSMgJGhyZWYgaGVyZSB3b3VsZCBiZSBzb21ldGhpbmcgbGlrZSBodHRwOi8vZ2l0d2ViLmV4YW1wbGUuY29tLworCQkjIFRodXMsIHdlIHN0cmlwIGFueSB0cmFpbGluZyAvIGZyb20gJGhyZWYsIHRvIHNwYXJlIHVzIGRvdWJsZQorCQkjIHNsYXNoZXMgaW4gdGhlIGZpbmFsIFVSTAorCQkkaHJlZiA9fiBzLC8kLCw7CisKKwkJIyBUaGVuIGFkZCB0aGUgcHJvamVjdCBuYW1lLCBpZiBwcmVzZW50CiAJCSRocmVmIC49ICIvIi5lc2NfdXJsKCRwYXJhbXN7J3Byb2plY3QnfSkgaWYgZGVmaW5lZCAkcGFyYW1zeydwcm9qZWN0J307CiAJCWRlbGV0ZSAkcGFyYW1zeydwcm9qZWN0J307CiAKLQkJIyBTdW1tYXJ5IGp1c3QgdXNlcyB0aGUgcHJvamVjdCBwYXRoIFVSTAotCQlpZiAoZGVmaW5lZCAkcGFyYW1zeydhY3Rpb24nfSAmJiAkcGFyYW1zeydhY3Rpb24nfSBlcSAnc3VtbWFyeScpIHsKKwkJIyBzaW5jZSB3ZSBkZXN0cnVjdGl2ZWx5IGFic29yYiBwYXJhbWV0ZXJzLCB3ZSBrZWVwIHRoaXMKKwkJIyBib29sZWFuIHRoYXQgcmVtZW1iZXJzIGlmIHdlJ3JlIGhhbmRsaW5nIGEgc25hcHNob3QKKwkJbXkgJGlzX3NuYXBzaG90ID0gJHBhcmFtc3snYWN0aW9uJ30gZXEgJ3NuYXBzaG90JzsKKworCQkjIFN1bW1hcnkganVzdCB1c2VzIHRoZSBwcm9qZWN0IHBhdGggVVJMLCBhbnkgb3RoZXIgYWN0aW9uIGlzCisJCSMgYWRkZWQgdG8gdGhlIFVSTAorCQlpZiAoZGVmaW5lZCAkcGFyYW1zeydhY3Rpb24nfSkgeworCQkJJGhyZWYgLj0gIi8iLmVzY191cmwoJHBhcmFtc3snYWN0aW9uJ30pIHVubGVzcyAkcGFyYW1zeydhY3Rpb24nfSBlcSAnc3VtbWFyeSc7CiAJCQlkZWxldGUgJHBhcmFtc3snYWN0aW9uJ307CiAJCX0KKworCQkjIE5leHQsIHdlIHB1dCBoYXNoX3BhcmVudF9iYXNlOi9maWxlX3BhcmVudC4uaGFzaF9iYXNlOi9maWxlX25hbWUsCisJCSMgc3RyaXBwaW5nIG5vbmV4aXN0ZW50IG9yIHVzZWxlc3MgcGllY2VzCisJCSRocmVmIC49ICIvIiBpZiAoJHBhcmFtc3snaGFzaF9iYXNlJ30gfHwgJHBhcmFtc3snaGFzaF9wYXJlbnRfYmFzZSd9CisJCQl8fCAkcGFyYW1zeydoYXNoX3BhcmVudCd9IHx8ICRwYXJhbXN7J2hhc2gnfSk7CisJCWlmIChkZWZpbmVkICRwYXJhbXN7J2hhc2hfYmFzZSd9KSB7CisJCQlpZiAoZGVmaW5lZCAkcGFyYW1zeydoYXNoX3BhcmVudF9iYXNlJ30pIHsKKwkJCQkkaHJlZiAuPSBlc2NfdXJsKCRwYXJhbXN7J2hhc2hfcGFyZW50X2Jhc2UnfSk7CisJCQkJIyBza2lwIHRoZSBmaWxlX3BhcmVudCBpZiBpdCdzIHRoZSBzYW1lIGFzIHRoZSBmaWxlX25hbWUKKwkJCQlkZWxldGUgJHBhcmFtc3snZmlsZV9wYXJlbnQnfSBpZiAkcGFyYW1zeydmaWxlX3BhcmVudCd9IGVxICRwYXJhbXN7J2ZpbGVfbmFtZSd9OworCQkJCWlmIChkZWZpbmVkICRwYXJhbXN7J2ZpbGVfcGFyZW50J30gJiYgJHBhcmFtc3snZmlsZV9wYXJlbnQnfSAhfiAvXC5cLi8pIHsKKwkJCQkJJGhyZWYgLj0gIjovIi5lc2NfdXJsKCRwYXJhbXN7J2ZpbGVfcGFyZW50J30pOworCQkJCQlkZWxldGUgJHBhcmFtc3snZmlsZV9wYXJlbnQnfTsKKwkJCQl9CisJCQkJJGhyZWYgLj0gIi4uIjsKKwkJCQlkZWxldGUgJHBhcmFtc3snaGFzaF9wYXJlbnQnfTsKKwkJCQlkZWxldGUgJHBhcmFtc3snaGFzaF9wYXJlbnRfYmFzZSd9OworCQkJfSBlbHNpZiAoZGVmaW5lZCAkcGFyYW1zeydoYXNoX3BhcmVudCd9KSB7CisJCQkJJGhyZWYgLj0gZXNjX3VybCgkcGFyYW1zeydoYXNoX3BhcmVudCd9KS4gIi4uIjsKKwkJCQlkZWxldGUgJHBhcmFtc3snaGFzaF9wYXJlbnQnfTsKKwkJCX0KKworCQkJJGhyZWYgLj0gZXNjX3VybCgkcGFyYW1zeydoYXNoX2Jhc2UnfSk7CisJCQlpZiAoZGVmaW5lZCAkcGFyYW1zeydmaWxlX25hbWUnfSAmJiAkcGFyYW1zeydmaWxlX25hbWUnfSAhfiAvXC5cLi8pIHsKKwkJCQkkaHJlZiAuPSAiOi8iLmVzY191cmwoJHBhcmFtc3snZmlsZV9uYW1lJ30pOworCQkJCWRlbGV0ZSAkcGFyYW1zeydmaWxlX25hbWUnfTsKKwkJCX0KKwkJCWRlbGV0ZSAkcGFyYW1zeydoYXNoJ307CisJCQlkZWxldGUgJHBhcmFtc3snaGFzaF9iYXNlJ307CisJCX0gZWxzaWYgKGRlZmluZWQgJHBhcmFtc3snaGFzaCd9KSB7CisJCQkkaHJlZiAuPSBlc2NfdXJsKCRwYXJhbXN7J2hhc2gnfSk7CisJCQlkZWxldGUgJHBhcmFtc3snaGFzaCd9OworCQl9CisKKwkJIyBJZiB0aGUgYWN0aW9uIHdhcyBhIHNuYXBzaG90LCB3ZSBjYW4gYWJzb3JiIHRoZQorCQkjIHNuYXBzaG90X2Zvcm1hdCBwYXJhbWV0ZXIgdG9vCisJCWlmICgkaXNfc25hcHNob3QpIHsKKwkJCW15ICRmbXQgPSAkcGFyYW1zeydzbmFwc2hvdF9mb3JtYXQnfTsKKwkJCSMgc25hcHNob3RfZm9ybWF0IHNob3VsZCBhbHdheXMgYmUgZGVmaW5lZCB3aGVuIGhyZWYoKQorCQkJIyBpcyBjYWxsZWQsIGJ1dCBqdXN0IGluIGNhc2Ugc29tZSBjb2RlIGZvcmdldHMsIHdlCisJCQkjIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdAorCQkJJGZtdCB8fD0gJHNuYXBzaG90X2ZtdHNbMF07CisJCQkkaHJlZiAuPSAka25vd25fc25hcHNob3RfZm9ybWF0c3skZm10fXsnc3VmZml4J307CisJCQlkZWxldGUgJHBhcmFtc3snc25hcHNob3RfZm9ybWF0J307CisJCX0KIAl9CiAKIAkjIG5vdyBlbmNvZGUgdGhlIHBhcmFtZXRlcnMgZXhwbGljaXRseQogCW15IEByZXN1bHQgPSAoKTsKLQlmb3IgKG15ICRpID0gMDsgJGkgPCBAbWFwcGluZzsgJGkgKz0gMikgewotCQlteSAoJG5hbWUsICRzeW1ib2wpID0gKCRtYXBwaW5nWyRpXSwgJG1hcHBpbmdbJGkrMV0pOworCWZvciAobXkgJGkgPSAwOyAkaSA8IEBjZ2lfcGFyYW1fbWFwcGluZzsgJGkgKz0gMikgeworCQlteSAoJG5hbWUsICRzeW1ib2wpID0gKCRjZ2lfcGFyYW1fbWFwcGluZ1skaV0sICRjZ2lfcGFyYW1fbWFwcGluZ1skaSsxXSk7CiAJCWlmIChkZWZpbmVkICRwYXJhbXN7JG5hbWV9KSB7CiAJCQlpZiAocmVmKCRwYXJhbXN7JG5hbWV9KSBlcSAiQVJSQVkiKSB7CiAJCQkJZm9yZWFjaCBteSAkcGFyIChAeyRwYXJhbXN7JG5hbWV9fSkgewpAQCAtNjczLDYgKzkyOCwyNCBAQAogIyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyMgdmFsaWRhdGlvbiwgcXVvdGluZy91bnF1b3RpbmcgYW5kIGVzY2FwaW5nCiAKK3N1YiB2YWxpZGF0ZV9hY3Rpb24geworCW15ICRpbnB1dCA9IHNoaWZ0IHx8IHJldHVybiB1bmRlZjsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzIGV4aXN0cyAkYWN0aW9uc3skaW5wdXR9OworCXJldHVybiAkaW5wdXQ7Cit9CisKK3N1YiB2YWxpZGF0ZV9wcm9qZWN0IHsKKwlteSAkaW5wdXQgPSBzaGlmdCB8fCByZXR1cm4gdW5kZWY7CisJaWYgKCF2YWxpZGF0ZV9wYXRobmFtZSgkaW5wdXQpIHx8CisJCSEoLWQgIiRwcm9qZWN0cm9vdC8kaW5wdXQiKSB8fAorCQkhY2hlY2tfZXhwb3J0X29rKCIkcHJvamVjdHJvb3QvJGlucHV0IikgfHwKKwkJKCRzdHJpY3RfZXhwb3J0ICYmICFwcm9qZWN0X2luX2xpc3QoJGlucHV0KSkpIHsKKwkJcmV0dXJuIHVuZGVmOworCX0gZWxzZSB7CisJCXJldHVybiAkaW5wdXQ7CisJfQorfQorCiBzdWIgdmFsaWRhdGVfcGF0aG5hbWUgewogCW15ICRpbnB1dCA9IHNoaWZ0IHx8IHJldHVybiB1bmRlZjsKIApAQCAtNzgzLDcgKzEwNTYsNyBAQAogCSk7CiAJbXkgJGNociA9ICggKGV4aXN0cyAkZXN7JGNudHJsfSkKIAkJICAgID8gJGVzeyRjbnRybH0KLQkJICAgIDogc3ByaW50ZignXCUwM28nLCBvcmQoJGNudHJsKSkgKTsKKwkJICAgIDogc3ByaW50ZignXCUyeCcsIG9yZCgkY250cmwpKSApOwogCWlmICgkb3B0c3stbm9odG1sfSkgewogCQlyZXR1cm4gJGNocjsKIAl9IGVsc2UgewpAQCAtMTA5OCwxMyArMTM3MSwyMyBAQAogfQogCiAjIGZvcm1hdCBtYXJrZXIgb2YgcmVmcyBwb2ludGluZyB0byBnaXZlbiBvYmplY3QKKworIyB0aGUgZGVzdGluYXRpb24gYWN0aW9uIGlzIGNob3NlbiBiYXNlZCBvbiBvYmplY3QgdHlwZSBhbmQgY3VycmVudCBjb250ZXh0OgorIyAtIGZvciBhbm5vdGF0ZWQgdGFncywgd2UgY2hvb3NlIHRoZSB0YWcgdmlldyB1bmxlc3MgaXQncyB0aGUgY3VycmVudCB2aWV3CisjICAgYWxyZWFkeSwgaW4gd2hpY2ggY2FzZSB3ZSBnbyB0byBzaG9ydGxvZyB2aWV3CisjIC0gZm9yIG90aGVyIHJlZnMsIHdlIGtlZXAgdGhlIGN1cnJlbnQgdmlldyBpZiB3ZSdyZSBpbiBoaXN0b3J5LCBzaG9ydGxvZyBvcgorIyAgIGxvZyB2aWV3LCBhbmQgc2VsZWN0IHNob3J0bG9nIG90aGVyd2lzZQogc3ViIGZvcm1hdF9yZWZfbWFya2VyIHsKIAlteSAoJHJlZnMsICRpZCkgPSBAXzsKIAlteSAkbWFya2VycyA9ICcnOwogCiAJaWYgKGRlZmluZWQgJHJlZnMtPnskaWR9KSB7CiAJCWZvcmVhY2ggbXkgJHJlZiAoQHskcmVmcy0+eyRpZH19KSB7CisJCQkjIHRoaXMgY29kZSBleHBsb2l0cyB0aGUgZmFjdCB0aGF0IG5vbi1saWdodHdlaWdodCB0YWdzIGFyZSB0aGUKKwkJCSMgb25seSBpbmRpcmVjdCBvYmplY3RzLCBhbmQgdGhhdCB0aGV5IGFyZSB0aGUgb25seSBvYmplY3RzIGZvciB3aGljaAorCQkJIyB3ZSB3YW50IHRvIHVzZSB0YWcgaW5zdGVhZCBvZiBzaG9ydGxvZyBhcyBhY3Rpb24KIAkJCW15ICgkdHlwZSwgJG5hbWUpID0gcXcoKTsKKwkJCW15ICRpbmRpcmVjdCA9ICgkcmVmID1+IHMvXF5ce1x9JC8vKTsKIAkJCSMgZS5nLiB0YWdzL3YyLjYuMTEgb3IgaGVhZHMvbmV4dAogCQkJaWYgKCRyZWYgPX4gbSFeKC4qPylzPy8oLiopJCEpIHsKIAkJCQkkdHlwZSA9ICQxOwpAQCAtMTExNCw4ICsxMzk3LDI5IEBACiAJCQkJJG5hbWUgPSAkcmVmOwogCQkJfQogCi0JCQkkbWFya2VycyAuPSAiIDxzcGFuIGNsYXNzPVwiJHR5cGVcIiB0aXRsZT1cIiRyZWZcIj4iIC4KLQkJCSAgICAgICAgICAgIGVzY19odG1sKCRuYW1lKSAuICI8L3NwYW4+IjsKKwkJCW15ICRjbGFzcyA9ICR0eXBlOworCQkJJGNsYXNzIC49ICIgaW5kaXJlY3QiIGlmICRpbmRpcmVjdDsKKworCQkJbXkgJGRlc3RfYWN0aW9uID0gInNob3J0bG9nIjsKKworCQkJaWYgKCRpbmRpcmVjdCkgeworCQkJCSRkZXN0X2FjdGlvbiA9ICJ0YWciIHVubGVzcyAkYWN0aW9uIGVxICJ0YWciOworCQkJfSBlbHNpZiAoJGFjdGlvbiA9fiAvXihoaXN0b3J5fChzaG9ydCk/bG9nKSQvKSB7CisJCQkJJGRlc3RfYWN0aW9uID0gJGFjdGlvbjsKKwkJCX0KKworCQkJbXkgJGRlc3QgPSAiIjsKKwkJCSRkZXN0IC49ICJyZWZzLyIgdW5sZXNzICRyZWYgPX4gbSFecmVmcy8hOworCQkJJGRlc3QgLj0gJHJlZjsKKworCQkJbXkgJGxpbmsgPSAkY2dpLT5hKHsKKwkJCQktaHJlZiA9PiBocmVmKAorCQkJCQlhY3Rpb249PiRkZXN0X2FjdGlvbiwKKwkJCQkJaGFzaD0+JGRlc3QKKwkJCQkpfSwgJG5hbWUpOworCisJCQkkbWFya2VycyAuPSAiIDxzcGFuIGNsYXNzPVwiJGNsYXNzXCIgdGl0bGU9XCIkcmVmXCI+IiAuCisJCQkJJGxpbmsgLiAiPC9zcGFuPiI7CiAJCX0KIAl9CiAKQEAgLTE0MjcsOCArMTczMSw2IEBACiAjIGxpbmtlZC4gIFBhc3MgdGhlIGhhc2ggb2YgdGhlIHRyZWUvY29tbWl0IHRvIHNuYXBzaG90Lgogc3ViIGZvcm1hdF9zbmFwc2hvdF9saW5rcyB7CiAJbXkgKCRoYXNoKSA9IEBfOwotCW15IEBzbmFwc2hvdF9mbXRzID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3NuYXBzaG90Jyk7Ci0JQHNuYXBzaG90X2ZtdHMgPSBmaWx0ZXJfc25hcHNob3RfZm10cyhAc25hcHNob3RfZm10cyk7CiAJbXkgJG51bV9mbXRzID0gQHNuYXBzaG90X2ZtdHM7CiAJaWYgKCRudW1fZm10cyA+IDEpIHsKIAkJIyBBIHBhcmVudGhlc2l6ZWQgbGlzdCBvZiBsaW5rcyBiZWFyaW5nIGZvcm1hdCBuYW1lcy4KQEAgLTE3MzIsNiArMjAzNCw3MSBAQAogCXJldHVybiAkZGVzY3I7CiB9CiAKK3N1YiBnaXRfZ2V0X3Byb2plY3RfY3RhZ3MgeworCW15ICRwYXRoID0gc2hpZnQ7CisJbXkgJGN0YWdzID0ge307CisKKwkkZ2l0X2RpciA9ICIkcHJvamVjdHJvb3QvJHBhdGgiOworCXVubGVzcyAob3BlbmRpciBELCAiJGdpdF9kaXIvY3RhZ3MiKSB7CisJCXJldHVybiAkY3RhZ3M7CisJfQorCWZvcmVhY2ggKGdyZXAgeyAtZiAkXyB9IG1hcCB7ICIkZ2l0X2Rpci9jdGFncy8kXyIgfSByZWFkZGlyKEQpKSB7CisJCW9wZW4gQ1QsICRfIG9yIG5leHQ7CisJCW15ICR2YWwgPSA8Q1Q+OworCQljaG9tcCAkdmFsOworCQljbG9zZSBDVDsKKwkJbXkgJGN0YWcgPSAkXzsgJGN0YWcgPX4gcyMuKi8jIzsKKwkJJGN0YWdzLT57JGN0YWd9ID0gJHZhbDsKKwl9CisJY2xvc2VkaXIgRDsKKwkkY3RhZ3M7Cit9CisKK3N1YiBnaXRfcG9wdWxhdGVfcHJvamVjdF90YWdjbG91ZCB7CisJbXkgJGN0YWdzID0gc2hpZnQ7CisKKwkjIEZpcnN0LCBtZXJnZSBkaWZmZXJlbnQtY2FzZWQgdGFnczsgdGFncyB2b3RlIG9uIGNhc2luZworCW15ICVjdGFnc19sYzsKKwlmb3JlYWNoIChrZXlzICUkY3RhZ3MpIHsKKwkJJGN0YWdzX2xje2xjICRffS0+e2NvdW50fSArPSAkY3RhZ3MtPnskX307CisJCWlmIChub3QgJGN0YWdzX2xje2xjICRffS0+e3RvcGNvdW50fQorCQkgICAgb3IgJGN0YWdzX2xje2xjICRffS0+e3RvcGNvdW50fSA8ICRjdGFncy0+eyRffSkgeworCQkJJGN0YWdzX2xje2xjICRffS0+e3RvcGNvdW50fSA9ICRjdGFncy0+eyRffTsKKwkJCSRjdGFnc19sY3tsYyAkX30tPnt0b3BuYW1lfSA9ICRfOworCQl9CisJfQorCisJbXkgJGNsb3VkOworCWlmIChldmFsIHsgcmVxdWlyZSBIVE1MOjpUYWdDbG91ZDsgMTsgfSkgeworCQkkY2xvdWQgPSBIVE1MOjpUYWdDbG91ZC0+bmV3OworCQlmb3JlYWNoIChzb3J0IGtleXMgJWN0YWdzX2xjKSB7CisJCQkjIFBhZCB0aGUgdGl0bGUgd2l0aCBzcGFjZXMgc28gdGhhdCB0aGUgY2xvdWQgbG9va3MKKwkJCSMgbGVzcyBjcmFtbWVkLgorCQkJbXkgJHRpdGxlID0gJGN0YWdzX2xjeyRffS0+e3RvcG5hbWV9OworCQkJJHRpdGxlID1+IHMvIC8mbmJzcDsvZzsKKwkJCSR0aXRsZSA9fiBzL14vJm5ic3A7L2c7CisJCQkkdGl0bGUgPX4gcy8kLyZuYnNwOy9nOworCQkJJGNsb3VkLT5hZGQoJHRpdGxlLCAkaG9tZV9saW5rLiI/YnlfdGFnPSIuJF8sICRjdGFnc19sY3skX30tPntjb3VudH0pOworCQl9CisJfSBlbHNlIHsKKwkJJGNsb3VkID0gXCVjdGFnc19sYzsKKwl9CisJJGNsb3VkOworfQorCitzdWIgZ2l0X3Nob3dfcHJvamVjdF90YWdjbG91ZCB7CisJbXkgKCRjbG91ZCwgJGNvdW50KSA9IEBfOworCXByaW50IFNUREVSUiByZWYoJGNsb3VkKS4iLi5cbiI7CisJaWYgKHJlZiAkY2xvdWQgZXEgJ0hUTUw6OlRhZ0Nsb3VkJykgeworCQlyZXR1cm4gJGNsb3VkLT5odG1sX2FuZF9jc3MoJGNvdW50KTsKKwl9IGVsc2UgeworCQlteSBAdGFncyA9IHNvcnQgeyAkY2xvdWQtPnskYX0tPntjb3VudH0gPD0+ICRjbG91ZC0+eyRifS0+e2NvdW50fSB9IGtleXMgJSRjbG91ZDsKKwkJcmV0dXJuICc8cCBhbGlnbj0iY2VudGVyIj4nIC4gam9pbiAoJywgJywgbWFwIHsKKwkJCSI8YSBocmVmPVwiJGhvbWVfbGluaz9ieV90YWc9JF9cIj4kY2xvdWQtPnskX30tPnt0b3BuYW1lfTwvYT4iCisJCX0gc3BsaWNlKEB0YWdzLCAwLCAkY291bnQpKSAuICc8L3A+JzsKKwl9Cit9CisKIHN1YiBnaXRfZ2V0X3Byb2plY3RfdXJsX2xpc3QgewogCW15ICRwYXRoID0gc2hpZnQ7CiAKQEAgLTE3NTMsNyArMjEyMCw3IEBACiAJJGZpbHRlciB8fD0gJyc7CiAJJGZpbHRlciA9fiBzL1wuZ2l0JC8vOwogCi0JbXkgKCRjaGVja19mb3JrcykgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnZm9ya3MnKTsKKwlteSAkY2hlY2tfZm9ya3MgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnZm9ya3MnKTsKIAogCWlmICgtZCAkcHJvamVjdHNfbGlzdCkgewogCQkjIHNlYXJjaCBpbiBkaXJlY3RvcnkKQEAgLTE3ODAsMTAgKzIxNDcsOSBAQAogCiAJCQkJbXkgJHN1YmRpciA9IHN1YnN0cigkRmlsZTo6RmluZDo6bmFtZSwgJHBmeGxlbiArIDEpOwogCQkJCSMgd2UgY2hlY2sgcmVsYXRlZCBmaWxlIGluICRwcm9qZWN0cm9vdAotCQkJCWlmICgkY2hlY2tfZm9ya3MgYW5kICRzdWJkaXIgPX4gbSMvLiMpIHsKLQkJCQkJJEZpbGU6OkZpbmQ6OnBydW5lID0gMTsKLQkJCQl9IGVsc2lmIChjaGVja19leHBvcnRfb2soIiRwcm9qZWN0cm9vdC8kZmlsdGVyLyRzdWJkaXIiKSkgewotCQkJCQlwdXNoIEBsaXN0LCB7IHBhdGggPT4gKCRmaWx0ZXIgPyAiJGZpbHRlci8iIDogJycpIC4gJHN1YmRpciB9OworCQkJCW15ICRwYXRoID0gKCRmaWx0ZXIgPyAiJGZpbHRlci8iIDogJycpIC4gJHN1YmRpcjsKKwkJCQlpZiAoY2hlY2tfZXhwb3J0X29rKCIkcHJvamVjdHJvb3QvJHBhdGgiKSkgeworCQkJCQlwdXNoIEBsaXN0LCB7IHBhdGggPT4gJHBhdGggfTsKIAkJCQkJJEZpbGU6OkZpbmQ6OnBydW5lID0gMTsKIAkJCQl9CiAJCQl9LApAQCAtMTkyNiw3ICsyMjkyLDcgQEAKIAogCXdoaWxlIChteSAkbGluZSA9IDwkZmQ+KSB7CiAJCWNob21wICRsaW5lOwotCQlpZiAoJGxpbmUgPX4gbSFeKFswLTlhLWZBLUZdezQwfSlcc3JlZnMvKCR0eXBlLz9bXl5dKykhKSB7CisJCWlmICgkbGluZSA9fiBtIV4oWzAtOWEtZkEtRl17NDB9KVxzcmVmcy8oJHR5cGUuKikkISkgewogCQkJaWYgKGRlZmluZWQgJHJlZnN7JDF9KSB7CiAJCQkJcHVzaCBAeyRyZWZzeyQxfX0sICQyOwogCQkJfSBlbHNlIHsKQEAgLTIzOTQsNiArMjc2MCwxNSBAQAogCXJldHVybiB0b191dGY4KCRvd25lcik7CiB9CiAKKyMgYXNzdW1lIHRoYXQgZmlsZSBleGlzdHMKK3N1YiBpbnNlcnRfZmlsZSB7CisJbXkgJGZpbGVuYW1lID0gc2hpZnQ7CisKKwlvcGVuIG15ICRmZCwgJzwnLCAkZmlsZW5hbWU7CisJcHJpbnQgbWFwIHsgdG9fdXRmOCgkXykgfSA8JGZkPjsKKwljbG9zZSAkZmQ7Cit9CisKICMjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICMjIG1pbWV0eXBlIHJlbGF0ZWQgZnVuY3Rpb25zCiAKQEAgLTI1ODIsOSArMjk1Nyw3IEBACiAJICAgICAgIjxib2R5PlxuIjsKIAogCWlmICgtZiAkc2l0ZV9oZWFkZXIpIHsKLQkJb3BlbiAobXkgJGZkLCAkc2l0ZV9oZWFkZXIpOwotCQlwcmludCA8JGZkPjsKLQkJY2xvc2UgJGZkOworCQlpbnNlcnRfZmlsZSgkc2l0ZV9oZWFkZXIpOwogCX0KIAogCXByaW50ICI8ZGl2IGNsYXNzPVwicGFnZV9oZWFkZXJcIj5cbiIgLgpAQCAtMjYwMSw3ICsyOTc0LDcgQEAKIAl9CiAJcHJpbnQgIjwvZGl2PlxuIjsKIAotCW15ICgkaGF2ZV9zZWFyY2gpID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3NlYXJjaCcpOworCW15ICRoYXZlX3NlYXJjaCA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdzZWFyY2gnKTsKIAlpZiAoZGVmaW5lZCAkcHJvamVjdCAmJiAkaGF2ZV9zZWFyY2gpIHsKIAkJaWYgKCFkZWZpbmVkICRzZWFyY2h0ZXh0KSB7CiAJCQkkc2VhcmNodGV4dCA9ICIiOwpAQCAtMjYxNSw3ICsyOTg4LDcgQEAKIAkJCSRzZWFyY2hfaGFzaCA9ICJIRUFEIjsKIAkJfQogCQlteSAkYWN0aW9uID0gJG15X3VyaTsKLQkJbXkgKCR1c2VfcGF0aGluZm8pID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3BhdGhpbmZvJyk7CisJCW15ICR1c2VfcGF0aGluZm8gPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgncGF0aGluZm8nKTsKIAkJaWYgKCR1c2VfcGF0aGluZm8pIHsKIAkJCSRhY3Rpb24gLj0gIi8iLmVzY191cmwoJHByb2plY3QpOwogCQl9CkBAIC0yNjcxLDkgKzMwNDQsNyBAQAogCXByaW50ICI8L2Rpdj5cbiI7ICMgY2xhc3M9InBhZ2VfZm9vdGVyIgogCiAJaWYgKC1mICRzaXRlX2Zvb3RlcikgewotCQlvcGVuIChteSAkZmQsICRzaXRlX2Zvb3Rlcik7Ci0JCXByaW50IDwkZmQ+OwotCQljbG9zZSAkZmQ7CisJCWluc2VydF9maWxlKCRzaXRlX2Zvb3Rlcik7CiAJfQogCiAJcHJpbnQgIjwvYm9keT5cbiIgLgpAQCAtMjczNCwxMyArMzEwNSwzMSBAQAogCQkJfQogCQl9CiAJfQorCiAJJGFyZ3sndHJlZSd9eydoYXNoJ30gPSAkdHJlZWhlYWQgaWYgZGVmaW5lZCAkdHJlZWhlYWQ7CiAJJGFyZ3sndHJlZSd9eydoYXNoX2Jhc2UnfSA9ICR0cmVlYmFzZSBpZiBkZWZpbmVkICR0cmVlYmFzZTsKIAorCW15IEBhY3Rpb25zID0gZ2l0d2ViX2dldF9mZWF0dXJlKCdhY3Rpb25zJyk7CisJbXkgJXJlcGwgPSAoCisJCSclJyA9PiAnJScsCisJCSduJyA9PiAkcHJvamVjdCwgICAgICAgICAjIHByb2plY3QgbmFtZQorCQknZicgPT4gJGdpdF9kaXIsICAgICAgICAgIyBwcm9qZWN0IHBhdGggd2l0aGluIGZpbGVzeXN0ZW0KKwkJJ2gnID0+ICR0cmVlaGVhZCB8fCAnJywgICMgY3VycmVudCBoYXNoICgnaCcgcGFyYW1ldGVyKQorCQknYicgPT4gJHRyZWViYXNlIHx8ICcnLCAgIyBoYXNoIGJhc2UgKCdoYicgcGFyYW1ldGVyKQorCSk7CisJd2hpbGUgKEBhY3Rpb25zKSB7CisJCW15ICgkbGFiZWwsICRsaW5rLCAkcG9zKSA9IHNwbGljZShAYWN0aW9ucywwLDMpOworCQkjIGluc2VydAorCQlAbmF2cyA9IG1hcCB7ICRfIGVxICRwb3MgPyAoJF8sICRsYWJlbCkgOiAkXyB9IEBuYXZzOworCQkjIG11bmNoIG11bmNoCisJCSRsaW5rID1+IHMvJShbJW5maGJdKS8kcmVwbHskMX0vZzsKKwkJJGFyZ3skbGFiZWx9eydfaHJlZid9ID0gJGxpbms7CisJfQorCiAJcHJpbnQgIjxkaXYgY2xhc3M9XCJwYWdlX25hdlwiPlxuIiAuCiAJCShqb2luICIgfCAiLAogCQkgbWFwIHsgJF8gZXEgJGN1cnJlbnQgPwotCQkgICAgICAgJF8gOiAkY2dpLT5hKHstaHJlZiA9PiBocmVmKCV7JGFyZ3skX319KX0sICIkXyIpCisJCSAgICAgICAkXyA6ICRjZ2ktPmEoey1ocmVmID0+ICgkYXJneyRffXtfaHJlZn0gPyAkYXJneyRffXtfaHJlZn0gOiBocmVmKCV7JGFyZ3skX319KSl9LCAiJF8iKQogCQkgfSBAbmF2cyk7CiAJcHJpbnQgIjxici8+XG4kZXh0cmE8YnIvPlxuIiAuCiAJICAgICAgIjwvZGl2PlxuIjsKQEAgLTMwOTAsNyArMzQ3OSw3IEBACiBzdWIgZ2l0X2RpZmZ0cmVlX2JvZHkgewogCW15ICgkZGlmZnRyZWUsICRoYXNoLCBAcGFyZW50cykgPSBAXzsKIAlteSAoJHBhcmVudCkgPSAkcGFyZW50c1swXTsKLQlteSAoJGhhdmVfYmxhbWUpID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2JsYW1lJyk7CisJbXkgJGhhdmVfYmxhbWUgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnYmxhbWUnKTsKIAlwcmludCAiPGRpdiBjbGFzcz1cImxpc3RfaGVhZFwiPlxuIjsKIAlpZiAoJCN7JGRpZmZ0cmVlfSA+IDEwKSB7CiAJCXByaW50KCgkI3skZGlmZnRyZWV9ICsgMSkgLiAiIGZpbGVzIGNoYW5nZWQ6XG4iKTsKQEAgLTM1NTAsNiArMzkzOSw3IEBACiAJbXkgKCRwcm9qbGlzdCwgJGNoZWNrX2ZvcmtzKSA9IEBfOwogCW15IEBwcm9qZWN0czsKIAorCW15ICRzaG93X2N0YWdzID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2N0YWdzJyk7CiAgUFJPSkVDVDoKIAlmb3JlYWNoIG15ICRwciAoQCRwcm9qbGlzdCkgewogCQlteSAoQGFjdGl2aXR5KSA9IGdpdF9nZXRfbGFzdF9hY3Rpdml0eSgkcHItPnsncGF0aCd9KTsKQEAgLTM1NzYsMjUgKzM5NjYsMjAgQEAKIAkJCQkkcHItPnsnZm9ya3MnfSA9IDA7CiAJCQl9CiAJCX0KKwkJJHNob3dfY3RhZ3MgYW5kICRwci0+eydjdGFncyd9ID0gZ2l0X2dldF9wcm9qZWN0X2N0YWdzKCRwci0+eydwYXRoJ30pOwogCQlwdXNoIEBwcm9qZWN0cywgJHByOwogCX0KIAogCXJldHVybiBAcHJvamVjdHM7CiB9CiAKLSMgcHJpbnQgJ3NvcnQgYnknIDx0aD4gZWxlbWVudCwgZWl0aGVyIHNvcnRpbmcgYnkgJGtleSBpZiAkbmFtZSBlcSAkb3JkZXIKLSMgKGNoYW5naW5nICRsaXN0KSwgb3IgZ2VuZXJhdGluZyAnc29ydCBieSAkbmFtZScgcmVwbGF5IGxpbmsgb3RoZXJ3aXNlCisjIHByaW50ICdzb3J0IGJ5JyA8dGg+IGVsZW1lbnQsIGdlbmVyYXRpbmcgJ3NvcnQgYnkgJG5hbWUnIHJlcGxheSBsaW5rCisjIGlmIHRoYXQgb3JkZXIgaXMgbm90IHNlbGVjdGVkCiBzdWIgcHJpbnRfc29ydF90aCB7Ci0JbXkgKCRzdHJfc29ydCwgJG5hbWUsICRvcmRlciwgJGtleSwgJGhlYWRlciwgJGxpc3QpID0gQF87Ci0JJGtleSAgICB8fD0gJG5hbWU7CisJbXkgKCRuYW1lLCAkb3JkZXIsICRoZWFkZXIpID0gQF87CiAJJGhlYWRlciB8fD0gdWNmaXJzdCgkbmFtZSk7CiAKIAlpZiAoJG9yZGVyIGVxICRuYW1lKSB7Ci0JCWlmICgkc3RyX3NvcnQpIHsKLQkJCUAkbGlzdCA9IHNvcnQgeyRhLT57JGtleX0gY21wICRiLT57JGtleX19IEAkbGlzdDsKLQkJfSBlbHNlIHsKLQkJCUAkbGlzdCA9IHNvcnQgeyRhLT57JGtleX0gPD0+ICRiLT57JGtleX19IEAkbGlzdDsKLQkJfQogCQlwcmludCAiPHRoPiRoZWFkZXI8L3RoPlxuIjsKIAl9IGVsc2UgewogCQlwcmludCAiPHRoPiIgLgpAQCAtMzYwNCw0NCArMzk4OSw3MSBAQAogCX0KIH0KIAotc3ViIHByaW50X3NvcnRfdGhfc3RyIHsKLQlwcmludF9zb3J0X3RoKDEsIEBfKTsKLX0KLQotc3ViIHByaW50X3NvcnRfdGhfbnVtIHsKLQlwcmludF9zb3J0X3RoKDAsIEBfKTsKLX0KLQogc3ViIGdpdF9wcm9qZWN0X2xpc3RfYm9keSB7CisJIyBhY3R1YWxseSB1c2VzIGdsb2JhbCB2YXJpYWJsZSAkcHJvamVjdAogCW15ICgkcHJvamxpc3QsICRvcmRlciwgJGZyb20sICR0bywgJGV4dHJhLCAkbm9faGVhZGVyKSA9IEBfOwogCi0JbXkgKCRjaGVja19mb3JrcykgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnZm9ya3MnKTsKKwlteSAkY2hlY2tfZm9ya3MgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnZm9ya3MnKTsKIAlteSBAcHJvamVjdHMgPSBmaWxsX3Byb2plY3RfbGlzdF9pbmZvKCRwcm9qbGlzdCwgJGNoZWNrX2ZvcmtzKTsKIAogCSRvcmRlciB8fD0gJGRlZmF1bHRfcHJvamVjdHNfb3JkZXI7CiAJJGZyb20gPSAwIHVubGVzcyBkZWZpbmVkICRmcm9tOwogCSR0byA9ICQjcHJvamVjdHMgaWYgKCFkZWZpbmVkICR0byB8fCAkI3Byb2plY3RzIDwgJHRvKTsKIAorCW15ICVvcmRlcl9pbmZvID0gKAorCQlwcm9qZWN0ID0+IHsga2V5ID0+ICdwYXRoJywgdHlwZSA9PiAnc3RyJyB9LAorCQlkZXNjciA9PiB7IGtleSA9PiAnZGVzY3JfbG9uZycsIHR5cGUgPT4gJ3N0cicgfSwKKwkJb3duZXIgPT4geyBrZXkgPT4gJ293bmVyJywgdHlwZSA9PiAnc3RyJyB9LAorCQlhZ2UgPT4geyBrZXkgPT4gJ2FnZScsIHR5cGUgPT4gJ251bScgfQorCSk7CisJbXkgJG9pID0gJG9yZGVyX2luZm97JG9yZGVyfTsKKwlpZiAoJG9pLT57J3R5cGUnfSBlcSAnc3RyJykgeworCQlAcHJvamVjdHMgPSBzb3J0IHskYS0+eyRvaS0+eydrZXknfX0gY21wICRiLT57JG9pLT57J2tleSd9fX0gQHByb2plY3RzOworCX0gZWxzZSB7CisJCUBwcm9qZWN0cyA9IHNvcnQgeyRhLT57JG9pLT57J2tleSd9fSA8PT4gJGItPnskb2ktPnsna2V5J319fSBAcHJvamVjdHM7CisJfQorCisJbXkgJHNob3dfY3RhZ3MgPSBnaXR3ZWJfY2hlY2tfZmVhdHVyZSgnY3RhZ3MnKTsKKwlpZiAoJHNob3dfY3RhZ3MpIHsKKwkJbXkgJWN0YWdzOworCQlmb3JlYWNoIG15ICRwIChAcHJvamVjdHMpIHsKKwkJCWZvcmVhY2ggbXkgJGN0IChrZXlzICV7JHAtPnsnY3RhZ3MnfX0pIHsKKwkJCQkkY3RhZ3N7JGN0fSArPSAkcC0+eydjdGFncyd9LT57JGN0fTsKKwkJCX0KKwkJfQorCQlteSAkY2xvdWQgPSBnaXRfcG9wdWxhdGVfcHJvamVjdF90YWdjbG91ZChcJWN0YWdzKTsKKwkJcHJpbnQgZ2l0X3Nob3dfcHJvamVjdF90YWdjbG91ZCgkY2xvdWQsIDY0KTsKKwl9CisKIAlwcmludCAiPHRhYmxlIGNsYXNzPVwicHJvamVjdF9saXN0XCI+XG4iOwogCXVubGVzcyAoJG5vX2hlYWRlcikgewogCQlwcmludCAiPHRyPlxuIjsKIAkJaWYgKCRjaGVja19mb3JrcykgewogCQkJcHJpbnQgIjx0aD48L3RoPlxuIjsKIAkJfQotCQlwcmludF9zb3J0X3RoX3N0cigncHJvamVjdCcsICRvcmRlciwgJ3BhdGgnLAotCQkgICAgICAgICAgICAgICAgICAnUHJvamVjdCcsIFxAcHJvamVjdHMpOwotCQlwcmludF9zb3J0X3RoX3N0cignZGVzY3InLCAkb3JkZXIsICdkZXNjcl9sb25nJywKLQkJICAgICAgICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uJywgXEBwcm9qZWN0cyk7Ci0JCXByaW50X3NvcnRfdGhfc3RyKCdvd25lcicsICRvcmRlciwgJ293bmVyJywKLQkJICAgICAgICAgICAgICAgICAgJ093bmVyJywgXEBwcm9qZWN0cyk7Ci0JCXByaW50X3NvcnRfdGhfbnVtKCdhZ2UnLCAkb3JkZXIsICdhZ2UnLAotCQkgICAgICAgICAgICAgICAgICAnTGFzdCBDaGFuZ2UnLCBcQHByb2plY3RzKTsKKwkJcHJpbnRfc29ydF90aCgncHJvamVjdCcsICRvcmRlciwgJ1Byb2plY3QnKTsKKwkJcHJpbnRfc29ydF90aCgnZGVzY3InLCAkb3JkZXIsICdEZXNjcmlwdGlvbicpOworCQlwcmludF9zb3J0X3RoKCdvd25lcicsICRvcmRlciwgJ093bmVyJyk7CisJCXByaW50X3NvcnRfdGgoJ2FnZScsICRvcmRlciwgJ0xhc3QgQ2hhbmdlJyk7CiAJCXByaW50ICI8dGg+PC90aD5cbiIgLiAjIGZvciBsaW5rcwogCQkgICAgICAiPC90cj5cbiI7CiAJfQogCW15ICRhbHRlcm5hdGUgPSAxOworCW15ICR0YWdmaWx0ZXIgPSAkY2dpLT5wYXJhbSgnYnlfdGFnJyk7CiAJZm9yIChteSAkaSA9ICRmcm9tOyAkaSA8PSAkdG87ICRpKyspIHsKIAkJbXkgJHByID0gJHByb2plY3RzWyRpXTsKKworCQluZXh0IGlmICR0YWdmaWx0ZXIgYW5kICRzaG93X2N0YWdzIGFuZCBub3QgZ3JlcCB7IGxjICRfIGVxIGxjICR0YWdmaWx0ZXIgfSBrZXlzICV7JHByLT57J2N0YWdzJ319OworCQluZXh0IGlmICRzZWFyY2h0ZXh0IGFuZCBub3QgJHByLT57J3BhdGgnfSA9fiAvJHNlYXJjaHRleHQvCisJCQlhbmQgbm90ICRwci0+eydkZXNjcl9sb25nJ30gPX4gLyRzZWFyY2h0ZXh0LzsKKwkJIyBXZWVkIG91dCBmb3JrcyBvciBub24tbWF0Y2hpbmcgZW50cmllcyBvZiBzZWFyY2gKKwkJaWYgKCRjaGVja19mb3JrcykgeworCQkJbXkgJGZvcmtiYXNlID0gJHByb2plY3Q7ICRmb3JrYmFzZSB8fD0gJyc7ICRmb3JrYmFzZSA9fiBzI1wuZ2l0JCMvIzsKKwkJCSRmb3JrYmFzZT0iXiRmb3JrYmFzZSIgaWYgJGZvcmtiYXNlOworCQkJbmV4dCBpZiBub3QgJHNlYXJjaHRleHQgYW5kIG5vdCAkdGFnZmlsdGVyIGFuZCAkc2hvd19jdGFncworCQkJCWFuZCAkcHItPnsncGF0aCd9ID1+IG0jJGZvcmtiYXNlLiovLiojOyAjIHJlZ2V4cC1zYWZlCisJCX0KKwogCQlpZiAoJGFsdGVybmF0ZSkgewogCQkJcHJpbnQgIjx0ciBjbGFzcz1cImRhcmtcIj5cbiI7CiAJCX0gZWxzZSB7CkBAIC0zOTU4LDcgKzQzNzAsNyBAQAogIyMgYWN0aW9ucwogCiBzdWIgZ2l0X3Byb2plY3RfbGlzdCB7Ci0JbXkgJG9yZGVyID0gJGNnaS0+cGFyYW0oJ28nKTsKKwlteSAkb3JkZXIgPSAkaW5wdXRfcGFyYW1zeydvcmRlcid9OwogCWlmIChkZWZpbmVkICRvcmRlciAmJiAkb3JkZXIgIX4gbS9ub25lfHByb2plY3R8ZGVzY3J8b3duZXJ8YWdlLykgewogCQlkaWVfZXJyb3IoNDAwLCAiVW5rbm93biBvcmRlciBwYXJhbWV0ZXIiKTsKIAl9CkBAIC0zOTcxLDE3ICs0MzgzLDIwIEBACiAJZ2l0X2hlYWRlcl9odG1sKCk7CiAJaWYgKC1mICRob21lX3RleHQpIHsKIAkJcHJpbnQgIjxkaXYgY2xhc3M9XCJpbmRleF9pbmNsdWRlXCI+XG4iOwotCQlvcGVuIChteSAkZmQsICRob21lX3RleHQpOwotCQlwcmludCA8JGZkPjsKLQkJY2xvc2UgJGZkOworCQlpbnNlcnRfZmlsZSgkaG9tZV90ZXh0KTsKIAkJcHJpbnQgIjwvZGl2PlxuIjsKIAl9CisJcHJpbnQgJGNnaS0+c3RhcnRmb3JtKC1tZXRob2QgPT4gImdldCIpIC4KKwkgICAgICAiPHAgY2xhc3M9XCJwcm9qc2VhcmNoXCI+U2VhcmNoOlxuIiAuCisJICAgICAgJGNnaS0+dGV4dGZpZWxkKC1uYW1lID0+ICJzIiwgLXZhbHVlID0+ICRzZWFyY2h0ZXh0KSAuICJcbiIgLgorCSAgICAgICI8L3A+IiAuCisJICAgICAgJGNnaS0+ZW5kX2Zvcm0oKSAuICJcbiI7CiAJZ2l0X3Byb2plY3RfbGlzdF9ib2R5KFxAbGlzdCwgJG9yZGVyKTsKIAlnaXRfZm9vdGVyX2h0bWwoKTsKIH0KIAogc3ViIGdpdF9mb3JrcyB7Ci0JbXkgJG9yZGVyID0gJGNnaS0+cGFyYW0oJ28nKTsKKwlteSAkb3JkZXIgPSAkaW5wdXRfcGFyYW1zeydvcmRlcid9OwogCWlmIChkZWZpbmVkICRvcmRlciAmJiAkb3JkZXIgIX4gbS9ub25lfHByb2plY3R8ZGVzY3J8b3duZXJ8YWdlLykgewogCQlkaWVfZXJyb3IoNDAwLCAiVW5rbm93biBvcmRlciBwYXJhbWV0ZXIiKTsKIAl9CkBAIC00MDM2LDcgKzQ0NTEsNyBAQAogCW15IEB0YWdsaXN0ICA9IGdpdF9nZXRfdGFnc19saXN0KDE2KTsKIAlteSBAaGVhZGxpc3QgPSBnaXRfZ2V0X2hlYWRzX2xpc3QoMTYpOwogCW15IEBmb3JrbGlzdDsKLQlteSAoJGNoZWNrX2ZvcmtzKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdmb3JrcycpOworCW15ICRjaGVja19mb3JrcyA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdmb3JrcycpOwogCiAJaWYgKCRjaGVja19mb3JrcykgewogCQlAZm9ya2xpc3QgPSBnaXRfZ2V0X3Byb2plY3RzX2xpc3QoJHByb2plY3QpOwpAQCAtNDA0NywxMCArNDQ2MiwxMCBAQAogCiAJcHJpbnQgIjxkaXYgY2xhc3M9XCJ0aXRsZVwiPiZuYnNwOzwvZGl2PlxuIjsKIAlwcmludCAiPHRhYmxlIGNsYXNzPVwicHJvamVjdHNfbGlzdFwiPlxuIiAuCi0JICAgICAgIjx0cj48dGQ+ZGVzY3JpcHRpb248L3RkPjx0ZD4iIC4gZXNjX2h0bWwoJGRlc2NyKSAuICI8L3RkPjwvdHI+XG4iIC4KLQkgICAgICAiPHRyPjx0ZD5vd25lcjwvdGQ+PHRkPiIgLiBlc2NfaHRtbCgkb3duZXIpIC4gIjwvdGQ+PC90cj5cbiI7CisJICAgICAgIjx0ciBpZD1cIm1ldGFkYXRhX2Rlc2NcIj48dGQ+ZGVzY3JpcHRpb248L3RkPjx0ZD4iIC4gZXNjX2h0bWwoJGRlc2NyKSAuICI8L3RkPjwvdHI+XG4iIC4KKwkgICAgICAiPHRyIGlkPVwibWV0YWRhdGFfb3duZXJcIj48dGQ+b3duZXI8L3RkPjx0ZD4iIC4gZXNjX2h0bWwoJG93bmVyKSAuICI8L3RkPjwvdHI+XG4iOwogCWlmIChkZWZpbmVkICRjZHsncmZjMjgyMid9KSB7Ci0JCXByaW50ICI8dHI+PHRkPmxhc3QgY2hhbmdlPC90ZD48dGQ+JGNkeydyZmMyODIyJ308L3RkPjwvdHI+XG4iOworCQlwcmludCAiPHRyIGlkPVwibWV0YWRhdGFfbGNoYW5nZVwiPjx0ZD5sYXN0IGNoYW5nZTwvdGQ+PHRkPiRjZHsncmZjMjgyMid9PC90ZD48L3RyPlxuIjsKIAl9CiAKIAkjIHVzZSBwZXIgcHJvamVjdCBnaXQgVVJMIGxpc3QgaW4gJHByb2plY3Ryb290LyRwcm9qZWN0L2Nsb25ldXJsCkBAIC00MDYwLDE5ICs0NDc1LDMwIEBACiAJQHVybF9saXN0ID0gbWFwIHsgIiRfLyRwcm9qZWN0IiB9IEBnaXRfYmFzZV91cmxfbGlzdCB1bmxlc3MgQHVybF9saXN0OwogCWZvcmVhY2ggbXkgJGdpdF91cmwgKEB1cmxfbGlzdCkgewogCQluZXh0IHVubGVzcyAkZ2l0X3VybDsKLQkJcHJpbnQgIjx0cj48dGQ+JHVybF90YWc8L3RkPjx0ZD4kZ2l0X3VybDwvdGQ+PC90cj5cbiI7CisJCXByaW50ICI8dHIgY2xhc3M9XCJtZXRhZGF0YV91cmxcIj48dGQ+JHVybF90YWc8L3RkPjx0ZD4kZ2l0X3VybDwvdGQ+PC90cj5cbiI7CiAJCSR1cmxfdGFnID0gIiI7CiAJfQorCisJIyBUYWcgY2xvdWQKKwlteSAkc2hvd19jdGFncyA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdjdGFncycpOworCWlmICgkc2hvd19jdGFncykgeworCQlteSAkY3RhZ3MgPSBnaXRfZ2V0X3Byb2plY3RfY3RhZ3MoJHByb2plY3QpOworCQlteSAkY2xvdWQgPSBnaXRfcG9wdWxhdGVfcHJvamVjdF90YWdjbG91ZCgkY3RhZ3MpOworCQlwcmludCAiPHRyIGlkPVwibWV0YWRhdGFfY3RhZ3NcIj48dGQ+Q29udGVudCB0YWdzOjxiciAvPiI7CisJCXByaW50ICI8L3RkPlxuPHRkPiIgdW5sZXNzICUkY3RhZ3M7CisJCXByaW50ICI8Zm9ybSBhY3Rpb249XCIkc2hvd19jdGFnc1wiIG1ldGhvZD1cInBvc3RcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJwXCIgdmFsdWU9XCIkcHJvamVjdFwiIC8+QWRkOiA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwidFwiIHNpemU9XCI4XCIgLz48L2Zvcm0+IjsKKwkJcHJpbnQgIjwvdGQ+XG48dGQ+IiBpZiAlJGN0YWdzOworCQlwcmludCBnaXRfc2hvd19wcm9qZWN0X3RhZ2Nsb3VkKCRjbG91ZCwgNDgpOworCQlwcmludCAiPC90ZD48L3RyPiI7CisJfQorCiAJcHJpbnQgIjwvdGFibGU+XG4iOwogCiAJaWYgKC1zICIkcHJvamVjdHJvb3QvJHByb2plY3QvUkVBRE1FLmh0bWwiKSB7Ci0JCWlmIChvcGVuIG15ICRmZCwgIiRwcm9qZWN0cm9vdC8kcHJvamVjdC9SRUFETUUuaHRtbCIpIHsKLQkJCXByaW50ICI8ZGl2IGNsYXNzPVwidGl0bGVcIj5yZWFkbWU8L2Rpdj5cbiIgLgotCQkJICAgICAgIjxkaXYgY2xhc3M9XCJyZWFkbWVcIj5cbiI7Ci0JCQlwcmludCAkXyB3aGlsZSAoPCRmZD4pOwotCQkJcHJpbnQgIlxuPC9kaXY+XG4iOyAjIGNsYXNzPSJyZWFkbWUiCi0JCQljbG9zZSAkZmQ7Ci0JCX0KKwkJcHJpbnQgIjxkaXYgY2xhc3M9XCJ0aXRsZVwiPnJlYWRtZTwvZGl2PlxuIiAuCisJCSAgICAgICI8ZGl2IGNsYXNzPVwicmVhZG1lXCI+XG4iOworCQlpbnNlcnRfZmlsZSgiJHByb2plY3Ryb290LyRwcm9qZWN0L1JFQURNRS5odG1sIik7CisJCXByaW50ICJcbjwvZGl2PlxuIjsgIyBjbGFzcz0icmVhZG1lIgogCX0KIAogCSMgd2UgbmVlZCB0byByZXF1ZXN0IG9uZSBtb3JlIHRoYW4gMTYgKDAuLjE1KSB0byBjaGVjayBpZgpAQCAtNDEwMSwxMCArNDUyNywxMCBAQAogCiAJaWYgKEBmb3JrbGlzdCkgewogCQlnaXRfcHJpbnRfaGVhZGVyX2RpdignZm9ya3MnKTsKLQkJZ2l0X3Byb2plY3RfbGlzdF9ib2R5KFxAZm9ya2xpc3QsIHVuZGVmLCAwLCAxNSwKKwkJZ2l0X3Byb2plY3RfbGlzdF9ib2R5KFxAZm9ya2xpc3QsICdhZ2UnLCAwLCAxNSwKIAkJICAgICAgICAgICAgICAgICAgICAgICQjZm9ya2xpc3QgPD0gMTUgPyB1bmRlZiA6CiAJCSAgICAgICAgICAgICAgICAgICAgICAkY2dpLT5hKHstaHJlZiA9PiBocmVmKGFjdGlvbj0+ImZvcmtzIil9LCAiLi4uIiksCi0JCSAgICAgICAgICAgICAgICAgICAgICAnbm9oZWFkZXInKTsKKwkJICAgICAgICAgICAgICAgICAgICAgICdub19oZWFkZXInKTsKIAl9CiAKIAlnaXRfZm9vdGVyX2h0bWwoKTsKQEAgLTQzNDEsNyArNDc2Nyw3IEBACiAJCSRleHBpcmVzID0gIisxZCI7CiAJfQogCi0JbXkgKCRoYXZlX2JsYW1lKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdibGFtZScpOworCW15ICRoYXZlX2JsYW1lID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2JsYW1lJyk7CiAJb3BlbiBteSAkZmQsICItfCIsIGdpdF9jbWQoKSwgImNhdC1maWxlIiwgImJsb2IiLCAkaGFzaAogCQlvciBkaWVfZXJyb3IoNTAwLCAiQ291bGRuJ3QgY2F0ICRmaWxlX25hbWUsICRoYXNoIik7CiAJbXkgJG1pbWV0eXBlID0gYmxvYl9taW1ldHlwZSgkZmQsICRmaWxlX25hbWUpOwpAQCAtNDQzNCw3ICs0ODYwLDcgQEAKIAlteSAkcmVmID0gZm9ybWF0X3JlZl9tYXJrZXIoJHJlZnMsICRoYXNoX2Jhc2UpOwogCWdpdF9oZWFkZXJfaHRtbCgpOwogCW15ICRiYXNlZGlyID0gJyc7Ci0JbXkgKCRoYXZlX2JsYW1lKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdibGFtZScpOworCW15ICRoYXZlX2JsYW1lID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2JsYW1lJyk7CiAJaWYgKGRlZmluZWQgJGhhc2hfYmFzZSAmJiAobXkgJWNvID0gcGFyc2VfY29tbWl0KCRoYXNoX2Jhc2UpKSkgewogCQlteSBAdmlld3NfbmF2ID0gKCk7CiAJCWlmIChkZWZpbmVkICRmaWxlX25hbWUpIHsKQEAgLTQ1MTIsMjAgKzQ5MzgsMTcgQEAKIH0KIAogc3ViIGdpdF9zbmFwc2hvdCB7Ci0JbXkgQHN1cHBvcnRlZF9mbXRzID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3NuYXBzaG90Jyk7Ci0JQHN1cHBvcnRlZF9mbXRzID0gZmlsdGVyX3NuYXBzaG90X2ZtdHMoQHN1cHBvcnRlZF9mbXRzKTsKLQotCW15ICRmb3JtYXQgPSAkY2dpLT5wYXJhbSgnc2YnKTsKLQlpZiAoIUBzdXBwb3J0ZWRfZm10cykgeworCW15ICRmb3JtYXQgPSAkaW5wdXRfcGFyYW1zeydzbmFwc2hvdF9mb3JtYXQnfTsKKwlpZiAoIUBzbmFwc2hvdF9mbXRzKSB7CiAJCWRpZV9lcnJvcig0MDMsICJTbmFwc2hvdHMgbm90IGFsbG93ZWQiKTsKIAl9CiAJIyBkZWZhdWx0IHRvIGZpcnN0IHN1cHBvcnRlZCBzbmFwc2hvdCBmb3JtYXQKLQkkZm9ybWF0IHx8PSAkc3VwcG9ydGVkX2ZtdHNbMF07CisJJGZvcm1hdCB8fD0gJHNuYXBzaG90X2ZtdHNbMF07CiAJaWYgKCRmb3JtYXQgIX4gbS9eW2EtejAtOV0rJC8pIHsKIAkJZGllX2Vycm9yKDQwMCwgIkludmFsaWQgc25hcHNob3QgZm9ybWF0IHBhcmFtZXRlciIpOwogCX0gZWxzaWYgKCFleGlzdHMoJGtub3duX3NuYXBzaG90X2Zvcm1hdHN7JGZvcm1hdH0pKSB7CiAJCWRpZV9lcnJvcig0MDAsICJVbmtub3duIHNuYXBzaG90IGZvcm1hdCIpOwotCX0gZWxzaWYgKCFncmVwKCRfIGVxICRmb3JtYXQsIEBzdXBwb3J0ZWRfZm10cykpIHsKKwl9IGVsc2lmICghZ3JlcCgkXyBlcSAkZm9ybWF0LCBAc25hcHNob3RfZm10cykpIHsKIAkJZGllX2Vycm9yKDQwMywgIlVuc3VwcG9ydGVkIHNuYXBzaG90IGZvcm1hdCIpOwogCX0KIApAQCAtNTQwMSw3ICs1ODI0LDcgQEAKIDxkdD48Yj5jb21taXQ8L2I+PC9kdD4KIDxkZD5UaGUgY29tbWl0IG1lc3NhZ2VzIGFuZCBhdXRob3JzaGlwIGluZm9ybWF0aW9uIHdpbGwgYmUgc2Nhbm5lZCBmb3IgdGhlIGdpdmVuIHBhdHRlcm4uPC9kZD4KIEVPVAotCW15ICgkaGF2ZV9ncmVwKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdncmVwJyk7CisJbXkgJGhhdmVfZ3JlcCA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdncmVwJyk7CiAJaWYgKCRoYXZlX2dyZXApIHsKIAkJcHJpbnQgPDxFT1Q7CiA8ZHQ+PGI+Z3JlcDwvYj48L2R0PgpAQCAtNTQxOCw3ICs1ODQxLDcgQEAKIDxkdD48Yj5jb21taXR0ZXI8L2I+PC9kdD4KIDxkZD5OYW1lIGFuZCBlLW1haWwgb2YgdGhlIGNvbW1pdHRlciBhbmQgZGF0ZSBvZiBjb21taXQgd2lsbCBiZSBzY2FubmVkIGZvciB0aGUgZ2l2ZW4gcGF0dGVybi48L2RkPgogRU9UCi0JbXkgKCRoYXZlX3BpY2theGUpID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3BpY2theGUnKTsKKwlteSAkaGF2ZV9waWNrYXhlID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ3BpY2theGUnKTsKIAlpZiAoJGhhdmVfcGlja2F4ZSkgewogCQlwcmludCA8PEVPVDsKIDxkdD48Yj5waWNrYXhlPC9iPjwvZHQ+CkBAIC01NDQyLDcgKzU4NjUsMTEgQEAKIAl9CiAJbXkgJHJlZnMgPSBnaXRfZ2V0X3JlZmVyZW5jZXMoKTsKIAotCW15IEBjb21taXRsaXN0ID0gcGFyc2VfY29tbWl0cygkaGFzaCwgMTAxLCAoMTAwICogJHBhZ2UpKTsKKwlteSAkY29tbWl0X2hhc2ggPSAkaGFzaDsKKwlpZiAoZGVmaW5lZCAkaGFzaF9wYXJlbnQpIHsKKwkJJGNvbW1pdF9oYXNoID0gIiRoYXNoX3BhcmVudC4uJGhhc2giOworCX0KKwlteSBAY29tbWl0bGlzdCA9IHBhcnNlX2NvbW1pdHMoJGNvbW1pdF9oYXNoLCAxMDEsICgxMDAgKiAkcGFnZSkpOwogCiAJbXkgJHBhZ2luZ19uYXYgPSBmb3JtYXRfcGFnaW5nX25hdignc2hvcnRsb2cnLCAkaGFzaCwgJGhlYWQsICRwYWdlLCAkI2NvbW1pdGxpc3QgPj0gMTAwKTsKIAlteSAkbmV4dF9saW5rID0gJyc7CkBAIC01NDY2LDcgKzU4OTMsNyBAQAogCiBzdWIgZ2l0X2ZlZWQgewogCW15ICRmb3JtYXQgPSBzaGlmdCB8fCAnYXRvbSc7Ci0JbXkgKCRoYXZlX2JsYW1lKSA9IGdpdHdlYl9jaGVja19mZWF0dXJlKCdibGFtZScpOworCW15ICRoYXZlX2JsYW1lID0gZ2l0d2ViX2NoZWNrX2ZlYXR1cmUoJ2JsYW1lJyk7CiAKIAkjIEF0b206IGh0dHA6Ly93d3cuYXRvbWVuYWJsZWQub3JnL2RldmVsb3BlcnMvc3luZGljYXRpb24vCiAJIyBSU1M6ICBodHRwOi8vd3d3Lm5vdGVzdGlwcy5jb20vODAyNTZCM0EwMDdGMjY5Mi8xL05BTU81UDlVUFEKZGlmZiAtLWdpdCBhL2dyYXBoLmMgYi9ncmFwaC5jCmluZGV4IGUyNjMzZjguLjE2MmE1MTYgMTAwNjQ0Ci0tLSBhL2dyYXBoLmMKKysrIGIvZ3JhcGguYwpAQCAtNCw2ICs0LDQzIEBACiAjaW5jbHVkZSAiZGlmZi5oIgogI2luY2x1ZGUgInJldmlzaW9uLmgiCiAKKy8qIEludGVybmFsIEFQSSAqLworCisvKgorICogT3V0cHV0IHRoZSBuZXh0IGxpbmUgZm9yIGEgZ3JhcGguCisgKiBUaGlzIGZvcm1hdHMgdGhlIG5leHQgZ3JhcGggbGluZSBpbnRvIHRoZSBzcGVjaWZpZWQgc3RyYnVmLiAgSXQgaXMgbm90CisgKiB0ZXJtaW5hdGVkIHdpdGggYSBuZXdsaW5lLgorICoKKyAqIFJldHVybnMgMSBpZiB0aGUgbGluZSBpbmNsdWRlcyB0aGUgY3VycmVudCBjb21taXQsIGFuZCAwIG90aGVyd2lzZS4KKyAqIGdyYXBoX25leHRfbGluZSgpIHdpbGwgcmV0dXJuIDEgZXhhY3RseSBvbmNlIGZvciBlYWNoIHRpbWUKKyAqIGdyYXBoX3VwZGF0ZSgpIGlzIGNhbGxlZC4KKyAqLworc3RhdGljIGludCBncmFwaF9uZXh0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKTsKKworLyoKKyAqIE91dHB1dCBhIHBhZGRpbmcgbGluZSBpbiB0aGUgZ3JhcGguCisgKiBUaGlzIGlzIHNpbWlsYXIgdG8gZ3JhcGhfbmV4dF9saW5lKCkuICBIb3dldmVyLCBpdCBpcyBndWFyYW50ZWVkIHRvCisgKiBuZXZlciBwcmludCB0aGUgY3VycmVudCBjb21taXQgbGluZS4gIEluc3RlYWQsIGlmIHRoZSBjb21taXQgbGluZSBpcworICogbmV4dCwgaXQgd2lsbCBzaW1wbHkgb3V0cHV0IGEgbGluZSBvZiB2ZXJ0aWNhbCBwYWRkaW5nLCBleHRlbmRpbmcgdGhlCisgKiBicmFuY2ggbGluZXMgZG93bndhcmRzLCBidXQgbGVhdmluZyB0aGVtIG90aGVyd2lzZSB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyB2b2lkIGdyYXBoX3BhZGRpbmdfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpOworCisvKgorICogUHJpbnQgYSBzdHJidWYgdG8gc3Rkb3V0LiAgSWYgdGhlIGdyYXBoIGlzIG5vbi1OVUxMLCBhbGwgbGluZXMgYnV0IHRoZQorICogZmlyc3Qgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBncmFwaCBvdXRwdXQuCisgKgorICogSWYgdGhlIHN0cmJ1ZiBlbmRzIHdpdGggYSBuZXdsaW5lLCB0aGUgb3V0cHV0IHdpbGwgZW5kIGFmdGVyIHRoaXMKKyAqIG5ld2xpbmUuICBBIG5ldyBncmFwaCBsaW5lIHdpbGwgbm90IGJlIHByaW50ZWQgYWZ0ZXIgdGhlIGZpbmFsIG5ld2xpbmUuCisgKiBJZiB0aGUgc3RyYnVmIGlzIGVtcHR5LCBubyBvdXRwdXQgd2lsbCBiZSBwcmludGVkLgorICoKKyAqIFNpbmNlIHRoZSBmaXJzdCBsaW5lIHdpbGwgbm90IGluY2x1ZGUgdGhlIGdyYXBoIG91cHV0LCB0aGUgY2FsbGVyIGlzCisgKiByZXNwb25zaWJsZSBmb3IgcHJpbnRpbmcgdGhpcyBsaW5lJ3MgZ3JhcGggKHBlcmhhcHMgdmlhCisgKiBncmFwaF9zaG93X2NvbW1pdCgpIG9yIGdyYXBoX3Nob3dfb25lbGluZSgpKSBiZWZvcmUgY2FsbGluZworICogZ3JhcGhfc2hvd19zdHJidWYoKS4KKyAqLworc3RhdGljIHZvaWQgZ3JhcGhfc2hvd19zdHJidWYoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgY29uc3QgKnNiKTsKKwogLyoKICAqIFRPRE86CiAgKiAtIEFkZCBjb2xvcnMgdG8gdGhlIGdyYXBoLgpAQCAtMTgwLDE0ICsyMTcsNiBAQAogCXJldHVybiBncmFwaDsKIH0KIAotdm9pZCBncmFwaF9yZWxlYXNlKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQotewotCWZyZWUoZ3JhcGgtPmNvbHVtbnMpOwotCWZyZWUoZ3JhcGgtPm5ld19jb2x1bW5zKTsKLQlmcmVlKGdyYXBoLT5tYXBwaW5nKTsKLQlmcmVlKGdyYXBoKTsKLX0KLQogc3RhdGljIHZvaWQgZ3JhcGhfdXBkYXRlX3N0YXRlKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBlbnVtIGdyYXBoX3N0YXRlIHMpCiB7CiAJZ3JhcGgtPnByZXZfc3RhdGUgPSBncmFwaC0+c3RhdGU7CkBAIC02ODUsNyArNzE0LDcgQEAKIAlzdHJidWZfYWRkY2goc2IsICcqJyk7CiB9CiAKLXZvaWQgZ3JhcGhfb3V0cHV0X2NvbW1pdF9saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX291dHB1dF9jb21taXRfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpCiB7CiAJaW50IHNlZW5fdGhpcyA9IDA7CiAJaW50IGksIGo7CkBAIC03NjAsNyArNzg5LDcgQEAKIAkJZ3JhcGhfdXBkYXRlX3N0YXRlKGdyYXBoLCBHUkFQSF9DT0xMQVBTSU5HKTsKIH0KIAotdm9pZCBncmFwaF9vdXRwdXRfcG9zdF9tZXJnZV9saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX291dHB1dF9wb3N0X21lcmdlX2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKQogewogCWludCBzZWVuX3RoaXMgPSAwOwogCWludCBpLCBqOwpAQCAtODAxLDcgKzgzMCw3IEBACiAJCWdyYXBoX3VwZGF0ZV9zdGF0ZShncmFwaCwgR1JBUEhfQ09MTEFQU0lORyk7CiB9CiAKLXZvaWQgZ3JhcGhfb3V0cHV0X2NvbGxhcHNpbmdfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpCitzdGF0aWMgdm9pZCBncmFwaF9vdXRwdXRfY29sbGFwc2luZ19saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKIHsKIAlpbnQgaTsKIAlpbnQgKnRtcF9tYXBwaW5nOwpAQCAtOTA2LDcgKzkzNSw3IEBACiAJCWdyYXBoX3VwZGF0ZV9zdGF0ZShncmFwaCwgR1JBUEhfUEFERElORyk7CiB9CiAKLWludCBncmFwaF9uZXh0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKQorc3RhdGljIGludCBncmFwaF9uZXh0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKQogewogCXN3aXRjaCAoZ3JhcGgtPnN0YXRlKSB7CiAJY2FzZSBHUkFQSF9QQURESU5HOgpAQCAtOTMzLDcgKzk2Miw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXZvaWQgZ3JhcGhfcGFkZGluZ19saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX3BhZGRpbmdfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpCiB7CiAJaW50IGksIGo7CiAKQEAgLTk4MSwxNCArMTAxMCwxMiBAQAogCiB2b2lkIGdyYXBoX3Nob3dfY29tbWl0KHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQogewotCXN0cnVjdCBzdHJidWYgbXNnYnVmOworCXN0cnVjdCBzdHJidWYgbXNnYnVmID0gU1RSQlVGX0lOSVQ7CiAJaW50IHNob3duX2NvbW1pdF9saW5lID0gMDsKIAogCWlmICghZ3JhcGgpCiAJCXJldHVybjsKIAotCXN0cmJ1Zl9pbml0KCZtc2didWYsIDApOwotCiAJd2hpbGUgKCFzaG93bl9jb21taXRfbGluZSkgewogCQlzaG93bl9jb21taXRfbGluZSA9IGdyYXBoX25leHRfbGluZShncmFwaCwgJm1zZ2J1Zik7CiAJCWZ3cml0ZShtc2didWYuYnVmLCBzaXplb2YoY2hhciksIG1zZ2J1Zi5sZW4sIHN0ZG91dCk7CkBAIC0xMDAyLDEyICsxMDI5LDExIEBACiAKIHZvaWQgZ3JhcGhfc2hvd19vbmVsaW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQogewotCXN0cnVjdCBzdHJidWYgbXNnYnVmOworCXN0cnVjdCBzdHJidWYgbXNnYnVmID0gU1RSQlVGX0lOSVQ7CiAKIAlpZiAoIWdyYXBoKQogCQlyZXR1cm47CiAKLQlzdHJidWZfaW5pdCgmbXNnYnVmLCAwKTsKIAlncmFwaF9uZXh0X2xpbmUoZ3JhcGgsICZtc2didWYpOwogCWZ3cml0ZShtc2didWYuYnVmLCBzaXplb2YoY2hhciksIG1zZ2J1Zi5sZW4sIHN0ZG91dCk7CiAJc3RyYnVmX3JlbGVhc2UoJm1zZ2J1Zik7CkBAIC0xMDE1LDEyICsxMDQxLDExIEBACiAKIHZvaWQgZ3JhcGhfc2hvd19wYWRkaW5nKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQogewotCXN0cnVjdCBzdHJidWYgbXNnYnVmOworCXN0cnVjdCBzdHJidWYgbXNnYnVmID0gU1RSQlVGX0lOSVQ7CiAKIAlpZiAoIWdyYXBoKQogCQlyZXR1cm47CiAKLQlzdHJidWZfaW5pdCgmbXNnYnVmLCAwKTsKIAlncmFwaF9wYWRkaW5nX2xpbmUoZ3JhcGgsICZtc2didWYpOwogCWZ3cml0ZShtc2didWYuYnVmLCBzaXplb2YoY2hhciksIG1zZ2J1Zi5sZW4sIHN0ZG91dCk7CiAJc3RyYnVmX3JlbGVhc2UoJm1zZ2J1Zik7CkBAIC0xMDI4LDcgKzEwNTMsNyBAQAogCiBpbnQgZ3JhcGhfc2hvd19yZW1haW5kZXIoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBtc2didWY7CisJc3RydWN0IHN0cmJ1ZiBtc2didWYgPSBTVFJCVUZfSU5JVDsKIAlpbnQgc2hvd24gPSAwOwogCiAJaWYgKCFncmFwaCkKQEAgLTEwMzcsNyArMTA2Miw2IEBACiAJaWYgKGdyYXBoX2lzX2NvbW1pdF9maW5pc2hlZChncmFwaCkpCiAJCXJldHVybiAwOwogCi0Jc3RyYnVmX2luaXQoJm1zZ2J1ZiwgMCk7CiAJZm9yICg7OykgewogCQlncmFwaF9uZXh0X2xpbmUoZ3JhcGgsICZtc2didWYpOwogCQlmd3JpdGUobXNnYnVmLmJ1Ziwgc2l6ZW9mKGNoYXIpLCBtc2didWYubGVuLCBzdGRvdXQpOwpAQCAtMTA1NSw3ICsxMDc5LDcgQEAKIH0KIAogCi12b2lkIGdyYXBoX3Nob3dfc3RyYnVmKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmIGNvbnN0ICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX3Nob3dfc3RyYnVmKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmIGNvbnN0ICpzYikKIHsKIAljaGFyICpwOwogCmRpZmYgLS1naXQgYS9ncmFwaC5oIGIvZ3JhcGguaAppbmRleCBlYWI0ZTNkLi5iYzMwZDY4IDEwMDY0NAotLS0gYS9ncmFwaC5oCisrKyBiL2dyYXBoLmgKQEAgLTExLDExICsxMSw2IEBACiBzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaF9pbml0KHN0cnVjdCByZXZfaW5mbyAqb3B0KTsKIAogLyoKLSAqIERlc3Ryb3kgYSBzdHJ1Y3QgZ2l0X2dyYXBoIGFuZCBmcmVlIGFzc29jaWF0ZWQgbWVtb3J5LgotICovCi12b2lkIGdyYXBoX3JlbGVhc2Uoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgpOwotCi0vKgogICogVXBkYXRlIGEgZ2l0X2dyYXBoIHdpdGggYSBuZXcgY29tbWl0LgogICogVGhpcyB3aWxsIGNhdXNlIHRoZSBncmFwaCB0byBiZWdpbiBvdXRwdXR0aW5nIGxpbmVzIGZvciB0aGUgbmV3IGNvbW1pdAogICogdGhlIG5leHQgdGltZSBncmFwaF9uZXh0X2xpbmUoKSBpcyBjYWxsZWQuCkBAIC0yNywyNiArMjIsNiBAQAogdm9pZCBncmFwaF91cGRhdGUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CiAKIC8qCi0gKiBPdXRwdXQgdGhlIG5leHQgbGluZSBmb3IgYSBncmFwaC4KLSAqIFRoaXMgZm9ybWF0cyB0aGUgbmV4dCBncmFwaCBsaW5lIGludG8gdGhlIHNwZWNpZmllZCBzdHJidWYuICBJdCBpcyBub3QKLSAqIHRlcm1pbmF0ZWQgd2l0aCBhIG5ld2xpbmUuCi0gKgotICogUmV0dXJucyAxIGlmIHRoZSBsaW5lIGluY2x1ZGVzIHRoZSBjdXJyZW50IGNvbW1pdCwgYW5kIDAgb3RoZXJ3aXNlLgotICogZ3JhcGhfbmV4dF9saW5lKCkgd2lsbCByZXR1cm4gMSBleGFjdGx5IG9uY2UgZm9yIGVhY2ggdGltZQotICogZ3JhcGhfdXBkYXRlKCkgaXMgY2FsbGVkLgotICovCi1pbnQgZ3JhcGhfbmV4dF9saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYik7Ci0KLS8qCi0gKiBPdXRwdXQgYSBwYWRkaW5nIGxpbmUgaW4gdGhlIGdyYXBoLgotICogVGhpcyBpcyBzaW1pbGFyIHRvIGdyYXBoX25leHRfbGluZSgpLiAgSG93ZXZlciwgaXQgaXMgZ3VhcmFudGVlZCB0bwotICogbmV2ZXIgcHJpbnQgdGhlIGN1cnJlbnQgY29tbWl0IGxpbmUuICBJbnN0ZWFkLCBpZiB0aGUgY29tbWl0IGxpbmUgaXMKLSAqIG5leHQsIGl0IHdpbGwgc2ltcGx5IG91dHB1dCBhIGxpbmUgb2YgdmVydGljYWwgcGFkZGluZywgZXh0ZW5kaW5nIHRoZQotICogYnJhbmNoIGxpbmVzIGRvd253YXJkcywgYnV0IGxlYXZpbmcgdGhlbSBvdGhlcndpc2UgdW5jaGFuZ2VkLgotICovCi12b2lkIGdyYXBoX3BhZGRpbmdfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpOwotCi0vKgogICogRGV0ZXJtaW5lIGlmIGEgZ3JhcGggaGFzIGZpbmlzaGVkIG91dHB1dHRpbmcgbGluZXMgZm9yIHRoZSBjdXJyZW50CiAgKiBjb21taXQuCiAgKgpAQCAtOTAsMjEgKzY1LDYgQEAKIGludCBncmFwaF9zaG93X3JlbWFpbmRlcihzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCk7CiAKIC8qCi0gKiBQcmludCBhIHN0cmJ1ZiB0byBzdGRvdXQuICBJZiB0aGUgZ3JhcGggaXMgbm9uLU5VTEwsIGFsbCBsaW5lcyBidXQgdGhlCi0gKiBmaXJzdCB3aWxsIGJlIHByZWZpeGVkIHdpdGggdGhlIGdyYXBoIG91dHB1dC4KLSAqCi0gKiBJZiB0aGUgc3RyYnVmIGVuZHMgd2l0aCBhIG5ld2xpbmUsIHRoZSBvdXRwdXQgd2lsbCBlbmQgYWZ0ZXIgdGhpcwotICogbmV3bGluZS4gIEEgbmV3IGdyYXBoIGxpbmUgd2lsbCBub3QgYmUgcHJpbnRlZCBhZnRlciB0aGUgZmluYWwgbmV3bGluZS4KLSAqIElmIHRoZSBzdHJidWYgaXMgZW1wdHksIG5vIG91dHB1dCB3aWxsIGJlIHByaW50ZWQuCi0gKgotICogU2luY2UgdGhlIGZpcnN0IGxpbmUgd2lsbCBub3QgaW5jbHVkZSB0aGUgZ3JhcGggb3VwdXQsIHRoZSBjYWxsZXIgaXMKLSAqIHJlc3BvbnNpYmxlIGZvciBwcmludGluZyB0aGlzIGxpbmUncyBncmFwaCAocGVyaGFwcyB2aWEKLSAqIGdyYXBoX3Nob3dfY29tbWl0KCkgb3IgZ3JhcGhfc2hvd19vbmVsaW5lKCkpIGJlZm9yZSBjYWxsaW5nCi0gKiBncmFwaF9zaG93X3N0cmJ1ZigpLgotICovCi12b2lkIGdyYXBoX3Nob3dfc3RyYnVmKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmIGNvbnN0ICpzYik7Ci0KLS8qCiAgKiBQcmludCBhIGNvbW1pdCBtZXNzYWdlIHN0cmJ1ZiBhbmQgdGhlIHJlbWFpbmRlciBvZiB0aGUgZ3JhcGggdG8gc3Rkb3V0LgogICoKICAqIFRoaXMgaXMgc2ltaWxhciB0byBncmFwaF9zaG93X3N0cmJ1ZigpLCBidXQgaXQgYWx3YXlzIHByaW50cyB0aGUKZGlmZiAtLWdpdCBhL2dyZXAuYyBiL2dyZXAuYwppbmRleCAxM2MxOGZmLi42MDBmNjlmIDEwMDY0NAotLS0gYS9ncmVwLmMKKysrIGIvZ3JlcC5jCkBAIC0yMzksNiArMjM5LDggQEAKIHN0YXRpYyB2b2lkIHNob3dfbGluZShzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCwgY29uc3QgY2hhciAqYm9sLCBjb25zdCBjaGFyICplb2wsCiAJCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxubywgY2hhciBzaWduKQogeworCWlmIChvcHQtPm51bGxfZm9sbG93aW5nX25hbWUpCisJCXNpZ24gPSAnXDAnOwogCWlmIChvcHQtPnBhdGhuYW1lKQogCQlwcmludGYoIiVzJWMiLCBuYW1lLCBzaWduKTsKIAlpZiAob3B0LT5saW5lbnVtKQpAQCAtMjQ2LDYgKzI0OCwxMSBAQAogCXByaW50ZigiJS4qc1xuIiwgKGludCkoZW9sLWJvbCksIGJvbCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNob3dfbmFtZShzdHJ1Y3QgZ3JlcF9vcHQgKm9wdCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlwcmludGYoIiVzJWMiLCBuYW1lLCBvcHQtPm51bGxfZm9sbG93aW5nX25hbWUgPyAnXDAnIDogJ1xuJyk7Cit9CisKIHN0YXRpYyBpbnQgZml4bWF0Y2goY29uc3QgY2hhciAqcGF0dGVybiwgY2hhciAqbGluZSwgcmVnbWF0Y2hfdCAqbWF0Y2gpCiB7CiAJY2hhciAqaGl0ID0gc3Ryc3RyKGxpbmUsIHBhdHRlcm4pOwpAQCAtNDg5LDcgKzQ5Niw3IEBACiAJCQkJcmV0dXJuIDE7CiAJCQl9CiAJCQlpZiAob3B0LT5uYW1lX29ubHkpIHsKLQkJCQlwcmludGYoIiVzXG4iLCBuYW1lKTsKKwkJCQlzaG93X25hbWUob3B0LCBuYW1lKTsKIAkJCQlyZXR1cm4gMTsKIAkJCX0KIAkJCS8qIEhpdCBhdCB0aGlzIGxpbmUuICBJZiB3ZSBoYXZlbid0IHNob3duIHRoZQpAQCAtNTU1LDcgKzU2Miw3IEBACiAJCXJldHVybiAwOwogCWlmIChvcHQtPnVubWF0Y2hfbmFtZV9vbmx5KSB7CiAJCS8qIFdlIGRpZCBub3Qgc2VlIGFueSBoaXQsIHNvIHdlIHdhbnQgdG8gc2hvdyB0aGlzICovCi0JCXByaW50ZigiJXNcbiIsIG5hbWUpOworCQlzaG93X25hbWUob3B0LCBuYW1lKTsKIAkJcmV0dXJuIDE7CiAJfQogCkBAIC01NjUsNyArNTcyLDggQEAKIAkgKiBtYWtlIGl0IGFub3RoZXIgb3B0aW9uPyAgRm9yIG5vdyBzdXBwcmVzcyB0aGVtLgogCSAqLwogCWlmIChvcHQtPmNvdW50ICYmIGNvdW50KQotCQlwcmludGYoIiVzOiV1XG4iLCBuYW1lLCBjb3VudCk7CisJCXByaW50ZigiJXMlYyV1XG4iLCBuYW1lLAorCQkgICAgICAgb3B0LT5udWxsX2ZvbGxvd2luZ19uYW1lID8gJ1wwJyA6ICc6JywgY291bnQpOwogCXJldHVybiAhIWxhc3RfaGl0OwogfQogCmRpZmYgLS1naXQgYS9ncmVwLmggYi9ncmVwLmgKaW5kZXggNTliM2Y4Ny4uNDVhMjIyZCAxMDA2NDQKLS0tIGEvZ3JlcC5oCisrKyBiL2dyZXAuaApAQCAtNzQsNiArNzQsNyBAQAogCXVuc2lnbmVkIGV4dGVuZGVkOjE7CiAJdW5zaWduZWQgcmVsYXRpdmU6MTsKIAl1bnNpZ25lZCBwYXRobmFtZToxOworCXVuc2lnbmVkIG51bGxfZm9sbG93aW5nX25hbWU6MTsKIAlpbnQgcmVnZmxhZ3M7CiAJdW5zaWduZWQgcHJlX2NvbnRleHQ7CiAJdW5zaWduZWQgcG9zdF9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvaGFzaC1vYmplY3QuYyBiL2hhc2gtb2JqZWN0LmMKaW5kZXggNDZjMDZhOS4uODQ2ZTkxYSAxMDA2NDQKLS0tIGEvaGFzaC1vYmplY3QuYworKysgYi9oYXNoLW9iamVjdC5jCkBAIC03LDE2ICs3LDE0IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJibG9iLmgiCiAjaW5jbHVkZSAicXVvdGUuaCIKKyNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKLXN0YXRpYyB2b2lkIGhhc2hfb2JqZWN0KGNvbnN0IGNoYXIgKnBhdGgsIGVudW0gb2JqZWN0X3R5cGUgdHlwZSwgaW50IHdyaXRlX29iamVjdCkKK3N0YXRpYyB2b2lkIGhhc2hfZmQoaW50IGZkLCBjb25zdCBjaGFyICp0eXBlLCBpbnQgd3JpdGVfb2JqZWN0LCBjb25zdCBjaGFyICpwYXRoKQogewotCWludCBmZDsKIAlzdHJ1Y3Qgc3RhdCBzdDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCWZkID0gb3BlbihwYXRoLCBPX1JET05MWSk7Ci0JaWYgKGZkIDwgMCB8fAotCSAgICBmc3RhdChmZCwgJnN0KSA8IDAgfHwKLQkgICAgaW5kZXhfZmQoc2hhMSwgZmQsICZzdCwgd3JpdGVfb2JqZWN0LCB0eXBlLCBwYXRoKSkKKwlpZiAoZnN0YXQoZmQsICZzdCkgPCAwIHx8CisJICAgIGluZGV4X2ZkKHNoYTEsIGZkLCAmc3QsIHdyaXRlX29iamVjdCwgdHlwZV9mcm9tX3N0cmluZyh0eXBlKSwgcGF0aCkpCiAJCWRpZSh3cml0ZV9vYmplY3QKIAkJICAgID8gIlVuYWJsZSB0byBhZGQgJXMgdG8gZGF0YWJhc2UiCiAJCSAgICA6ICJVbmFibGUgdG8gaGFzaCAlcyIsIHBhdGgpOwpAQCAtMjQsMjAgKzIyLDIwIEBACiAJbWF5YmVfZmx1c2hfb3JfZGllKHN0ZG91dCwgImhhc2ggdG8gc3Rkb3V0Iik7CiB9CiAKLXN0YXRpYyB2b2lkIGhhc2hfc3RkaW4oY29uc3QgY2hhciAqdHlwZSwgaW50IHdyaXRlX29iamVjdCkKK3N0YXRpYyB2b2lkIGhhc2hfb2JqZWN0KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnR5cGUsIGludCB3cml0ZV9vYmplY3QsCisJCQljb25zdCBjaGFyICp2cGF0aCkKIHsKLQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCWlmIChpbmRleF9waXBlKHNoYTEsIDAsIHR5cGUsIHdyaXRlX29iamVjdCkpCi0JCWRpZSgiVW5hYmxlIHRvIGFkZCBzdGRpbiB0byBkYXRhYmFzZSIpOwotCXByaW50ZigiJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwlpbnQgZmQ7CisJZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsKKwlpZiAoZmQgPCAwKQorCQlkaWUoIkNhbm5vdCBvcGVuICVzIiwgcGF0aCk7CisJaGFzaF9mZChmZCwgdHlwZSwgd3JpdGVfb2JqZWN0LCB2cGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGhhc2hfc3RkaW5fcGF0aHMoY29uc3QgY2hhciAqdHlwZSwgaW50IHdyaXRlX29iamVjdHMpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBidWYsIG5idWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVCwgbmJ1ZiA9IFNUUkJVRl9JTklUOwogCi0Jc3RyYnVmX2luaXQoJmJ1ZiwgMCk7Ci0Jc3RyYnVmX2luaXQoJm5idWYsIDApOwogCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmYnVmLCBzdGRpbiwgJ1xuJykgIT0gRU9GKSB7CiAJCWlmIChidWYuYnVmWzBdID09ICciJykgewogCQkJc3RyYnVmX3Jlc2V0KCZuYnVmKTsKQEAgLTQ1LDkyICs0Myw5MSBAQAogCQkJCWRpZSgibGluZSBpcyBiYWRseSBxdW90ZWQiKTsKIAkJCXN0cmJ1Zl9zd2FwKCZidWYsICZuYnVmKTsKIAkJfQotCQloYXNoX29iamVjdChidWYuYnVmLCB0eXBlX2Zyb21fc3RyaW5nKHR5cGUpLCB3cml0ZV9vYmplY3RzKTsKKwkJaGFzaF9vYmplY3QoYnVmLmJ1ZiwgdHlwZSwgd3JpdGVfb2JqZWN0cywgYnVmLmJ1Zik7CiAJfQogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCXN0cmJ1Zl9yZWxlYXNlKCZuYnVmKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgaGFzaF9vYmplY3RfdXNhZ2VbXSA9Ci0iZ2l0IGhhc2gtb2JqZWN0IFsgWy10IDx0eXBlPl0gWy13XSBbLS1zdGRpbl0gPGZpbGU+Li4uIHwgLS1zdGRpbi1wYXRocyA8IDxsaXN0LW9mLXBhdGhzPiBdIjsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaGFzaF9vYmplY3RfdXNhZ2VbXSA9IHsKKwkiZ2l0IGhhc2gtb2JqZWN0IFstdCA8dHlwZT5dIFstd10gWy0tcGF0aD08ZmlsZT58LS1uby1maWx0ZXJzXSBbLS1zdGRpbl0gWy0tXSA8ZmlsZT4uLi4iLAorCSJnaXQgaGFzaC1vYmplY3QgIC0tc3RkaW4tcGF0aHMgPCA8bGlzdC1vZi1wYXRocz4iLAorCU5VTEwKK307CiAKLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3N0YXRpYyBjb25zdCBjaGFyICp0eXBlOworc3RhdGljIGludCB3cml0ZV9vYmplY3Q7CitzdGF0aWMgaW50IGhhc2hzdGRpbjsKK3N0YXRpYyBpbnQgc3RkaW5fcGF0aHM7CitzdGF0aWMgaW50IG5vX2ZpbHRlcnM7CitzdGF0aWMgY29uc3QgY2hhciAqdnBhdGg7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGhhc2hfb2JqZWN0X29wdGlvbnNbXSA9IHsKKwlPUFRfU1RSSU5HKCd0JywgTlVMTCwgJnR5cGUsICJ0eXBlIiwgIm9iamVjdCB0eXBlIiksCisJT1BUX0JPT0xFQU4oJ3cnLCBOVUxMLCAmd3JpdGVfb2JqZWN0LCAid3JpdGUgdGhlIG9iamVjdCBpbnRvIHRoZSBvYmplY3QgZGF0YWJhc2UiKSwKKwlPUFRfQk9PTEVBTiggMCAsICJzdGRpbiIsICZoYXNoc3RkaW4sICJyZWFkIHRoZSBvYmplY3QgZnJvbSBzdGRpbiIpLAorCU9QVF9CT09MRUFOKCAwICwgInN0ZGluLXBhdGhzIiwgJnN0ZGluX3BhdGhzLCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iKSwKKwlPUFRfQk9PTEVBTiggMCAsICJuby1maWx0ZXJzIiwgJm5vX2ZpbHRlcnMsICJzdG9yZSBmaWxlIGFzIGlzIHdpdGhvdXQgZmlsdGVycyIpLAorCU9QVF9TVFJJTkcoIDAgLCAicGF0aCIsICZ2cGF0aCwgImZpbGUiLCAicHJvY2VzcyBmaWxlIGFzIGl0IHdlcmUgZnJvbSB0aGlzIHBhdGgiKSwKKwlPUFRfRU5EKCkKK307CisKK2ludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIHsKIAlpbnQgaTsKLQljb25zdCBjaGFyICp0eXBlID0gYmxvYl90eXBlOwotCWludCB3cml0ZV9vYmplY3QgPSAwOwogCWNvbnN0IGNoYXIgKnByZWZpeCA9IE5VTEw7CiAJaW50IHByZWZpeF9sZW5ndGggPSAtMTsKLQlpbnQgbm9fbW9yZV9mbGFncyA9IDA7Ci0JaW50IGhhc2hzdGRpbiA9IDA7Ci0JaW50IHN0ZGluX3BhdGhzID0gMDsKKwljb25zdCBjaGFyICplcnJzdHIgPSBOVUxMOworCisJdHlwZSA9IGJsb2JfdHlwZTsKIAogCWdpdF9jb25maWcoZ2l0X2RlZmF1bHRfY29uZmlnLCBOVUxMKTsKIAotCWZvciAoaSA9IDEgOyBpIDwgYXJnYzsgaSsrKSB7Ci0JCWlmICghbm9fbW9yZV9mbGFncyAmJiBhcmd2W2ldWzBdID09ICctJykgewotCQkJaWYgKCFzdHJjbXAoYXJndltpXSwgIi10IikpIHsKLQkJCQlpZiAoYXJnYyA8PSArK2kpCi0JCQkJCXVzYWdlKGhhc2hfb2JqZWN0X3VzYWdlKTsKLQkJCQl0eXBlID0gYXJndltpXTsKLQkJCX0KLQkJCWVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi13IikpIHsKLQkJCQlpZiAocHJlZml4X2xlbmd0aCA8IDApIHsKLQkJCQkJcHJlZml4ID0gc2V0dXBfZ2l0X2RpcmVjdG9yeSgpOwotCQkJCQlwcmVmaXhfbGVuZ3RoID0KLQkJCQkJCXByZWZpeCA/IHN0cmxlbihwcmVmaXgpIDogMDsKLQkJCQl9Ci0JCQkJd3JpdGVfb2JqZWN0ID0gMTsKLQkJCX0KLQkJCWVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tIikpIHsKLQkJCQlub19tb3JlX2ZsYWdzID0gMTsKLQkJCX0KLQkJCWVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi0taGVscCIpKQotCQkJCXVzYWdlKGhhc2hfb2JqZWN0X3VzYWdlKTsKLQkJCWVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tc3RkaW4tcGF0aHMiKSkgewotCQkJCWlmIChoYXNoc3RkaW4pIHsKLQkJCQkJZXJyb3IoIkNhbid0IHVzZSAtLXN0ZGluLXBhdGhzIHdpdGggLS1zdGRpbiIpOwotCQkJCQl1c2FnZShoYXNoX29iamVjdF91c2FnZSk7Ci0JCQkJfQotCQkJCXN0ZGluX3BhdGhzID0gMTsKKwlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBoYXNoX29iamVjdF9vcHRpb25zLCBoYXNoX29iamVjdF91c2FnZSwgMCk7CiAKLQkJCX0KLQkJCWVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tc3RkaW4iKSkgewotCQkJCWlmIChzdGRpbl9wYXRocykgewotCQkJCQllcnJvcigiQ2FuJ3QgdXNlICVzIHdpdGggLS1zdGRpbi1wYXRocyIsIGFyZ3ZbaV0pOwotCQkJCQl1c2FnZShoYXNoX29iamVjdF91c2FnZSk7Ci0JCQkJfQotCQkJCWlmIChoYXNoc3RkaW4pCi0JCQkJCWRpZSgiTXVsdGlwbGUgLS1zdGRpbiBhcmd1bWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKLQkJCQloYXNoc3RkaW4gPSAxOwotCQkJfQotCQkJZWxzZQotCQkJCXVzYWdlKGhhc2hfb2JqZWN0X3VzYWdlKTsKLQkJfQotCQllbHNlIHsKLQkJCWNvbnN0IGNoYXIgKmFyZyA9IGFyZ3ZbaV07CisJaWYgKHdyaXRlX29iamVjdCkgeworCQlwcmVmaXggPSBzZXR1cF9naXRfZGlyZWN0b3J5KCk7CisJCXByZWZpeF9sZW5ndGggPSBwcmVmaXggPyBzdHJsZW4ocHJlZml4KSA6IDA7CisJCWlmICh2cGF0aCAmJiBwcmVmaXgpCisJCQl2cGF0aCA9IHByZWZpeF9maWxlbmFtZShwcmVmaXgsIHByZWZpeF9sZW5ndGgsIHZwYXRoKTsKKwl9CiAKLQkJCWlmIChzdGRpbl9wYXRocykgewotCQkJCWVycm9yKCJDYW4ndCBzcGVjaWZ5IGZpbGVzIChzdWNoIGFzIFwiJXNcIikgd2l0aCAtLXN0ZGluLXBhdGhzIiwgYXJnKTsKLQkJCQl1c2FnZShoYXNoX29iamVjdF91c2FnZSk7Ci0JCQl9CisJaWYgKHN0ZGluX3BhdGhzKSB7CisJCWlmIChoYXNoc3RkaW4pCisJCQllcnJzdHIgPSAiQ2FuJ3QgdXNlIC0tc3RkaW4tcGF0aHMgd2l0aCAtLXN0ZGluIjsKKwkJZWxzZSBpZiAoYXJnYykKKwkJCWVycnN0ciA9ICJDYW4ndCBzcGVjaWZ5IGZpbGVzIHdpdGggLS1zdGRpbi1wYXRocyI7CisJCWVsc2UgaWYgKHZwYXRoKQorCQkJZXJyc3RyID0gIkNhbid0IHVzZSAtLXN0ZGluLXBhdGhzIHdpdGggLS1wYXRoIjsKKwkJZWxzZSBpZiAobm9fZmlsdGVycykKKwkJCWVycnN0ciA9ICJDYW4ndCB1c2UgLS1zdGRpbi1wYXRocyB3aXRoIC0tbm8tZmlsdGVycyI7CisJfQorCWVsc2UgeworCQlpZiAoaGFzaHN0ZGluID4gMSkKKwkJCWVycnN0ciA9ICJNdWx0aXBsZSAtLXN0ZGluIGFyZ3VtZW50cyBhcmUgbm90IHN1cHBvcnRlZCI7CisJCWlmICh2cGF0aCAmJiBub19maWx0ZXJzKQorCQkJZXJyc3RyID0gIkNhbid0IHVzZSAtLXBhdGggd2l0aCAtLW5vLWZpbHRlcnMiOworCX0KIAotCQkJaWYgKGhhc2hzdGRpbikgewotCQkJCWhhc2hfc3RkaW4odHlwZSwgd3JpdGVfb2JqZWN0KTsKLQkJCQloYXNoc3RkaW4gPSAwOwotCQkJfQotCQkJaWYgKDAgPD0gcHJlZml4X2xlbmd0aCkKLQkJCQlhcmcgPSBwcmVmaXhfZmlsZW5hbWUocHJlZml4LCBwcmVmaXhfbGVuZ3RoLAotCQkJCQkJICAgICAgYXJnKTsKLQkJCWhhc2hfb2JqZWN0KGFyZywgdHlwZV9mcm9tX3N0cmluZyh0eXBlKSwgd3JpdGVfb2JqZWN0KTsKLQkJCW5vX21vcmVfZmxhZ3MgPSAxOwotCQl9CisJaWYgKGVycnN0cikgeworCQllcnJvcigiJXMiLCBlcnJzdHIpOworCQl1c2FnZV93aXRoX29wdGlvbnMoaGFzaF9vYmplY3RfdXNhZ2UsIGhhc2hfb2JqZWN0X29wdGlvbnMpOworCX0KKworCWlmIChoYXNoc3RkaW4pCisJCWhhc2hfZmQoMCwgdHlwZSwgd3JpdGVfb2JqZWN0LCB2cGF0aCk7CisKKwlmb3IgKGkgPSAwIDsgaSA8IGFyZ2M7IGkrKykgeworCQljb25zdCBjaGFyICphcmcgPSBhcmd2W2ldOworCisJCWlmICgwIDw9IHByZWZpeF9sZW5ndGgpCisJCQlhcmcgPSBwcmVmaXhfZmlsZW5hbWUocHJlZml4LCBwcmVmaXhfbGVuZ3RoLCBhcmcpOworCQloYXNoX29iamVjdChhcmcsIHR5cGUsIHdyaXRlX29iamVjdCwKKwkJCSAgICBub19maWx0ZXJzID8gTlVMTCA6IHZwYXRoID8gdnBhdGggOiBhcmcpOwogCX0KIAogCWlmIChzdGRpbl9wYXRocykKIAkJaGFzaF9zdGRpbl9wYXRocyh0eXBlLCB3cml0ZV9vYmplY3QpOwogCi0JaWYgKGhhc2hzdGRpbikKLQkJaGFzaF9zdGRpbih0eXBlLCB3cml0ZV9vYmplY3QpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvaGVscC5jIGIvaGVscC5jCmluZGV4IGRjMDc4NmQuLmZkODdiYjUgMTAwNjQ0Ci0tLSBhL2hlbHAuYworKysgYi9oZWxwLmMKQEAgLTEsMjc2ICsxLDggQEAKLS8qCi0gKiBidWlsdGluLWhlbHAuYwotICoKLSAqIEJ1aWx0aW4gaGVscC1yZWxhdGVkIGNvbW1hbmRzIChoZWxwLCB1c2FnZSwgdmVyc2lvbikKLSAqLwogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiYnVpbHRpbi5oIgogI2luY2x1ZGUgImV4ZWNfY21kLmgiCi0jaW5jbHVkZSAiY29tbW9uLWNtZHMuaCIKLSNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCi0jaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKLQotc3RhdGljIHN0cnVjdCBtYW5fdmlld2VyX2xpc3QgewotCXN0cnVjdCBtYW5fdmlld2VyX2xpc3QgKm5leHQ7Ci0JY2hhciBuYW1lW0ZMRVhfQVJSQVldOwotfSAqbWFuX3ZpZXdlcl9saXN0OwotCi1zdGF0aWMgc3RydWN0IG1hbl92aWV3ZXJfaW5mb19saXN0IHsKLQlzdHJ1Y3QgbWFuX3ZpZXdlcl9pbmZvX2xpc3QgKm5leHQ7Ci0JY29uc3QgY2hhciAqaW5mbzsKLQljaGFyIG5hbWVbRkxFWF9BUlJBWV07Ci19ICptYW5fdmlld2VyX2luZm9fbGlzdDsKLQotZW51bSBoZWxwX2Zvcm1hdCB7Ci0JSEVMUF9GT1JNQVRfTUFOLAotCUhFTFBfRk9STUFUX0lORk8sCi0JSEVMUF9GT1JNQVRfV0VCLAotfTsKLQotc3RhdGljIGludCBzaG93X2FsbCA9IDA7Ci1zdGF0aWMgZW51bSBoZWxwX2Zvcm1hdCBoZWxwX2Zvcm1hdCA9IEhFTFBfRk9STUFUX01BTjsKLXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5faGVscF9vcHRpb25zW10gPSB7Ci0JT1BUX0JPT0xFQU4oJ2EnLCAiYWxsIiwgJnNob3dfYWxsLCAicHJpbnQgYWxsIGF2YWlsYWJsZSBjb21tYW5kcyIpLAotCU9QVF9TRVRfSU5UKCdtJywgIm1hbiIsICZoZWxwX2Zvcm1hdCwgInNob3cgbWFuIHBhZ2UiLCBIRUxQX0ZPUk1BVF9NQU4pLAotCU9QVF9TRVRfSU5UKCd3JywgIndlYiIsICZoZWxwX2Zvcm1hdCwgInNob3cgbWFudWFsIGluIHdlYiBicm93c2VyIiwKLQkJCUhFTFBfRk9STUFUX1dFQiksCi0JT1BUX1NFVF9JTlQoJ2knLCAiaW5mbyIsICZoZWxwX2Zvcm1hdCwgInNob3cgaW5mbyBwYWdlIiwKLQkJCUhFTFBfRk9STUFUX0lORk8pLAotCU9QVF9FTkQoKSwKLX07Ci0KLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9oZWxwX3VzYWdlW10gPSB7Ci0JImdpdCBoZWxwIFstLWFsbF0gWy0tbWFufC0td2VifC0taW5mb10gW2NvbW1hbmRdIiwKLQlOVUxMCi19OwotCi1zdGF0aWMgZW51bSBoZWxwX2Zvcm1hdCBwYXJzZV9oZWxwX2Zvcm1hdChjb25zdCBjaGFyICpmb3JtYXQpCi17Ci0JaWYgKCFzdHJjbXAoZm9ybWF0LCAibWFuIikpCi0JCXJldHVybiBIRUxQX0ZPUk1BVF9NQU47Ci0JaWYgKCFzdHJjbXAoZm9ybWF0LCAiaW5mbyIpKQotCQlyZXR1cm4gSEVMUF9GT1JNQVRfSU5GTzsKLQlpZiAoIXN0cmNtcChmb3JtYXQsICJ3ZWIiKSB8fCAhc3RyY21wKGZvcm1hdCwgImh0bWwiKSkKLQkJcmV0dXJuIEhFTFBfRk9STUFUX1dFQjsKLQlkaWUoInVucmVjb2duaXplZCBoZWxwIGZvcm1hdCAnJXMnIiwgZm9ybWF0KTsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgKmdldF9tYW5fdmlld2VyX2luZm8oY29uc3QgY2hhciAqbmFtZSkKLXsKLQlzdHJ1Y3QgbWFuX3ZpZXdlcl9pbmZvX2xpc3QgKnZpZXdlcjsKLQotCWZvciAodmlld2VyID0gbWFuX3ZpZXdlcl9pbmZvX2xpc3Q7IHZpZXdlcjsgdmlld2VyID0gdmlld2VyLT5uZXh0KQotCXsKLQkJaWYgKCFzdHJjYXNlY21wKG5hbWUsIHZpZXdlci0+bmFtZSkpCi0JCQlyZXR1cm4gdmlld2VyLT5pbmZvOwotCX0KLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGludCBjaGVja19lbWFjc2NsaWVudF92ZXJzaW9uKHZvaWQpCi17Ci0Jc3RydWN0IHN0cmJ1ZiBidWZmZXIgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBlY19wcm9jZXNzOwotCWNvbnN0IGNoYXIgKmFyZ3ZfZWNbXSA9IHsgImVtYWNzY2xpZW50IiwgIi0tdmVyc2lvbiIsIE5VTEwgfTsKLQlpbnQgdmVyc2lvbjsKLQotCS8qIGVtYWNzY2xpZW50IHByaW50cyBpdHMgdmVyc2lvbiBudW1iZXIgb24gc3RkZXJyICovCi0JbWVtc2V0KCZlY19wcm9jZXNzLCAwLCBzaXplb2YoZWNfcHJvY2VzcykpOwotCWVjX3Byb2Nlc3MuYXJndiA9IGFyZ3ZfZWM7Ci0JZWNfcHJvY2Vzcy5lcnIgPSAtMTsKLQllY19wcm9jZXNzLnN0ZG91dF90b19zdGRlcnIgPSAxOwotCWlmIChzdGFydF9jb21tYW5kKCZlY19wcm9jZXNzKSkgewotCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzdGFydCBlbWFjc2NsaWVudC5cbiIpOwotCQlyZXR1cm4gLTE7Ci0JfQotCXN0cmJ1Zl9yZWFkKCZidWZmZXIsIGVjX3Byb2Nlc3MuZXJyLCAyMCk7Ci0JY2xvc2UoZWNfcHJvY2Vzcy5lcnIpOwotCi0JLyoKLQkgKiBEb24ndCBib3RoZXIgY2hlY2tpbmcgcmV0dXJuIHZhbHVlLCBiZWNhdXNlICJlbWFjc2NsaWVudCAtLXZlcnNpb24iCi0JICogc2VlbXMgdG8gYWx3YXlzIGV4aXRzIHdpdGggY29kZSAxLgotCSAqLwotCWZpbmlzaF9jb21tYW5kKCZlY19wcm9jZXNzKTsKLQotCWlmIChwcmVmaXhjbXAoYnVmZmVyLmJ1ZiwgImVtYWNzY2xpZW50IikpIHsKLQkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcGFyc2UgZW1hY3NjbGllbnQgdmVyc2lvbi5cbiIpOwotCQlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCXN0cmJ1Zl9yZW1vdmUoJmJ1ZmZlciwgMCwgc3RybGVuKCJlbWFjc2NsaWVudCIpKTsKLQl2ZXJzaW9uID0gYXRvaShidWZmZXIuYnVmKTsKLQotCWlmICh2ZXJzaW9uIDwgMjIpIHsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkiZW1hY3NjbGllbnQgdmVyc2lvbiAnJWQnIHRvbyBvbGQgKDwgMjIpLlxuIiwKLQkJCXZlcnNpb24pOwotCQlzdHJidWZfcmVsZWFzZSgmYnVmZmVyKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCXN0cmJ1Zl9yZWxlYXNlKCZidWZmZXIpOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBleGVjX3dvbWFuX2VtYWNzKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIgKnBhZ2UpCi17Ci0JaWYgKCFjaGVja19lbWFjc2NsaWVudF92ZXJzaW9uKCkpIHsKLQkJLyogVGhpcyB3b3JrcyBvbmx5IHdpdGggZW1hY3NjbGllbnQgdmVyc2lvbiA+PSAyMi4gKi8KLQkJc3RydWN0IHN0cmJ1ZiBtYW5fcGFnZSA9IFNUUkJVRl9JTklUOwotCi0JCWlmICghcGF0aCkKLQkJCXBhdGggPSAiZW1hY3NjbGllbnQiOwotCQlzdHJidWZfYWRkZigmbWFuX3BhZ2UsICIod29tYW4gXCIlc1wiKSIsIHBhZ2UpOwotCQlleGVjbHAocGF0aCwgImVtYWNzY2xpZW50IiwgIi1lIiwgbWFuX3BhZ2UuYnVmLCBOVUxMKTsKLQkJd2FybmluZygiZmFpbGVkIHRvIGV4ZWMgJyVzJzogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwotCX0KLX0KLQotc3RhdGljIHZvaWQgZXhlY19tYW5fa29ucXVlcm9yKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIgKnBhZ2UpCi17Ci0JY29uc3QgY2hhciAqZGlzcGxheSA9IGdldGVudigiRElTUExBWSIpOwotCWlmIChkaXNwbGF5ICYmICpkaXNwbGF5KSB7Ci0JCXN0cnVjdCBzdHJidWYgbWFuX3BhZ2UgPSBTVFJCVUZfSU5JVDsKLQkJY29uc3QgY2hhciAqZmlsZW5hbWUgPSAia2ZtY2xpZW50IjsKLQotCQkvKiBJdCdzIHNpbXBsZXIgdG8gbGF1bmNoIGtvbnF1ZXJvciB1c2luZyBrZm1jbGllbnQuICovCi0JCWlmIChwYXRoKSB7Ci0JCQljb25zdCBjaGFyICpmaWxlID0gc3RycmNocihwYXRoLCAnLycpOwotCQkJaWYgKGZpbGUgJiYgIXN0cmNtcChmaWxlICsgMSwgImtvbnF1ZXJvciIpKSB7Ci0JCQkJY2hhciAqbmV3ID0geHN0cmR1cChwYXRoKTsKLQkJCQljaGFyICpkZXN0ID0gc3RycmNocihuZXcsICcvJyk7Ci0KLQkJCQkvKiBzdHJsZW4oImtvbnF1ZXJvciIpID09IHN0cmxlbigia2ZtY2xpZW50IikgKi8KLQkJCQlzdHJjcHkoZGVzdCArIDEsICJrZm1jbGllbnQiKTsKLQkJCQlwYXRoID0gbmV3OwotCQkJfQotCQkJaWYgKGZpbGUpCi0JCQkJZmlsZW5hbWUgPSBmaWxlOwotCQl9IGVsc2UKLQkJCXBhdGggPSAia2ZtY2xpZW50IjsKLQkJc3RyYnVmX2FkZGYoJm1hbl9wYWdlLCAibWFuOiVzKDEpIiwgcGFnZSk7Ci0JCWV4ZWNscChwYXRoLCBmaWxlbmFtZSwgIm5ld1RhYiIsIG1hbl9wYWdlLmJ1ZiwgTlVMTCk7Ci0JCXdhcm5pbmcoImZhaWxlZCB0byBleGVjICclcyc6ICVzIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkIGV4ZWNfbWFuX21hbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyICpwYWdlKQotewotCWlmICghcGF0aCkKLQkJcGF0aCA9ICJtYW4iOwotCWV4ZWNscChwYXRoLCAibWFuIiwgcGFnZSwgTlVMTCk7Ci0Jd2FybmluZygiZmFpbGVkIHRvIGV4ZWMgJyVzJzogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwotfQotCi1zdGF0aWMgdm9pZCBleGVjX21hbl9jbWQoY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGFyICpwYWdlKQotewotCXN0cnVjdCBzdHJidWYgc2hlbGxfY21kID0gU1RSQlVGX0lOSVQ7Ci0Jc3RyYnVmX2FkZGYoJnNoZWxsX2NtZCwgIiVzICVzIiwgY21kLCBwYWdlKTsKLQlleGVjbCgiL2Jpbi9zaCIsICJzaCIsICItYyIsIHNoZWxsX2NtZC5idWYsIE5VTEwpOwotCXdhcm5pbmcoImZhaWxlZCB0byBleGVjICclcyc6ICVzIiwgY21kLCBzdHJlcnJvcihlcnJubykpOwotfQotCi1zdGF0aWMgdm9pZCBhZGRfbWFuX3ZpZXdlcihjb25zdCBjaGFyICpuYW1lKQotewotCXN0cnVjdCBtYW5fdmlld2VyX2xpc3QgKipwID0gJm1hbl92aWV3ZXJfbGlzdDsKLQlzaXplX3QgbGVuID0gc3RybGVuKG5hbWUpOwotCi0Jd2hpbGUgKCpwKQotCQlwID0gJigoKnApLT5uZXh0KTsKLQkqcCA9IHhjYWxsb2MoMSwgKHNpemVvZigqKnApICsgbGVuICsgMSkpOwotCXN0cm5jcHkoKCpwKS0+bmFtZSwgbmFtZSwgbGVuKTsKLX0KLQotc3RhdGljIGludCBzdXBwb3J0ZWRfbWFuX3ZpZXdlcihjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbGVuKQotewotCXJldHVybiAoIXN0cm5jYXNlY21wKCJtYW4iLCBuYW1lLCBsZW4pIHx8Ci0JCSFzdHJuY2FzZWNtcCgid29tYW4iLCBuYW1lLCBsZW4pIHx8Ci0JCSFzdHJuY2FzZWNtcCgia29ucXVlcm9yIiwgbmFtZSwgbGVuKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRvX2FkZF9tYW5fdmlld2VyX2luZm8oY29uc3QgY2hhciAqbmFtZSwKLQkJCQkgICBzaXplX3QgbGVuLAotCQkJCSAgIGNvbnN0IGNoYXIgKnZhbHVlKQotewotCXN0cnVjdCBtYW5fdmlld2VyX2luZm9fbGlzdCAqbmV3ID0geGNhbGxvYygxLCBzaXplb2YoKm5ldykgKyBsZW4gKyAxKTsKLQotCXN0cm5jcHkobmV3LT5uYW1lLCBuYW1lLCBsZW4pOwotCW5ldy0+aW5mbyA9IHhzdHJkdXAodmFsdWUpOwotCW5ldy0+bmV4dCA9IG1hbl92aWV3ZXJfaW5mb19saXN0OwotCW1hbl92aWV3ZXJfaW5mb19saXN0ID0gbmV3OwotfQotCi1zdGF0aWMgaW50IGFkZF9tYW5fdmlld2VyX3BhdGgoY29uc3QgY2hhciAqbmFtZSwKLQkJCSAgICAgICBzaXplX3QgbGVuLAotCQkJICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlKQotewotCWlmIChzdXBwb3J0ZWRfbWFuX3ZpZXdlcihuYW1lLCBsZW4pKQotCQlkb19hZGRfbWFuX3ZpZXdlcl9pbmZvKG5hbWUsIGxlbiwgdmFsdWUpOwotCWVsc2UKLQkJd2FybmluZygiJyVzJzogcGF0aCBmb3IgdW5zdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKLQkJCSJQbGVhc2UgY29uc2lkZXIgdXNpbmcgJ21hbi48dG9vbD4uY21kJyBpbnN0ZWFkLiIsCi0JCQluYW1lKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGFkZF9tYW5fdmlld2VyX2NtZChjb25zdCBjaGFyICpuYW1lLAotCQkJICAgICAgc2l6ZV90IGxlbiwKLQkJCSAgICAgIGNvbnN0IGNoYXIgKnZhbHVlKQotewotCWlmIChzdXBwb3J0ZWRfbWFuX3ZpZXdlcihuYW1lLCBsZW4pKQotCQl3YXJuaW5nKCInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgotCQkJIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5wYXRoJyBpbnN0ZWFkLiIsCi0JCQluYW1lKTsKLQllbHNlCi0JCWRvX2FkZF9tYW5fdmlld2VyX2luZm8obmFtZSwgbGVuLCB2YWx1ZSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBhZGRfbWFuX3ZpZXdlcl9pbmZvKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUpCi17Ci0JY29uc3QgY2hhciAqbmFtZSA9IHZhciArIDQ7Ci0JY29uc3QgY2hhciAqc3Via2V5ID0gc3RycmNocihuYW1lLCAnLicpOwotCi0JaWYgKCFzdWJrZXkpCi0JCXJldHVybiBlcnJvcigiQ29uZmlnIHdpdGggbm8ga2V5IGZvciBtYW4gdmlld2VyOiAlcyIsIG5hbWUpOwotCi0JaWYgKCFzdHJjbXAoc3Via2V5LCAiLnBhdGgiKSkgewotCQlpZiAoIXZhbHVlKQotCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7Ci0JCXJldHVybiBhZGRfbWFuX3ZpZXdlcl9wYXRoKG5hbWUsIHN1YmtleSAtIG5hbWUsIHZhbHVlKTsKLQl9Ci0JaWYgKCFzdHJjbXAoc3Via2V5LCAiLmNtZCIpKSB7Ci0JCWlmICghdmFsdWUpCi0JCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKLQkJcmV0dXJuIGFkZF9tYW5fdmlld2VyX2NtZChuYW1lLCBzdWJrZXkgLSBuYW1lLCB2YWx1ZSk7Ci0JfQotCi0Jd2FybmluZygiJyVzJzogdW5zdXBwb3J0ZWQgbWFuIHZpZXdlciBzdWIga2V5LiIsIHN1YmtleSk7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgZ2l0X2hlbHBfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQotewotCWlmICghc3RyY21wKHZhciwgImhlbHAuZm9ybWF0IikpIHsKLQkJaWYgKCF2YWx1ZSkKLQkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOwotCQloZWxwX2Zvcm1hdCA9IHBhcnNlX2hlbHBfZm9ybWF0KHZhbHVlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWlmICghc3RyY21wKHZhciwgIm1hbi52aWV3ZXIiKSkgewotCQlpZiAoIXZhbHVlKQotCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7Ci0JCWFkZF9tYW5fdmlld2VyKHZhbHVlKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWlmICghcHJlZml4Y21wKHZhciwgIm1hbi4iKSkKLQkJcmV0dXJuIGFkZF9tYW5fdmlld2VyX2luZm8odmFyLCB2YWx1ZSk7Ci0KLQlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKLX0KKyNpbmNsdWRlICJsZXZlbnNodGVpbi5oIgorI2luY2x1ZGUgImhlbHAuaCIKIAogLyogbW9zdCBHVUkgdGVybWluYWxzIHNldCBDT0xVTU5TIChhbHRob3VnaCBzb21lIGRvbid0IGV4cG9ydCBpdCkgKi8KIHN0YXRpYyBpbnQgdGVybV9jb2x1bW5zKHZvaWQpCkBAIC0yOTQsMjQgKzI2LDkgQEAKIAlyZXR1cm4gODA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBtcHV0X2NoYXIoY2hhciBjLCB1bnNpZ25lZCBpbnQgbnVtKQordm9pZCBhZGRfY21kbmFtZShzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4pCiB7Ci0Jd2hpbGUobnVtLS0pCi0JCXB1dGNoYXIoYyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgY21kbmFtZXMgewotCWludCBhbGxvYzsKLQlpbnQgY250OwotCXN0cnVjdCBjbWRuYW1lIHsKLQkJc2l6ZV90IGxlbjsKLQkJY2hhciBuYW1lWzFdOwotCX0gKipuYW1lczsKLX0gbWFpbl9jbWRzLCBvdGhlcl9jbWRzOwotCi1zdGF0aWMgdm9pZCBhZGRfY21kbmFtZShzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4pCi17Ci0Jc3RydWN0IGNtZG5hbWUgKmVudCA9IHhtYWxsb2Moc2l6ZW9mKCplbnQpICsgbGVuKTsKKwlzdHJ1Y3QgY21kbmFtZSAqZW50ID0geG1hbGxvYyhzaXplb2YoKmVudCkgKyBsZW4gKyAxKTsKIAogCWVudC0+bGVuID0gbGVuOwogCW1lbWNweShlbnQtPm5hbWUsIG5hbWUsIGxlbik7CkBAIC0zMjEsNiArMzgsMTYgQEAKIAljbWRzLT5uYW1lc1tjbWRzLT5jbnQrK10gPSBlbnQ7CiB9CiAKK3N0YXRpYyB2b2lkIGNsZWFuX2NtZG5hbWVzKHN0cnVjdCBjbWRuYW1lcyAqY21kcykKK3sKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgY21kcy0+Y250OyArK2kpCisJCWZyZWUoY21kcy0+bmFtZXNbaV0pOworCWZyZWUoY21kcy0+bmFtZXMpOworCWNtZHMtPmNudCA9IDA7CisJY21kcy0+YWxsb2MgPSAwOworfQorCiBzdGF0aWMgaW50IGNtZG5hbWVfY29tcGFyZShjb25zdCB2b2lkICphXywgY29uc3Qgdm9pZCAqYl8pCiB7CiAJc3RydWN0IGNtZG5hbWUgKmEgPSAqKHN0cnVjdCBjbWRuYW1lICoqKWFfOwpAQCAtMzQyLDcgKzY5LDcgQEAKIAljbWRzLT5jbnQgPSBqOwogfQogCi1zdGF0aWMgdm9pZCBleGNsdWRlX2NtZHMoc3RydWN0IGNtZG5hbWVzICpjbWRzLCBzdHJ1Y3QgY21kbmFtZXMgKmV4Y2x1ZGVzKQordm9pZCBleGNsdWRlX2NtZHMoc3RydWN0IGNtZG5hbWVzICpjbWRzLCBzdHJ1Y3QgY21kbmFtZXMgKmV4Y2x1ZGVzKQogewogCWludCBjaSwgY2osIGVpOwogCWludCBjbXA7CkBAIC00MTcsMTkgKzE0NCwyMSBAQAogCXJldHVybiBzdC5zdF9tb2RlICYgU19JWFVTUjsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludCBsaXN0X2NvbW1hbmRzX2luX2RpcihzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsCi0JCQkJCSBjb25zdCBjaGFyICpwYXRoKQorc3RhdGljIHZvaWQgbGlzdF9jb21tYW5kc19pbl9kaXIoc3RydWN0IGNtZG5hbWVzICpjbWRzLAorCQkJCQkgY29uc3QgY2hhciAqcGF0aCwKKwkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQl1bnNpZ25lZCBpbnQgbG9uZ2VzdCA9IDA7Ci0JY29uc3QgY2hhciAqcHJlZml4ID0gImdpdC0iOwotCWludCBwcmVmaXhfbGVuID0gc3RybGVuKHByZWZpeCk7CisJaW50IHByZWZpeF9sZW47CiAJRElSICpkaXIgPSBvcGVuZGlyKHBhdGgpOwogCXN0cnVjdCBkaXJlbnQgKmRlOwogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJaW50IGxlbjsKIAogCWlmICghZGlyKQotCQlyZXR1cm4gMDsKKwkJcmV0dXJuOworCWlmICghcHJlZml4KQorCQlwcmVmaXggPSAiZ2l0LSI7CisJcHJlZml4X2xlbiA9IHN0cmxlbihwcmVmaXgpOwogCiAJc3RyYnVmX2FkZGYoJmJ1ZiwgIiVzLyIsIHBhdGgpOwogCWxlbiA9IGJ1Zi5sZW47CkBAIC00NDksMTAwICsxNzgsODEgQEAKIAkJaWYgKGhhc19leHRlbnNpb24oZGUtPmRfbmFtZSwgIi5leGUiKSkKIAkJCWVudGxlbiAtPSA0OwogCi0JCWlmIChsb25nZXN0IDwgZW50bGVuKQotCQkJbG9uZ2VzdCA9IGVudGxlbjsKLQogCQlhZGRfY21kbmFtZShjbWRzLCBkZS0+ZF9uYW1lICsgcHJlZml4X2xlbiwgZW50bGVuKTsKIAl9CiAJY2xvc2VkaXIoZGlyKTsKIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLQotCXJldHVybiBsb25nZXN0OwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50IGxvYWRfY29tbWFuZF9saXN0KHZvaWQpCit2b2lkIGxvYWRfY29tbWFuZF9saXN0KGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJc3RydWN0IGNtZG5hbWVzICptYWluX2NtZHMsCisJCXN0cnVjdCBjbWRuYW1lcyAqb3RoZXJfY21kcykKIHsKLQl1bnNpZ25lZCBpbnQgbG9uZ2VzdCA9IDA7Ci0JdW5zaWduZWQgaW50IGxlbjsKIAljb25zdCBjaGFyICplbnZfcGF0aCA9IGdldGVudigiUEFUSCIpOwotCWNoYXIgKnBhdGhzLCAqcGF0aCwgKmNvbG9uOwogCWNvbnN0IGNoYXIgKmV4ZWNfcGF0aCA9IGdpdF9leGVjX3BhdGgoKTsKIAotCWlmIChleGVjX3BhdGgpCi0JCWxvbmdlc3QgPSBsaXN0X2NvbW1hbmRzX2luX2RpcigmbWFpbl9jbWRzLCBleGVjX3BhdGgpOwotCi0JaWYgKCFlbnZfcGF0aCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIlBBVEggbm90IHNldFxuIik7Ci0JCWV4aXQoMSk7CisJaWYgKGV4ZWNfcGF0aCkgeworCQlsaXN0X2NvbW1hbmRzX2luX2RpcihtYWluX2NtZHMsIGV4ZWNfcGF0aCwgcHJlZml4KTsKKwkJcXNvcnQobWFpbl9jbWRzLT5uYW1lcywgbWFpbl9jbWRzLT5jbnQsCisJCSAgICAgIHNpemVvZigqbWFpbl9jbWRzLT5uYW1lcyksIGNtZG5hbWVfY29tcGFyZSk7CisJCXVuaXEobWFpbl9jbWRzKTsKIAl9CiAKLQlwYXRoID0gcGF0aHMgPSB4c3RyZHVwKGVudl9wYXRoKTsKLQl3aGlsZSAoMSkgewotCQlpZiAoKGNvbG9uID0gc3RyY2hyKHBhdGgsIFBBVEhfU0VQKSkpCi0JCQkqY29sb24gPSAwOworCWlmIChlbnZfcGF0aCkgeworCQljaGFyICpwYXRocywgKnBhdGgsICpjb2xvbjsKKwkJcGF0aCA9IHBhdGhzID0geHN0cmR1cChlbnZfcGF0aCk7CisJCXdoaWxlICgxKSB7CisJCQlpZiAoKGNvbG9uID0gc3RyY2hyKHBhdGgsIFBBVEhfU0VQKSkpCisJCQkJKmNvbG9uID0gMDsKKwkJCWlmICghZXhlY19wYXRoIHx8IHN0cmNtcChwYXRoLCBleGVjX3BhdGgpKQorCQkJCWxpc3RfY29tbWFuZHNfaW5fZGlyKG90aGVyX2NtZHMsIHBhdGgsIHByZWZpeCk7CiAKLQkJbGVuID0gbGlzdF9jb21tYW5kc19pbl9kaXIoJm90aGVyX2NtZHMsIHBhdGgpOwotCQlpZiAobGVuID4gbG9uZ2VzdCkKLQkJCWxvbmdlc3QgPSBsZW47CisJCQlpZiAoIWNvbG9uKQorCQkJCWJyZWFrOworCQkJcGF0aCA9IGNvbG9uICsgMTsKKwkJfQorCQlmcmVlKHBhdGhzKTsKIAotCQlpZiAoIWNvbG9uKQotCQkJYnJlYWs7Ci0JCXBhdGggPSBjb2xvbiArIDE7CisJCXFzb3J0KG90aGVyX2NtZHMtPm5hbWVzLCBvdGhlcl9jbWRzLT5jbnQsCisJCSAgICAgIHNpemVvZigqb3RoZXJfY21kcy0+bmFtZXMpLCBjbWRuYW1lX2NvbXBhcmUpOworCQl1bmlxKG90aGVyX2NtZHMpOwogCX0KLQlmcmVlKHBhdGhzKTsKLQotCXFzb3J0KG1haW5fY21kcy5uYW1lcywgbWFpbl9jbWRzLmNudCwKLQkgICAgICBzaXplb2YoKm1haW5fY21kcy5uYW1lcyksIGNtZG5hbWVfY29tcGFyZSk7Ci0JdW5pcSgmbWFpbl9jbWRzKTsKLQotCXFzb3J0KG90aGVyX2NtZHMubmFtZXMsIG90aGVyX2NtZHMuY250LAotCSAgICAgIHNpemVvZigqb3RoZXJfY21kcy5uYW1lcyksIGNtZG5hbWVfY29tcGFyZSk7Ci0JdW5pcSgmb3RoZXJfY21kcyk7Ci0JZXhjbHVkZV9jbWRzKCZvdGhlcl9jbWRzLCAmbWFpbl9jbWRzKTsKLQotCXJldHVybiBsb25nZXN0OworCWV4Y2x1ZGVfY21kcyhvdGhlcl9jbWRzLCBtYWluX2NtZHMpOwogfQogCi1zdGF0aWMgdm9pZCBsaXN0X2NvbW1hbmRzKHZvaWQpCi17Ci0JdW5zaWduZWQgaW50IGxvbmdlc3QgPSBsb2FkX2NvbW1hbmRfbGlzdCgpOwotCWNvbnN0IGNoYXIgKmV4ZWNfcGF0aCA9IGdpdF9leGVjX3BhdGgoKTsKLQotCWlmIChtYWluX2NtZHMuY250KSB7Ci0JCXByaW50ZigiYXZhaWxhYmxlIGdpdCBjb21tYW5kcyBpbiAnJXMnXG4iLCBleGVjX3BhdGgpOwotCQlwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKLQkJbXB1dF9jaGFyKCctJywgc3RybGVuKGV4ZWNfcGF0aCkpOwotCQlwdXRjaGFyKCdcbicpOwotCQlwcmV0dHlfcHJpbnRfc3RyaW5nX2xpc3QoJm1haW5fY21kcywgbG9uZ2VzdCk7Ci0JCXB1dGNoYXIoJ1xuJyk7Ci0JfQotCi0JaWYgKG90aGVyX2NtZHMuY250KSB7Ci0JCXByaW50ZigiZ2l0IGNvbW1hbmRzIGF2YWlsYWJsZSBmcm9tIGVsc2V3aGVyZSBvbiB5b3VyICRQQVRIXG4iKTsKLQkJcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwotCQlwcmV0dHlfcHJpbnRfc3RyaW5nX2xpc3QoJm90aGVyX2NtZHMsIGxvbmdlc3QpOwotCQlwdXRjaGFyKCdcbicpOwotCX0KLX0KLQotdm9pZCBsaXN0X2NvbW1vbl9jbWRzX2hlbHAodm9pZCkKK3ZvaWQgbGlzdF9jb21tYW5kcyhjb25zdCBjaGFyICp0aXRsZSwgc3RydWN0IGNtZG5hbWVzICptYWluX2NtZHMsCisJCSAgIHN0cnVjdCBjbWRuYW1lcyAqb3RoZXJfY21kcykKIHsKIAlpbnQgaSwgbG9uZ2VzdCA9IDA7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb21tb25fY21kcyk7IGkrKykgewotCQlpZiAobG9uZ2VzdCA8IHN0cmxlbihjb21tb25fY21kc1tpXS5uYW1lKSkKLQkJCWxvbmdlc3QgPSBzdHJsZW4oY29tbW9uX2NtZHNbaV0ubmFtZSk7CisJZm9yIChpID0gMDsgaSA8IG1haW5fY21kcy0+Y250OyBpKyspCisJCWlmIChsb25nZXN0IDwgbWFpbl9jbWRzLT5uYW1lc1tpXS0+bGVuKQorCQkJbG9uZ2VzdCA9IG1haW5fY21kcy0+bmFtZXNbaV0tPmxlbjsKKwlmb3IgKGkgPSAwOyBpIDwgb3RoZXJfY21kcy0+Y250OyBpKyspCisJCWlmIChsb25nZXN0IDwgb3RoZXJfY21kcy0+bmFtZXNbaV0tPmxlbikKKwkJCWxvbmdlc3QgPSBvdGhlcl9jbWRzLT5uYW1lc1tpXS0+bGVuOworCisJaWYgKG1haW5fY21kcy0+Y250KSB7CisJCWNvbnN0IGNoYXIgKmV4ZWNfcGF0aCA9IGdpdF9leGVjX3BhdGgoKTsKKwkJcHJpbnRmKCJhdmFpbGFibGUgJXMgaW4gJyVzJ1xuIiwgdGl0bGUsIGV4ZWNfcGF0aCk7CisJCXByaW50ZigiLS0tLS0tLS0tLS0tLS0tLSIpOworCQltcHV0X2NoYXIoJy0nLCBzdHJsZW4odGl0bGUpICsgc3RybGVuKGV4ZWNfcGF0aCkpOworCQlwdXRjaGFyKCdcbicpOworCQlwcmV0dHlfcHJpbnRfc3RyaW5nX2xpc3QobWFpbl9jbWRzLCBsb25nZXN0KTsKKwkJcHV0Y2hhcignXG4nKTsKIAl9CiAKLQlwdXRzKCJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6Iik7Ci0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29tbW9uX2NtZHMpOyBpKyspIHsKLQkJcHJpbnRmKCIgICAlcyAgICIsIGNvbW1vbl9jbWRzW2ldLm5hbWUpOwotCQltcHV0X2NoYXIoJyAnLCBsb25nZXN0IC0gc3RybGVuKGNvbW1vbl9jbWRzW2ldLm5hbWUpKTsKLQkJcHV0cyhjb21tb25fY21kc1tpXS5oZWxwKTsKKwlpZiAob3RoZXJfY21kcy0+Y250KSB7CisJCXByaW50ZigiJXMgYXZhaWxhYmxlIGZyb20gZWxzZXdoZXJlIG9uIHlvdXIgJFBBVEhcbiIsIHRpdGxlKTsKKwkJcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKwkJbXB1dF9jaGFyKCctJywgc3RybGVuKHRpdGxlKSk7CisJCXB1dGNoYXIoJ1xuJyk7CisJCXByZXR0eV9wcmludF9zdHJpbmdfbGlzdChvdGhlcl9jbWRzLCBsb25nZXN0KTsKKwkJcHV0Y2hhcignXG4nKTsKIAl9CiB9CiAKLXN0YXRpYyBpbnQgaXNfaW5fY21kbGlzdChzdHJ1Y3QgY21kbmFtZXMgKmMsIGNvbnN0IGNoYXIgKnMpCitpbnQgaXNfaW5fY21kbGlzdChzdHJ1Y3QgY21kbmFtZXMgKmMsIGNvbnN0IGNoYXIgKnMpCiB7CiAJaW50IGk7CiAJZm9yIChpID0gMDsgaSA8IGMtPmNudDsgaSsrKQpAQCAtNTUxLDEzMyArMjYxLDEwMSBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGlzX2dpdF9jb21tYW5kKGNvbnN0IGNoYXIgKnMpCitzdGF0aWMgaW50IGF1dG9jb3JyZWN0Oworc3RhdGljIHN0cnVjdCBjbWRuYW1lcyBhbGlhc2VzOworCitzdGF0aWMgaW50IGdpdF91bmtub3duX2NtZF9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCiB7Ci0JbG9hZF9jb21tYW5kX2xpc3QoKTsKLQlyZXR1cm4gaXNfaW5fY21kbGlzdCgmbWFpbl9jbWRzLCBzKSB8fAotCQlpc19pbl9jbWRsaXN0KCZvdGhlcl9jbWRzLCBzKSB8fAotCQkhc3RyY21wKHMsICJoZWxwIik7CisJaWYgKCFzdHJjbXAodmFyLCAiaGVscC5hdXRvY29ycmVjdCIpKQorCQlhdXRvY29ycmVjdCA9IGdpdF9jb25maWdfaW50KHZhcix2YWx1ZSk7CisJLyogQWxzbyB1c2UgYWxpYXNlcyBmb3IgY29tbWFuZCBsb29rdXAgKi8KKwlpZiAoIXByZWZpeGNtcCh2YXIsICJhbGlhcy4iKSkKKwkJYWRkX2NtZG5hbWUoJmFsaWFzZXMsIHZhciArIDYsIHN0cmxlbih2YXIgKyA2KSk7CisKKwlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKnByZXBlbmQoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpjbWQpCitzdGF0aWMgaW50IGxldmVuc2h0ZWluX2NvbXBhcmUoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKQogewotCXNpemVfdCBwcmVfbGVuID0gc3RybGVuKHByZWZpeCk7Ci0Jc2l6ZV90IGNtZF9sZW4gPSBzdHJsZW4oY21kKTsKLQljaGFyICpwID0geG1hbGxvYyhwcmVfbGVuICsgY21kX2xlbiArIDEpOwotCW1lbWNweShwLCBwcmVmaXgsIHByZV9sZW4pOwotCXN0cmNweShwICsgcHJlX2xlbiwgY21kKTsKLQlyZXR1cm4gcDsKKwljb25zdCBzdHJ1Y3QgY21kbmFtZSAqY29uc3QgKmMxID0gcDEsICpjb25zdCAqYzIgPSBwMjsKKwljb25zdCBjaGFyICpzMSA9ICgqYzEpLT5uYW1lLCAqczIgPSAoKmMyKS0+bmFtZTsKKwlpbnQgbDEgPSAoKmMxKS0+bGVuOworCWludCBsMiA9ICgqYzIpLT5sZW47CisJcmV0dXJuIGwxICE9IGwyID8gbDEgLSBsMiA6IHN0cmNtcChzMSwgczIpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqY21kX3RvX3BhZ2UoY29uc3QgY2hhciAqZ2l0X2NtZCkKK3N0YXRpYyB2b2lkIGFkZF9jbWRfbGlzdChzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsIHN0cnVjdCBjbWRuYW1lcyAqb2xkKQogewotCWlmICghZ2l0X2NtZCkKLQkJcmV0dXJuICJnaXQiOwotCWVsc2UgaWYgKCFwcmVmaXhjbXAoZ2l0X2NtZCwgImdpdCIpKQotCQlyZXR1cm4gZ2l0X2NtZDsKLQllbHNlIGlmIChpc19naXRfY29tbWFuZChnaXRfY21kKSkKLQkJcmV0dXJuIHByZXBlbmQoImdpdC0iLCBnaXRfY21kKTsKLQllbHNlCi0JCXJldHVybiBwcmVwZW5kKCJnaXQiLCBnaXRfY21kKTsKKwlpbnQgaTsKKwlBTExPQ19HUk9XKGNtZHMtPm5hbWVzLCBjbWRzLT5jbnQgKyBvbGQtPmNudCwgY21kcy0+YWxsb2MpOworCisJZm9yIChpID0gMDsgaSA8IG9sZC0+Y250OyBpKyspCisJCWNtZHMtPm5hbWVzW2NtZHMtPmNudCsrXSA9IG9sZC0+bmFtZXNbaV07CisJZnJlZShvbGQtPm5hbWVzKTsKKwlvbGQtPmNudCA9IDA7CisJb2xkLT5uYW1lcyA9IE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lkIHNldHVwX21hbl9wYXRoKHZvaWQpCitjb25zdCBjaGFyICpoZWxwX3Vua25vd25fY21kKGNvbnN0IGNoYXIgKmNtZCkKIHsKLQlzdHJ1Y3Qgc3RyYnVmIG5ld19wYXRoOwotCWNvbnN0IGNoYXIgKm9sZF9wYXRoID0gZ2V0ZW52KCJNQU5QQVRIIik7CisJaW50IGksIG4sIGJlc3Rfc2ltaWxhcml0eSA9IDA7CisJc3RydWN0IGNtZG5hbWVzIG1haW5fY21kcywgb3RoZXJfY21kczsKIAotCXN0cmJ1Zl9pbml0KCZuZXdfcGF0aCwgMCk7CisJbWVtc2V0KCZtYWluX2NtZHMsIDAsIHNpemVvZihtYWluX2NtZHMpKTsKKwltZW1zZXQoJm90aGVyX2NtZHMsIDAsIHNpemVvZihtYWluX2NtZHMpKTsKKwltZW1zZXQoJmFsaWFzZXMsIDAsIHNpemVvZihhbGlhc2VzKSk7CiAKLQkvKiBXZSBzaG91bGQgYWx3YXlzIHB1dCAnOicgYWZ0ZXIgb3VyIHBhdGguIElmIHRoZXJlIGlzIG5vCi0JICogb2xkX3BhdGgsIHRoZSAnOicgYXQgdGhlIGVuZCB3aWxsIGxldCAnbWFuJyB0byB0cnkKLQkgKiBzeXN0ZW0td2lkZSBwYXRocyBhZnRlciBvdXJzIHRvIGZpbmQgdGhlIG1hbnVhbCBwYWdlLiBJZgotCSAqIHRoZXJlIGlzIG9sZF9wYXRoLCB3ZSBuZWVkICc6JyBhcyBkZWxpbWl0ZXIuICovCi0Jc3RyYnVmX2FkZHN0cigmbmV3X3BhdGgsIEdJVF9NQU5fUEFUSCk7Ci0Jc3RyYnVmX2FkZGNoKCZuZXdfcGF0aCwgJzonKTsKLQlpZiAob2xkX3BhdGgpCi0JCXN0cmJ1Zl9hZGRzdHIoJm5ld19wYXRoLCBvbGRfcGF0aCk7CisJZ2l0X2NvbmZpZyhnaXRfdW5rbm93bl9jbWRfY29uZmlnLCBOVUxMKTsKIAotCXNldGVudigiTUFOUEFUSCIsIG5ld19wYXRoLmJ1ZiwgMSk7CisJbG9hZF9jb21tYW5kX2xpc3QoImdpdC0iLCAmbWFpbl9jbWRzLCAmb3RoZXJfY21kcyk7CiAKLQlzdHJidWZfcmVsZWFzZSgmbmV3X3BhdGgpOwotfQorCWFkZF9jbWRfbGlzdCgmbWFpbl9jbWRzLCAmYWxpYXNlcyk7CisJYWRkX2NtZF9saXN0KCZtYWluX2NtZHMsICZvdGhlcl9jbWRzKTsKKwlxc29ydChtYWluX2NtZHMubmFtZXMsIG1haW5fY21kcy5jbnQsCisJICAgICAgc2l6ZW9mKG1haW5fY21kcy5uYW1lcyksIGNtZG5hbWVfY29tcGFyZSk7CisJdW5pcSgmbWFpbl9jbWRzKTsKIAotc3RhdGljIHZvaWQgZXhlY192aWV3ZXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcGFnZSkKLXsKLQljb25zdCBjaGFyICppbmZvID0gZ2V0X21hbl92aWV3ZXJfaW5mbyhuYW1lKTsKKwkvKiBUaGlzIHJldXNlcyBjbWRuYW1lLT5sZW4gZm9yIHNpbWlsYXJpdHkgaW5kZXggKi8KKwlmb3IgKGkgPSAwOyBpIDwgbWFpbl9jbWRzLmNudDsgKytpKQorCQltYWluX2NtZHMubmFtZXNbaV0tPmxlbiA9CisJCQlsZXZlbnNodGVpbihjbWQsIG1haW5fY21kcy5uYW1lc1tpXS0+bmFtZSwgMCwgMiwgMSwgNCk7CiAKLQlpZiAoIXN0cmNhc2VjbXAobmFtZSwgIm1hbiIpKQotCQlleGVjX21hbl9tYW4oaW5mbywgcGFnZSk7Ci0JZWxzZSBpZiAoIXN0cmNhc2VjbXAobmFtZSwgIndvbWFuIikpCi0JCWV4ZWNfd29tYW5fZW1hY3MoaW5mbywgcGFnZSk7Ci0JZWxzZSBpZiAoIXN0cmNhc2VjbXAobmFtZSwgImtvbnF1ZXJvciIpKQotCQlleGVjX21hbl9rb25xdWVyb3IoaW5mbywgcGFnZSk7Ci0JZWxzZSBpZiAoaW5mbykKLQkJZXhlY19tYW5fY21kKGluZm8sIHBhZ2UpOwotCWVsc2UKLQkJd2FybmluZygiJyVzJzogdW5rbm93biBtYW4gdmlld2VyLiIsIG5hbWUpOwotfQorCXFzb3J0KG1haW5fY21kcy5uYW1lcywgbWFpbl9jbWRzLmNudCwKKwkgICAgICBzaXplb2YoKm1haW5fY21kcy5uYW1lcyksIGxldmVuc2h0ZWluX2NvbXBhcmUpOwogCi1zdGF0aWMgdm9pZCBzaG93X21hbl9wYWdlKGNvbnN0IGNoYXIgKmdpdF9jbWQpCi17Ci0Jc3RydWN0IG1hbl92aWV3ZXJfbGlzdCAqdmlld2VyOwotCWNvbnN0IGNoYXIgKnBhZ2UgPSBjbWRfdG9fcGFnZShnaXRfY21kKTsKKwlpZiAoIW1haW5fY21kcy5jbnQpCisJCWRpZSAoIlVoIG9oLiBZb3VyIHN5c3RlbSByZXBvcnRzIG5vIEdpdCBjb21tYW5kcyBhdCBhbGwuIik7CiAKLQlzZXR1cF9tYW5fcGF0aCgpOwotCWZvciAodmlld2VyID0gbWFuX3ZpZXdlcl9saXN0OyB2aWV3ZXI7IHZpZXdlciA9IHZpZXdlci0+bmV4dCkKLQl7Ci0JCWV4ZWNfdmlld2VyKHZpZXdlci0+bmFtZSwgcGFnZSk7IC8qIHdpbGwgcmV0dXJuIHdoZW4gdW5hYmxlICovCisJYmVzdF9zaW1pbGFyaXR5ID0gbWFpbl9jbWRzLm5hbWVzWzBdLT5sZW47CisJbiA9IDE7CisJd2hpbGUgKG4gPCBtYWluX2NtZHMuY250ICYmIGJlc3Rfc2ltaWxhcml0eSA9PSBtYWluX2NtZHMubmFtZXNbbl0tPmxlbikKKwkJKytuOworCWlmIChhdXRvY29ycmVjdCAmJiBuID09IDEpIHsKKwkJY29uc3QgY2hhciAqYXNzdW1lZCA9IG1haW5fY21kcy5uYW1lc1swXS0+bmFtZTsKKwkJbWFpbl9jbWRzLm5hbWVzWzBdID0gTlVMTDsKKwkJY2xlYW5fY21kbmFtZXMoJm1haW5fY21kcyk7CisJCWZwcmludGYoc3RkZXJyLCAiV0FSTklORzogWW91IGNhbGxlZCBhIEdpdCBwcm9ncmFtIG5hbWVkICclcycsICIKKwkJCSJ3aGljaCBkb2VzIG5vdCBleGlzdC5cbiIKKwkJCSJDb250aW51aW5nIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgeW91IG1lYW50ICclcydcbiIsCisJCQljbWQsIGFzc3VtZWQpOworCQlpZiAoYXV0b2NvcnJlY3QgPiAwKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgImluICUwLjFmIHNlY29uZHMgYXV0b21hdGljYWxseS4uLlxuIiwKKwkJCQkoZmxvYXQpYXV0b2NvcnJlY3QvMTAuMCk7CisJCQlwb2xsKE5VTEwsIDAsIGF1dG9jb3JyZWN0ICogMTAwKTsKKwkJfQorCQlyZXR1cm4gYXNzdW1lZDsKIAl9Ci0JZXhlY192aWV3ZXIoIm1hbiIsIHBhZ2UpOwotCWRpZSgibm8gbWFuIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0Iik7Ci19CiAKLXN0YXRpYyB2b2lkIHNob3dfaW5mb19wYWdlKGNvbnN0IGNoYXIgKmdpdF9jbWQpCi17Ci0JY29uc3QgY2hhciAqcGFnZSA9IGNtZF90b19wYWdlKGdpdF9jbWQpOwotCXNldGVudigiSU5GT1BBVEgiLCBHSVRfSU5GT19QQVRILCAxKTsKLQlleGVjbHAoImluZm8iLCAiaW5mbyIsICJnaXRtYW4iLCBwYWdlLCBOVUxMKTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0X2h0bWxfcGFnZV9wYXRoKHN0cnVjdCBzdHJidWYgKnBhZ2VfcGF0aCwgY29uc3QgY2hhciAqcGFnZSkKLXsKLQlzdHJ1Y3Qgc3RhdCBzdDsKLQljb25zdCBjaGFyICpodG1sX3BhdGggPSBzeXN0ZW1fcGF0aChHSVRfSFRNTF9QQVRIKTsKLQotCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSBhIGdpdCBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeS4gKi8KLQlpZiAoc3RhdChta3BhdGgoIiVzL2dpdC5odG1sIiwgaHRtbF9wYXRoKSwgJnN0KQotCSAgICB8fCAhU19JU1JFRyhzdC5zdF9tb2RlKSkKLQkJZGllKCInJXMnOiBub3QgYSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeS4iLCBodG1sX3BhdGgpOwotCi0Jc3RyYnVmX2luaXQocGFnZV9wYXRoLCAwKTsKLQlzdHJidWZfYWRkZihwYWdlX3BhdGgsICIlcy8lcy5odG1sIiwgaHRtbF9wYXRoLCBwYWdlKTsKLX0KLQotLyoKLSAqIElmIG9wZW5faHRtbCBpcyBub3QgZGVmaW5lZCBpbiBhIHBsYXRmb3JtLXNwZWNpZmljIHdheSAoc2VlIGZvcgotICogZXhhbXBsZSBjb21wYXQvbWluZ3cuaCksIHdlIHVzZSB0aGUgc2NyaXB0IHdlYi0tYnJvd3NlIHRvIGRpc3BsYXkKLSAqIEhUTUwuCi0gKi8KLSNpZm5kZWYgb3Blbl9odG1sCi12b2lkIG9wZW5faHRtbChjb25zdCBjaGFyICpwYXRoKQotewotCWV4ZWNsX2dpdF9jbWQoIndlYi0tYnJvd3NlIiwgIi1jIiwgImhlbHAuYnJvd3NlciIsIHBhdGgsIE5VTEwpOwotfQotI2VuZGlmCi0KLXN0YXRpYyB2b2lkIHNob3dfaHRtbF9wYWdlKGNvbnN0IGNoYXIgKmdpdF9jbWQpCi17Ci0JY29uc3QgY2hhciAqcGFnZSA9IGNtZF90b19wYWdlKGdpdF9jbWQpOwotCXN0cnVjdCBzdHJidWYgcGFnZV9wYXRoOyAvKiBpdCBsZWFrcyBidXQgd2UgZXhlYyBiZWxsb3cgKi8KLQotCWdldF9odG1sX3BhZ2VfcGF0aCgmcGFnZV9wYXRoLCBwYWdlKTsKLQotCW9wZW5faHRtbChwYWdlX3BhdGguYnVmKTsKLX0KLQotdm9pZCBoZWxwX3Vua25vd25fY21kKGNvbnN0IGNoYXIgKmNtZCkKLXsKIAlmcHJpbnRmKHN0ZGVyciwgImdpdDogJyVzJyBpcyBub3QgYSBnaXQtY29tbWFuZC4gU2VlICdnaXQgLS1oZWxwJy5cbiIsIGNtZCk7CisKKwlpZiAoYmVzdF9zaW1pbGFyaXR5IDwgNikgeworCQlmcHJpbnRmKHN0ZGVyciwgIlxuRGlkIHlvdSBtZWFuICVzP1xuIiwKKwkJCW4gPCAyID8gInRoaXMiOiAib25lIG9mIHRoZXNlIik7CisKKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJCWZwcmludGYoc3RkZXJyLCAiXHQlc1xuIiwgbWFpbl9jbWRzLm5hbWVzW2ldLT5uYW1lKTsKKwl9CisKIAlleGl0KDEpOwogfQogCkBAIC02ODYsNDkgKzM2NCwzIEBACiAJcHJpbnRmKCJnaXQgdmVyc2lvbiAlc1xuIiwgZ2l0X3ZlcnNpb25fc3RyaW5nKTsKIAlyZXR1cm4gMDsKIH0KLQotaW50IGNtZF9oZWxwKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQotewotCWludCBub25naXQ7Ci0JY29uc3QgY2hhciAqYWxpYXM7Ci0KLQlzZXR1cF9naXRfZGlyZWN0b3J5X2dlbnRseSgmbm9uZ2l0KTsKLQlnaXRfY29uZmlnKGdpdF9oZWxwX2NvbmZpZywgTlVMTCk7Ci0KLQlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBidWlsdGluX2hlbHBfb3B0aW9ucywKLQkJCWJ1aWx0aW5faGVscF91c2FnZSwgMCk7Ci0KLQlpZiAoc2hvd19hbGwpIHsKLQkJcHJpbnRmKCJ1c2FnZTogJXNcblxuIiwgZ2l0X3VzYWdlX3N0cmluZyk7Ci0JCWxpc3RfY29tbWFuZHMoKTsKLQkJcHJpbnRmKCIlc1xuIiwgZ2l0X21vcmVfaW5mb19zdHJpbmcpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQlpZiAoIWFyZ3ZbMF0pIHsKLQkJcHJpbnRmKCJ1c2FnZTogJXNcblxuIiwgZ2l0X3VzYWdlX3N0cmluZyk7Ci0JCWxpc3RfY29tbW9uX2NtZHNfaGVscCgpOwotCQlwcmludGYoIlxuJXNcbiIsIGdpdF9tb3JlX2luZm9fc3RyaW5nKTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JYWxpYXMgPSBhbGlhc19sb29rdXAoYXJndlswXSk7Ci0JaWYgKGFsaWFzICYmICFpc19naXRfY29tbWFuZChhcmd2WzBdKSkgewotCQlwcmludGYoImBnaXQgJXMnIGlzIGFsaWFzZWQgdG8gYCVzJ1xuIiwgYXJndlswXSwgYWxpYXMpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQlzd2l0Y2ggKGhlbHBfZm9ybWF0KSB7Ci0JY2FzZSBIRUxQX0ZPUk1BVF9NQU46Ci0JCXNob3dfbWFuX3BhZ2UoYXJndlswXSk7Ci0JCWJyZWFrOwotCWNhc2UgSEVMUF9GT1JNQVRfSU5GTzoKLQkJc2hvd19pbmZvX3BhZ2UoYXJndlswXSk7Ci0JCWJyZWFrOwotCWNhc2UgSEVMUF9GT1JNQVRfV0VCOgotCQlzaG93X2h0bWxfcGFnZShhcmd2WzBdKTsKLQkJYnJlYWs7Ci0JfQotCi0JcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9oZWxwLmggYi9oZWxwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZiYzE1NAotLS0gL2Rldi9udWxsCisrKyBiL2hlbHAuaApAQCAtMCwwICsxLDI5IEBACisjaWZuZGVmIEhFTFBfSAorI2RlZmluZSBIRUxQX0gKKworc3RydWN0IGNtZG5hbWVzIHsKKwlpbnQgYWxsb2M7CisJaW50IGNudDsKKwlzdHJ1Y3QgY21kbmFtZSB7CisJCXNpemVfdCBsZW47IC8qIGFsc28gdXNlZCBmb3Igc2ltaWxhcml0eSBpbmRleCBpbiBoZWxwLmMgKi8KKwkJY2hhciBuYW1lW0ZMRVhfQVJSQVldOworCX0gKipuYW1lczsKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBtcHV0X2NoYXIoY2hhciBjLCB1bnNpZ25lZCBpbnQgbnVtKQoreworCXdoaWxlKG51bS0tKQorCQlwdXRjaGFyKGMpOworfQorCit2b2lkIGxvYWRfY29tbWFuZF9saXN0KGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJc3RydWN0IGNtZG5hbWVzICptYWluX2NtZHMsCisJCXN0cnVjdCBjbWRuYW1lcyAqb3RoZXJfY21kcyk7Cit2b2lkIGFkZF9jbWRuYW1lKHN0cnVjdCBjbWRuYW1lcyAqY21kcywgY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbik7CisvKiBIZXJlIHdlIHJlcXVpcmUgdGhhdCBleGNsdWRlcyBpcyBhIHNvcnRlZCBsaXN0LiAqLwordm9pZCBleGNsdWRlX2NtZHMoc3RydWN0IGNtZG5hbWVzICpjbWRzLCBzdHJ1Y3QgY21kbmFtZXMgKmV4Y2x1ZGVzKTsKK2ludCBpc19pbl9jbWRsaXN0KHN0cnVjdCBjbWRuYW1lcyAqYywgY29uc3QgY2hhciAqcyk7Cit2b2lkIGxpc3RfY29tbWFuZHMoY29uc3QgY2hhciAqdGl0bGUsIHN0cnVjdCBjbWRuYW1lcyAqbWFpbl9jbWRzLAorCQkgICBzdHJ1Y3QgY21kbmFtZXMgKm90aGVyX2NtZHMpOworCisjZW5kaWYgLyogSEVMUF9IICovCmRpZmYgLS1naXQgYS9odHRwLXB1c2guYyBiL2h0dHAtcHVzaC5jCmluZGV4IDY4MDUyODguLmNiNWJmOTUgMTAwNjQ0Ci0tLSBhL2h0dHAtcHVzaC5jCisrKyBiL2h0dHAtcHVzaC5jCkBAIC04Nyw2ICs4Nyw3IEBACiBzdHJ1Y3QgcmVwbwogewogCWNoYXIgKnVybDsKKwljaGFyICpwYXRoOwogCWludCBwYXRoX2xlbjsKIAlpbnQgaGFzX2luZm9fcmVmczsKIAlpbnQgY2FuX3VwZGF0ZV9pbmZvX3JlZnM7CkBAIC0xMjYsNyArMTI3LDcgQEAKIAljaGFyIGVycm9yc3RyW0NVUkxfRVJST1JfU0laRV07CiAJbG9uZyBodHRwX2NvZGU7CiAJdW5zaWduZWQgY2hhciByZWFsX3NoYTFbMjBdOwotCVNIQV9DVFggYzsKKwlnaXRfU0hBX0NUWCBjOwogCXpfc3RyZWFtIHN0cmVhbTsKIAlpbnQgenJldDsKIAlpbnQgcmVuYW1lOwpAQCAtMjA4LDggKzIwOSw4IEBACiAJZG8gewogCQlyZXF1ZXN0LT5zdHJlYW0ubmV4dF9vdXQgPSBleHBuOwogCQlyZXF1ZXN0LT5zdHJlYW0uYXZhaWxfb3V0ID0gc2l6ZW9mKGV4cG4pOwotCQlyZXF1ZXN0LT56cmV0ID0gaW5mbGF0ZSgmcmVxdWVzdC0+c3RyZWFtLCBaX1NZTkNfRkxVU0gpOwotCQlTSEExX1VwZGF0ZSgmcmVxdWVzdC0+YywgZXhwbiwKKwkJcmVxdWVzdC0+enJldCA9IGdpdF9pbmZsYXRlKCZyZXF1ZXN0LT5zdHJlYW0sIFpfU1lOQ19GTFVTSCk7CisJCWdpdF9TSEExX1VwZGF0ZSgmcmVxdWVzdC0+YywgZXhwbiwKIAkJCSAgICBzaXplb2YoZXhwbikgLSByZXF1ZXN0LT5zdHJlYW0uYXZhaWxfb3V0KTsKIAl9IHdoaWxlIChyZXF1ZXN0LT5zdHJlYW0uYXZhaWxfaW4gJiYgcmVxdWVzdC0+enJldCA9PSBaX09LKTsKIAlkYXRhX3JlY2VpdmVkKys7CkBAIC0yNjgsOSArMjY5LDkgQEAKIAogCW1lbXNldCgmcmVxdWVzdC0+c3RyZWFtLCAwLCBzaXplb2YocmVxdWVzdC0+c3RyZWFtKSk7CiAKLQlpbmZsYXRlSW5pdCgmcmVxdWVzdC0+c3RyZWFtKTsKKwlnaXRfaW5mbGF0ZV9pbml0KCZyZXF1ZXN0LT5zdHJlYW0pOwogCi0JU0hBMV9Jbml0KCZyZXF1ZXN0LT5jKTsKKwlnaXRfU0hBMV9Jbml0KCZyZXF1ZXN0LT5jKTsKIAogCXVybCA9IHhtYWxsb2Moc3RybGVuKHJlbW90ZS0+dXJsKSArIDUwKTsKIAlyZXF1ZXN0LT51cmwgPSB4bWFsbG9jKHN0cmxlbihyZW1vdGUtPnVybCkgKyA1MCk7CkBAIC0zMDksOCArMzEwLDggQEAKIAkgICBmaWxlOyBhbHNvIHJld2luZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb2NhbCBmaWxlLiAqLwogCWlmIChwcmV2X3JlYWQgPT0gLTEpIHsKIAkJbWVtc2V0KCZyZXF1ZXN0LT5zdHJlYW0sIDAsIHNpemVvZihyZXF1ZXN0LT5zdHJlYW0pKTsKLQkJaW5mbGF0ZUluaXQoJnJlcXVlc3QtPnN0cmVhbSk7Ci0JCVNIQTFfSW5pdCgmcmVxdWVzdC0+Yyk7CisJCWdpdF9pbmZsYXRlX2luaXQoJnJlcXVlc3QtPnN0cmVhbSk7CisJCWdpdF9TSEExX0luaXQoJnJlcXVlc3QtPmMpOwogCQlpZiAocHJldl9wb3NuPjApIHsKIAkJCXByZXZfcG9zbiA9IDA7CiAJCQlsc2VlayhyZXF1ZXN0LT5sb2NhbF9maWxlbm8sIDAsIFNFRUtfU0VUKTsKQEAgLTU5NSw3ICs1OTYsNyBAQAogCWxvY2stPnJlZnJlc2hpbmcgPSAxOwogCiAJaWZfaGVhZGVyID0geG1hbGxvYyhzdHJsZW4obG9jay0+dG9rZW4pICsgMjUpOwotCXNwcmludGYoaWZfaGVhZGVyLCAiSWY6ICg8b3BhcXVlbG9ja3Rva2VuOiVzPikiLCBsb2NrLT50b2tlbik7CisJc3ByaW50ZihpZl9oZWFkZXIsICJJZjogKDwlcz4pIiwgbG9jay0+dG9rZW4pOwogCXNwcmludGYodGltZW91dF9oZWFkZXIsICJUaW1lb3V0OiBTZWNvbmQtJWxkIiwgbG9jay0+dGltZW91dCk7CiAJZGF2X2hlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChkYXZfaGVhZGVycywgaWZfaGVhZGVyKTsKIAlkYXZfaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGRhdl9oZWFkZXJzLCB0aW1lb3V0X2hlYWRlcik7CkBAIC03NDEsOCArNzQyLDggQEAKIAkJCWlmIChyZXF1ZXN0LT5odHRwX2NvZGUgPT0gNDE2KQogCQkJCWZwcmludGYoc3RkZXJyLCAiV2FybmluZzogcmVxdWVzdGVkIHJhbmdlIGludmFsaWQ7IHdlIG1heSBhbHJlYWR5IGhhdmUgYWxsIHRoZSBkYXRhLlxuIik7CiAKLQkJCWluZmxhdGVFbmQoJnJlcXVlc3QtPnN0cmVhbSk7Ci0JCQlTSEExX0ZpbmFsKHJlcXVlc3QtPnJlYWxfc2hhMSwgJnJlcXVlc3QtPmMpOworCQkJZ2l0X2luZmxhdGVfZW5kKCZyZXF1ZXN0LT5zdHJlYW0pOworCQkJZ2l0X1NIQTFfRmluYWwocmVxdWVzdC0+cmVhbF9zaGExLCAmcmVxdWVzdC0+Yyk7CiAJCQlpZiAocmVxdWVzdC0+enJldCAhPSBaX1NUUkVBTV9FTkQpIHsKIAkJCQl1bmxpbmsocmVxdWVzdC0+dG1wZmlsZSk7CiAJCQl9IGVsc2UgaWYgKGhhc2hjbXAocmVxdWVzdC0+b2JqLT5zaGExLCByZXF1ZXN0LT5yZWFsX3NoYTEpKSB7CkBAIC0xMTIwLDEwICsxMTIxLDggQEAKIAkJCQlsb2NrLT50aW1lb3V0ID0KIAkJCQkJc3RydG9sKGN0eC0+Y2RhdGEgKyA3LCBOVUxMLCAxMCk7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcChjdHgtPm5hbWUsIERBVl9BQ1RJVkVMT0NLX1RPS0VOKSkgewotCQkJaWYgKCFwcmVmaXhjbXAoY3R4LT5jZGF0YSwgIm9wYXF1ZWxvY2t0b2tlbjoiKSkgewotCQkJCWxvY2stPnRva2VuID0geG1hbGxvYyhzdHJsZW4oY3R4LT5jZGF0YSkgLSAxNSk7Ci0JCQkJc3RyY3B5KGxvY2stPnRva2VuLCBjdHgtPmNkYXRhICsgMTYpOwotCQkJfQorCQkJbG9jay0+dG9rZW4gPSB4bWFsbG9jKHN0cmxlbihjdHgtPmNkYXRhKSArIDEpOworCQkJc3RyY3B5KGxvY2stPnRva2VuLCBjdHgtPmNkYXRhKTsKIAkJfQogCX0KIH0KQEAgLTEyMDIsNyArMTIwMSw4IEBACiAJLyogTWFrZSBzdXJlIGxlYWRpbmcgZGlyZWN0b3JpZXMgZXhpc3QgZm9yIHRoZSByZW1vdGUgcmVmICovCiAJZXAgPSBzdHJjaHIodXJsICsgc3RybGVuKHJlbW90ZS0+dXJsKSArIDEsICcvJyk7CiAJd2hpbGUgKGVwKSB7Ci0JCSplcCA9IDA7CisJCWNoYXIgc2F2ZWRfY2hhcmFjdGVyID0gZXBbMV07CisJCWVwWzFdID0gJ1wwJzsKIAkJc2xvdCA9IGdldF9hY3RpdmVfc2xvdCgpOwogCQlzbG90LT5yZXN1bHRzID0gJnJlc3VsdHM7CiAJCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9IVFRQR0VULCAxKTsKQEAgLTEyMjQsNyArMTIyNCw3IEBACiAJCQlmcmVlKHVybCk7CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQotCQkqZXAgPSAnLyc7CisJCWVwWzFdID0gc2F2ZWRfY2hhcmFjdGVyOwogCQllcCA9IHN0cmNocihlcCArIDEsICcvJyk7CiAJfQogCkBAIC0xMzA4LDcgKzEzMDgsNyBAQAogCWludCByYyA9IDA7CiAKIAlsb2NrX3Rva2VuX2hlYWRlciA9IHhtYWxsb2Moc3RybGVuKGxvY2stPnRva2VuKSArIDMxKTsKLQlzcHJpbnRmKGxvY2tfdG9rZW5faGVhZGVyLCAiTG9jay1Ub2tlbjogPG9wYXF1ZWxvY2t0b2tlbjolcz4iLAorCXNwcmludGYobG9ja190b2tlbl9oZWFkZXIsICJMb2NrLVRva2VuOiA8JXM+IiwKIAkJbG9jay0+dG9rZW4pOwogCWRhdl9oZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoZGF2X2hlYWRlcnMsIGxvY2tfdG9rZW5faGVhZGVyKTsKIApAQCAtMTQyNiw5ICsxNDI2LDE3IEBACiAJCQkJbHMtPnVzZXJGdW5jKGxzKTsKIAkJCX0KIAkJfSBlbHNlIGlmICghc3RyY21wKGN0eC0+bmFtZSwgREFWX1BST1BGSU5EX05BTUUpICYmIGN0eC0+Y2RhdGEpIHsKLQkJCWxzLT5kZW50cnlfbmFtZSA9IHhtYWxsb2Moc3RybGVuKGN0eC0+Y2RhdGEpIC0KLQkJCQkJCSAgcmVtb3RlLT5wYXRoX2xlbiArIDEpOwotCQkJc3RyY3B5KGxzLT5kZW50cnlfbmFtZSwgY3R4LT5jZGF0YSArIHJlbW90ZS0+cGF0aF9sZW4pOworCQkJY2hhciAqcGF0aCA9IGN0eC0+Y2RhdGE7CisJCQlpZiAoKmN0eC0+Y2RhdGEgPT0gJ2gnKSB7CisJCQkJcGF0aCA9IHN0cnN0cihwYXRoLCAiLy8iKTsKKwkJCQlpZiAocGF0aCkgeworCQkJCQlwYXRoID0gc3RyY2hyKHBhdGgrMiwgJy8nKTsKKwkJCQl9CisJCQl9CisJCQlpZiAocGF0aCkgeworCQkJCXBhdGggKz0gcmVtb3RlLT5wYXRoX2xlbjsKKwkJCQlscy0+ZGVudHJ5X25hbWUgPSB4c3RyZHVwKHBhdGgpOworCQkJfQogCQl9IGVsc2UgaWYgKCFzdHJjbXAoY3R4LT5uYW1lLCBEQVZfUFJPUEZJTkRfQ09MTEVDVElPTikpIHsKIAkJCWxzLT5kZW50cnlfZmxhZ3MgfD0gSVNfRElSOwogCQl9CkBAIC0xNDM5LDYgKzE0NDcsMTIgQEAKIAl9CiB9CiAKKy8qCisgKiBORUVEU1dPUks6IHJlbW90ZV9scygpIGlnbm9yZXMgaW5mby9yZWZzIG9uIHRoZSByZW1vdGUgc2lkZS4gIEJ1dCBpdAorICogc2hvdWxkIF9vbmx5XyBoZWVkIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoYXQgZmlsZSwgaW5zdGVhZCBvZiB0cnlpbmcgdG8KKyAqIGRldGVybWluZSB0aGUgcmVmcyBmcm9tIHRoZSByZW1vdGUgZmlsZSBzeXN0ZW0gKGJhZGx5OiBpdCBkb2VzIG5vdCBldmVuCisgKiBrbm93IGFib3V0IHBhY2tlZC1yZWZzKS4KKyAqLwogc3RhdGljIHZvaWQgcmVtb3RlX2xzKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywKIAkJICAgICAgdm9pZCAoKnVzZXJGdW5jKShzdHJ1Y3QgcmVtb3RlX2xzX2N0eCAqbHMpLAogCQkgICAgICB2b2lkICp1c2VyRGF0YSkKQEAgLTE3MjIsNyArMTczNiw3IEBACiAJc3RydWN0IGN1cmxfc2xpc3QgKmRhdl9oZWFkZXJzID0gTlVMTDsKIAogCWlmX2hlYWRlciA9IHhtYWxsb2Moc3RybGVuKGxvY2stPnRva2VuKSArIDI1KTsKLQlzcHJpbnRmKGlmX2hlYWRlciwgIklmOiAoPG9wYXF1ZWxvY2t0b2tlbjolcz4pIiwgbG9jay0+dG9rZW4pOworCXNwcmludGYoaWZfaGVhZGVyLCAiSWY6ICg8JXM+KSIsIGxvY2stPnRva2VuKTsKIAlkYXZfaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGRhdl9oZWFkZXJzLCBpZl9oZWFkZXIpOwogCiAJc3RyYnVmX2FkZGYoJm91dF9idWZmZXIuYnVmLCAiJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKQEAgLTE3ODAsNyArMTc5NCw3IEBACiAJc3RydWN0IHJlZiAqcmVmOwogCXN0cnVjdCBvYmplY3QgKm9iajsKIAotCXJlZiA9IGFsbG9jX3JlZl9mcm9tX3N0cihyZWZuYW1lKTsKKwlyZWYgPSBhbGxvY19yZWYocmVmbmFtZSk7CiAKIAlpZiAoaHR0cF9mZXRjaF9yZWYocmVtb3RlLT51cmwsIHJlZikgIT0gMCkgewogCQlmcHJpbnRmKHN0ZGVyciwKQEAgLTE4ODcsNyArMTkwMSw3IEBACiAJY2hhciAqcmVmX2luZm87CiAJc3RydWN0IHJlZiAqcmVmOwogCi0JcmVmID0gYWxsb2NfcmVmX2Zyb21fc3RyKGxzLT5kZW50cnlfbmFtZSk7CisJcmVmID0gYWxsb2NfcmVmKGxzLT5kZW50cnlfbmFtZSk7CiAKIAlpZiAoaHR0cF9mZXRjaF9yZWYocmVtb3RlLT51cmwsIHJlZikgIT0gMCkgewogCQlmcHJpbnRmKHN0ZGVyciwKQEAgLTE5NDEsNyArMTk1NSw3IEBACiAJCSAgYWRkX3JlbW90ZV9pbmZvX3JlZiwgJmJ1ZmZlci5idWYpOwogCWlmICghYWJvcnRlZCkgewogCQlpZl9oZWFkZXIgPSB4bWFsbG9jKHN0cmxlbihsb2NrLT50b2tlbikgKyAyNSk7Ci0JCXNwcmludGYoaWZfaGVhZGVyLCAiSWY6ICg8b3BhcXVlbG9ja3Rva2VuOiVzPikiLCBsb2NrLT50b2tlbik7CisJCXNwcmludGYoaWZfaGVhZGVyLCAiSWY6ICg8JXM+KSIsIGxvY2stPnRva2VuKTsKIAkJZGF2X2hlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChkYXZfaGVhZGVycywgaWZfaGVhZGVyKTsKIAogCQlzbG90ID0gZ2V0X2FjdGl2ZV9zbG90KCk7CkBAIC0yMjA4LDEwICsyMjIyLDExIEBACiAJCWlmICghcmVtb3RlLT51cmwpIHsKIAkJCWNoYXIgKnBhdGggPSBzdHJzdHIoYXJnLCAiLy8iKTsKIAkJCXJlbW90ZS0+dXJsID0gYXJnOworCQkJcmVtb3RlLT5wYXRoX2xlbiA9IHN0cmxlbihhcmcpOwogCQkJaWYgKHBhdGgpIHsKLQkJCQlwYXRoID0gc3RyY2hyKHBhdGgrMiwgJy8nKTsKLQkJCQlpZiAocGF0aCkKLQkJCQkJcmVtb3RlLT5wYXRoX2xlbiA9IHN0cmxlbihwYXRoKTsKKwkJCQlyZW1vdGUtPnBhdGggPSBzdHJjaHIocGF0aCsyLCAnLycpOworCQkJCWlmIChyZW1vdGUtPnBhdGgpCisJCQkJCXJlbW90ZS0+cGF0aF9sZW4gPSBzdHJsZW4ocmVtb3RlLT5wYXRoKTsKIAkJCX0KIAkJCWNvbnRpbnVlOwogCQl9CkBAIC0yMjM3LDExICsyMjUyLDEyIEBACiAJbm9fcHJhZ21hX2hlYWRlciA9IGN1cmxfc2xpc3RfYXBwZW5kKG5vX3ByYWdtYV9oZWFkZXIsICJQcmFnbWE6Iik7CiAKIAlpZiAocmVtb3RlLT51cmwgJiYgcmVtb3RlLT51cmxbc3RybGVuKHJlbW90ZS0+dXJsKS0xXSAhPSAnLycpIHsKLQkJcmV3cml0dGVuX3VybCA9IG1hbGxvYyhzdHJsZW4ocmVtb3RlLT51cmwpKzIpOworCQlyZXdyaXR0ZW5fdXJsID0geG1hbGxvYyhzdHJsZW4ocmVtb3RlLT51cmwpKzIpOwogCQlzdHJjcHkocmV3cml0dGVuX3VybCwgcmVtb3RlLT51cmwpOwogCQlzdHJjYXQocmV3cml0dGVuX3VybCwgIi8iKTsKKwkJcmVtb3RlLT5wYXRoID0gcmV3cml0dGVuX3VybCArIChyZW1vdGUtPnBhdGggLSByZW1vdGUtPnVybCk7CisJCXJlbW90ZS0+cGF0aF9sZW4rKzsKIAkJcmVtb3RlLT51cmwgPSByZXdyaXR0ZW5fdXJsOwotCQkrK3JlbW90ZS0+cGF0aF9sZW47CiAJfQogCiAJLyogVmVyaWZ5IERBViBjb21wbGlhbmNlL2xvY2sgc3VwcG9ydCAqLwpkaWZmIC0tZ2l0IGEvaHR0cC13YWxrZXIuYyBiL2h0dHAtd2Fsa2VyLmMKaW5kZXggOWRjNmIyNy4uMGRiYWQzYyAxMDA2NDQKLS0tIGEvaHR0cC13YWxrZXIuYworKysgYi9odHRwLXdhbGtlci5jCkBAIC0zNiw3ICszNiw3IEBACiAJY2hhciBlcnJvcnN0cltDVVJMX0VSUk9SX1NJWkVdOwogCWxvbmcgaHR0cF9jb2RlOwogCXVuc2lnbmVkIGNoYXIgcmVhbF9zaGExWzIwXTsKLQlTSEFfQ1RYIGM7CisJZ2l0X1NIQV9DVFggYzsKIAl6X3N0cmVhbSBzdHJlYW07CiAJaW50IHpyZXQ7CiAJaW50IHJlbmFtZTsKQEAgLTgyLDggKzgyLDggQEAKIAlkbyB7CiAJCW9ial9yZXEtPnN0cmVhbS5uZXh0X291dCA9IGV4cG47CiAJCW9ial9yZXEtPnN0cmVhbS5hdmFpbF9vdXQgPSBzaXplb2YoZXhwbik7Ci0JCW9ial9yZXEtPnpyZXQgPSBpbmZsYXRlKCZvYmpfcmVxLT5zdHJlYW0sIFpfU1lOQ19GTFVTSCk7Ci0JCVNIQTFfVXBkYXRlKCZvYmpfcmVxLT5jLCBleHBuLAorCQlvYmpfcmVxLT56cmV0ID0gZ2l0X2luZmxhdGUoJm9ial9yZXEtPnN0cmVhbSwgWl9TWU5DX0ZMVVNIKTsKKwkJZ2l0X1NIQTFfVXBkYXRlKCZvYmpfcmVxLT5jLCBleHBuLAogCQkJICAgIHNpemVvZihleHBuKSAtIG9ial9yZXEtPnN0cmVhbS5hdmFpbF9vdXQpOwogCX0gd2hpbGUgKG9ial9yZXEtPnN0cmVhbS5hdmFpbF9pbiAmJiBvYmpfcmVxLT56cmV0ID09IFpfT0spOwogCWRhdGFfcmVjZWl2ZWQrKzsKQEAgLTE0Miw5ICsxNDIsOSBAQAogCiAJbWVtc2V0KCZvYmpfcmVxLT5zdHJlYW0sIDAsIHNpemVvZihvYmpfcmVxLT5zdHJlYW0pKTsKIAotCWluZmxhdGVJbml0KCZvYmpfcmVxLT5zdHJlYW0pOworCWdpdF9pbmZsYXRlX2luaXQoJm9ial9yZXEtPnN0cmVhbSk7CiAKLQlTSEExX0luaXQoJm9ial9yZXEtPmMpOworCWdpdF9TSEExX0luaXQoJm9ial9yZXEtPmMpOwogCiAJdXJsID0geG1hbGxvYyhzdHJsZW4ob2JqX3JlcS0+cmVwby0+YmFzZSkgKyA1MSk7CiAJb2JqX3JlcS0+dXJsID0geG1hbGxvYyhzdHJsZW4ob2JqX3JlcS0+cmVwby0+YmFzZSkgKyA1MSk7CkBAIC0xODMsOCArMTgzLDggQEAKIAkgICBmaWxlOyBhbHNvIHJld2luZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb2NhbCBmaWxlLiAqLwogCWlmIChwcmV2X3JlYWQgPT0gLTEpIHsKIAkJbWVtc2V0KCZvYmpfcmVxLT5zdHJlYW0sIDAsIHNpemVvZihvYmpfcmVxLT5zdHJlYW0pKTsKLQkJaW5mbGF0ZUluaXQoJm9ial9yZXEtPnN0cmVhbSk7Ci0JCVNIQTFfSW5pdCgmb2JqX3JlcS0+Yyk7CisJCWdpdF9pbmZsYXRlX2luaXQoJm9ial9yZXEtPnN0cmVhbSk7CisJCWdpdF9TSEExX0luaXQoJm9ial9yZXEtPmMpOwogCQlpZiAocHJldl9wb3NuPjApIHsKIAkJCXByZXZfcG9zbiA9IDA7CiAJCQlsc2VlayhvYmpfcmVxLT5sb2NhbCwgMCwgU0VFS19TRVQpOwpAQCAtMjQzLDggKzI0Myw4IEBACiAJCXJldHVybjsKIAl9CiAKLQlpbmZsYXRlRW5kKCZvYmpfcmVxLT5zdHJlYW0pOwotCVNIQTFfRmluYWwob2JqX3JlcS0+cmVhbF9zaGExLCAmb2JqX3JlcS0+Yyk7CisJZ2l0X2luZmxhdGVfZW5kKCZvYmpfcmVxLT5zdHJlYW0pOworCWdpdF9TSEExX0ZpbmFsKG9ial9yZXEtPnJlYWxfc2hhMSwgJm9ial9yZXEtPmMpOwogCWlmIChvYmpfcmVxLT56cmV0ICE9IFpfU1RSRUFNX0VORCkgewogCQl1bmxpbmsob2JqX3JlcS0+dG1wZmlsZSk7CiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2h0dHAuYyBiL2h0dHAuYwppbmRleCBjMThlMzBhLi5lZTU4Nzk5IDEwMDY0NAotLS0gYS9odHRwLmMKKysrIGIvaHR0cC5jCkBAIC00MDgsNyArNDA4LDcgQEAKIAogdm9pZCBhZGRfZmlsbF9mdW5jdGlvbih2b2lkICpkYXRhLCBpbnQgKCpmaWxsKSh2b2lkICopKQogewotCXN0cnVjdCBmaWxsX2NoYWluICpuZXcgPSBtYWxsb2Moc2l6ZW9mKCpuZXcpKTsKKwlzdHJ1Y3QgZmlsbF9jaGFpbiAqbmV3ID0geG1hbGxvYyhzaXplb2YoKm5ldykpOwogCXN0cnVjdCBmaWxsX2NoYWluICoqbGlua3AgPSAmZmlsbF9jZmc7CiAJbmV3LT5kYXRhID0gZGF0YTsKIAluZXctPmZpbGwgPSBmaWxsOwpkaWZmIC0tZ2l0IGEvaWRlbnQuYyBiL2lkZW50LmMKaW5kZXggMDljZjBjOS4uOTlmMWM4NSAxMDA2NDQKLS0tIGEvaWRlbnQuYworKysgYi9pZGVudC5jCkBAIC0xMjEsNiArMTIxLDcgQEAKIAkJYyA9PSAnPCcgfHwKIAkJYyA9PSAnPicgfHwKIAkJYyA9PSAnIicgfHwKKwkJYyA9PSAnXFwnIHx8CiAJCWMgPT0gJ1wnJzsKIH0KIApkaWZmIC0tZ2l0IGEvaW1hcC1zZW5kLmMgYi9pbWFwLXNlbmQuYwppbmRleCAxZWMxMzEwLi4zNzAzZGJkIDEwMDY0NAotLS0gYS9pbWFwLXNlbmQuYworKysgYi9pbWFwLXNlbmQuYwpAQCAtMjMsNzEgKzIzLDc0IEBACiAgKi8KIAogI2luY2x1ZGUgImNhY2hlLmgiCisjaWZkZWYgTk9fT1BFTlNTTAordHlwZWRlZiB2b2lkICpTU0w7CisjZW5kaWYKIAotdHlwZWRlZiBzdHJ1Y3Qgc3RvcmVfY29uZiB7CitzdHJ1Y3Qgc3RvcmVfY29uZiB7CiAJY2hhciAqbmFtZTsKIAljb25zdCBjaGFyICpwYXRoOyAvKiBzaG91bGQgdGhpcyBiZSBoZXJlPyBpdHMgaW50ZXJwcmV0YXRpb24gaXMgZHJpdmVyLXNwZWNpZmljICovCiAJY2hhciAqbWFwX2luYm94OwogCWNoYXIgKnRyYXNoOwogCXVuc2lnbmVkIG1heF9zaXplOyAvKiBvZmZfdCBpcyBvdmVya2lsbCAqLwogCXVuc2lnbmVkIHRyYXNoX3JlbW90ZV9uZXc6MSwgdHJhc2hfb25seV9uZXc6MTsKLX0gc3RvcmVfY29uZl90OworfTsKIAotdHlwZWRlZiBzdHJ1Y3Qgc3RyaW5nX2xpc3Qgeworc3RydWN0IHN0cmluZ19saXN0IHsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm5leHQ7CiAJY2hhciBzdHJpbmdbMV07Ci19IHN0cmluZ19saXN0X3Q7Cit9OwogCi10eXBlZGVmIHN0cnVjdCBjaGFubmVsX2NvbmYgeworc3RydWN0IGNoYW5uZWxfY29uZiB7CiAJc3RydWN0IGNoYW5uZWxfY29uZiAqbmV4dDsKIAljaGFyICpuYW1lOwotCXN0b3JlX2NvbmZfdCAqbWFzdGVyLCAqc2xhdmU7CisJc3RydWN0IHN0b3JlX2NvbmYgKm1hc3RlciwgKnNsYXZlOwogCWNoYXIgKm1hc3Rlcl9uYW1lLCAqc2xhdmVfbmFtZTsKIAljaGFyICpzeW5jX3N0YXRlOwotCXN0cmluZ19saXN0X3QgKnBhdHRlcm5zOworCXN0cnVjdCBzdHJpbmdfbGlzdCAqcGF0dGVybnM7CiAJaW50IG1vcHMsIHNvcHM7CiAJdW5zaWduZWQgbWF4X21lc3NhZ2VzOyAvKiBmb3Igc2xhdmUgb25seSAqLwotfSBjaGFubmVsX2NvbmZfdDsKK307CiAKLXR5cGVkZWYgc3RydWN0IGdyb3VwX2NvbmYgeworc3RydWN0IGdyb3VwX2NvbmYgewogCXN0cnVjdCBncm91cF9jb25mICpuZXh0OwogCWNoYXIgKm5hbWU7Ci0Jc3RyaW5nX2xpc3RfdCAqY2hhbm5lbHM7Ci19IGdyb3VwX2NvbmZfdDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmNoYW5uZWxzOworfTsKIAogLyogRm9yIG1lc3NhZ2UtPnN0YXR1cyAqLwogI2RlZmluZSBNX1JFQ0VOVCAgICAgICAoMTw8MCkgLyogdW5zeW5jYWJsZSBmbGFnOyBtYWlsZGlyXyogZGVwZW5kIG9uIHRoaXMgYmVpbmcgMTw8MCAqLwogI2RlZmluZSBNX0RFQUQgICAgICAgICAoMTw8MSkgLyogZXhwdW5nZWQgKi8KICNkZWZpbmUgTV9GTEFHUyAgICAgICAgKDE8PDIpIC8qIGZsYWdzIGZldGNoZWQgKi8KIAotdHlwZWRlZiBzdHJ1Y3QgbWVzc2FnZSB7CitzdHJ1Y3QgbWVzc2FnZSB7CiAJc3RydWN0IG1lc3NhZ2UgKm5leHQ7Ci0JLyogc3RyaW5nX2xpc3RfdCAqa2V5d29yZHM7ICovCisJLyogc3RydWN0IHN0cmluZ19saXN0ICprZXl3b3JkczsgKi8KIAlzaXplX3Qgc2l6ZTsgLyogemVybyBpbXBsaWVzICJub3QgZmV0Y2hlZCIgKi8KIAlpbnQgdWlkOwogCXVuc2lnbmVkIGNoYXIgZmxhZ3MsIHN0YXR1czsKLX0gbWVzc2FnZV90OworfTsKIAotdHlwZWRlZiBzdHJ1Y3Qgc3RvcmUgewotCXN0b3JlX2NvbmZfdCAqY29uZjsgLyogZm9yZWlnbiAqLworc3RydWN0IHN0b3JlIHsKKwlzdHJ1Y3Qgc3RvcmVfY29uZiAqY29uZjsgLyogZm9yZWlnbiAqLwogCiAJLyogY3VycmVudGx5IG9wZW4gbWFpbGJveCAqLwogCWNvbnN0IGNoYXIgKm5hbWU7IC8qIGZvcmVpZ24hIG1heWJlIHByZXNldD8gKi8KIAljaGFyICpwYXRoOyAvKiBvd24gKi8KLQltZXNzYWdlX3QgKm1zZ3M7IC8qIG93biAqLworCXN0cnVjdCBtZXNzYWdlICptc2dzOyAvKiBvd24gKi8KIAlpbnQgdWlkdmFsaWRpdHk7CiAJdW5zaWduZWQgY2hhciBvcHRzOyAvKiBtYXliZSBwcmVzZXQ/ICovCiAJLyogbm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgZG8gX25vdF8gcmVmbGVjdCBzdGF0cyBmcm9tIG1zZ3MsIGJ1dCBtYWlsYm94IHRvdGFscyAqLwogCWludCBjb3VudDsgLyogIyBvZiBtZXNzYWdlcyAqLwogCWludCByZWNlbnQ7IC8qICMgb2YgcmVjZW50IG1lc3NhZ2VzIC0gZG9uJ3QgdHJ1c3QgdGhpcyBiZXlvbmQgdGhlIGluaXRpYWwgcmVhZCAqLwotfSBzdG9yZV90OworfTsKIAotdHlwZWRlZiBzdHJ1Y3Qgeworc3RydWN0IG1zZ19kYXRhIHsKIAljaGFyICpkYXRhOwogCWludCBsZW47CiAJdW5zaWduZWQgY2hhciBmbGFnczsKIAl1bnNpZ25lZCBpbnQgY3JsZjoxOwotfSBtc2dfZGF0YV90OworfTsKIAogI2RlZmluZSBEUlZfT0sgICAgICAgICAgMAogI2RlZmluZSBEUlZfTVNHX0JBRCAgICAgLTEKQEAgLTk2LDE0ICs5OSwxNCBAQAogCiBzdGF0aWMgaW50IFZlcmJvc2UsIFF1aWV0OwogCi1zdGF0aWMgdm9pZCBpbWFwX2luZm8oIGNvbnN0IGNoYXIgKiwgLi4uICk7Ci1zdGF0aWMgdm9pZCBpbWFwX3dhcm4oIGNvbnN0IGNoYXIgKiwgLi4uICk7CitzdGF0aWMgdm9pZCBpbWFwX2luZm8oY29uc3QgY2hhciAqLCAuLi4pOworc3RhdGljIHZvaWQgaW1hcF93YXJuKGNvbnN0IGNoYXIgKiwgLi4uKTsKIAotc3RhdGljIGNoYXIgKm5leHRfYXJnKCBjaGFyICoqICk7CitzdGF0aWMgY2hhciAqbmV4dF9hcmcoY2hhciAqKik7CiAKLXN0YXRpYyB2b2lkIGZyZWVfZ2VuZXJpY19tZXNzYWdlcyggbWVzc2FnZV90ICogKTsKK3N0YXRpYyB2b2lkIGZyZWVfZ2VuZXJpY19tZXNzYWdlcyhzdHJ1Y3QgbWVzc2FnZSAqKTsKIAotc3RhdGljIGludCBuZnNucHJpbnRmKCBjaGFyICpidWYsIGludCBibGVuLCBjb25zdCBjaGFyICpmbXQsIC4uLiApOworc3RhdGljIGludCBuZnNucHJpbnRmKGNoYXIgKmJ1ZiwgaW50IGJsZW4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIAogc3RhdGljIGludCBuZnZhc3ByaW50ZihjaGFyICoqc3RycCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKQogewpAQCAtMTE5LDY3ICsxMjIsNzAgQEAKIAlyZXR1cm4gbGVuOwogfQogCi1zdGF0aWMgdm9pZCBhcmM0X2luaXQoIHZvaWQgKTsKLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGFyYzRfZ2V0Ynl0ZSggdm9pZCApOworc3RhdGljIHZvaWQgYXJjNF9pbml0KHZvaWQpOworc3RhdGljIHVuc2lnbmVkIGNoYXIgYXJjNF9nZXRieXRlKHZvaWQpOwogCi10eXBlZGVmIHN0cnVjdCBpbWFwX3NlcnZlcl9jb25mIHsKK3N0cnVjdCBpbWFwX3NlcnZlcl9jb25mIHsKIAljaGFyICpuYW1lOwogCWNoYXIgKnR1bm5lbDsKIAljaGFyICpob3N0OwogCWludCBwb3J0OwogCWNoYXIgKnVzZXI7CiAJY2hhciAqcGFzczsKLX0gaW1hcF9zZXJ2ZXJfY29uZl90OworCWludCB1c2Vfc3NsOworCWludCBzc2xfdmVyaWZ5OworfTsKIAotdHlwZWRlZiBzdHJ1Y3QgaW1hcF9zdG9yZV9jb25mIHsKLQlzdG9yZV9jb25mX3QgZ2VuOwotCWltYXBfc2VydmVyX2NvbmZfdCAqc2VydmVyOworc3RydWN0IGltYXBfc3RvcmVfY29uZiB7CisJc3RydWN0IHN0b3JlX2NvbmYgZ2VuOworCXN0cnVjdCBpbWFwX3NlcnZlcl9jb25mICpzZXJ2ZXI7CiAJdW5zaWduZWQgdXNlX25hbWVzcGFjZToxOwotfSBpbWFwX3N0b3JlX2NvbmZfdDsKK307CiAKLSNkZWZpbmUgTklMCSh2b2lkKikweDEKLSNkZWZpbmUgTElTVAkodm9pZCopMHgyCisjZGVmaW5lIE5JTAkodm9pZCAqKTB4MQorI2RlZmluZSBMSVNUCSh2b2lkICopMHgyCiAKLXR5cGVkZWYgc3RydWN0IF9saXN0IHsKLQlzdHJ1Y3QgX2xpc3QgKm5leHQsICpjaGlsZDsKK3N0cnVjdCBpbWFwX2xpc3QgeworCXN0cnVjdCBpbWFwX2xpc3QgKm5leHQsICpjaGlsZDsKIAljaGFyICp2YWw7CiAJaW50IGxlbjsKLX0gbGlzdF90OworfTsKIAotdHlwZWRlZiBzdHJ1Y3Qgeworc3RydWN0IGltYXBfc29ja2V0IHsKIAlpbnQgZmQ7Ci19IFNvY2tldF90OworCVNTTCAqc3NsOworfTsKIAotdHlwZWRlZiBzdHJ1Y3QgewotCVNvY2tldF90IHNvY2s7CitzdHJ1Y3QgaW1hcF9idWZmZXIgeworCXN0cnVjdCBpbWFwX3NvY2tldCBzb2NrOwogCWludCBieXRlczsKIAlpbnQgb2Zmc2V0OwogCWNoYXIgYnVmWzEwMjRdOwotfSBidWZmZXJfdDsKK307CiAKIHN0cnVjdCBpbWFwX2NtZDsKIAotdHlwZWRlZiBzdHJ1Y3QgaW1hcCB7CitzdHJ1Y3QgaW1hcCB7CiAJaW50IHVpZG5leHQ7IC8qIGZyb20gU0VMRUNUIHJlc3BvbnNlcyAqLwotCWxpc3RfdCAqbnNfcGVyc29uYWwsICpuc19vdGhlciwgKm5zX3NoYXJlZDsgLyogTkFNRVNQQUNFIGluZm8gKi8KKwlzdHJ1Y3QgaW1hcF9saXN0ICpuc19wZXJzb25hbCwgKm5zX290aGVyLCAqbnNfc2hhcmVkOyAvKiBOQU1FU1BBQ0UgaW5mbyAqLwogCXVuc2lnbmVkIGNhcHMsIHJjYXBzOyAvKiBDQVBBQklMSVRZIHJlc3VsdHMgKi8KIAkvKiBjb21tYW5kIHF1ZXVlICovCiAJaW50IG5leHR0YWcsIG51bV9pbl9wcm9ncmVzcywgbGl0ZXJhbF9wZW5kaW5nOwogCXN0cnVjdCBpbWFwX2NtZCAqaW5fcHJvZ3Jlc3MsICoqaW5fcHJvZ3Jlc3NfYXBwZW5kOwotCWJ1ZmZlcl90IGJ1ZjsgLyogdGhpcyBpcyBCSUcsIHNvIHB1dCBpdCBsYXN0ICovCi19IGltYXBfdDsKKwlzdHJ1Y3QgaW1hcF9idWZmZXIgYnVmOyAvKiB0aGlzIGlzIEJJRywgc28gcHV0IGl0IGxhc3QgKi8KK307CiAKLXR5cGVkZWYgc3RydWN0IGltYXBfc3RvcmUgewotCXN0b3JlX3QgZ2VuOworc3RydWN0IGltYXBfc3RvcmUgeworCXN0cnVjdCBzdG9yZSBnZW47CiAJaW50IHVpZHZhbGlkaXR5OwotCWltYXBfdCAqaW1hcDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcDsKIAljb25zdCBjaGFyICpwcmVmaXg7CiAJdW5zaWduZWQgLypjdXJyZW50bmM6MSwqLyB0cmFzaG5jOjE7Ci19IGltYXBfc3RvcmVfdDsKK307CiAKIHN0cnVjdCBpbWFwX2NtZF9jYiB7Ci0JaW50ICgqY29udCkoIGltYXBfc3RvcmVfdCAqY3R4LCBzdHJ1Y3QgaW1hcF9jbWQgKmNtZCwgY29uc3QgY2hhciAqcHJvbXB0ICk7Ci0Jdm9pZCAoKmRvbmUpKCBpbWFwX3N0b3JlX3QgKmN0eCwgc3RydWN0IGltYXBfY21kICpjbWQsIGludCByZXNwb25zZSk7CisJaW50ICgqY29udCkoc3RydWN0IGltYXBfc3RvcmUgKmN0eCwgc3RydWN0IGltYXBfY21kICpjbWQsIGNvbnN0IGNoYXIgKnByb21wdCk7CisJdm9pZCAoKmRvbmUpKHN0cnVjdCBpbWFwX3N0b3JlICpjdHgsIHN0cnVjdCBpbWFwX2NtZCAqY21kLCBpbnQgcmVzcG9uc2UpOwogCXZvaWQgKmN0eDsKIAljaGFyICpkYXRhOwogCWludCBkbGVuOwpAQCAtMjAxLDYgKzIwNyw3IEBACiAJVUlEUExVUywKIAlMSVRFUkFMUExVUywKIAlOQU1FU1BBQ0UsCisJU1RBUlRUTFMsCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciAqY2FwX2xpc3RbXSA9IHsKQEAgLTIwOCwxMyArMjE1LDE0IEBACiAJIlVJRFBMVVMiLAogCSJMSVRFUkFMKyIsCiAJIk5BTUVTUEFDRSIsCisJIlNUQVJUVExTIiwKIH07CiAKICNkZWZpbmUgUkVTUF9PSyAgICAwCiAjZGVmaW5lIFJFU1BfTk8gICAgMQogI2RlZmluZSBSRVNQX0JBRCAgIDIKIAotc3RhdGljIGludCBnZXRfY21kX3Jlc3VsdCggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZCAqdGNtZCApOworc3RhdGljIGludCBnZXRfY21kX3Jlc3VsdChzdHJ1Y3QgaW1hcF9zdG9yZSAqY3R4LCBzdHJ1Y3QgaW1hcF9jbWQgKnRjbWQpOwogCiAKIHN0YXRpYyBjb25zdCBjaGFyICpGbGFnc1tdID0gewpAQCAtMjI1LDQyICsyMzMsMTM3IEBACiAJIkRlbGV0ZWQiLAogfTsKIAotc3RhdGljIHZvaWQKLXNvY2tldF9wZXJyb3IoIGNvbnN0IGNoYXIgKmZ1bmMsIFNvY2tldF90ICpzb2NrLCBpbnQgcmV0ICkKKyNpZm5kZWYgTk9fT1BFTlNTTAorc3RhdGljIHZvaWQgc3NsX3NvY2tldF9wZXJyb3IoY29uc3QgY2hhciAqZnVuYykKIHsKLQlpZiAocmV0IDwgMCkKLQkJcGVycm9yKCBmdW5jICk7CisJZnByaW50ZihzdGRlcnIsICIlczogJXNcbiIsIGZ1bmMsIEVSUl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpLCAwKSk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc29ja2V0X3BlcnJvcihjb25zdCBjaGFyICpmdW5jLCBzdHJ1Y3QgaW1hcF9zb2NrZXQgKnNvY2ssIGludCByZXQpCit7CisjaWZuZGVmIE5PX09QRU5TU0wKKwlpZiAoc29jay0+c3NsKSB7CisJCWludCBzc2xlcnIgPSBTU0xfZ2V0X2Vycm9yKHNvY2stPnNzbCwgcmV0KTsKKwkJc3dpdGNoIChzc2xlcnIpIHsKKwkJY2FzZSBTU0xfRVJST1JfTk9ORToKKwkJCWJyZWFrOworCQljYXNlIFNTTF9FUlJPUl9TWVNDQUxMOgorCQkJcGVycm9yKCJTU0xfY29ubmVjdCIpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlzc2xfc29ja2V0X3BlcnJvcigiU1NMX2Nvbm5lY3QiKTsKKwkJCWJyZWFrOworCQl9CisJfSBlbHNlCisjZW5kaWYKKwl7CisJCWlmIChyZXQgPCAwKQorCQkJcGVycm9yKGZ1bmMpOworCQllbHNlCisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmV4cGVjdGVkIEVPRlxuIiwgZnVuYyk7CisJfQorfQorCitzdGF0aWMgaW50IHNzbF9zb2NrZXRfY29ubmVjdChzdHJ1Y3QgaW1hcF9zb2NrZXQgKnNvY2ssIGludCB1c2VfdGxzX29ubHksIGludCB2ZXJpZnkpCit7CisjaWZkZWYgTk9fT1BFTlNTTAorCWZwcmludGYoc3RkZXJyLCAiU1NMIHJlcXVlc3RlZCBidXQgU1NMIHN1cHBvcnQgbm90IGNvbXBpbGVkIGluXG4iKTsKKwlyZXR1cm4gLTE7CisjZWxzZQorCVNTTF9NRVRIT0QgKm1ldGg7CisJU1NMX0NUWCAqY3R4OworCWludCByZXQ7CisKKwlTU0xfbGlicmFyeV9pbml0KCk7CisJU1NMX2xvYWRfZXJyb3Jfc3RyaW5ncygpOworCisJaWYgKHVzZV90bHNfb25seSkKKwkJbWV0aCA9IFRMU3YxX21ldGhvZCgpOwogCWVsc2UKLQkJZnByaW50Ziggc3RkZXJyLCAiJXM6IHVuZXhwZWN0ZWQgRU9GXG4iLCBmdW5jICk7CisJCW1ldGggPSBTU0x2MjNfbWV0aG9kKCk7CisKKwlpZiAoIW1ldGgpIHsKKwkJc3NsX3NvY2tldF9wZXJyb3IoIlNTTHYyM19tZXRob2QiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWN0eCA9IFNTTF9DVFhfbmV3KG1ldGgpOworCisJaWYgKHZlcmlmeSkKKwkJU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgU1NMX1ZFUklGWV9QRUVSLCBOVUxMKTsKKworCWlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY3R4KSkgeworCQlzc2xfc29ja2V0X3BlcnJvcigiU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMiKTsKKwkJcmV0dXJuIC0xOworCX0KKwlzb2NrLT5zc2wgPSBTU0xfbmV3KGN0eCk7CisJaWYgKCFzb2NrLT5zc2wpIHsKKwkJc3NsX3NvY2tldF9wZXJyb3IoIlNTTF9uZXciKTsKKwkJcmV0dXJuIC0xOworCX0KKwlpZiAoIVNTTF9zZXRfZmQoc29jay0+c3NsLCBzb2NrLT5mZCkpIHsKKwkJc3NsX3NvY2tldF9wZXJyb3IoIlNTTF9zZXRfZmQiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldCA9IFNTTF9jb25uZWN0KHNvY2stPnNzbCk7CisJaWYgKHJldCA8PSAwKSB7CisJCXNvY2tldF9wZXJyb3IoIlNTTF9jb25uZWN0Iiwgc29jaywgcmV0KTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldHVybiAwOworI2VuZGlmCiB9CiAKLXN0YXRpYyBpbnQKLXNvY2tldF9yZWFkKCBTb2NrZXRfdCAqc29jaywgY2hhciAqYnVmLCBpbnQgbGVuICkKK3N0YXRpYyBpbnQgc29ja2V0X3JlYWQoc3RydWN0IGltYXBfc29ja2V0ICpzb2NrLCBjaGFyICpidWYsIGludCBsZW4pCiB7Ci0Jc3NpemVfdCBuID0geHJlYWQoIHNvY2stPmZkLCBidWYsIGxlbiApOworCXNzaXplX3QgbjsKKyNpZm5kZWYgTk9fT1BFTlNTTAorCWlmIChzb2NrLT5zc2wpCisJCW4gPSBTU0xfcmVhZChzb2NrLT5zc2wsIGJ1ZiwgbGVuKTsKKwllbHNlCisjZW5kaWYKKwkJbiA9IHhyZWFkKHNvY2stPmZkLCBidWYsIGxlbik7CiAJaWYgKG4gPD0gMCkgewotCQlzb2NrZXRfcGVycm9yKCAicmVhZCIsIHNvY2ssIG4gKTsKLQkJY2xvc2UoIHNvY2stPmZkICk7CisJCXNvY2tldF9wZXJyb3IoInJlYWQiLCBzb2NrLCBuKTsKKwkJY2xvc2Uoc29jay0+ZmQpOwogCQlzb2NrLT5mZCA9IC0xOwogCX0KIAlyZXR1cm4gbjsKIH0KIAotc3RhdGljIGludAotc29ja2V0X3dyaXRlKCBTb2NrZXRfdCAqc29jaywgY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuICkKK3N0YXRpYyBpbnQgc29ja2V0X3dyaXRlKHN0cnVjdCBpbWFwX3NvY2tldCAqc29jaywgY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuKQogewotCWludCBuID0gd3JpdGVfaW5fZnVsbCggc29jay0+ZmQsIGJ1ZiwgbGVuICk7CisJaW50IG47CisjaWZuZGVmIE5PX09QRU5TU0wKKwlpZiAoc29jay0+c3NsKQorCQluID0gU1NMX3dyaXRlKHNvY2stPnNzbCwgYnVmLCBsZW4pOworCWVsc2UKKyNlbmRpZgorCQluID0gd3JpdGVfaW5fZnVsbChzb2NrLT5mZCwgYnVmLCBsZW4pOwogCWlmIChuICE9IGxlbikgewotCQlzb2NrZXRfcGVycm9yKCAid3JpdGUiLCBzb2NrLCBuICk7Ci0JCWNsb3NlKCBzb2NrLT5mZCApOworCQlzb2NrZXRfcGVycm9yKCJ3cml0ZSIsIHNvY2ssIG4pOworCQljbG9zZShzb2NrLT5mZCk7CiAJCXNvY2stPmZkID0gLTE7CiAJfQogCXJldHVybiBuOwogfQogCitzdGF0aWMgdm9pZCBzb2NrZXRfc2h1dGRvd24oc3RydWN0IGltYXBfc29ja2V0ICpzb2NrKQoreworI2lmbmRlZiBOT19PUEVOU1NMCisJaWYgKHNvY2stPnNzbCkgeworCQlTU0xfc2h1dGRvd24oc29jay0+c3NsKTsKKwkJU1NMX2ZyZWUoc29jay0+c3NsKTsKKwl9CisjZW5kaWYKKwljbG9zZShzb2NrLT5mZCk7Cit9CisKIC8qIHNpbXBsZSBsaW5lIGJ1ZmZlcmluZyAqLwotc3RhdGljIGludAotYnVmZmVyX2dldHMoIGJ1ZmZlcl90ICogYiwgY2hhciAqKnMgKQorc3RhdGljIGludCBidWZmZXJfZ2V0cyhzdHJ1Y3QgaW1hcF9idWZmZXIgKmIsIGNoYXIgKipzKQogewogCWludCBuOwogCWludCBzdGFydCA9IGItPm9mZnNldDsKQEAgLTI3NCw3ICszNzcsNyBAQAogCQkJCS8qIHNoaWZ0IGRvd24gdXNlZCBieXRlcyAqLwogCQkJCSpzID0gYi0+YnVmOwogCi0JCQkJYXNzZXJ0KCBzdGFydCA8PSBiLT5ieXRlcyApOworCQkJCWFzc2VydChzdGFydCA8PSBiLT5ieXRlcyk7CiAJCQkJbiA9IGItPmJ5dGVzIC0gc3RhcnQ7CiAKIAkJCQlpZiAobikKQEAgLTI4NCw4ICszODcsOCBAQAogCQkJCXN0YXJ0ID0gMDsKIAkJCX0KIAotCQkJbiA9IHNvY2tldF9yZWFkKCAmYi0+c29jaywgYi0+YnVmICsgYi0+Ynl0ZXMsCi0JCQkJCSBzaXplb2YoYi0+YnVmKSAtIGItPmJ5dGVzICk7CisJCQluID0gc29ja2V0X3JlYWQoJmItPnNvY2ssIGItPmJ1ZiArIGItPmJ5dGVzLAorCQkJCQkgc2l6ZW9mKGItPmJ1ZikgLSBiLT5ieXRlcyk7CiAKIAkJCWlmIChuIDw9IDApCiAJCQkJcmV0dXJuIC0xOwpAQCAtMjk0LDEyICszOTcsMTIgQEAKIAkJfQogCiAJCWlmIChiLT5idWZbYi0+b2Zmc2V0XSA9PSAnXHInKSB7Ci0JCQlhc3NlcnQoIGItPm9mZnNldCArIDEgPCBiLT5ieXRlcyApOworCQkJYXNzZXJ0KGItPm9mZnNldCArIDEgPCBiLT5ieXRlcyk7CiAJCQlpZiAoYi0+YnVmW2ItPm9mZnNldCArIDFdID09ICdcbicpIHsKIAkJCQliLT5idWZbYi0+b2Zmc2V0XSA9IDA7ICAvKiB0ZXJtaW5hdGUgdGhlIHN0cmluZyAqLwogCQkJCWItPm9mZnNldCArPSAyOyAvKiBuZXh0IGxpbmUgKi8KIAkJCQlpZiAoVmVyYm9zZSkKLQkJCQkJcHV0cyggKnMgKTsKKwkJCQkJcHV0cygqcyk7CiAJCQkJcmV0dXJuIDA7CiAJCQl9CiAJCX0KQEAgLTMwOSwzOSArNDEyLDM2IEBACiAJLyogbm90IHJlYWNoZWQgKi8KIH0KIAotc3RhdGljIHZvaWQKLWltYXBfaW5mbyggY29uc3QgY2hhciAqbXNnLCAuLi4gKQorc3RhdGljIHZvaWQgaW1hcF9pbmZvKGNvbnN0IGNoYXIgKm1zZywgLi4uKQogewogCXZhX2xpc3QgdmE7CiAKIAlpZiAoIVF1aWV0KSB7Ci0JCXZhX3N0YXJ0KCB2YSwgbXNnICk7Ci0JCXZwcmludGYoIG1zZywgdmEgKTsKLQkJdmFfZW5kKCB2YSApOwotCQlmZmx1c2goIHN0ZG91dCApOworCQl2YV9zdGFydCh2YSwgbXNnKTsKKwkJdnByaW50Zihtc2csIHZhKTsKKwkJdmFfZW5kKHZhKTsKKwkJZmZsdXNoKHN0ZG91dCk7CiAJfQogfQogCi1zdGF0aWMgdm9pZAotaW1hcF93YXJuKCBjb25zdCBjaGFyICptc2csIC4uLiApCitzdGF0aWMgdm9pZCBpbWFwX3dhcm4oY29uc3QgY2hhciAqbXNnLCAuLi4pCiB7CiAJdmFfbGlzdCB2YTsKIAogCWlmIChRdWlldCA8IDIpIHsKLQkJdmFfc3RhcnQoIHZhLCBtc2cgKTsKLQkJdmZwcmludGYoIHN0ZGVyciwgbXNnLCB2YSApOwotCQl2YV9lbmQoIHZhICk7CisJCXZhX3N0YXJ0KHZhLCBtc2cpOworCQl2ZnByaW50ZihzdGRlcnIsIG1zZywgdmEpOworCQl2YV9lbmQodmEpOwogCX0KIH0KIAotc3RhdGljIGNoYXIgKgotbmV4dF9hcmcoIGNoYXIgKipzICkKK3N0YXRpYyBjaGFyICpuZXh0X2FyZyhjaGFyICoqcykKIHsKIAljaGFyICpyZXQ7CiAKIAlpZiAoIXMgfHwgISpzKQogCQlyZXR1cm4gTlVMTDsKLQl3aGlsZSAoaXNzcGFjZSggKHVuc2lnbmVkIGNoYXIpICoqcyApKQorCXdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSAqKnMpKQogCQkoKnMpKys7CiAJaWYgKCEqKnMpIHsKIAkJKnMgPSBOVUxMOwpAQCAtMzUwLDEwICs0NTAsMTAgQEAKIAlpZiAoKipzID09ICciJykgewogCQkrKypzOwogCQlyZXQgPSAqczsKLQkJKnMgPSBzdHJjaHIoICpzLCAnIicgKTsKKwkJKnMgPSBzdHJjaHIoKnMsICciJyk7CiAJfSBlbHNlIHsKIAkJcmV0ID0gKnM7Ci0JCXdoaWxlICgqKnMgJiYgIWlzc3BhY2UoICh1bnNpZ25lZCBjaGFyKSAqKnMgKSkKKwkJd2hpbGUgKCoqcyAmJiAhaXNzcGFjZSgodW5zaWduZWQgY2hhcikgKipzKSkKIAkJCSgqcykrKzsKIAl9CiAJaWYgKCpzKSB7CkBAIC0zNjUsMjcgKzQ2NSwyNSBAQAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkCi1mcmVlX2dlbmVyaWNfbWVzc2FnZXMoIG1lc3NhZ2VfdCAqbXNncyApCitzdGF0aWMgdm9pZCBmcmVlX2dlbmVyaWNfbWVzc2FnZXMoc3RydWN0IG1lc3NhZ2UgKm1zZ3MpCiB7Ci0JbWVzc2FnZV90ICp0bXNnOworCXN0cnVjdCBtZXNzYWdlICp0bXNnOwogCiAJZm9yICg7IG1zZ3M7IG1zZ3MgPSB0bXNnKSB7CiAJCXRtc2cgPSBtc2dzLT5uZXh0OwotCQlmcmVlKCBtc2dzICk7CisJCWZyZWUobXNncyk7CiAJfQogfQogCi1zdGF0aWMgaW50Ci1uZnNucHJpbnRmKCBjaGFyICpidWYsIGludCBibGVuLCBjb25zdCBjaGFyICpmbXQsIC4uLiApCitzdGF0aWMgaW50IG5mc25wcmludGYoY2hhciAqYnVmLCBpbnQgYmxlbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJaW50IHJldDsKIAl2YV9saXN0IHZhOwogCi0JdmFfc3RhcnQoIHZhLCBmbXQgKTsKLQlpZiAoYmxlbiA8PSAwIHx8ICh1bnNpZ25lZCkocmV0ID0gdnNucHJpbnRmKCBidWYsIGJsZW4sIGZtdCwgdmEgKSkgPj0gKHVuc2lnbmVkKWJsZW4pCi0JCWRpZSggIkZhdGFsOiBidWZmZXIgdG9vIHNtYWxsLiBQbGVhc2UgcmVwb3J0IGEgYnVnLlxuIik7Ci0JdmFfZW5kKCB2YSApOworCXZhX3N0YXJ0KHZhLCBmbXQpOworCWlmIChibGVuIDw9IDAgfHwgKHVuc2lnbmVkKShyZXQgPSB2c25wcmludGYoYnVmLCBibGVuLCBmbXQsIHZhKSkgPj0gKHVuc2lnbmVkKWJsZW4pCisJCWRpZSgiRmF0YWw6IGJ1ZmZlciB0b28gc21hbGwuIFBsZWFzZSByZXBvcnQgYSBidWcuXG4iKTsKKwl2YV9lbmQodmEpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTM5MywyMSArNDkxLDIwIEBACiAJdW5zaWduZWQgY2hhciBpLCBqLCBzWzI1Nl07CiB9IHJzOwogCi1zdGF0aWMgdm9pZAotYXJjNF9pbml0KCB2b2lkICkKK3N0YXRpYyB2b2lkIGFyYzRfaW5pdCh2b2lkKQogewogCWludCBpLCBmZDsKIAl1bnNpZ25lZCBjaGFyIGosIHNpLCBkYXRbMTI4XTsKIAotCWlmICgoZmQgPSBvcGVuKCAiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkgKSkgPCAwICYmIChmZCA9IG9wZW4oICIvZGV2L3JhbmRvbSIsIE9fUkRPTkxZICkpIDwgMCkgewotCQlmcHJpbnRmKCBzdGRlcnIsICJGYXRhbDogbm8gcmFuZG9tIG51bWJlciBzb3VyY2UgYXZhaWxhYmxlLlxuIiApOwotCQlleGl0KCAzICk7CisJaWYgKChmZCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKSkgPCAwICYmIChmZCA9IG9wZW4oIi9kZXYvcmFuZG9tIiwgT19SRE9OTFkpKSA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJGYXRhbDogbm8gcmFuZG9tIG51bWJlciBzb3VyY2UgYXZhaWxhYmxlLlxuIik7CisJCWV4aXQoMyk7CiAJfQotCWlmIChyZWFkX2luX2Z1bGwoIGZkLCBkYXQsIDEyOCApICE9IDEyOCkgewotCQlmcHJpbnRmKCBzdGRlcnIsICJGYXRhbDogY2Fubm90IHJlYWQgcmFuZG9tIG51bWJlciBzb3VyY2UuXG4iICk7Ci0JCWV4aXQoIDMgKTsKKwlpZiAocmVhZF9pbl9mdWxsKGZkLCBkYXQsIDEyOCkgIT0gMTI4KSB7CisJCWZwcmludGYoc3RkZXJyLCAiRmF0YWw6IGNhbm5vdCByZWFkIHJhbmRvbSBudW1iZXIgc291cmNlLlxuIik7CisJCWV4aXQoMyk7CiAJfQotCWNsb3NlKCBmZCApOworCWNsb3NlKGZkKTsKIAogCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKIAkJcnMuc1tpXSA9IGk7CkBAIC00MjMsOCArNTIwLDcgQEAKIAkJYXJjNF9nZXRieXRlKCk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBjaGFyCi1hcmM0X2dldGJ5dGUoIHZvaWQgKQorc3RhdGljIHVuc2lnbmVkIGNoYXIgYXJjNF9nZXRieXRlKHZvaWQpCiB7CiAJdW5zaWduZWQgY2hhciBzaSwgc2o7CiAKQEAgLTQzNyw1NCArNTMzLDUzIEBACiAJcmV0dXJuIHJzLnNbKHNpICsgc2opICYgMHhmZl07CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW1hcF9jbWQgKgotdl9pc3N1ZV9pbWFwX2NtZCggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsCi0JCSAgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwICkKK3N0YXRpYyBzdHJ1Y3QgaW1hcF9jbWQgKnZfaXNzdWVfaW1hcF9jbWQoc3RydWN0IGltYXBfc3RvcmUgKmN0eCwKKwkJCQkJIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsCisJCQkJCSBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCiB7Ci0JaW1hcF90ICppbWFwID0gY3R4LT5pbWFwOworCXN0cnVjdCBpbWFwICppbWFwID0gY3R4LT5pbWFwOwogCXN0cnVjdCBpbWFwX2NtZCAqY21kOwogCWludCBuLCBidWZsOwogCWNoYXIgYnVmWzEwMjRdOwogCi0JY21kID0geG1hbGxvYyggc2l6ZW9mKHN0cnVjdCBpbWFwX2NtZCkgKTsKLQluZnZhc3ByaW50ZiggJmNtZC0+Y21kLCBmbXQsIGFwICk7CisJY21kID0geG1hbGxvYyhzaXplb2Yoc3RydWN0IGltYXBfY21kKSk7CisJbmZ2YXNwcmludGYoJmNtZC0+Y21kLCBmbXQsIGFwKTsKIAljbWQtPnRhZyA9ICsraW1hcC0+bmV4dHRhZzsKIAogCWlmIChjYikKIAkJY21kLT5jYiA9ICpjYjsKIAllbHNlCi0JCW1lbXNldCggJmNtZC0+Y2IsIDAsIHNpemVvZihjbWQtPmNiKSApOworCQltZW1zZXQoJmNtZC0+Y2IsIDAsIHNpemVvZihjbWQtPmNiKSk7CiAKIAl3aGlsZSAoaW1hcC0+bGl0ZXJhbF9wZW5kaW5nKQotCQlnZXRfY21kX3Jlc3VsdCggY3R4LCBOVUxMICk7CisJCWdldF9jbWRfcmVzdWx0KGN0eCwgTlVMTCk7CiAKLQlidWZsID0gbmZzbnByaW50ZiggYnVmLCBzaXplb2YoYnVmKSwgY21kLT5jYi5kYXRhID8gQ0FQKExJVEVSQUxQTFVTKSA/CisJYnVmbCA9IG5mc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgY21kLT5jYi5kYXRhID8gQ0FQKExJVEVSQUxQTFVTKSA/CiAJCQkgICAiJWQgJXN7JWQrfVxyXG4iIDogIiVkICVzeyVkfVxyXG4iIDogIiVkICVzXHJcbiIsCi0JCQkgICBjbWQtPnRhZywgY21kLT5jbWQsIGNtZC0+Y2IuZGxlbiApOworCQkJICAgY21kLT50YWcsIGNtZC0+Y21kLCBjbWQtPmNiLmRsZW4pOwogCWlmIChWZXJib3NlKSB7CiAJCWlmIChpbWFwLT5udW1faW5fcHJvZ3Jlc3MpCi0JCQlwcmludGYoICIoJWQgaW4gcHJvZ3Jlc3MpICIsIGltYXAtPm51bV9pbl9wcm9ncmVzcyApOwotCQlpZiAobWVtY21wKCBjbWQtPmNtZCwgIkxPR0lOIiwgNSApKQotCQkJcHJpbnRmKCAiPj4+ICVzIiwgYnVmICk7CisJCQlwcmludGYoIiglZCBpbiBwcm9ncmVzcykgIiwgaW1hcC0+bnVtX2luX3Byb2dyZXNzKTsKKwkJaWYgKG1lbWNtcChjbWQtPmNtZCwgIkxPR0lOIiwgNSkpCisJCQlwcmludGYoIj4+PiAlcyIsIGJ1Zik7CiAJCWVsc2UKLQkJCXByaW50ZiggIj4+PiAlZCBMT0dJTiA8dXNlcj4gPHBhc3M+XG4iLCBjbWQtPnRhZyApOworCQkJcHJpbnRmKCI+Pj4gJWQgTE9HSU4gPHVzZXI+IDxwYXNzPlxuIiwgY21kLT50YWcpOwogCX0KLQlpZiAoc29ja2V0X3dyaXRlKCAmaW1hcC0+YnVmLnNvY2ssIGJ1ZiwgYnVmbCApICE9IGJ1ZmwpIHsKLQkJZnJlZSggY21kLT5jbWQgKTsKLQkJZnJlZSggY21kICk7CisJaWYgKHNvY2tldF93cml0ZSgmaW1hcC0+YnVmLnNvY2ssIGJ1ZiwgYnVmbCkgIT0gYnVmbCkgeworCQlmcmVlKGNtZC0+Y21kKTsKKwkJZnJlZShjbWQpOwogCQlpZiAoY2IpCi0JCQlmcmVlKCBjYi0+ZGF0YSApOworCQkJZnJlZShjYi0+ZGF0YSk7CiAJCXJldHVybiBOVUxMOwogCX0KIAlpZiAoY21kLT5jYi5kYXRhKSB7CiAJCWlmIChDQVAoTElURVJBTFBMVVMpKSB7Ci0JCQluID0gc29ja2V0X3dyaXRlKCAmaW1hcC0+YnVmLnNvY2ssIGNtZC0+Y2IuZGF0YSwgY21kLT5jYi5kbGVuICk7Ci0JCQlmcmVlKCBjbWQtPmNiLmRhdGEgKTsKKwkJCW4gPSBzb2NrZXRfd3JpdGUoJmltYXAtPmJ1Zi5zb2NrLCBjbWQtPmNiLmRhdGEsIGNtZC0+Y2IuZGxlbik7CisJCQlmcmVlKGNtZC0+Y2IuZGF0YSk7CiAJCQlpZiAobiAhPSBjbWQtPmNiLmRsZW4gfHwKLQkJCSAgICAobiA9IHNvY2tldF93cml0ZSggJmltYXAtPmJ1Zi5zb2NrLCAiXHJcbiIsIDIgKSkgIT0gMikKLQkJCXsKLQkJCQlmcmVlKCBjbWQtPmNtZCApOwotCQkJCWZyZWUoIGNtZCApOworCQkJICAgIChuID0gc29ja2V0X3dyaXRlKCZpbWFwLT5idWYuc29jaywgIlxyXG4iLCAyKSkgIT0gMikgeworCQkJCWZyZWUoY21kLT5jbWQpOworCQkJCWZyZWUoY21kKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KIAkJCWNtZC0+Y2IuZGF0YSA9IE5VTEw7CkBAIC00OTksMTA5ICs1OTQsMTA2IEBACiAJcmV0dXJuIGNtZDsKIH0KIAotc3RhdGljIHN0cnVjdCBpbWFwX2NtZCAqCi1pc3N1ZV9pbWFwX2NtZCggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uICkKK3N0YXRpYyBzdHJ1Y3QgaW1hcF9jbWQgKmlzc3VlX2ltYXBfY21kKHN0cnVjdCBpbWFwX3N0b3JlICpjdHgsCisJCQkJICAgICAgIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogCXN0cnVjdCBpbWFwX2NtZCAqcmV0OwogCXZhX2xpc3QgYXA7CiAKLQl2YV9zdGFydCggYXAsIGZtdCApOwotCXJldCA9IHZfaXNzdWVfaW1hcF9jbWQoIGN0eCwgY2IsIGZtdCwgYXAgKTsKLQl2YV9lbmQoIGFwICk7CisJdmFfc3RhcnQoYXAsIGZtdCk7CisJcmV0ID0gdl9pc3N1ZV9pbWFwX2NtZChjdHgsIGNiLCBmbXQsIGFwKTsKKwl2YV9lbmQoYXApOwogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQKLWltYXBfZXhlYyggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uICkKK3N0YXRpYyBpbnQgaW1hcF9leGVjKHN0cnVjdCBpbWFwX3N0b3JlICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsCisJCSAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJdmFfbGlzdCBhcDsKIAlzdHJ1Y3QgaW1hcF9jbWQgKmNtZHA7CiAKLQl2YV9zdGFydCggYXAsIGZtdCApOwotCWNtZHAgPSB2X2lzc3VlX2ltYXBfY21kKCBjdHgsIGNiLCBmbXQsIGFwICk7Ci0JdmFfZW5kKCBhcCApOworCXZhX3N0YXJ0KGFwLCBmbXQpOworCWNtZHAgPSB2X2lzc3VlX2ltYXBfY21kKGN0eCwgY2IsIGZtdCwgYXApOworCXZhX2VuZChhcCk7CiAJaWYgKCFjbWRwKQogCQlyZXR1cm4gUkVTUF9CQUQ7CiAKLQlyZXR1cm4gZ2V0X2NtZF9yZXN1bHQoIGN0eCwgY21kcCApOworCXJldHVybiBnZXRfY21kX3Jlc3VsdChjdHgsIGNtZHApOwogfQogCi1zdGF0aWMgaW50Ci1pbWFwX2V4ZWNfbSggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZF9jYiAqY2IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uICkKK3N0YXRpYyBpbnQgaW1hcF9leGVjX20oc3RydWN0IGltYXBfc3RvcmUgKmN0eCwgc3RydWN0IGltYXBfY21kX2NiICpjYiwKKwkJICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogCXZhX2xpc3QgYXA7CiAJc3RydWN0IGltYXBfY21kICpjbWRwOwogCi0JdmFfc3RhcnQoIGFwLCBmbXQgKTsKLQljbWRwID0gdl9pc3N1ZV9pbWFwX2NtZCggY3R4LCBjYiwgZm10LCBhcCApOwotCXZhX2VuZCggYXAgKTsKKwl2YV9zdGFydChhcCwgZm10KTsKKwljbWRwID0gdl9pc3N1ZV9pbWFwX2NtZChjdHgsIGNiLCBmbXQsIGFwKTsKKwl2YV9lbmQoYXApOwogCWlmICghY21kcCkKIAkJcmV0dXJuIERSVl9TVE9SRV9CQUQ7CiAKLQlzd2l0Y2ggKGdldF9jbWRfcmVzdWx0KCBjdHgsIGNtZHAgKSkgeworCXN3aXRjaCAoZ2V0X2NtZF9yZXN1bHQoY3R4LCBjbWRwKSkgewogCWNhc2UgUkVTUF9CQUQ6IHJldHVybiBEUlZfU1RPUkVfQkFEOwogCWNhc2UgUkVTUF9OTzogcmV0dXJuIERSVl9NU0dfQkFEOwogCWRlZmF1bHQ6IHJldHVybiBEUlZfT0s7CiAJfQogfQogCi1zdGF0aWMgaW50Ci1pc19hdG9tKCBsaXN0X3QgKmxpc3QgKQorc3RhdGljIGludCBpc19hdG9tKHN0cnVjdCBpbWFwX2xpc3QgKmxpc3QpCiB7CiAJcmV0dXJuIGxpc3QgJiYgbGlzdC0+dmFsICYmIGxpc3QtPnZhbCAhPSBOSUwgJiYgbGlzdC0+dmFsICE9IExJU1Q7CiB9CiAKLXN0YXRpYyBpbnQKLWlzX2xpc3QoIGxpc3RfdCAqbGlzdCApCitzdGF0aWMgaW50IGlzX2xpc3Qoc3RydWN0IGltYXBfbGlzdCAqbGlzdCkKIHsKIAlyZXR1cm4gbGlzdCAmJiBsaXN0LT52YWwgPT0gTElTVDsKIH0KIAotc3RhdGljIHZvaWQKLWZyZWVfbGlzdCggbGlzdF90ICpsaXN0ICkKK3N0YXRpYyB2b2lkIGZyZWVfbGlzdChzdHJ1Y3QgaW1hcF9saXN0ICpsaXN0KQogewotCWxpc3RfdCAqdG1wOworCXN0cnVjdCBpbWFwX2xpc3QgKnRtcDsKIAogCWZvciAoOyBsaXN0OyBsaXN0ID0gdG1wKSB7CiAJCXRtcCA9IGxpc3QtPm5leHQ7Ci0JCWlmIChpc19saXN0KCBsaXN0ICkpCi0JCQlmcmVlX2xpc3QoIGxpc3QtPmNoaWxkICk7Ci0JCWVsc2UgaWYgKGlzX2F0b20oIGxpc3QgKSkKLQkJCWZyZWUoIGxpc3QtPnZhbCApOwotCQlmcmVlKCBsaXN0ICk7CisJCWlmIChpc19saXN0KGxpc3QpKQorCQkJZnJlZV9saXN0KGxpc3QtPmNoaWxkKTsKKwkJZWxzZSBpZiAoaXNfYXRvbShsaXN0KSkKKwkJCWZyZWUobGlzdC0+dmFsKTsKKwkJZnJlZShsaXN0KTsKIAl9CiB9CiAKLXN0YXRpYyBpbnQKLXBhcnNlX2ltYXBfbGlzdF9sKCBpbWFwX3QgKmltYXAsIGNoYXIgKipzcCwgbGlzdF90ICoqY3VycCwgaW50IGxldmVsICkKK3N0YXRpYyBpbnQgcGFyc2VfaW1hcF9saXN0X2woc3RydWN0IGltYXAgKmltYXAsIGNoYXIgKipzcCwgc3RydWN0IGltYXBfbGlzdCAqKmN1cnAsIGludCBsZXZlbCkKIHsKLQlsaXN0X3QgKmN1cjsKKwlzdHJ1Y3QgaW1hcF9saXN0ICpjdXI7CiAJY2hhciAqcyA9ICpzcCwgKnA7CiAJaW50IG4sIGJ5dGVzOwogCiAJZm9yICg7OykgewotCQl3aGlsZSAoaXNzcGFjZSggKHVuc2lnbmVkIGNoYXIpKnMgKSkKKwkJd2hpbGUgKGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnMpKQogCQkJcysrOwogCQlpZiAobGV2ZWwgJiYgKnMgPT0gJyknKSB7CiAJCQlzKys7CiAJCQlicmVhazsKIAkJfQotCQkqY3VycCA9IGN1ciA9IHhtYWxsb2MoIHNpemVvZigqY3VyKSApOworCQkqY3VycCA9IGN1ciA9IHhtYWxsb2Moc2l6ZW9mKCpjdXIpKTsKIAkJY3VycCA9ICZjdXItPm5leHQ7CiAJCWN1ci0+dmFsID0gTlVMTDsgLyogZm9yIGNsZWFuIGJhaWwgKi8KIAkJaWYgKCpzID09ICcoJykgewogCQkJLyogc3VibGlzdCAqLwogCQkJcysrOwogCQkJY3VyLT52YWwgPSBMSVNUOwotCQkJaWYgKHBhcnNlX2ltYXBfbGlzdF9sKCBpbWFwLCAmcywgJmN1ci0+Y2hpbGQsIGxldmVsICsgMSApKQorCQkJaWYgKHBhcnNlX2ltYXBfbGlzdF9sKGltYXAsICZzLCAmY3VyLT5jaGlsZCwgbGV2ZWwgKyAxKSkKIAkJCQlnb3RvIGJhaWw7CiAJCX0gZWxzZSBpZiAoaW1hcCAmJiAqcyA9PSAneycpIHsKIAkJCS8qIGxpdGVyYWwgKi8KLQkJCWJ5dGVzID0gY3VyLT5sZW4gPSBzdHJ0b2woIHMgKyAxLCAmcywgMTAgKTsKKwkJCWJ5dGVzID0gY3VyLT5sZW4gPSBzdHJ0b2wocyArIDEsICZzLCAxMCk7CiAJCQlpZiAoKnMgIT0gJ30nKQogCQkJCWdvdG8gYmFpbDsKIAotCQkJcyA9IGN1ci0+dmFsID0geG1hbGxvYyggY3VyLT5sZW4gKTsKKwkJCXMgPSBjdXItPnZhbCA9IHhtYWxsb2MoY3VyLT5sZW4pOwogCiAJCQkvKiBkdW1wIHdoYXRzIGxlZnQgb3ZlciBpbiB0aGUgaW5wdXQgYnVmZmVyICovCiAJCQluID0gaW1hcC0+YnVmLmJ5dGVzIC0gaW1hcC0+YnVmLm9mZnNldDsKQEAgLTYxMCw3ICs3MDIsNyBAQAogCQkJCS8qIHRoZSBlbnRpcmUgbWVzc2FnZSBmaXQgaW4gdGhlIGJ1ZmZlciAqLwogCQkJCW4gPSBieXRlczsKIAotCQkJbWVtY3B5KCBzLCBpbWFwLT5idWYuYnVmICsgaW1hcC0+YnVmLm9mZnNldCwgbiApOworCQkJbWVtY3B5KHMsIGltYXAtPmJ1Zi5idWYgKyBpbWFwLT5idWYub2Zmc2V0LCBuKTsKIAkJCXMgKz0gbjsKIAkJCWJ5dGVzIC09IG47CiAKQEAgLTYxOSwxMyArNzExLDEzIEBACiAKIAkJCS8qIG5vdyByZWFkIHRoZSByZXN0IG9mIHRoZSBtZXNzYWdlICovCiAJCQl3aGlsZSAoYnl0ZXMgPiAwKSB7Ci0JCQkJaWYgKChuID0gc29ja2V0X3JlYWQgKCZpbWFwLT5idWYuc29jaywgcywgYnl0ZXMpKSA8PSAwKQorCQkJCWlmICgobiA9IHNvY2tldF9yZWFkKCZpbWFwLT5idWYuc29jaywgcywgYnl0ZXMpKSA8PSAwKQogCQkJCQlnb3RvIGJhaWw7CiAJCQkJcyArPSBuOwogCQkJCWJ5dGVzIC09IG47CiAJCQl9CiAKLQkJCWlmIChidWZmZXJfZ2V0cyggJmltYXAtPmJ1ZiwgJnMgKSkKKwkJCWlmIChidWZmZXJfZ2V0cygmaW1hcC0+YnVmLCAmcykpCiAJCQkJZ290byBiYWlsOwogCQl9IGVsc2UgaWYgKCpzID09ICciJykgewogCQkJLyogcXVvdGVkIHN0cmluZyAqLwpAQCAtNjQwLDE1ICs3MzIsMTQgQEAKIAkJfSBlbHNlIHsKIAkJCS8qIGF0b20gKi8KIAkJCXAgPSBzOwotCQkJZm9yICg7ICpzICYmICFpc3NwYWNlKCAodW5zaWduZWQgY2hhcikqcyApOyBzKyspCisJCQlmb3IgKDsgKnMgJiYgIWlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnMpOyBzKyspCiAJCQkJaWYgKGxldmVsICYmICpzID09ICcpJykKIAkJCQkJYnJlYWs7CiAJCQljdXItPmxlbiA9IHMgLSBwOwotCQkJaWYgKGN1ci0+bGVuID09IDMgJiYgIW1lbWNtcCAoIk5JTCIsIHAsIDMpKSB7CisJCQlpZiAoY3VyLT5sZW4gPT0gMyAmJiAhbWVtY21wKCJOSUwiLCBwLCAzKSkKIAkJCQljdXItPnZhbCA9IE5JTDsKLQkJCX0gZWxzZSB7CisJCQllbHNlCiAJCQkJY3VyLT52YWwgPSB4bWVtZHVweihwLCBjdXItPmxlbik7Ci0JCQl9CiAJCX0KIAogCQlpZiAoIWxldmVsKQpAQCAtNjYwLDEyNyArNzUxLDEyMiBAQAogCSpjdXJwID0gTlVMTDsKIAlyZXR1cm4gMDsKIAotICBiYWlsOgorYmFpbDoKIAkqY3VycCA9IE5VTEw7CiAJcmV0dXJuIC0xOwogfQogCi1zdGF0aWMgbGlzdF90ICoKLXBhcnNlX2ltYXBfbGlzdCggaW1hcF90ICppbWFwLCBjaGFyICoqc3AgKQorc3RhdGljIHN0cnVjdCBpbWFwX2xpc3QgKnBhcnNlX2ltYXBfbGlzdChzdHJ1Y3QgaW1hcCAqaW1hcCwgY2hhciAqKnNwKQogewotCWxpc3RfdCAqaGVhZDsKKwlzdHJ1Y3QgaW1hcF9saXN0ICpoZWFkOwogCi0JaWYgKCFwYXJzZV9pbWFwX2xpc3RfbCggaW1hcCwgc3AsICZoZWFkLCAwICkpCisJaWYgKCFwYXJzZV9pbWFwX2xpc3RfbChpbWFwLCBzcCwgJmhlYWQsIDApKQogCQlyZXR1cm4gaGVhZDsKLQlmcmVlX2xpc3QoIGhlYWQgKTsKKwlmcmVlX2xpc3QoaGVhZCk7CiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBsaXN0X3QgKgotcGFyc2VfbGlzdCggY2hhciAqKnNwICkKK3N0YXRpYyBzdHJ1Y3QgaW1hcF9saXN0ICpwYXJzZV9saXN0KGNoYXIgKipzcCkKIHsKLQlyZXR1cm4gcGFyc2VfaW1hcF9saXN0KCBOVUxMLCBzcCApOworCXJldHVybiBwYXJzZV9pbWFwX2xpc3QoTlVMTCwgc3ApOwogfQogCi1zdGF0aWMgdm9pZAotcGFyc2VfY2FwYWJpbGl0eSggaW1hcF90ICppbWFwLCBjaGFyICpjbWQgKQorc3RhdGljIHZvaWQgcGFyc2VfY2FwYWJpbGl0eShzdHJ1Y3QgaW1hcCAqaW1hcCwgY2hhciAqY21kKQogewogCWNoYXIgKmFyZzsKIAl1bnNpZ25lZCBpOwogCiAJaW1hcC0+Y2FwcyA9IDB4ODAwMDAwMDA7Ci0Jd2hpbGUgKChhcmcgPSBuZXh0X2FyZyggJmNtZCApKSkKKwl3aGlsZSAoKGFyZyA9IG5leHRfYXJnKCZjbWQpKSkKIAkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY2FwX2xpc3QpOyBpKyspCi0JCQlpZiAoIXN0cmNtcCggY2FwX2xpc3RbaV0sIGFyZyApKQorCQkJaWYgKCFzdHJjbXAoY2FwX2xpc3RbaV0sIGFyZykpCiAJCQkJaW1hcC0+Y2FwcyB8PSAxIDw8IGk7CiAJaW1hcC0+cmNhcHMgPSBpbWFwLT5jYXBzOwogfQogCi1zdGF0aWMgaW50Ci1wYXJzZV9yZXNwb25zZV9jb2RlKCBpbWFwX3N0b3JlX3QgKmN0eCwgc3RydWN0IGltYXBfY21kX2NiICpjYiwgY2hhciAqcyApCitzdGF0aWMgaW50IHBhcnNlX3Jlc3BvbnNlX2NvZGUoc3RydWN0IGltYXBfc3RvcmUgKmN0eCwgc3RydWN0IGltYXBfY21kX2NiICpjYiwKKwkJCSAgICAgICBjaGFyICpzKQogewotCWltYXBfdCAqaW1hcCA9IGN0eC0+aW1hcDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcCA9IGN0eC0+aW1hcDsKIAljaGFyICphcmcsICpwOwogCiAJaWYgKCpzICE9ICdbJykKIAkJcmV0dXJuIFJFU1BfT0s7CQkvKiBubyByZXNwb25zZSBjb2RlICovCiAJcysrOwotCWlmICghKHAgPSBzdHJjaHIoIHMsICddJyApKSkgewotCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgcmVzcG9uc2UgY29kZVxuIiApOworCWlmICghKHAgPSBzdHJjaHIocywgJ10nKSkpIHsKKwkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgcmVzcG9uc2UgY29kZVxuIik7CiAJCXJldHVybiBSRVNQX0JBRDsKIAl9CiAJKnArKyA9IDA7Ci0JYXJnID0gbmV4dF9hcmcoICZzICk7Ci0JaWYgKCFzdHJjbXAoICJVSURWQUxJRElUWSIsIGFyZyApKSB7Ci0JCWlmICghKGFyZyA9IG5leHRfYXJnKCAmcyApKSB8fCAhKGN0eC0+Z2VuLnVpZHZhbGlkaXR5ID0gYXRvaSggYXJnICkpKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgVUlEVkFMSURJVFkgc3RhdHVzXG4iICk7CisJYXJnID0gbmV4dF9hcmcoJnMpOworCWlmICghc3RyY21wKCJVSURWQUxJRElUWSIsIGFyZykpIHsKKwkJaWYgKCEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKGN0eC0+Z2VuLnVpZHZhbGlkaXR5ID0gYXRvaShhcmcpKSkgeworCQkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgVUlEVkFMSURJVFkgc3RhdHVzXG4iKTsKIAkJCXJldHVybiBSRVNQX0JBRDsKIAkJfQotCX0gZWxzZSBpZiAoIXN0cmNtcCggIlVJRE5FWFQiLCBhcmcgKSkgewotCQlpZiAoIShhcmcgPSBuZXh0X2FyZyggJnMgKSkgfHwgIShpbWFwLT51aWRuZXh0ID0gYXRvaSggYXJnICkpKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgTkVYVFVJRCBzdGF0dXNcbiIgKTsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoIlVJRE5FWFQiLCBhcmcpKSB7CisJCWlmICghKGFyZyA9IG5leHRfYXJnKCZzKSkgfHwgIShpbWFwLT51aWRuZXh0ID0gYXRvaShhcmcpKSkgeworCQkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiBtYWxmb3JtZWQgTkVYVFVJRCBzdGF0dXNcbiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwogCQl9Ci0JfSBlbHNlIGlmICghc3RyY21wKCAiQ0FQQUJJTElUWSIsIGFyZyApKSB7Ci0JCXBhcnNlX2NhcGFiaWxpdHkoIGltYXAsIHMgKTsKLQl9IGVsc2UgaWYgKCFzdHJjbXAoICJBTEVSVCIsIGFyZyApKSB7CisJfSBlbHNlIGlmICghc3RyY21wKCJDQVBBQklMSVRZIiwgYXJnKSkgeworCQlwYXJzZV9jYXBhYmlsaXR5KGltYXAsIHMpOworCX0gZWxzZSBpZiAoIXN0cmNtcCgiQUxFUlQiLCBhcmcpKSB7CiAJCS8qIFJGQzIwNjAgc2F5cyB0aGF0IHRoZXNlIG1lc3NhZ2VzIE1VU1QgYmUgZGlzcGxheWVkCiAJCSAqIHRvIHRoZSB1c2VyCiAJCSAqLwotCQlmb3IgKDsgaXNzcGFjZSggKHVuc2lnbmVkIGNoYXIpKnAgKTsgcCsrKTsKLQkJZnByaW50Ziggc3RkZXJyLCAiKioqIElNQVAgQUxFUlQgKioqICVzXG4iLCBwICk7Ci0JfSBlbHNlIGlmIChjYiAmJiBjYi0+Y3R4ICYmICFzdHJjbXAoICJBUFBFTkRVSUQiLCBhcmcgKSkgewotCQlpZiAoIShhcmcgPSBuZXh0X2FyZyggJnMgKSkgfHwgIShjdHgtPmdlbi51aWR2YWxpZGl0eSA9IGF0b2koIGFyZyApKSB8fAotCQkgICAgIShhcmcgPSBuZXh0X2FyZyggJnMgKSkgfHwgISgqKGludCAqKWNiLT5jdHggPSBhdG9pKCBhcmcgKSkpCi0JCXsKLQkJCWZwcmludGYoIHN0ZGVyciwgIklNQVAgZXJyb3I6IG1hbGZvcm1lZCBBUFBFTkRVSUQgc3RhdHVzXG4iICk7CisJCWZvciAoOyBpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpwKTsgcCsrKTsKKwkJZnByaW50ZihzdGRlcnIsICIqKiogSU1BUCBBTEVSVCAqKiogJXNcbiIsIHApOworCX0gZWxzZSBpZiAoY2IgJiYgY2ItPmN0eCAmJiAhc3RyY21wKCJBUFBFTkRVSUQiLCBhcmcpKSB7CisJCWlmICghKGFyZyA9IG5leHRfYXJnKCZzKSkgfHwgIShjdHgtPmdlbi51aWR2YWxpZGl0eSA9IGF0b2koYXJnKSkgfHwKKwkJICAgICEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKCooaW50ICopY2ItPmN0eCA9IGF0b2koYXJnKSkpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogbWFsZm9ybWVkIEFQUEVORFVJRCBzdGF0dXNcbiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwogCQl9CiAJfQogCXJldHVybiBSRVNQX09LOwogfQogCi1zdGF0aWMgaW50Ci1nZXRfY21kX3Jlc3VsdCggaW1hcF9zdG9yZV90ICpjdHgsIHN0cnVjdCBpbWFwX2NtZCAqdGNtZCApCitzdGF0aWMgaW50IGdldF9jbWRfcmVzdWx0KHN0cnVjdCBpbWFwX3N0b3JlICpjdHgsIHN0cnVjdCBpbWFwX2NtZCAqdGNtZCkKIHsKLQlpbWFwX3QgKmltYXAgPSBjdHgtPmltYXA7CisJc3RydWN0IGltYXAgKmltYXAgPSBjdHgtPmltYXA7CiAJc3RydWN0IGltYXBfY21kICpjbWRwLCAqKnBjbWRwLCAqbmNtZHA7CiAJY2hhciAqY21kLCAqYXJnLCAqYXJnMSwgKnA7CiAJaW50IG4sIHJlc3AsIHJlc3AyLCB0YWc7CiAKIAlmb3IgKDs7KSB7Ci0JCWlmIChidWZmZXJfZ2V0cyggJmltYXAtPmJ1ZiwgJmNtZCApKQorCQlpZiAoYnVmZmVyX2dldHMoJmltYXAtPmJ1ZiwgJmNtZCkpCiAJCQlyZXR1cm4gUkVTUF9CQUQ7CiAKLQkJYXJnID0gbmV4dF9hcmcoICZjbWQgKTsKKwkJYXJnID0gbmV4dF9hcmcoJmNtZCk7CiAJCWlmICgqYXJnID09ICcqJykgewotCQkJYXJnID0gbmV4dF9hcmcoICZjbWQgKTsKKwkJCWFyZyA9IG5leHRfYXJnKCZjbWQpOwogCQkJaWYgKCFhcmcpIHsKLQkJCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiB1bmFibGUgdG8gcGFyc2UgdW50YWdnZWQgcmVzcG9uc2VcbiIgKTsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgZXJyb3I6IHVuYWJsZSB0byBwYXJzZSB1bnRhZ2dlZCByZXNwb25zZVxuIik7CiAJCQkJcmV0dXJuIFJFU1BfQkFEOwogCQkJfQogCi0JCQlpZiAoIXN0cmNtcCggIk5BTUVTUEFDRSIsIGFyZyApKSB7Ci0JCQkJaW1hcC0+bnNfcGVyc29uYWwgPSBwYXJzZV9saXN0KCAmY21kICk7Ci0JCQkJaW1hcC0+bnNfb3RoZXIgPSBwYXJzZV9saXN0KCAmY21kICk7Ci0JCQkJaW1hcC0+bnNfc2hhcmVkID0gcGFyc2VfbGlzdCggJmNtZCApOwotCQkJfSBlbHNlIGlmICghc3RyY21wKCAiT0siLCBhcmcgKSB8fCAhc3RyY21wKCAiQkFEIiwgYXJnICkgfHwKLQkJCQkgICAhc3RyY21wKCAiTk8iLCBhcmcgKSB8fCAhc3RyY21wKCAiQllFIiwgYXJnICkpIHsKLQkJCQlpZiAoKHJlc3AgPSBwYXJzZV9yZXNwb25zZV9jb2RlKCBjdHgsIE5VTEwsIGNtZCApKSAhPSBSRVNQX09LKQorCQkJaWYgKCFzdHJjbXAoIk5BTUVTUEFDRSIsIGFyZykpIHsKKwkJCQlpbWFwLT5uc19wZXJzb25hbCA9IHBhcnNlX2xpc3QoJmNtZCk7CisJCQkJaW1hcC0+bnNfb3RoZXIgPSBwYXJzZV9saXN0KCZjbWQpOworCQkJCWltYXAtPm5zX3NoYXJlZCA9IHBhcnNlX2xpc3QoJmNtZCk7CisJCQl9IGVsc2UgaWYgKCFzdHJjbXAoIk9LIiwgYXJnKSB8fCAhc3RyY21wKCJCQUQiLCBhcmcpIHx8CisJCQkJICAgIXN0cmNtcCgiTk8iLCBhcmcpIHx8ICFzdHJjbXAoIkJZRSIsIGFyZykpIHsKKwkJCQlpZiAoKHJlc3AgPSBwYXJzZV9yZXNwb25zZV9jb2RlKGN0eCwgTlVMTCwgY21kKSkgIT0gUkVTUF9PSykKIAkJCQkJcmV0dXJuIHJlc3A7Ci0JCQl9IGVsc2UgaWYgKCFzdHJjbXAoICJDQVBBQklMSVRZIiwgYXJnICkpCi0JCQkJcGFyc2VfY2FwYWJpbGl0eSggaW1hcCwgY21kICk7Ci0JCQllbHNlIGlmICgoYXJnMSA9IG5leHRfYXJnKCAmY21kICkpKSB7Ci0JCQkJaWYgKCFzdHJjbXAoICJFWElTVFMiLCBhcmcxICkpCi0JCQkJCWN0eC0+Z2VuLmNvdW50ID0gYXRvaSggYXJnICk7Ci0JCQkJZWxzZSBpZiAoIXN0cmNtcCggIlJFQ0VOVCIsIGFyZzEgKSkKLQkJCQkJY3R4LT5nZW4ucmVjZW50ID0gYXRvaSggYXJnICk7CisJCQl9IGVsc2UgaWYgKCFzdHJjbXAoIkNBUEFCSUxJVFkiLCBhcmcpKQorCQkJCXBhcnNlX2NhcGFiaWxpdHkoaW1hcCwgY21kKTsKKwkJCWVsc2UgaWYgKChhcmcxID0gbmV4dF9hcmcoJmNtZCkpKSB7CisJCQkJaWYgKCFzdHJjbXAoIkVYSVNUUyIsIGFyZzEpKQorCQkJCQljdHgtPmdlbi5jb3VudCA9IGF0b2koYXJnKTsKKwkJCQllbHNlIGlmICghc3RyY21wKCJSRUNFTlQiLCBhcmcxKSkKKwkJCQkJY3R4LT5nZW4ucmVjZW50ID0gYXRvaShhcmcpOwogCQkJfSBlbHNlIHsKLQkJCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiB1bmFibGUgdG8gcGFyc2UgdW50YWdnZWQgcmVzcG9uc2VcbiIgKTsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgZXJyb3I6IHVuYWJsZSB0byBwYXJzZSB1bnRhZ2dlZCByZXNwb25zZVxuIik7CiAJCQkJcmV0dXJuIFJFU1BfQkFEOwogCQkJfQogCQl9IGVsc2UgaWYgKCFpbWFwLT5pbl9wcm9ncmVzcykgewotCQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5leHBlY3RlZCByZXBseTogJXMgJXNcbiIsIGFyZywgY21kID8gY21kIDogIiIgKTsKKwkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5leHBlY3RlZCByZXBseTogJXMgJXNcbiIsIGFyZywgY21kID8gY21kIDogIiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwogCQl9IGVsc2UgaWYgKCphcmcgPT0gJysnKSB7CiAJCQkvKiBUaGlzIGNhbiBoYXBwZW4gb25seSB3aXRoIHRoZSBsYXN0IGNvbW1hbmQgdW5kZXJ3YXksIGFzCkBAIC03ODgsNTcgKzg3NCw1NyBAQAogCQkJY21kcCA9IChzdHJ1Y3QgaW1hcF9jbWQgKikoKGNoYXIgKilpbWFwLT5pbl9wcm9ncmVzc19hcHBlbmQgLQogCQkJICAgICAgIG9mZnNldG9mKHN0cnVjdCBpbWFwX2NtZCwgbmV4dCkpOwogCQkJaWYgKGNtZHAtPmNiLmRhdGEpIHsKLQkJCQluID0gc29ja2V0X3dyaXRlKCAmaW1hcC0+YnVmLnNvY2ssIGNtZHAtPmNiLmRhdGEsIGNtZHAtPmNiLmRsZW4gKTsKLQkJCQlmcmVlKCBjbWRwLT5jYi5kYXRhICk7CisJCQkJbiA9IHNvY2tldF93cml0ZSgmaW1hcC0+YnVmLnNvY2ssIGNtZHAtPmNiLmRhdGEsIGNtZHAtPmNiLmRsZW4pOworCQkJCWZyZWUoY21kcC0+Y2IuZGF0YSk7CiAJCQkJY21kcC0+Y2IuZGF0YSA9IE5VTEw7CiAJCQkJaWYgKG4gIT0gKGludCljbWRwLT5jYi5kbGVuKQogCQkJCQlyZXR1cm4gUkVTUF9CQUQ7CiAJCQl9IGVsc2UgaWYgKGNtZHAtPmNiLmNvbnQpIHsKLQkJCQlpZiAoY21kcC0+Y2IuY29udCggY3R4LCBjbWRwLCBjbWQgKSkKKwkJCQlpZiAoY21kcC0+Y2IuY29udChjdHgsIGNtZHAsIGNtZCkpCiAJCQkJCXJldHVybiBSRVNQX0JBRDsKIAkJCX0gZWxzZSB7Ci0JCQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5leHBlY3RlZCBjb21tYW5kIGNvbnRpbnVhdGlvbiByZXF1ZXN0XG4iICk7CisJCQkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiB1bmV4cGVjdGVkIGNvbW1hbmQgY29udGludWF0aW9uIHJlcXVlc3RcbiIpOwogCQkJCXJldHVybiBSRVNQX0JBRDsKIAkJCX0KLQkJCWlmIChzb2NrZXRfd3JpdGUoICZpbWFwLT5idWYuc29jaywgIlxyXG4iLCAyICkgIT0gMikKKwkJCWlmIChzb2NrZXRfd3JpdGUoJmltYXAtPmJ1Zi5zb2NrLCAiXHJcbiIsIDIpICE9IDIpCiAJCQkJcmV0dXJuIFJFU1BfQkFEOwogCQkJaWYgKCFjbWRwLT5jYi5jb250KQogCQkJCWltYXAtPmxpdGVyYWxfcGVuZGluZyA9IDA7CiAJCQlpZiAoIXRjbWQpCiAJCQkJcmV0dXJuIERSVl9PSzsKIAkJfSBlbHNlIHsKLQkJCXRhZyA9IGF0b2koIGFyZyApOworCQkJdGFnID0gYXRvaShhcmcpOwogCQkJZm9yIChwY21kcCA9ICZpbWFwLT5pbl9wcm9ncmVzczsgKGNtZHAgPSAqcGNtZHApOyBwY21kcCA9ICZjbWRwLT5uZXh0KQogCQkJCWlmIChjbWRwLT50YWcgPT0gdGFnKQogCQkJCQlnb3RvIGdvdHRhZzsKLQkJCWZwcmludGYoIHN0ZGVyciwgIklNQVAgZXJyb3I6IHVuZXhwZWN0ZWQgdGFnICVzXG4iLCBhcmcgKTsKKwkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5leHBlY3RlZCB0YWcgJXNcbiIsIGFyZyk7CiAJCQlyZXR1cm4gUkVTUF9CQUQ7Ci0JCSAgZ290dGFnOgorCQlnb3R0YWc6CiAJCQlpZiAoISgqcGNtZHAgPSBjbWRwLT5uZXh0KSkKIAkJCQlpbWFwLT5pbl9wcm9ncmVzc19hcHBlbmQgPSBwY21kcDsKIAkJCWltYXAtPm51bV9pbl9wcm9ncmVzcy0tOwogCQkJaWYgKGNtZHAtPmNiLmNvbnQgfHwgY21kcC0+Y2IuZGF0YSkKIAkJCQlpbWFwLT5saXRlcmFsX3BlbmRpbmcgPSAwOwotCQkJYXJnID0gbmV4dF9hcmcoICZjbWQgKTsKLQkJCWlmICghc3RyY21wKCAiT0siLCBhcmcgKSkKKwkJCWFyZyA9IG5leHRfYXJnKCZjbWQpOworCQkJaWYgKCFzdHJjbXAoIk9LIiwgYXJnKSkKIAkJCQlyZXNwID0gRFJWX09LOwogCQkJZWxzZSB7Ci0JCQkJaWYgKCFzdHJjbXAoICJOTyIsIGFyZyApKSB7Ci0JCQkJCWlmIChjbWRwLT5jYi5jcmVhdGUgJiYgY21kICYmIChjbWRwLT5jYi50cnljcmVhdGUgfHwgIW1lbWNtcCggY21kLCAiW1RSWUNSRUFURV0iLCAxMSApKSkgeyAvKiBTRUxFQ1QsIEFQUEVORCBvciBVSUQgQ09QWSAqLwotCQkJCQkJcCA9IHN0cmNociggY21kcC0+Y21kLCAnIicgKTsKLQkJCQkJCWlmICghaXNzdWVfaW1hcF9jbWQoIGN0eCwgTlVMTCwgIkNSRUFURSBcIiUuKnNcIiIsIHN0cmNociggcCArIDEsICciJyApIC0gcCArIDEsIHAgKSkgeworCQkJCWlmICghc3RyY21wKCJOTyIsIGFyZykpIHsKKwkJCQkJaWYgKGNtZHAtPmNiLmNyZWF0ZSAmJiBjbWQgJiYgKGNtZHAtPmNiLnRyeWNyZWF0ZSB8fCAhbWVtY21wKGNtZCwgIltUUllDUkVBVEVdIiwgMTEpKSkgeyAvKiBTRUxFQ1QsIEFQUEVORCBvciBVSUQgQ09QWSAqLworCQkJCQkJcCA9IHN0cmNocihjbWRwLT5jbWQsICciJyk7CisJCQkJCQlpZiAoIWlzc3VlX2ltYXBfY21kKGN0eCwgTlVMTCwgIkNSRUFURSBcIiUuKnNcIiIsIHN0cmNocihwICsgMSwgJyInKSAtIHAgKyAxLCBwKSkgewogCQkJCQkJCXJlc3AgPSBSRVNQX0JBRDsKIAkJCQkJCQlnb3RvIG5vcm1hbDsKIAkJCQkJCX0KIAkJCQkJCS8qIG5vdCB3YWl0aW5nIGhlcmUgdmlvbGF0ZXMgdGhlIHNwZWMsIGJ1dCBhIHNlcnZlciB0aGF0IGRvZXMgbm90CiAJCQkJCQkgICBncm9rIHRoaXMgbm9uZXRoZWxlc3MgdmlvbGF0ZXMgaXQgdG9vLiAqLwogCQkJCQkJY21kcC0+Y2IuY3JlYXRlID0gMDsKLQkJCQkJCWlmICghKG5jbWRwID0gaXNzdWVfaW1hcF9jbWQoIGN0eCwgJmNtZHAtPmNiLCAiJXMiLCBjbWRwLT5jbWQgKSkpIHsKKwkJCQkJCWlmICghKG5jbWRwID0gaXNzdWVfaW1hcF9jbWQoY3R4LCAmY21kcC0+Y2IsICIlcyIsIGNtZHAtPmNtZCkpKSB7CiAJCQkJCQkJcmVzcCA9IFJFU1BfQkFEOwogCQkJCQkJCWdvdG8gbm9ybWFsOwogCQkJCQkJfQotCQkJCQkJZnJlZSggY21kcC0+Y21kICk7Ci0JCQkJCQlmcmVlKCBjbWRwICk7CisJCQkJCQlmcmVlKGNtZHAtPmNtZCk7CisJCQkJCQlmcmVlKGNtZHApOwogCQkJCQkJaWYgKCF0Y21kKQogCQkJCQkJCXJldHVybiAwOwkvKiBpZ25vcmVkICovCiAJCQkJCQlpZiAoY21kcCA9PSB0Y21kKQpAQCAtODQ2LDIxICs5MzIsMjEgQEAKIAkJCQkJCWNvbnRpbnVlOwogCQkJCQl9CiAJCQkJCXJlc3AgPSBSRVNQX05POwotCQkJCX0gZWxzZSAvKmlmICghc3RyY21wKCAiQkFEIiwgYXJnICkpKi8KKwkJCQl9IGVsc2UgLyppZiAoIXN0cmNtcCgiQkFEIiwgYXJnKSkqLwogCQkJCQlyZXNwID0gUkVTUF9CQUQ7Ci0JCQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBjb21tYW5kICclcycgcmV0dXJuZWQgcmVzcG9uc2UgKCVzKSAtICVzXG4iLAotCQkJCQkgbWVtY21wIChjbWRwLT5jbWQsICJMT0dJTiIsIDUpID8KKwkJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgY29tbWFuZCAnJXMnIHJldHVybmVkIHJlc3BvbnNlICglcykgLSAlc1xuIiwKKwkJCQkJIG1lbWNtcChjbWRwLT5jbWQsICJMT0dJTiIsIDUpID8KIAkJCQkJCQljbWRwLT5jbWQgOiAiTE9HSU4gPHVzZXI+IDxwYXNzPiIsCiAJCQkJCQkJYXJnLCBjbWQgPyBjbWQgOiAiIik7CiAJCQl9Ci0JCQlpZiAoKHJlc3AyID0gcGFyc2VfcmVzcG9uc2VfY29kZSggY3R4LCAmY21kcC0+Y2IsIGNtZCApKSA+IHJlc3ApCisJCQlpZiAoKHJlc3AyID0gcGFyc2VfcmVzcG9uc2VfY29kZShjdHgsICZjbWRwLT5jYiwgY21kKSkgPiByZXNwKQogCQkJCXJlc3AgPSByZXNwMjsKLQkJICBub3JtYWw6CisJCW5vcm1hbDoKIAkJCWlmIChjbWRwLT5jYi5kb25lKQotCQkJCWNtZHAtPmNiLmRvbmUoIGN0eCwgY21kcCwgcmVzcCApOwotCQkJZnJlZSggY21kcC0+Y2IuZGF0YSApOwotCQkJZnJlZSggY21kcC0+Y21kICk7Ci0JCQlmcmVlKCBjbWRwICk7CisJCQkJY21kcC0+Y2IuZG9uZShjdHgsIGNtZHAsIHJlc3ApOworCQkJZnJlZShjbWRwLT5jYi5kYXRhKTsKKwkJCWZyZWUoY21kcC0+Y21kKTsKKwkJCWZyZWUoY21kcCk7CiAJCQlpZiAoIXRjbWQgfHwgdGNtZCA9PSBjbWRwKQogCQkJCXJldHVybiByZXNwOwogCQl9CkBAIC04NjgsMTcwICs5NTQsMTg0IEBACiAJLyogbm90IHJlYWNoZWQgKi8KIH0KIAotc3RhdGljIHZvaWQKLWltYXBfY2xvc2Vfc2VydmVyKCBpbWFwX3N0b3JlX3QgKmljdHggKQorc3RhdGljIHZvaWQgaW1hcF9jbG9zZV9zZXJ2ZXIoc3RydWN0IGltYXBfc3RvcmUgKmljdHgpCiB7Ci0JaW1hcF90ICppbWFwID0gaWN0eC0+aW1hcDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcCA9IGljdHgtPmltYXA7CiAKIAlpZiAoaW1hcC0+YnVmLnNvY2suZmQgIT0gLTEpIHsKLQkJaW1hcF9leGVjKCBpY3R4LCBOVUxMLCAiTE9HT1VUIiApOwotCQljbG9zZSggaW1hcC0+YnVmLnNvY2suZmQgKTsKKwkJaW1hcF9leGVjKGljdHgsIE5VTEwsICJMT0dPVVQiKTsKKwkJc29ja2V0X3NodXRkb3duKCZpbWFwLT5idWYuc29jayk7CiAJfQotCWZyZWVfbGlzdCggaW1hcC0+bnNfcGVyc29uYWwgKTsKLQlmcmVlX2xpc3QoIGltYXAtPm5zX290aGVyICk7Ci0JZnJlZV9saXN0KCBpbWFwLT5uc19zaGFyZWQgKTsKLQlmcmVlKCBpbWFwICk7CisJZnJlZV9saXN0KGltYXAtPm5zX3BlcnNvbmFsKTsKKwlmcmVlX2xpc3QoaW1hcC0+bnNfb3RoZXIpOworCWZyZWVfbGlzdChpbWFwLT5uc19zaGFyZWQpOworCWZyZWUoaW1hcCk7CiB9CiAKLXN0YXRpYyB2b2lkCi1pbWFwX2Nsb3NlX3N0b3JlKCBzdG9yZV90ICpjdHggKQorc3RhdGljIHZvaWQgaW1hcF9jbG9zZV9zdG9yZShzdHJ1Y3Qgc3RvcmUgKmN0eCkKIHsKLQlpbWFwX2Nsb3NlX3NlcnZlciggKGltYXBfc3RvcmVfdCAqKWN0eCApOwotCWZyZWVfZ2VuZXJpY19tZXNzYWdlcyggY3R4LT5tc2dzICk7Ci0JZnJlZSggY3R4ICk7CisJaW1hcF9jbG9zZV9zZXJ2ZXIoKHN0cnVjdCBpbWFwX3N0b3JlICopY3R4KTsKKwlmcmVlX2dlbmVyaWNfbWVzc2FnZXMoY3R4LT5tc2dzKTsKKwlmcmVlKGN0eCk7CiB9CiAKLXN0YXRpYyBzdG9yZV90ICoKLWltYXBfb3Blbl9zdG9yZSggaW1hcF9zZXJ2ZXJfY29uZl90ICpzcnZjICkKK3N0YXRpYyBzdHJ1Y3Qgc3RvcmUgKmltYXBfb3Blbl9zdG9yZShzdHJ1Y3QgaW1hcF9zZXJ2ZXJfY29uZiAqc3J2YykKIHsKLQlpbWFwX3N0b3JlX3QgKmN0eDsKLQlpbWFwX3QgKmltYXA7CisJc3RydWN0IGltYXBfc3RvcmUgKmN0eDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcDsKIAljaGFyICphcmcsICpyc3A7CiAJc3RydWN0IGhvc3RlbnQgKmhlOwogCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwogCWludCBzLCBhWzJdLCBwcmVhdXRoOwogCXBpZF90IHBpZDsKIAotCWN0eCA9IHhjYWxsb2MoIHNpemVvZigqY3R4KSwgMSApOworCWN0eCA9IHhjYWxsb2Moc2l6ZW9mKCpjdHgpLCAxKTsKIAotCWN0eC0+aW1hcCA9IGltYXAgPSB4Y2FsbG9jKCBzaXplb2YoKmltYXApLCAxICk7CisJY3R4LT5pbWFwID0gaW1hcCA9IHhjYWxsb2Moc2l6ZW9mKCppbWFwKSwgMSk7CiAJaW1hcC0+YnVmLnNvY2suZmQgPSAtMTsKIAlpbWFwLT5pbl9wcm9ncmVzc19hcHBlbmQgPSAmaW1hcC0+aW5fcHJvZ3Jlc3M7CiAKIAkvKiBvcGVuIGNvbm5lY3Rpb24gdG8gSU1BUCBzZXJ2ZXIgKi8KIAogCWlmIChzcnZjLT50dW5uZWwpIHsKLQkJaW1hcF9pbmZvKCAiU3RhcnRpbmcgdHVubmVsICclcycuLi4gIiwgc3J2Yy0+dHVubmVsICk7CisJCWltYXBfaW5mbygiU3RhcnRpbmcgdHVubmVsICclcycuLi4gIiwgc3J2Yy0+dHVubmVsKTsKIAotCQlpZiAoc29ja2V0cGFpciggUEZfVU5JWCwgU09DS19TVFJFQU0sIDAsIGEgKSkgewotCQkJcGVycm9yKCAic29ja2V0cGFpciIgKTsKLQkJCWV4aXQoIDEgKTsKKwkJaWYgKHNvY2tldHBhaXIoUEZfVU5JWCwgU09DS19TVFJFQU0sIDAsIGEpKSB7CisJCQlwZXJyb3IoInNvY2tldHBhaXIiKTsKKwkJCWV4aXQoMSk7CiAJCX0KIAogCQlwaWQgPSBmb3JrKCk7CiAJCWlmIChwaWQgPCAwKQotCQkJX2V4aXQoIDEyNyApOworCQkJX2V4aXQoMTI3KTsKIAkJaWYgKCFwaWQpIHsKLQkJCWlmIChkdXAyKCBhWzBdLCAwICkgPT0gLTEgfHwgZHVwMiggYVswXSwgMSApID09IC0xKQotCQkJCV9leGl0KCAxMjcgKTsKLQkJCWNsb3NlKCBhWzBdICk7Ci0JCQljbG9zZSggYVsxXSApOwotCQkJZXhlY2woICIvYmluL3NoIiwgInNoIiwgIi1jIiwgc3J2Yy0+dHVubmVsLCBOVUxMICk7Ci0JCQlfZXhpdCggMTI3ICk7CisJCQlpZiAoZHVwMihhWzBdLCAwKSA9PSAtMSB8fCBkdXAyKGFbMF0sIDEpID09IC0xKQorCQkJCV9leGl0KDEyNyk7CisJCQljbG9zZShhWzBdKTsKKwkJCWNsb3NlKGFbMV0pOworCQkJZXhlY2woIi9iaW4vc2giLCAic2giLCAiLWMiLCBzcnZjLT50dW5uZWwsIE5VTEwpOworCQkJX2V4aXQoMTI3KTsKIAkJfQogCi0JCWNsb3NlIChhWzBdKTsKKwkJY2xvc2UoYVswXSk7CiAKIAkJaW1hcC0+YnVmLnNvY2suZmQgPSBhWzFdOwogCi0JCWltYXBfaW5mbyggIm9rXG4iICk7CisJCWltYXBfaW5mbygib2tcbiIpOwogCX0gZWxzZSB7Ci0JCW1lbXNldCggJmFkZHIsIDAsIHNpemVvZihhZGRyKSApOwotCQlhZGRyLnNpbl9wb3J0ID0gaHRvbnMoIHNydmMtPnBvcnQgKTsKKwkJbWVtc2V0KCZhZGRyLCAwLCBzaXplb2YoYWRkcikpOworCQlhZGRyLnNpbl9wb3J0ID0gaHRvbnMoc3J2Yy0+cG9ydCk7CiAJCWFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAKLQkJaW1hcF9pbmZvKCAiUmVzb2x2aW5nICVzLi4uICIsIHNydmMtPmhvc3QgKTsKLQkJaGUgPSBnZXRob3N0YnluYW1lKCBzcnZjLT5ob3N0ICk7CisJCWltYXBfaW5mbygiUmVzb2x2aW5nICVzLi4uICIsIHNydmMtPmhvc3QpOworCQloZSA9IGdldGhvc3RieW5hbWUoc3J2Yy0+aG9zdCk7CiAJCWlmICghaGUpIHsKLQkJCXBlcnJvciggImdldGhvc3RieW5hbWUiICk7CisJCQlwZXJyb3IoImdldGhvc3RieW5hbWUiKTsKIAkJCWdvdG8gYmFpbDsKIAkJfQotCQlpbWFwX2luZm8oICJva1xuIiApOworCQlpbWFwX2luZm8oIm9rXG4iKTsKIAogCQlhZGRyLnNpbl9hZGRyLnNfYWRkciA9ICooKGludCAqKSBoZS0+aF9hZGRyX2xpc3RbMF0pOwogCi0JCXMgPSBzb2NrZXQoIFBGX0lORVQsIFNPQ0tfU1RSRUFNLCAwICk7CisJCXMgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOwogCi0JCWltYXBfaW5mbyggIkNvbm5lY3RpbmcgdG8gJXM6JWh1Li4uICIsIGluZXRfbnRvYSggYWRkci5zaW5fYWRkciApLCBudG9ocyggYWRkci5zaW5fcG9ydCApICk7Ci0JCWlmIChjb25uZWN0KCBzLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSApKSB7Ci0JCQljbG9zZSggcyApOwotCQkJcGVycm9yKCAiY29ubmVjdCIgKTsKKwkJaW1hcF9pbmZvKCJDb25uZWN0aW5nIHRvICVzOiVodS4uLiAiLCBpbmV0X250b2EoYWRkci5zaW5fYWRkciksIG50b2hzKGFkZHIuc2luX3BvcnQpKTsKKwkJaWYgKGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkcikpKSB7CisJCQljbG9zZShzKTsKKwkJCXBlcnJvcigiY29ubmVjdCIpOwogCQkJZ290byBiYWlsOwogCQl9Ci0JCWltYXBfaW5mbyggIm9rXG4iICk7CiAKIAkJaW1hcC0+YnVmLnNvY2suZmQgPSBzOwogCisJCWlmIChzcnZjLT51c2Vfc3NsICYmCisJCSAgICBzc2xfc29ja2V0X2Nvbm5lY3QoJmltYXAtPmJ1Zi5zb2NrLCAwLCBzcnZjLT5zc2xfdmVyaWZ5KSkgeworCQkJY2xvc2Uocyk7CisJCQlnb3RvIGJhaWw7CisJCX0KKwkJaW1hcF9pbmZvKCJva1xuIik7CiAJfQogCiAJLyogcmVhZCB0aGUgZ3JlZXRpbmcgc3RyaW5nICovCi0JaWYgKGJ1ZmZlcl9nZXRzKCAmaW1hcC0+YnVmLCAmcnNwICkpIHsKLQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBlcnJvcjogbm8gZ3JlZXRpbmcgcmVzcG9uc2VcbiIgKTsKKwlpZiAoYnVmZmVyX2dldHMoJmltYXAtPmJ1ZiwgJnJzcCkpIHsKKwkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiBubyBncmVldGluZyByZXNwb25zZVxuIik7CiAJCWdvdG8gYmFpbDsKIAl9Ci0JYXJnID0gbmV4dF9hcmcoICZyc3AgKTsKLQlpZiAoIWFyZyB8fCAqYXJnICE9ICcqJyB8fCAoYXJnID0gbmV4dF9hcmcoICZyc3AgKSkgPT0gTlVMTCkgewotCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBpbnZhbGlkIGdyZWV0aW5nIHJlc3BvbnNlXG4iICk7CisJYXJnID0gbmV4dF9hcmcoJnJzcCk7CisJaWYgKCFhcmcgfHwgKmFyZyAhPSAnKicgfHwgKGFyZyA9IG5leHRfYXJnKCZyc3ApKSA9PSBOVUxMKSB7CisJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogaW52YWxpZCBncmVldGluZyByZXNwb25zZVxuIik7CiAJCWdvdG8gYmFpbDsKIAl9CiAJcHJlYXV0aCA9IDA7Ci0JaWYgKCFzdHJjbXAoICJQUkVBVVRIIiwgYXJnICkpCisJaWYgKCFzdHJjbXAoIlBSRUFVVEgiLCBhcmcpKQogCQlwcmVhdXRoID0gMTsKLQllbHNlIGlmIChzdHJjbXAoICJPSyIsIGFyZyApICE9IDApIHsKLQkJZnByaW50Ziggc3RkZXJyLCAiSU1BUCBlcnJvcjogdW5rbm93biBncmVldGluZyByZXNwb25zZVxuIiApOworCWVsc2UgaWYgKHN0cmNtcCgiT0siLCBhcmcpICE9IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJJTUFQIGVycm9yOiB1bmtub3duIGdyZWV0aW5nIHJlc3BvbnNlXG4iKTsKIAkJZ290byBiYWlsOwogCX0KLQlwYXJzZV9yZXNwb25zZV9jb2RlKCBjdHgsIE5VTEwsIHJzcCApOwotCWlmICghaW1hcC0+Y2FwcyAmJiBpbWFwX2V4ZWMoIGN0eCwgTlVMTCwgIkNBUEFCSUxJVFkiICkgIT0gUkVTUF9PSykKKwlwYXJzZV9yZXNwb25zZV9jb2RlKGN0eCwgTlVMTCwgcnNwKTsKKwlpZiAoIWltYXAtPmNhcHMgJiYgaW1hcF9leGVjKGN0eCwgTlVMTCwgIkNBUEFCSUxJVFkiKSAhPSBSRVNQX09LKQogCQlnb3RvIGJhaWw7CiAKIAlpZiAoIXByZWF1dGgpIHsKLQotCQlpbWFwX2luZm8gKCJMb2dnaW5nIGluLi4uXG4iKTsKKyNpZm5kZWYgTk9fT1BFTlNTTAorCQlpZiAoIXNydmMtPnVzZV9zc2wgJiYgQ0FQKFNUQVJUVExTKSkgeworCQkJaWYgKGltYXBfZXhlYyhjdHgsIDAsICJTVEFSVFRMUyIpICE9IFJFU1BfT0spCisJCQkJZ290byBiYWlsOworCQkJaWYgKHNzbF9zb2NrZXRfY29ubmVjdCgmaW1hcC0+YnVmLnNvY2ssIDEsCisJCQkJCSAgICAgICBzcnZjLT5zc2xfdmVyaWZ5KSkKKwkJCQlnb3RvIGJhaWw7CisJCQkvKiBjYXBhYmlsaXRpZXMgbWF5IGhhdmUgY2hhbmdlZCwgc28gZ2V0IHRoZSBuZXcgY2FwYWJpbGl0aWVzICovCisJCQlpZiAoaW1hcF9leGVjKGN0eCwgMCwgIkNBUEFCSUxJVFkiKSAhPSBSRVNQX09LKQorCQkJCWdvdG8gYmFpbDsKKwkJfQorI2VuZGlmCisJCWltYXBfaW5mbygiTG9nZ2luZyBpbi4uLlxuIik7CiAJCWlmICghc3J2Yy0+dXNlcikgewotCQkJZnByaW50Ziggc3RkZXJyLCAiU2tpcHBpbmcgc2VydmVyICVzLCBubyB1c2VyXG4iLCBzcnZjLT5ob3N0ICk7CisJCQlmcHJpbnRmKHN0ZGVyciwgIlNraXBwaW5nIHNlcnZlciAlcywgbm8gdXNlclxuIiwgc3J2Yy0+aG9zdCk7CiAJCQlnb3RvIGJhaWw7CiAJCX0KIAkJaWYgKCFzcnZjLT5wYXNzKSB7CiAJCQljaGFyIHByb21wdFs4MF07Ci0JCQlzcHJpbnRmKCBwcm9tcHQsICJQYXNzd29yZCAoJXNAJXMpOiAiLCBzcnZjLT51c2VyLCBzcnZjLT5ob3N0ICk7Ci0JCQlhcmcgPSBnZXRwYXNzKCBwcm9tcHQgKTsKKwkJCXNwcmludGYocHJvbXB0LCAiUGFzc3dvcmQgKCVzQCVzKTogIiwgc3J2Yy0+dXNlciwgc3J2Yy0+aG9zdCk7CisJCQlhcmcgPSBnZXRwYXNzKHByb21wdCk7CiAJCQlpZiAoIWFyZykgewotCQkJCXBlcnJvciggImdldHBhc3MiICk7Ci0JCQkJZXhpdCggMSApOworCQkJCXBlcnJvcigiZ2V0cGFzcyIpOworCQkJCWV4aXQoMSk7CiAJCQl9CiAJCQlpZiAoISphcmcpIHsKLQkJCQlmcHJpbnRmKCBzdGRlcnIsICJTa2lwcGluZyBhY2NvdW50ICVzQCVzLCBubyBwYXNzd29yZFxuIiwgc3J2Yy0+dXNlciwgc3J2Yy0+aG9zdCApOworCQkJCWZwcmludGYoc3RkZXJyLCAiU2tpcHBpbmcgYWNjb3VudCAlc0Alcywgbm8gcGFzc3dvcmRcbiIsIHNydmMtPnVzZXIsIHNydmMtPmhvc3QpOwogCQkJCWdvdG8gYmFpbDsKIAkJCX0KIAkJCS8qCiAJCQkgKiBnZXRwYXNzKCkgcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBzdGF0aWMgYnVmZmVyLiAgbWFrZSBhIGNvcHkKIAkJCSAqIGZvciBsb25nIHRlcm0gc3RvcmFnZS4KIAkJCSAqLwotCQkJc3J2Yy0+cGFzcyA9IHhzdHJkdXAoIGFyZyApOworCQkJc3J2Yy0+cGFzcyA9IHhzdHJkdXAoYXJnKTsKIAkJfQogCQlpZiAoQ0FQKE5PTE9HSU4pKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJTa2lwcGluZyBhY2NvdW50ICVzQCVzLCBzZXJ2ZXIgZm9yYmlkcyBMT0dJTlxuIiwgc3J2Yy0+dXNlciwgc3J2Yy0+aG9zdCApOworCQkJZnByaW50ZihzdGRlcnIsICJTa2lwcGluZyBhY2NvdW50ICVzQCVzLCBzZXJ2ZXIgZm9yYmlkcyBMT0dJTlxuIiwgc3J2Yy0+dXNlciwgc3J2Yy0+aG9zdCk7CiAJCQlnb3RvIGJhaWw7CiAJCX0KLQkJaW1hcF93YXJuKCAiKioqIElNQVAgV2FybmluZyAqKiogUGFzc3dvcmQgaXMgYmVpbmcgc2VudCBpbiB0aGUgY2xlYXJcbiIgKTsKLQkJaWYgKGltYXBfZXhlYyggY3R4LCBOVUxMLCAiTE9HSU4gXCIlc1wiIFwiJXNcIiIsIHNydmMtPnVzZXIsIHNydmMtPnBhc3MgKSAhPSBSRVNQX09LKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJJTUFQIGVycm9yOiBMT0dJTiBmYWlsZWRcbiIgKTsKKwkJaWYgKCFpbWFwLT5idWYuc29jay5zc2wpCisJCQlpbWFwX3dhcm4oIioqKiBJTUFQIFdhcm5pbmcgKioqIFBhc3N3b3JkIGlzIGJlaW5nICIKKwkJCQkgICJzZW50IGluIHRoZSBjbGVhclxuIik7CisJCWlmIChpbWFwX2V4ZWMoY3R4LCBOVUxMLCAiTE9HSU4gXCIlc1wiIFwiJXNcIiIsIHNydmMtPnVzZXIsIHNydmMtPnBhc3MpICE9IFJFU1BfT0spIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogTE9HSU4gZmFpbGVkXG4iKTsKIAkJCWdvdG8gYmFpbDsKIAkJfQogCX0gLyogIXByZWF1dGggKi8KIAogCWN0eC0+cHJlZml4ID0gIiI7CiAJY3R4LT50cmFzaG5jID0gMTsKLQlyZXR1cm4gKHN0b3JlX3QgKiljdHg7CisJcmV0dXJuIChzdHJ1Y3Qgc3RvcmUgKiljdHg7CiAKLSAgYmFpbDoKLQlpbWFwX2Nsb3NlX3N0b3JlKCAmY3R4LT5nZW4gKTsKK2JhaWw6CisJaW1hcF9jbG9zZV9zdG9yZSgmY3R4LT5nZW4pOwogCXJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgaW50Ci1pbWFwX21ha2VfZmxhZ3MoIGludCBmbGFncywgY2hhciAqYnVmICkKK3N0YXRpYyBpbnQgaW1hcF9tYWtlX2ZsYWdzKGludCBmbGFncywgY2hhciAqYnVmKQogewogCWNvbnN0IGNoYXIgKnM7CiAJdW5zaWduZWQgaSwgZDsKQEAgLTEwNTAsMTEgKzExNTAsMTAgQEAKIAogI2RlZmluZSBUVUlETCA4CiAKLXN0YXRpYyBpbnQKLWltYXBfc3RvcmVfbXNnKCBzdG9yZV90ICpnY3R4LCBtc2dfZGF0YV90ICpkYXRhLCBpbnQgKnVpZCApCitzdGF0aWMgaW50IGltYXBfc3RvcmVfbXNnKHN0cnVjdCBzdG9yZSAqZ2N0eCwgc3RydWN0IG1zZ19kYXRhICpkYXRhLCBpbnQgKnVpZCkKIHsKLQlpbWFwX3N0b3JlX3QgKmN0eCA9IChpbWFwX3N0b3JlX3QgKilnY3R4OwotCWltYXBfdCAqaW1hcCA9IGN0eC0+aW1hcDsKKwlzdHJ1Y3QgaW1hcF9zdG9yZSAqY3R4ID0gKHN0cnVjdCBpbWFwX3N0b3JlICopZ2N0eDsKKwlzdHJ1Y3QgaW1hcCAqaW1hcCA9IGN0eC0+aW1hcDsKIAlzdHJ1Y3QgaW1hcF9jbWRfY2IgY2I7CiAJY2hhciAqZm1hcCwgKmJ1ZjsKIAljb25zdCBjaGFyICpwcmVmaXgsICpib3g7CkBAIC0xMDYyLDE0ICsxMTYxLDE0IEBACiAJaW50IHN0YXJ0LCBzYnJlYWsgPSAwLCBlYnJlYWsgPSAwOwogCWNoYXIgZmxhZ3N0clsxMjhdLCB0dWlkW1RVSURMICogMiArIDFdOwogCi0JbWVtc2V0KCAmY2IsIDAsIHNpemVvZihjYikgKTsKKwltZW1zZXQoJmNiLCAwLCBzaXplb2YoY2IpKTsKIAogCWZtYXAgPSBkYXRhLT5kYXRhOwogCWxlbiA9IGRhdGEtPmxlbjsKIAlub2NyID0gIWRhdGEtPmNybGY7CiAJZXh0cmEgPSAwLCBpID0gMDsKIAlpZiAoIUNBUChVSURQTFVTKSAmJiB1aWQpIHsKLQkgIG5sb29wOgorCW5sb29wOgogCQlzdGFydCA9IGk7CiAJCXdoaWxlIChpIDwgbGVuKQogCQkJaWYgKGZtYXBbaSsrXSA9PSAnXG4nKSB7CkBAIC0xMDc4LDE4ICsxMTc3LDE4IEBACiAJCQkJCXNicmVhayA9IGVicmVhayA9IGkgLSAyICsgbm9jcjsKIAkJCQkJZ290byBta3RpZDsKIAkJCQl9Ci0JCQkJaWYgKCFtZW1jbXAoIGZtYXAgKyBzdGFydCwgIlgtVFVJRDogIiwgOCApKSB7CisJCQkJaWYgKCFtZW1jbXAoZm1hcCArIHN0YXJ0LCAiWC1UVUlEOiAiLCA4KSkgewogCQkJCQlleHRyYSAtPSAoZWJyZWFrID0gaSkgLSAoc2JyZWFrID0gc3RhcnQpICsgbm9jcjsKIAkJCQkJZ290byBta3RpZDsKIAkJCQl9CiAJCQkJZ290byBubG9vcDsKIAkJCX0KIAkJLyogaW52YWxpZCBtZXNzYWdlICovCi0JCWZyZWUoIGZtYXAgKTsKKwkJZnJlZShmbWFwKTsKIAkJcmV0dXJuIERSVl9NU0dfQkFEOwotCSBta3RpZDoKKwlta3RpZDoKIAkJZm9yIChqID0gMDsgaiA8IFRVSURMOyBqKyspCi0JCQlzcHJpbnRmKCB0dWlkICsgaiAqIDIsICIlMDJ4IiwgYXJjNF9nZXRieXRlKCkgKTsKKwkJCXNwcmludGYodHVpZCArIGogKiAyLCAiJTAyeCIsIGFyYzRfZ2V0Ynl0ZSgpKTsKIAkJZXh0cmEgKz0gOCArIFRVSURMICogMiArIDI7CiAJfQogCWlmIChub2NyKQpAQCAtMTA5OCw3ICsxMTk3LDcgQEAKIAkJCQlleHRyYSsrOwogCiAJY2IuZGxlbiA9IGxlbiArIGV4dHJhOwotCWJ1ZiA9IGNiLmRhdGEgPSB4bWFsbG9jKCBjYi5kbGVuICk7CisJYnVmID0gY2IuZGF0YSA9IHhtYWxsb2MoY2IuZGxlbik7CiAJaSA9IDA7CiAJaWYgKCFDQVAoVUlEUExVUykgJiYgdWlkKSB7CiAJCWlmIChub2NyKSB7CkBAIC0xMTA5LDEyICsxMjA4LDEyIEBACiAJCQkJfSBlbHNlCiAJCQkJCSpidWYrKyA9IGZtYXBbaV07CiAJCX0gZWxzZSB7Ci0JCQltZW1jcHkoIGJ1ZiwgZm1hcCwgc2JyZWFrICk7CisJCQltZW1jcHkoYnVmLCBmbWFwLCBzYnJlYWspOwogCQkJYnVmICs9IHNicmVhazsKIAkJfQotCQltZW1jcHkoIGJ1ZiwgIlgtVFVJRDogIiwgOCApOworCQltZW1jcHkoYnVmLCAiWC1UVUlEOiAiLCA4KTsKIAkJYnVmICs9IDg7Ci0JCW1lbWNweSggYnVmLCB0dWlkLCBUVUlETCAqIDIgKTsKKwkJbWVtY3B5KGJ1ZiwgdHVpZCwgVFVJREwgKiAyKTsKIAkJYnVmICs9IFRVSURMICogMjsKIAkJKmJ1ZisrID0gJ1xyJzsKIAkJKmJ1ZisrID0gJ1xuJzsKQEAgLTExMjgsMTMgKzEyMjcsMTMgQEAKIAkJCX0gZWxzZQogCQkJCSpidWYrKyA9IGZtYXBbaV07CiAJfSBlbHNlCi0JCW1lbWNweSggYnVmLCBmbWFwICsgaSwgbGVuIC0gaSApOworCQltZW1jcHkoYnVmLCBmbWFwICsgaSwgbGVuIC0gaSk7CiAKLQlmcmVlKCBmbWFwICk7CisJZnJlZShmbWFwKTsKIAogCWQgPSAwOwogCWlmIChkYXRhLT5mbGFncykgewotCQlkID0gaW1hcF9tYWtlX2ZsYWdzKCBkYXRhLT5mbGFncywgZmxhZ3N0ciApOworCQlkID0gaW1hcF9tYWtlX2ZsYWdzKGRhdGEtPmZsYWdzLCBmbGFnc3RyKTsKIAkJZmxhZ3N0cltkKytdID0gJyAnOwogCX0KIAlmbGFnc3RyW2RdID0gMDsKQEAgLTExNDcsMTEgKzEyNDYsMTEgQEAKIAkJCWltYXAtPmNhcHMgPSBpbWFwLT5yY2FwcyAmIH4oMSA8PCBMSVRFUkFMUExVUyk7CiAJfSBlbHNlIHsKIAkJYm94ID0gZ2N0eC0+bmFtZTsKLQkJcHJlZml4ID0gIXN0cmNtcCggYm94LCAiSU5CT1giICkgPyAiIiA6IGN0eC0+cHJlZml4OworCQlwcmVmaXggPSAhc3RyY21wKGJveCwgIklOQk9YIikgPyAiIiA6IGN0eC0+cHJlZml4OwogCQljYi5jcmVhdGUgPSAwOwogCX0KIAljYi5jdHggPSB1aWQ7Ci0JcmV0ID0gaW1hcF9leGVjX20oIGN0eCwgJmNiLCAiQVBQRU5EIFwiJXMlc1wiICVzIiwgcHJlZml4LCBib3gsIGZsYWdzdHIgKTsKKwlyZXQgPSBpbWFwX2V4ZWNfbShjdHgsICZjYiwgIkFQUEVORCBcIiVzJXNcIiAlcyIsIHByZWZpeCwgYm94LCBmbGFnc3RyKTsKIAlpbWFwLT5jYXBzID0gaW1hcC0+cmNhcHM7CiAJaWYgKHJldCAhPSBEUlZfT0spCiAJCXJldHVybiByZXQ7CkBAIC0xMTY1LDEzICsxMjY0LDExIEBACiAKICNkZWZpbmUgQ0hVTktTSVpFIDB4MTAwMAogCi1zdGF0aWMgaW50Ci1yZWFkX21lc3NhZ2UoIEZJTEUgKmYsIG1zZ19kYXRhX3QgKm1zZyApCitzdGF0aWMgaW50IHJlYWRfbWVzc2FnZShGSUxFICpmLCBzdHJ1Y3QgbXNnX2RhdGEgKm1zZykKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCiAJbWVtc2V0KG1zZywgMCwgc2l6ZW9mKCptc2cpKTsKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAogCWRvIHsKIAkJaWYgKHN0cmJ1Zl9mcmVhZCgmYnVmLCBDSFVOS1NJWkUsIGYpIDw9IDApCkBAIC0xMTgzLDggKzEyODAsNyBAQAogCXJldHVybiBtc2ctPmxlbjsKIH0KIAotc3RhdGljIGludAotY291bnRfbWVzc2FnZXMoIG1zZ19kYXRhX3QgKm1zZyApCitzdGF0aWMgaW50IGNvdW50X21lc3NhZ2VzKHN0cnVjdCBtc2dfZGF0YSAqbXNnKQogewogCWludCBjb3VudCA9IDA7CiAJY2hhciAqcCA9IG1zZy0+ZGF0YTsKQEAgLTExOTQsNyArMTI5MCw3IEBACiAJCQljb3VudCsrOwogCQkJcCArPSA1OwogCQl9Ci0JCXAgPSBzdHJzdHIoIHArNSwgIlxuRnJvbSAiKTsKKwkJcCA9IHN0cnN0cihwKzUsICJcbkZyb20gIik7CiAJCWlmICghcCkKIAkJCWJyZWFrOwogCQlwKys7CkBAIC0xMjAyLDIyICsxMjk4LDIxIEBACiAJcmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgaW50Ci1zcGxpdF9tc2coIG1zZ19kYXRhX3QgKmFsbF9tc2dzLCBtc2dfZGF0YV90ICptc2csIGludCAqb2ZzICkKK3N0YXRpYyBpbnQgc3BsaXRfbXNnKHN0cnVjdCBtc2dfZGF0YSAqYWxsX21zZ3MsIHN0cnVjdCBtc2dfZGF0YSAqbXNnLCBpbnQgKm9mcykKIHsKIAljaGFyICpwLCAqZGF0YTsKIAotCW1lbXNldCggbXNnLCAwLCBzaXplb2YgKm1zZyApOworCW1lbXNldChtc2csIDAsIHNpemVvZiAqbXNnKTsKIAlpZiAoKm9mcyA+PSBhbGxfbXNncy0+bGVuKQogCQlyZXR1cm4gMDsKIAotCWRhdGEgPSAmYWxsX21zZ3MtPmRhdGFbICpvZnMgXTsKKwlkYXRhID0gJmFsbF9tc2dzLT5kYXRhWypvZnNdOwogCW1zZy0+bGVuID0gYWxsX21zZ3MtPmxlbiAtICpvZnM7CiAKIAlpZiAobXNnLT5sZW4gPCA1IHx8IHByZWZpeGNtcChkYXRhLCAiRnJvbSAiKSkKIAkJcmV0dXJuIDA7CiAKLQlwID0gc3RyY2hyKCBkYXRhLCAnXG4nICk7CisJcCA9IHN0cmNocihkYXRhLCAnXG4nKTsKIAlpZiAocCkgewogCQlwID0gJnBbMV07CiAJCW1zZy0+bGVuIC09IHAtZGF0YTsKQEAgLTEyMjUsNyArMTMyMCw3IEBACiAJCWRhdGEgPSBwOwogCX0KIAotCXAgPSBzdHJzdHIoIGRhdGEsICJcbkZyb20gIiApOworCXAgPSBzdHJzdHIoZGF0YSwgIlxuRnJvbSAiKTsKIAlpZiAocCkKIAkJbXNnLT5sZW4gPSAmcFsxXSAtIGRhdGE7CiAKQEAgLTEyMzQsMjQgKzEzMjksMjQgQEAKIAlyZXR1cm4gMTsKIH0KIAotc3RhdGljIGltYXBfc2VydmVyX2NvbmZfdCBzZXJ2ZXIgPQoteworc3RhdGljIHN0cnVjdCBpbWFwX3NlcnZlcl9jb25mIHNlcnZlciA9IHsKIAlOVUxMLAkvKiBuYW1lICovCiAJTlVMTCwJLyogdHVubmVsICovCiAJTlVMTCwJLyogaG9zdCAqLwogCTAsCS8qIHBvcnQgKi8KIAlOVUxMLAkvKiB1c2VyICovCiAJTlVMTCwJLyogcGFzcyAqLworCTAsICAgCS8qIHVzZV9zc2wgKi8KKwkxLCAgIAkvKiBzc2xfdmVyaWZ5ICovCiB9OwogCiBzdGF0aWMgY2hhciAqaW1hcF9mb2xkZXI7CiAKLXN0YXRpYyBpbnQKLWdpdF9pbWFwX2NvbmZpZyhjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqY2IpCitzdGF0aWMgaW50IGdpdF9pbWFwX2NvbmZpZyhjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqY2IpCiB7CiAJY2hhciBpbWFwX2tleVtdID0gImltYXAuIjsKIAotCWlmIChzdHJuY21wKCBrZXksIGltYXBfa2V5LCBzaXplb2YgaW1hcF9rZXkgLSAxICkpCisJaWYgKHN0cm5jbXAoa2V5LCBpbWFwX2tleSwgc2l6ZW9mIGltYXBfa2V5IC0gMSkpCiAJCXJldHVybiAwOwogCiAJaWYgKCF2YWwpCkBAIC0xMjU5LDkwICsxMzU0LDk2IEBACiAKIAlrZXkgKz0gc2l6ZW9mIGltYXBfa2V5IC0gMTsKIAotCWlmICghc3RyY21wKCAiZm9sZGVyIiwga2V5ICkpIHsKLQkJaW1hcF9mb2xkZXIgPSB4c3RyZHVwKCB2YWwgKTsKLQl9IGVsc2UgaWYgKCFzdHJjbXAoICJob3N0Iiwga2V5ICkpIHsKLQkJewotCQkJaWYgKCFwcmVmaXhjbXAodmFsLCAiaW1hcDoiKSkKLQkJCQl2YWwgKz0gNTsKLQkJCWlmICghc2VydmVyLnBvcnQpCi0JCQkJc2VydmVyLnBvcnQgPSAxNDM7CisJaWYgKCFzdHJjbXAoImZvbGRlciIsIGtleSkpIHsKKwkJaW1hcF9mb2xkZXIgPSB4c3RyZHVwKHZhbCk7CisJfSBlbHNlIGlmICghc3RyY21wKCJob3N0Iiwga2V5KSkgeworCQlpZiAoIXByZWZpeGNtcCh2YWwsICJpbWFwOiIpKQorCQkJdmFsICs9IDU7CisJCWVsc2UgaWYgKCFwcmVmaXhjbXAodmFsLCAiaW1hcHM6IikpIHsKKwkJCXZhbCArPSA2OworCQkJc2VydmVyLnVzZV9zc2wgPSAxOwogCQl9CiAJCWlmICghcHJlZml4Y21wKHZhbCwgIi8vIikpCiAJCQl2YWwgKz0gMjsKLQkJc2VydmVyLmhvc3QgPSB4c3RyZHVwKCB2YWwgKTsKLQl9Ci0JZWxzZSBpZiAoIXN0cmNtcCggInVzZXIiLCBrZXkgKSkKLQkJc2VydmVyLnVzZXIgPSB4c3RyZHVwKCB2YWwgKTsKLQllbHNlIGlmICghc3RyY21wKCAicGFzcyIsIGtleSApKQotCQlzZXJ2ZXIucGFzcyA9IHhzdHJkdXAoIHZhbCApOwotCWVsc2UgaWYgKCFzdHJjbXAoICJwb3J0Iiwga2V5ICkpCi0JCXNlcnZlci5wb3J0ID0gZ2l0X2NvbmZpZ19pbnQoIGtleSwgdmFsICk7Ci0JZWxzZSBpZiAoIXN0cmNtcCggInR1bm5lbCIsIGtleSApKQotCQlzZXJ2ZXIudHVubmVsID0geHN0cmR1cCggdmFsICk7CisJCXNlcnZlci5ob3N0ID0geHN0cmR1cCh2YWwpOworCX0gZWxzZSBpZiAoIXN0cmNtcCgidXNlciIsIGtleSkpCisJCXNlcnZlci51c2VyID0geHN0cmR1cCh2YWwpOworCWVsc2UgaWYgKCFzdHJjbXAoInBhc3MiLCBrZXkpKQorCQlzZXJ2ZXIucGFzcyA9IHhzdHJkdXAodmFsKTsKKwllbHNlIGlmICghc3RyY21wKCJwb3J0Iiwga2V5KSkKKwkJc2VydmVyLnBvcnQgPSBnaXRfY29uZmlnX2ludChrZXksIHZhbCk7CisJZWxzZSBpZiAoIXN0cmNtcCgidHVubmVsIiwga2V5KSkKKwkJc2VydmVyLnR1bm5lbCA9IHhzdHJkdXAodmFsKTsKKwllbHNlIGlmICghc3RyY21wKCJzc2x2ZXJpZnkiLCBrZXkpKQorCQlzZXJ2ZXIuc3NsX3ZlcmlmeSA9IGdpdF9jb25maWdfYm9vbChrZXksIHZhbCk7CiAJcmV0dXJuIDA7CiB9CiAKLWludAotbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7Ci0JbXNnX2RhdGFfdCBhbGxfbXNncywgbXNnOwotCXN0b3JlX3QgKmN0eCA9IE5VTEw7CisJc3RydWN0IG1zZ19kYXRhIGFsbF9tc2dzLCBtc2c7CisJc3RydWN0IHN0b3JlICpjdHggPSBOVUxMOwogCWludCB1aWQgPSAwOwogCWludCBvZnMgPSAwOwogCWludCByOwogCWludCB0b3RhbCwgbiA9IDA7CisJaW50IG5vbmdpdF9vazsKIAogCS8qIGluaXQgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yICovCiAJYXJjNF9pbml0KCk7CiAKKwlzZXR1cF9naXRfZGlyZWN0b3J5X2dlbnRseSgmbm9uZ2l0X29rKTsKIAlnaXRfY29uZmlnKGdpdF9pbWFwX2NvbmZpZywgTlVMTCk7CiAKKwlpZiAoIXNlcnZlci5wb3J0KQorCQlzZXJ2ZXIucG9ydCA9IHNlcnZlci51c2Vfc3NsID8gOTkzIDogMTQzOworCiAJaWYgKCFpbWFwX2ZvbGRlcikgewotCQlmcHJpbnRmKCBzdGRlcnIsICJubyBpbWFwIHN0b3JlIHNwZWNpZmllZFxuIiApOworCQlmcHJpbnRmKHN0ZGVyciwgIm5vIGltYXAgc3RvcmUgc3BlY2lmaWVkXG4iKTsKIAkJcmV0dXJuIDE7CiAJfQogCWlmICghc2VydmVyLmhvc3QpIHsKIAkJaWYgKCFzZXJ2ZXIudHVubmVsKSB7Ci0JCQlmcHJpbnRmKCBzdGRlcnIsICJubyBpbWFwIGhvc3Qgc3BlY2lmaWVkXG4iICk7CisJCQlmcHJpbnRmKHN0ZGVyciwgIm5vIGltYXAgaG9zdCBzcGVjaWZpZWRcbiIpOwogCQkJcmV0dXJuIDE7CiAJCX0KIAkJc2VydmVyLmhvc3QgPSAidHVubmVsIjsKIAl9CiAKIAkvKiByZWFkIHRoZSBtZXNzYWdlcyAqLwotCWlmICghcmVhZF9tZXNzYWdlKCBzdGRpbiwgJmFsbF9tc2dzICkpIHsKLQkJZnByaW50ZihzdGRlcnIsIm5vdGhpbmcgdG8gc2VuZFxuIik7CisJaWYgKCFyZWFkX21lc3NhZ2Uoc3RkaW4sICZhbGxfbXNncykpIHsKKwkJZnByaW50ZihzdGRlcnIsICJub3RoaW5nIHRvIHNlbmRcbiIpOwogCQlyZXR1cm4gMTsKIAl9CiAKLQl0b3RhbCA9IGNvdW50X21lc3NhZ2VzKCAmYWxsX21zZ3MgKTsKKwl0b3RhbCA9IGNvdW50X21lc3NhZ2VzKCZhbGxfbXNncyk7CiAJaWYgKCF0b3RhbCkgewotCQlmcHJpbnRmKHN0ZGVyciwibm8gbWVzc2FnZXMgdG8gc2VuZFxuIik7CisJCWZwcmludGYoc3RkZXJyLCAibm8gbWVzc2FnZXMgdG8gc2VuZFxuIik7CiAJCXJldHVybiAxOwogCX0KIAogCS8qIHdyaXRlIGl0IHRvIHRoZSBpbWFwIHNlcnZlciAqLwotCWN0eCA9IGltYXBfb3Blbl9zdG9yZSggJnNlcnZlciApOworCWN0eCA9IGltYXBfb3Blbl9zdG9yZSgmc2VydmVyKTsKIAlpZiAoIWN0eCkgewotCQlmcHJpbnRmKCBzdGRlcnIsImZhaWxlZCB0byBvcGVuIHN0b3JlXG4iKTsKKwkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8gb3BlbiBzdG9yZVxuIik7CiAJCXJldHVybiAxOwogCX0KIAotCWZwcmludGYoIHN0ZGVyciwgInNlbmRpbmcgJWQgbWVzc2FnZSVzXG4iLCB0b3RhbCwgKHRvdGFsIT0xKT8icyI6IiIgKTsKKwlmcHJpbnRmKHN0ZGVyciwgInNlbmRpbmcgJWQgbWVzc2FnZSVzXG4iLCB0b3RhbCwgKHRvdGFsICE9IDEpID8gInMiIDogIiIpOwogCWN0eC0+bmFtZSA9IGltYXBfZm9sZGVyOwogCXdoaWxlICgxKSB7CiAJCXVuc2lnbmVkIHBlcmNlbnQgPSBuICogMTAwIC8gdG90YWw7Ci0JCWZwcmludGYoIHN0ZGVyciwgIiU0dSUlICglZC8lZCkgZG9uZVxyIiwgcGVyY2VudCwgbiwgdG90YWwgKTsKLQkJaWYgKCFzcGxpdF9tc2coICZhbGxfbXNncywgJm1zZywgJm9mcyApKQorCQlmcHJpbnRmKHN0ZGVyciwgIiU0dSUlICglZC8lZCkgZG9uZVxyIiwgcGVyY2VudCwgbiwgdG90YWwpOworCQlpZiAoIXNwbGl0X21zZygmYWxsX21zZ3MsICZtc2csICZvZnMpKQogCQkJYnJlYWs7Ci0JCXIgPSBpbWFwX3N0b3JlX21zZyggY3R4LCAmbXNnLCAmdWlkICk7Ci0JCWlmIChyICE9IERSVl9PSykgYnJlYWs7CisJCXIgPSBpbWFwX3N0b3JlX21zZyhjdHgsICZtc2csICZ1aWQpOworCQlpZiAociAhPSBEUlZfT0spCisJCQlicmVhazsKIAkJbisrOwogCX0KLQlmcHJpbnRmKCBzdGRlcnIsIlxuIiApOworCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKIAotCWltYXBfY2xvc2Vfc3RvcmUoIGN0eCApOworCWltYXBfY2xvc2Vfc3RvcmUoY3R4KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvaW5kZXgtcGFjay5jIGIvaW5kZXgtcGFjay5jCmluZGV4IGM5OWExYTEuLmMwYTNkOTcgMTAwNjQ0Ci0tLSBhL2luZGV4LXBhY2suYworKysgYi9pbmRleC1wYWNrLmMKQEAgLTY3LDcgKzY3LDcgQEAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGlucHV0X2J1ZmZlcls0MDk2XTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW5wdXRfb2Zmc2V0LCBpbnB1dF9sZW47CiBzdGF0aWMgb2ZmX3QgY29uc3VtZWRfYnl0ZXM7Ci1zdGF0aWMgU0hBX0NUWCBpbnB1dF9jdHg7CitzdGF0aWMgZ2l0X1NIQV9DVFggaW5wdXRfY3R4Owogc3RhdGljIHVpbnQzMl90IGlucHV0X2NyYzMyOwogc3RhdGljIGludCBpbnB1dF9mZCwgb3V0cHV0X2ZkLCBwYWNrX2ZkOwogCkBAIC0xMTksNyArMTE5LDcgQEAKIAlpZiAoaW5wdXRfb2Zmc2V0KSB7CiAJCWlmIChvdXRwdXRfZmQgPj0gMCkKIAkJCXdyaXRlX29yX2RpZShvdXRwdXRfZmQsIGlucHV0X2J1ZmZlciwgaW5wdXRfb2Zmc2V0KTsKLQkJU0hBMV9VcGRhdGUoJmlucHV0X2N0eCwgaW5wdXRfYnVmZmVyLCBpbnB1dF9vZmZzZXQpOworCQlnaXRfU0hBMV9VcGRhdGUoJmlucHV0X2N0eCwgaW5wdXRfYnVmZmVyLCBpbnB1dF9vZmZzZXQpOwogCQltZW1tb3ZlKGlucHV0X2J1ZmZlciwgaW5wdXRfYnVmZmVyICsgaW5wdXRfb2Zmc2V0LCBpbnB1dF9sZW4pOwogCQlpbnB1dF9vZmZzZXQgPSAwOwogCX0KQEAgLTE4OCw3ICsxODgsNyBAQAogCQlvdXRwdXRfZmQgPSAtMTsKIAkJcGFja19mZCA9IGlucHV0X2ZkOwogCX0KLQlTSEExX0luaXQoJmlucHV0X2N0eCk7CisJZ2l0X1NIQTFfSW5pdCgmaW5wdXRfY3R4KTsKIAlyZXR1cm4gcGFja19uYW1lOwogfQogCkBAIC0yMjEsMTcgKzIyMSwyMyBAQAogCWRpZSgicGFjayBoYXMgYmFkIG9iamVjdCBhdCBvZmZzZXQgJWx1OiAlcyIsIG9mZnNldCwgYnVmKTsKIH0KIAorc3RhdGljIHZvaWQgZnJlZV9iYXNlX2RhdGEoc3RydWN0IGJhc2VfZGF0YSAqYykKK3sKKwlpZiAoYy0+ZGF0YSkgeworCQlmcmVlKGMtPmRhdGEpOworCQljLT5kYXRhID0gTlVMTDsKKwkJYmFzZV9jYWNoZV91c2VkIC09IGMtPnNpemU7CisJfQorfQorCiBzdGF0aWMgdm9pZCBwcnVuZV9iYXNlX2RhdGEoc3RydWN0IGJhc2VfZGF0YSAqcmV0YWluKQogewogCXN0cnVjdCBiYXNlX2RhdGEgKmIgPSBiYXNlX2NhY2hlOwogCWZvciAoYiA9IGJhc2VfY2FjaGU7CiAJICAgICBiYXNlX2NhY2hlX3VzZWQgPiBkZWx0YV9iYXNlX2NhY2hlX2xpbWl0ICYmIGI7CiAJICAgICBiID0gYi0+Y2hpbGQpIHsKLQkJaWYgKGItPmRhdGEgJiYgYiAhPSByZXRhaW4pIHsKLQkJCWZyZWUoYi0+ZGF0YSk7Ci0JCQliLT5kYXRhID0gTlVMTDsKLQkJCWJhc2VfY2FjaGVfdXNlZCAtPSBiLT5zaXplOwotCQl9CisJCWlmIChiLT5kYXRhICYmIGIgIT0gcmV0YWluKQorCQkJZnJlZV9iYXNlX2RhdGEoYik7CiAJfQogfQogCkBAIC0yNDQsNyArMjUwLDggQEAKIAogCWMtPmJhc2UgPSBiYXNlOwogCWMtPmNoaWxkID0gTlVMTDsKLQliYXNlX2NhY2hlX3VzZWQgKz0gYy0+c2l6ZTsKKwlpZiAoYy0+ZGF0YSkKKwkJYmFzZV9jYWNoZV91c2VkICs9IGMtPnNpemU7CiAJcHJ1bmVfYmFzZV9kYXRhKGMpOwogfQogCkBAIC0yNTUsMTAgKzI2Miw3IEBACiAJCWJhc2UtPmNoaWxkID0gTlVMTDsKIAllbHNlCiAJCWJhc2VfY2FjaGUgPSBOVUxMOwotCWlmIChjLT5kYXRhKSB7Ci0JCWZyZWUoYy0+ZGF0YSk7Ci0JCWJhc2VfY2FjaGVfdXNlZCAtPSBjLT5zaXplOwotCX0KKwlmcmVlX2Jhc2VfZGF0YShjKTsKIH0KIAogc3RhdGljIHZvaWQgKnVucGFja19lbnRyeV9kYXRhKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpCkBAIC0yNzEsMTAgKzI3NSwxMCBAQAogCXN0cmVhbS5hdmFpbF9vdXQgPSBzaXplOwogCXN0cmVhbS5uZXh0X2luID0gZmlsbCgxKTsKIAlzdHJlYW0uYXZhaWxfaW4gPSBpbnB1dF9sZW47Ci0JaW5mbGF0ZUluaXQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfaW5pdCgmc3RyZWFtKTsKIAogCWZvciAoOzspIHsKLQkJaW50IHJldCA9IGluZmxhdGUoJnN0cmVhbSwgMCk7CisJCWludCByZXQgPSBnaXRfaW5mbGF0ZSgmc3RyZWFtLCAwKTsKIAkJdXNlKGlucHV0X2xlbiAtIHN0cmVhbS5hdmFpbF9pbik7CiAJCWlmIChzdHJlYW0udG90YWxfb3V0ID09IHNpemUgJiYgcmV0ID09IFpfU1RSRUFNX0VORCkKIAkJCWJyZWFrOwpAQCAtMjgzLDcgKzI4Nyw3IEBACiAJCXN0cmVhbS5uZXh0X2luID0gZmlsbCgxKTsKIAkJc3RyZWFtLmF2YWlsX2luID0gaW5wdXRfbGVuOwogCX0KLQlpbmZsYXRlRW5kKCZzdHJlYW0pOworCWdpdF9pbmZsYXRlX2VuZCgmc3RyZWFtKTsKIAlyZXR1cm4gYnVmOwogfQogCkBAIC0zMzQsNyArMzM4LDcgQEAKIAkJCWJhc2Vfb2Zmc2V0ID0gKGJhc2Vfb2Zmc2V0IDw8IDcpICsgKGMgJiAxMjcpOwogCQl9CiAJCWRlbHRhX2Jhc2UtPm9mZnNldCA9IG9iai0+aWR4Lm9mZnNldCAtIGJhc2Vfb2Zmc2V0OwotCQlpZiAoZGVsdGFfYmFzZS0+b2Zmc2V0ID49IG9iai0+aWR4Lm9mZnNldCkKKwkJaWYgKGRlbHRhX2Jhc2UtPm9mZnNldCA8PSAwIHx8IGRlbHRhX2Jhc2UtPm9mZnNldCA+PSBvYmotPmlkeC5vZmZzZXQpCiAJCQliYWRfb2JqZWN0KG9iai0+aWR4Lm9mZnNldCwgImRlbHRhIGJhc2Ugb2Zmc2V0IGlzIG91dCBvZiBib3VuZCIpOwogCQlicmVhazsKIAljYXNlIE9CSl9DT01NSVQ6CkBAIC0zNzgsOSArMzgyLDkgQEAKIAlzdHJlYW0uYXZhaWxfb3V0ID0gb2JqLT5zaXplOwogCXN0cmVhbS5uZXh0X2luID0gc3JjOwogCXN0cmVhbS5hdmFpbF9pbiA9IGxlbjsKLQlpbmZsYXRlSW5pdCgmc3RyZWFtKTsKLQl3aGlsZSAoKHN0ID0gaW5mbGF0ZSgmc3RyZWFtLCBaX0ZJTklTSCkpID09IFpfT0spOwotCWluZmxhdGVFbmQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfaW5pdCgmc3RyZWFtKTsKKwl3aGlsZSAoKHN0ID0gZ2l0X2luZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpKSA9PSBaX09LKTsKKwlnaXRfaW5mbGF0ZV9lbmQoJnN0cmVhbSk7CiAJaWYgKHN0ICE9IFpfU1RSRUFNX0VORCB8fCBzdHJlYW0udG90YWxfb3V0ICE9IG9iai0+c2l6ZSkKIAkJZGllKCJzZXJpb3VzIGluZmxhdGUgaW5jb25zaXN0ZW5jeSIpOwogCWZyZWUoc3JjKTsKQEAgLTQwOCwyMiArNDEyLDI0IEBACiAgICAgICAgIHJldHVybiAtZmlyc3QtMTsKIH0KIAotc3RhdGljIGludCBmaW5kX2RlbHRhX2NoaWxkcmVuKGNvbnN0IHVuaW9uIGRlbHRhX2Jhc2UgKmJhc2UsCi0JCQkgICAgICAgaW50ICpmaXJzdF9pbmRleCwgaW50ICpsYXN0X2luZGV4KQorc3RhdGljIHZvaWQgZmluZF9kZWx0YV9jaGlsZHJlbihjb25zdCB1bmlvbiBkZWx0YV9iYXNlICpiYXNlLAorCQkJCWludCAqZmlyc3RfaW5kZXgsIGludCAqbGFzdF9pbmRleCkKIHsKIAlpbnQgZmlyc3QgPSBmaW5kX2RlbHRhKGJhc2UpOwogCWludCBsYXN0ID0gZmlyc3Q7CiAJaW50IGVuZCA9IG5yX2RlbHRhcyAtIDE7CiAKLQlpZiAoZmlyc3QgPCAwKQotCQlyZXR1cm4gLTE7CisJaWYgKGZpcnN0IDwgMCkgeworCQkqZmlyc3RfaW5kZXggPSAwOworCQkqbGFzdF9pbmRleCA9IC0xOworCQlyZXR1cm47CisJfQogCXdoaWxlIChmaXJzdCA+IDAgJiYgIW1lbWNtcCgmZGVsdGFzW2ZpcnN0IC0gMV0uYmFzZSwgYmFzZSwgVU5JT05fQkFTRV9TWikpCiAJCS0tZmlyc3Q7CiAJd2hpbGUgKGxhc3QgPCBlbmQgJiYgIW1lbWNtcCgmZGVsdGFzW2xhc3QgKyAxXS5iYXNlLCBiYXNlLCBVTklPTl9CQVNFX1NaKSkKIAkJKytsYXN0OwogCSpmaXJzdF9pbmRleCA9IGZpcnN0OwogCSpsYXN0X2luZGV4ID0gbGFzdDsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgc2hhMV9vYmplY3QoY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLApAQCAtNDk0LDggKzUwMCwxMCBAQAogCQkJZnJlZShyYXcpOwogCQkJaWYgKCFjLT5kYXRhKQogCQkJCWJhZF9vYmplY3Qob2JqLT5pZHgub2Zmc2V0LCAiZmFpbGVkIHRvIGFwcGx5IGRlbHRhIik7Ci0JCX0gZWxzZQorCQl9IGVsc2UgewogCQkJYy0+ZGF0YSA9IGdldF9kYXRhX2Zyb21fcGFjayhvYmopOworCQkJYy0+c2l6ZSA9IG9iai0+c2l6ZTsKKwkJfQogCiAJCWJhc2VfY2FjaGVfdXNlZCArPSBjLT5zaXplOwogCQlwcnVuZV9iYXNlX2RhdGEoYyk7CkBAIC01MDQsNDkgKzUxMiw3NCBAQAogfQogCiBzdGF0aWMgdm9pZCByZXNvbHZlX2RlbHRhKHN0cnVjdCBvYmplY3RfZW50cnkgKmRlbHRhX29iaiwKLQkJCSAgc3RydWN0IGJhc2VfZGF0YSAqYmFzZV9vYmosIGVudW0gb2JqZWN0X3R5cGUgdHlwZSkKKwkJCSAgc3RydWN0IGJhc2VfZGF0YSAqYmFzZSwgc3RydWN0IGJhc2VfZGF0YSAqcmVzdWx0KQogewotCXZvaWQgKmRlbHRhX2RhdGE7Ci0JdW5zaWduZWQgbG9uZyBkZWx0YV9zaXplOwotCXVuaW9uIGRlbHRhX2Jhc2UgZGVsdGFfYmFzZTsKLQlpbnQgaiwgZmlyc3QsIGxhc3Q7Ci0Jc3RydWN0IGJhc2VfZGF0YSByZXN1bHQ7CisJdm9pZCAqYmFzZV9kYXRhLCAqZGVsdGFfZGF0YTsKIAotCWRlbHRhX29iai0+cmVhbF90eXBlID0gdHlwZTsKKwlkZWx0YV9vYmotPnJlYWxfdHlwZSA9IGJhc2UtPm9iai0+cmVhbF90eXBlOwogCWRlbHRhX2RhdGEgPSBnZXRfZGF0YV9mcm9tX3BhY2soZGVsdGFfb2JqKTsKLQlkZWx0YV9zaXplID0gZGVsdGFfb2JqLT5zaXplOwotCXJlc3VsdC5kYXRhID0gcGF0Y2hfZGVsdGEoZ2V0X2Jhc2VfZGF0YShiYXNlX29iaiksIGJhc2Vfb2JqLT5zaXplLAotCQkJICAgICBkZWx0YV9kYXRhLCBkZWx0YV9zaXplLAotCQkJICAgICAmcmVzdWx0LnNpemUpOworCWJhc2VfZGF0YSA9IGdldF9iYXNlX2RhdGEoYmFzZSk7CisJcmVzdWx0LT5vYmogPSBkZWx0YV9vYmo7CisJcmVzdWx0LT5kYXRhID0gcGF0Y2hfZGVsdGEoYmFzZV9kYXRhLCBiYXNlLT5zaXplLAorCQkJCSAgIGRlbHRhX2RhdGEsIGRlbHRhX29iai0+c2l6ZSwgJnJlc3VsdC0+c2l6ZSk7CiAJZnJlZShkZWx0YV9kYXRhKTsKLQlpZiAoIXJlc3VsdC5kYXRhKQorCWlmICghcmVzdWx0LT5kYXRhKQogCQliYWRfb2JqZWN0KGRlbHRhX29iai0+aWR4Lm9mZnNldCwgImZhaWxlZCB0byBhcHBseSBkZWx0YSIpOwotCXNoYTFfb2JqZWN0KHJlc3VsdC5kYXRhLCByZXN1bHQuc2l6ZSwgdHlwZSwgZGVsdGFfb2JqLT5pZHguc2hhMSk7CisJc2hhMV9vYmplY3QocmVzdWx0LT5kYXRhLCByZXN1bHQtPnNpemUsIGRlbHRhX29iai0+cmVhbF90eXBlLAorCQkgICAgZGVsdGFfb2JqLT5pZHguc2hhMSk7CiAJbnJfcmVzb2x2ZWRfZGVsdGFzKys7Cit9CiAKLQlyZXN1bHQub2JqID0gZGVsdGFfb2JqOwotCWxpbmtfYmFzZV9kYXRhKGJhc2Vfb2JqLCAmcmVzdWx0KTsKK3N0YXRpYyB2b2lkIGZpbmRfdW5yZXNvbHZlZF9kZWx0YXMoc3RydWN0IGJhc2VfZGF0YSAqYmFzZSwKKwkJCQkgICBzdHJ1Y3QgYmFzZV9kYXRhICpwcmV2X2Jhc2UpCit7CisJaW50IGksIHJlZl9maXJzdCwgcmVmX2xhc3QsIG9mc19maXJzdCwgb2ZzX2xhc3Q7CiAKLQloYXNoY3B5KGRlbHRhX2Jhc2Uuc2hhMSwgZGVsdGFfb2JqLT5pZHguc2hhMSk7Ci0JaWYgKCFmaW5kX2RlbHRhX2NoaWxkcmVuKCZkZWx0YV9iYXNlLCAmZmlyc3QsICZsYXN0KSkgewotCQlmb3IgKGogPSBmaXJzdDsgaiA8PSBsYXN0OyBqKyspIHsKLQkJCXN0cnVjdCBvYmplY3RfZW50cnkgKmNoaWxkID0gb2JqZWN0cyArIGRlbHRhc1tqXS5vYmpfbm87Ci0JCQlpZiAoY2hpbGQtPnJlYWxfdHlwZSA9PSBPQkpfUkVGX0RFTFRBKQotCQkJCXJlc29sdmVfZGVsdGEoY2hpbGQsICZyZXN1bHQsIHR5cGUpOworCS8qCisJICogVGhpcyBpcyBhIHJlY3Vyc2l2ZSBmdW5jdGlvbi4gVGhvc2UgYnJhY2tldHMgc2hvdWxkIGhlbHAgcmVkdWNpbmcKKwkgKiBzdGFjayB1c2FnZSBieSBsaW1pdGluZyB0aGUgc2NvcGUgb2YgdGhlIGRlbHRhX2Jhc2UgdW5pb24uCisJICovCisJeworCQl1bmlvbiBkZWx0YV9iYXNlIGJhc2Vfc3BlYzsKKworCQloYXNoY3B5KGJhc2Vfc3BlYy5zaGExLCBiYXNlLT5vYmotPmlkeC5zaGExKTsKKwkJZmluZF9kZWx0YV9jaGlsZHJlbigmYmFzZV9zcGVjLCAmcmVmX2ZpcnN0LCAmcmVmX2xhc3QpOworCisJCW1lbXNldCgmYmFzZV9zcGVjLCAwLCBzaXplb2YoYmFzZV9zcGVjKSk7CisJCWJhc2Vfc3BlYy5vZmZzZXQgPSBiYXNlLT5vYmotPmlkeC5vZmZzZXQ7CisJCWZpbmRfZGVsdGFfY2hpbGRyZW4oJmJhc2Vfc3BlYywgJm9mc19maXJzdCwgJm9mc19sYXN0KTsKKwl9CisKKwlpZiAocmVmX2xhc3QgPT0gLTEgJiYgb2ZzX2xhc3QgPT0gLTEpIHsKKwkJZnJlZShiYXNlLT5kYXRhKTsKKwkJcmV0dXJuOworCX0KKworCWxpbmtfYmFzZV9kYXRhKHByZXZfYmFzZSwgYmFzZSk7CisKKwlmb3IgKGkgPSByZWZfZmlyc3Q7IGkgPD0gcmVmX2xhc3Q7IGkrKykgeworCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpjaGlsZCA9IG9iamVjdHMgKyBkZWx0YXNbaV0ub2JqX25vOworCQlpZiAoY2hpbGQtPnJlYWxfdHlwZSA9PSBPQkpfUkVGX0RFTFRBKSB7CisJCQlzdHJ1Y3QgYmFzZV9kYXRhIHJlc3VsdDsKKwkJCXJlc29sdmVfZGVsdGEoY2hpbGQsIGJhc2UsICZyZXN1bHQpOworCQkJaWYgKGkgPT0gcmVmX2xhc3QgJiYgb2ZzX2xhc3QgPT0gLTEpCisJCQkJZnJlZV9iYXNlX2RhdGEoYmFzZSk7CisJCQlmaW5kX3VucmVzb2x2ZWRfZGVsdGFzKCZyZXN1bHQsIGJhc2UpOwogCQl9CiAJfQogCi0JbWVtc2V0KCZkZWx0YV9iYXNlLCAwLCBzaXplb2YoZGVsdGFfYmFzZSkpOwotCWRlbHRhX2Jhc2Uub2Zmc2V0ID0gZGVsdGFfb2JqLT5pZHgub2Zmc2V0OwotCWlmICghZmluZF9kZWx0YV9jaGlsZHJlbigmZGVsdGFfYmFzZSwgJmZpcnN0LCAmbGFzdCkpIHsKLQkJZm9yIChqID0gZmlyc3Q7IGogPD0gbGFzdDsgaisrKSB7Ci0JCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpjaGlsZCA9IG9iamVjdHMgKyBkZWx0YXNbal0ub2JqX25vOwotCQkJaWYgKGNoaWxkLT5yZWFsX3R5cGUgPT0gT0JKX09GU19ERUxUQSkKLQkJCQlyZXNvbHZlX2RlbHRhKGNoaWxkLCAmcmVzdWx0LCB0eXBlKTsKKwlmb3IgKGkgPSBvZnNfZmlyc3Q7IGkgPD0gb2ZzX2xhc3Q7IGkrKykgeworCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpjaGlsZCA9IG9iamVjdHMgKyBkZWx0YXNbaV0ub2JqX25vOworCQlpZiAoY2hpbGQtPnJlYWxfdHlwZSA9PSBPQkpfT0ZTX0RFTFRBKSB7CisJCQlzdHJ1Y3QgYmFzZV9kYXRhIHJlc3VsdDsKKwkJCXJlc29sdmVfZGVsdGEoY2hpbGQsIGJhc2UsICZyZXN1bHQpOworCQkJaWYgKGkgPT0gb2ZzX2xhc3QpCisJCQkJZnJlZV9iYXNlX2RhdGEoYmFzZSk7CisJCQlmaW5kX3VucmVzb2x2ZWRfZGVsdGFzKCZyZXN1bHQsIGJhc2UpOwogCQl9CiAJfQogCi0JdW5saW5rX2Jhc2VfZGF0YSgmcmVzdWx0KTsKKwl1bmxpbmtfYmFzZV9kYXRhKGJhc2UpOwogfQogCiBzdGF0aWMgaW50IGNvbXBhcmVfZGVsdGFfZW50cnkoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKQEAgLTU5MSw3ICs2MjQsNyBAQAogCiAJLyogQ2hlY2sgcGFjayBpbnRlZ3JpdHkgKi8KIAlmbHVzaCgpOwotCVNIQTFfRmluYWwoc2hhMSwgJmlucHV0X2N0eCk7CisJZ2l0X1NIQTFfRmluYWwoc2hhMSwgJmlucHV0X2N0eCk7CiAJaWYgKGhhc2hjbXAoZmlsbCgyMCksIHNoYTEpKQogCQlkaWUoInBhY2sgaXMgY29ycnVwdGVkIChTSEExIG1pc21hdGNoKSIpOwogCXVzZSgyMCk7CkBAIC02MjIsMzcgKzY1NSwxMyBAQAogCQlwcm9ncmVzcyA9IHN0YXJ0X3Byb2dyZXNzKCJSZXNvbHZpbmcgZGVsdGFzIiwgbnJfZGVsdGFzKTsKIAlmb3IgKGkgPSAwOyBpIDwgbnJfb2JqZWN0czsgaSsrKSB7CiAJCXN0cnVjdCBvYmplY3RfZW50cnkgKm9iaiA9ICZvYmplY3RzW2ldOwotCQl1bmlvbiBkZWx0YV9iYXNlIGJhc2U7Ci0JCWludCBqLCByZWYsIHJlZl9maXJzdCwgcmVmX2xhc3QsIG9mcywgb2ZzX2ZpcnN0LCBvZnNfbGFzdDsKIAkJc3RydWN0IGJhc2VfZGF0YSBiYXNlX29iajsKIAogCQlpZiAob2JqLT50eXBlID09IE9CSl9SRUZfREVMVEEgfHwgb2JqLT50eXBlID09IE9CSl9PRlNfREVMVEEpCiAJCQljb250aW51ZTsKLQkJaGFzaGNweShiYXNlLnNoYTEsIG9iai0+aWR4LnNoYTEpOwotCQlyZWYgPSAhZmluZF9kZWx0YV9jaGlsZHJlbigmYmFzZSwgJnJlZl9maXJzdCwgJnJlZl9sYXN0KTsKLQkJbWVtc2V0KCZiYXNlLCAwLCBzaXplb2YoYmFzZSkpOwotCQliYXNlLm9mZnNldCA9IG9iai0+aWR4Lm9mZnNldDsKLQkJb2ZzID0gIWZpbmRfZGVsdGFfY2hpbGRyZW4oJmJhc2UsICZvZnNfZmlyc3QsICZvZnNfbGFzdCk7Ci0JCWlmICghcmVmICYmICFvZnMpCi0JCQljb250aW51ZTsKLQkJYmFzZV9vYmouZGF0YSA9IGdldF9kYXRhX2Zyb21fcGFjayhvYmopOwotCQliYXNlX29iai5zaXplID0gb2JqLT5zaXplOwogCQliYXNlX29iai5vYmogPSBvYmo7Ci0JCWxpbmtfYmFzZV9kYXRhKE5VTEwsICZiYXNlX29iaik7Ci0KLQkJaWYgKHJlZikKLQkJCWZvciAoaiA9IHJlZl9maXJzdDsgaiA8PSByZWZfbGFzdDsgaisrKSB7Ci0JCQkJc3RydWN0IG9iamVjdF9lbnRyeSAqY2hpbGQgPSBvYmplY3RzICsgZGVsdGFzW2pdLm9ial9ubzsKLQkJCQlpZiAoY2hpbGQtPnJlYWxfdHlwZSA9PSBPQkpfUkVGX0RFTFRBKQotCQkJCQlyZXNvbHZlX2RlbHRhKGNoaWxkLCAmYmFzZV9vYmosIG9iai0+dHlwZSk7Ci0JCQl9Ci0JCWlmIChvZnMpCi0JCQlmb3IgKGogPSBvZnNfZmlyc3Q7IGogPD0gb2ZzX2xhc3Q7IGorKykgewotCQkJCXN0cnVjdCBvYmplY3RfZW50cnkgKmNoaWxkID0gb2JqZWN0cyArIGRlbHRhc1tqXS5vYmpfbm87Ci0JCQkJaWYgKGNoaWxkLT5yZWFsX3R5cGUgPT0gT0JKX09GU19ERUxUQSkKLQkJCQkJcmVzb2x2ZV9kZWx0YShjaGlsZCwgJmJhc2Vfb2JqLCBvYmotPnR5cGUpOwotCQkJfQotCQl1bmxpbmtfYmFzZV9kYXRhKCZiYXNlX29iaik7CisJCWJhc2Vfb2JqLmRhdGEgPSBOVUxMOworCQlmaW5kX3VucmVzb2x2ZWRfZGVsdGFzKCZiYXNlX29iaiwgTlVMTCk7CiAJCWRpc3BsYXlfcHJvZ3Jlc3MocHJvZ3Jlc3MsIG5yX3Jlc29sdmVkX2RlbHRhcyk7CiAJfQogfQpAQCAtNzQ1LDcgKzc1NCw2IEBACiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogCQlzdHJ1Y3QgZGVsdGFfZW50cnkgKmQgPSBzb3J0ZWRfYnlfcG9zW2ldOwogCQllbnVtIG9iamVjdF90eXBlIHR5cGU7Ci0JCWludCBqLCBmaXJzdCwgbGFzdDsKIAkJc3RydWN0IGJhc2VfZGF0YSBiYXNlX29iajsKIAogCQlpZiAob2JqZWN0c1tkLT5vYmpfbm9dLnJlYWxfdHlwZSAhPSBPQkpfUkVGX0RFTFRBKQpAQCAtNzU5LDE2ICs3NjcsNyBAQAogCQkJZGllKCJsb2NhbCBvYmplY3QgJXMgaXMgY29ycnVwdCIsIHNoYTFfdG9faGV4KGQtPmJhc2Uuc2hhMSkpOwogCQliYXNlX29iai5vYmogPSBhcHBlbmRfb2JqX3RvX3BhY2soZiwgZC0+YmFzZS5zaGExLAogCQkJCQliYXNlX29iai5kYXRhLCBiYXNlX29iai5zaXplLCB0eXBlKTsKLQkJbGlua19iYXNlX2RhdGEoTlVMTCwgJmJhc2Vfb2JqKTsKLQotCQlmaW5kX2RlbHRhX2NoaWxkcmVuKCZkLT5iYXNlLCAmZmlyc3QsICZsYXN0KTsKLQkJZm9yIChqID0gZmlyc3Q7IGogPD0gbGFzdDsgaisrKSB7Ci0JCQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpjaGlsZCA9IG9iamVjdHMgKyBkZWx0YXNbal0ub2JqX25vOwotCQkJaWYgKGNoaWxkLT5yZWFsX3R5cGUgPT0gT0JKX1JFRl9ERUxUQSkKLQkJCQlyZXNvbHZlX2RlbHRhKGNoaWxkLCAmYmFzZV9vYmosIHR5cGUpOwotCQl9Ci0KLQkJdW5saW5rX2Jhc2VfZGF0YSgmYmFzZV9vYmopOworCQlmaW5kX3VucmVzb2x2ZWRfZGVsdGFzKCZiYXNlX29iaiwgTlVMTCk7CiAJCWRpc3BsYXlfcHJvZ3Jlc3MocHJvZ3Jlc3MsIG5yX3Jlc29sdmVkX2RlbHRhcyk7CiAJfQogCWZyZWUoc29ydGVkX2J5X3Bvcyk7CkBAIC03OTAsNyArNzg5LDYgQEAKIAkJZXJyID0gY2xvc2Uob3V0cHV0X2ZkKTsKIAkJaWYgKGVycikKIAkJCWRpZSgiZXJyb3Igd2hpbGUgY2xvc2luZyBwYWNrIGZpbGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKLQkJY2htb2QoY3Vycl9wYWNrX25hbWUsIDA0NDQpOwogCX0KIAogCWlmIChrZWVwX21zZykgewpAQCAtODI0LDggKzgyMiw5IEBACiAJCWlmIChtb3ZlX3RlbXBfdG9fZmlsZShjdXJyX3BhY2tfbmFtZSwgZmluYWxfcGFja19uYW1lKSkKIAkJCWRpZSgiY2Fubm90IHN0b3JlIHBhY2sgZmlsZSIpOwogCX0KKwlpZiAoZnJvbV9zdGRpbikKKwkJY2htb2QoZmluYWxfcGFja19uYW1lLCAwNDQ0KTsKIAotCWNobW9kKGN1cnJfaW5kZXhfbmFtZSwgMDQ0NCk7CiAJaWYgKGZpbmFsX2luZGV4X25hbWUgIT0gY3Vycl9pbmRleF9uYW1lKSB7CiAJCWlmICghZmluYWxfaW5kZXhfbmFtZSkgewogCQkJc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiJXMvcGFjay9wYWNrLSVzLmlkeCIsCkBAIC04MzUsNiArODM0LDcgQEAKIAkJaWYgKG1vdmVfdGVtcF90b19maWxlKGN1cnJfaW5kZXhfbmFtZSwgZmluYWxfaW5kZXhfbmFtZSkpCiAJCQlkaWUoImNhbm5vdCBzdG9yZSBpbmRleCBmaWxlIik7CiAJfQorCWNobW9kKGZpbmFsX2luZGV4X25hbWUsIDA0NDQpOwogCiAJaWYgKCFmcm9tX3N0ZGluKSB7CiAJCXByaW50ZigiJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpKTsKZGlmZiAtLWdpdCBhL2ludGVycG9sYXRlLmMgYi9pbnRlcnBvbGF0ZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjAzYmQ5Li4wMDAwMDAwCi0tLSBhL2ludGVycG9sYXRlLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDA2IEpvbiBMb2VsaWdlcgotICovCi0KLSNpbmNsdWRlICJnaXQtY29tcGF0LXV0aWwuaCIKLSNpbmNsdWRlICJpbnRlcnBvbGF0ZS5oIgotCi0KLXZvaWQgaW50ZXJwX3NldF9lbnRyeShzdHJ1Y3QgaW50ZXJwICp0YWJsZSwgaW50IHNsb3QsIGNvbnN0IGNoYXIgKnZhbHVlKQotewotCWNoYXIgKm9sZHZhbCA9IHRhYmxlW3Nsb3RdLnZhbHVlOwotCWNoYXIgKm5ld3ZhbCA9IE5VTEw7Ci0KLQlmcmVlKG9sZHZhbCk7Ci0KLQlpZiAodmFsdWUpCi0JCW5ld3ZhbCA9IHhzdHJkdXAodmFsdWUpOwotCi0JdGFibGVbc2xvdF0udmFsdWUgPSBuZXd2YWw7Ci19Ci0KLQotdm9pZCBpbnRlcnBfY2xlYXJfdGFibGUoc3RydWN0IGludGVycCAqdGFibGUsIGludCBuaW50ZXJwcykKLXsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBuaW50ZXJwczsgaSsrKSB7Ci0JCWludGVycF9zZXRfZW50cnkodGFibGUsIGksIE5VTEwpOwotCX0KLX0KLQotCi0vKgotICogQ29udmVydCBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBpbiBidWZmZXIgb3JpZwotICogaW50byB0aGUgc3VwcGxpZWQgYnVmZmVyLCByZXN1bHQsIHdob3NlIGxlbmd0aCBpcyByZXNsZW4sCi0gKiBwZXJmb3JtaW5nIHN1YnN0aXR1dGlvbnMgb24gJS1uYW1lZCBzdWItc3RyaW5ncyBmcm9tCi0gKiB0aGUgdGFibGUsIGludGVycHMsIHdpdGggbmludGVycHMgZW50cmllcy4KLSAqCi0gKiBFeGFtcGxlIGludGVycHM6Ci0gKiAgICB7Ci0gKiAgICAgICAgeyAiJUgiLCAiZXhhbXBsZS5vcmcifSwKLSAqICAgICAgICB7ICIlcG9ydCIsICIxMjMifSwKLSAqICAgICAgICB7ICIlJSIsICIlIn0sCi0gKiAgICB9Ci0gKgotICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBzdWJzdGl0dXRlZCBzdHJpbmcgKG5vdCBpbmNsdWRpbmcgdGhlIGZpbmFsIFwwKS4KLSAqIExpa2Ugd2l0aCBzbnByaW50ZiwgaWYgdGhlIHJlc3VsdCBpcyA+PSByZXNsZW4sIHRoZW4gaXQgb3ZlcmZsb3dlZC4KLSAqLwotCi11bnNpZ25lZCBsb25nIGludGVycG9sYXRlKGNoYXIgKnJlc3VsdCwgdW5zaWduZWQgbG9uZyByZXNsZW4sCi0JCWNvbnN0IGNoYXIgKm9yaWcsCi0JCWNvbnN0IHN0cnVjdCBpbnRlcnAgKmludGVycHMsIGludCBuaW50ZXJwcykKLXsKLQljb25zdCBjaGFyICpzcmMgPSBvcmlnOwotCWNoYXIgKmRlc3QgPSByZXN1bHQ7Ci0JdW5zaWduZWQgbG9uZyBuZXdsZW4gPSAwOwotCWNvbnN0IGNoYXIgKm5hbWUsICp2YWx1ZTsKLQl1bnNpZ25lZCBsb25nIG5hbWVsZW4sIHZhbHVlbGVuOwotCWludCBpOwotCWNoYXIgYzsKLQotCXdoaWxlICgoYyA9ICpzcmMpKSB7Ci0JCWlmIChjID09ICclJykgewotCQkJLyogVHJ5IHRvIG1hdGNoIGFuIGludGVycG9sYXRpb24gc3RyaW5nLiAqLwotCQkJZm9yIChpID0gMDsgaSA8IG5pbnRlcnBzOyBpKyspIHsKLQkJCQluYW1lID0gaW50ZXJwc1tpXS5uYW1lOwotCQkJCW5hbWVsZW4gPSBzdHJsZW4obmFtZSk7Ci0JCQkJaWYgKHN0cm5jbXAoc3JjLCBuYW1lLCBuYW1lbGVuKSA9PSAwKQotCQkJCQlicmVhazsKLQkJCX0KLQotCQkJLyogQ2hlY2sgZm9yIHZhbGlkIGludGVycG9sYXRpb24uICovCi0JCQlpZiAoaSA8IG5pbnRlcnBzKSB7Ci0JCQkJdmFsdWUgPSBpbnRlcnBzW2ldLnZhbHVlOwotCQkJCWlmICghdmFsdWUpIHsKLQkJCQkJc3JjICs9IG5hbWVsZW47Ci0JCQkJCWNvbnRpbnVlOwotCQkJCX0KLQotCQkJCXZhbHVlbGVuID0gc3RybGVuKHZhbHVlKTsKLQkJCQlpZiAobmV3bGVuICsgdmFsdWVsZW4gPCByZXNsZW4pIHsKLQkJCQkJLyogU3Vic3RpdHV0ZS4gKi8KLQkJCQkJbWVtY3B5KGRlc3QsIHZhbHVlLCB2YWx1ZWxlbik7Ci0JCQkJCWRlc3QgKz0gdmFsdWVsZW47Ci0JCQkJfQotCQkJCW5ld2xlbiArPSB2YWx1ZWxlbjsKLQkJCQlzcmMgKz0gbmFtZWxlbjsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJfQotCQkvKiBTdHJhaWdodCBjb3B5IG9uZSBub24taW50ZXJwb2xhdGlvbiBjaGFyYWN0ZXIuICovCi0JCWlmIChuZXdsZW4gKyAxIDwgcmVzbGVuKQotCQkJKmRlc3QrKyA9ICpzcmM7Ci0JCXNyYysrOwotCQluZXdsZW4rKzsKLQl9Ci0KLQkvKiBYWFg6IHRoZSBwcmV2aW91cyBsb29wIGFsd2F5cyBrZWVwIHJvb20gZm9yIHRoZSBlbmRpbmcgTlVMLAotCSAgIHdlIGp1c3QgbmVlZCB0byBjaGVjayBpZiB0aGVyZSB3YXMgcm9vbSBmb3IgYSBOVUwgaW4gdGhlIGZpcnN0IHBsYWNlICovCi0JaWYgKHJlc2xlbiA+IDApCi0JCSpkZXN0ID0gJ1wwJzsKLQlyZXR1cm4gbmV3bGVuOwotfQpkaWZmIC0tZ2l0IGEvaW50ZXJwb2xhdGUuaCBiL2ludGVycG9sYXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NDA3ZTYuLjAwMDAwMDAKLS0tIGEvaW50ZXJwb2xhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgMjAwNiBKb24gTG9lbGlnZXIKLSAqLwotCi0jaWZuZGVmIElOVEVSUE9MQVRFX0gKLSNkZWZpbmUgSU5URVJQT0xBVEVfSAotCi0vKgotICogQ29udmVydCBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBpbiBidWZmZXIgb3JpZywKLSAqIHBlcmZvcm1pbmcgc3Vic3RpdHV0aW9ucyBvbiAlLW5hbWVkIHN1Yi1zdHJpbmdzIGZyb20KLSAqIHRoZSBpbnRlcnByZXRhdGlvbiB0YWJsZS4KLSAqLwotCi1zdHJ1Y3QgaW50ZXJwIHsKLQljb25zdCBjaGFyICpuYW1lOwotCWNoYXIgKnZhbHVlOwotfTsKLQotZXh0ZXJuIHZvaWQgaW50ZXJwX3NldF9lbnRyeShzdHJ1Y3QgaW50ZXJwICp0YWJsZSwgaW50IHNsb3QsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLWV4dGVybiB2b2lkIGludGVycF9jbGVhcl90YWJsZShzdHJ1Y3QgaW50ZXJwICp0YWJsZSwgaW50IG5pbnRlcnBzKTsKLQotZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50ZXJwb2xhdGUoY2hhciAqcmVzdWx0LCB1bnNpZ25lZCBsb25nIHJlc2xlbiwKLQkJCQkgY29uc3QgY2hhciAqb3JpZywKLQkJCQkgY29uc3Qgc3RydWN0IGludGVycCAqaW50ZXJwcywgaW50IG5pbnRlcnBzKTsKLQotI2VuZGlmIC8qIElOVEVSUE9MQVRFX0ggKi8KZGlmZiAtLWdpdCBhL2xldmVuc2h0ZWluLmMgYi9sZXZlbnNodGVpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMmY0Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9sZXZlbnNodGVpbi5jCkBAIC0wLDAgKzEsODQgQEAKKyNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgImxldmVuc2h0ZWluLmgiCisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIERhbWVyYXUtTGV2ZW5zaHRlaW4gYWxnb3JpdGhtIHRvCisgKiBjYWxjdWxhdGUgYSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuCisgKgorICogQmFzaWNhbGx5LCBpdCBzYXlzIGhvdyBtYW55IGxldHRlcnMgbmVlZCB0byBiZSBzd2FwcGVkLCBzdWJzdGl0dXRlZCwKKyAqIGRlbGV0ZWQgZnJvbSwgb3IgYWRkZWQgdG8gc3RyaW5nMSwgYXQgbGVhc3QsIHRvIGdldCBzdHJpbmcyLgorICoKKyAqIFRoZSBpZGVhIGlzIHRvIGJ1aWxkIGEgZGlzdGFuY2UgbWF0cml4IGZvciB0aGUgc3Vic3RyaW5ncyBvZiBib3RoCisgKiBzdHJpbmdzLiAgVG8gYXZvaWQgYSBsYXJnZSBzcGFjZSBjb21wbGV4aXR5LCBvbmx5IHRoZSBsYXN0IHRocmVlIHJvd3MKKyAqIGFyZSBrZXB0IGluIG1lbW9yeSAoaWYgc3dhcHMgaGFkIHRoZSBzYW1lIG9yIGhpZ2hlciBjb3N0IGFzIG9uZSBkZWxldGlvbgorICogcGx1cyBvbmUgaW5zZXJ0aW9uLCBvbmx5IHR3byByb3dzIHdvdWxkIGJlIG5lZWRlZCkuCisgKgorICogQXQgYW55IHN0YWdlLCAiaSArIDEiIGRlbm90ZXMgdGhlIGxlbmd0aCBvZiB0aGUgY3VycmVudCBzdWJzdHJpbmcgb2YKKyAqIHN0cmluZzEgdGhhdCB0aGUgZGlzdGFuY2UgaXMgY2FsY3VsYXRlZCBmb3IuCisgKgorICogcm93MiBob2xkcyB0aGUgY3VycmVudCByb3csIHJvdzEgdGhlIHByZXZpb3VzIHJvdyAoaS5lLiBmb3IgdGhlIHN1YnN0cmluZworICogb2Ygc3RyaW5nMSBvZiBsZW5ndGggImkiKSwgYW5kIHJvdzAgdGhlIHJvdyBiZWZvcmUgdGhhdC4KKyAqCisgKiBJbiBvdGhlciB3b3JkcywgYXQgdGhlIHN0YXJ0IG9mIHRoZSBiaWcgbG9vcCwgcm93MltqICsgMV0gY29udGFpbnMgdGhlCisgKiBEYW1lcmF1LUxldmVuc2h0ZWluIGRpc3RhbmNlIGJldHdlZW4gdGhlIHN1YnN0cmluZyBvZiBzdHJpbmcxIG9mIGxlbmd0aAorICogImkiIGFuZCB0aGUgc3Vic3RyaW5nIG9mIHN0cmluZzIgb2YgbGVuZ3RoICJqICsgMSIuCisgKgorICogQWxsIHRoZSBiaWcgbG9vcCBkb2VzIGlzIGRldGVybWluZSB0aGUgcGFydGlhbCBtaW5pbXVtLWNvc3QgcGF0aHMuCisgKgorICogSXQgZG9lcyBzbyBieSBjYWxjdWxhdGluZyB0aGUgY29zdHMgb2YgdGhlIHBhdGggZW5kaW5nIGluIGNoYXJhY3RlcnMKKyAqIGkgKGluIHN0cmluZzEpIGFuZCBqIChpbiBzdHJpbmcyKSwgcmVzcGVjdGl2ZWx5LCBnaXZlbiB0aGF0IHRoZSBsYXN0CisgKiBvcGVyYXRpb24gaXMgYSBzdWJzdGl0aW9uLCBhIHN3YXAsIGEgZGVsZXRpb24sIG9yIGFuIGluc2VydGlvbi4KKyAqCisgKiBUaGlzIGltcGxlbWVudGF0aW9uIGFsbG93cyB0aGUgY29zdHMgdG8gYmUgd2VpZ2h0ZWQ6CisgKgorICogLSB3IChhcyBpbiAic1dhcCIpCisgKiAtIHMgKGFzIGluICJTdWJzdGl0dXRpb24iKQorICogLSBhIChmb3IgaW5zZXJ0aW9uLCBBS0EgIkFkZCIpCisgKiAtIGQgKGFzIGluICJEZWxldGlvbiIpCisgKgorICogTm90ZSB0aGF0IHRoaXMgYWxnb3JpdGhtIGNhbGN1bGF0ZXMgYSBkaXN0YW5jZSBfaWZmXyBkID09IGEuCisgKi8KK2ludCBsZXZlbnNodGVpbihjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBjaGFyICpzdHJpbmcyLAorCQlpbnQgdywgaW50IHMsIGludCBhLCBpbnQgZCkKK3sKKwlpbnQgbGVuMSA9IHN0cmxlbihzdHJpbmcxKSwgbGVuMiA9IHN0cmxlbihzdHJpbmcyKTsKKwlpbnQgKnJvdzAgPSB4bWFsbG9jKHNpemVvZihpbnQpICogKGxlbjIgKyAxKSk7CisJaW50ICpyb3cxID0geG1hbGxvYyhzaXplb2YoaW50KSAqIChsZW4yICsgMSkpOworCWludCAqcm93MiA9IHhtYWxsb2Moc2l6ZW9mKGludCkgKiAobGVuMiArIDEpKTsKKwlpbnQgaSwgajsKKworCWZvciAoaiA9IDA7IGogPD0gbGVuMjsgaisrKQorCQlyb3cxW2pdID0gaiAqIGE7CisJZm9yIChpID0gMDsgaSA8IGxlbjE7IGkrKykgeworCQlpbnQgKmR1bW15OworCisJCXJvdzJbMF0gPSAoaSArIDEpICogZDsKKwkJZm9yIChqID0gMDsgaiA8IGxlbjI7IGorKykgeworCQkJLyogc3Vic3RpdHV0aW9uICovCisJCQlyb3cyW2ogKyAxXSA9IHJvdzFbal0gKyBzICogKHN0cmluZzFbaV0gIT0gc3RyaW5nMltqXSk7CisJCQkvKiBzd2FwICovCisJCQlpZiAoaSA+IDAgJiYgaiA+IDAgJiYgc3RyaW5nMVtpIC0gMV0gPT0gc3RyaW5nMltqXSAmJgorCQkJCQlzdHJpbmcxW2ldID09IHN0cmluZzJbaiAtIDFdICYmCisJCQkJCXJvdzJbaiArIDFdID4gcm93MFtqIC0gMV0gKyB3KQorCQkJCXJvdzJbaiArIDFdID0gcm93MFtqIC0gMV0gKyB3OworCQkJLyogZGVsZXRpb24gKi8KKwkJCWlmIChyb3cyW2ogKyAxXSA+IHJvdzFbaiArIDFdICsgZCkKKwkJCQlyb3cyW2ogKyAxXSA9IHJvdzFbaiArIDFdICsgZDsKKwkJCS8qIGluc2VydGlvbiAqLworCQkJaWYgKHJvdzJbaiArIDFdID4gcm93MltqXSArIGEpCisJCQkJcm93MltqICsgMV0gPSByb3cyW2pdICsgYTsKKwkJfQorCisJCWR1bW15ID0gcm93MDsKKwkJcm93MCA9IHJvdzE7CisJCXJvdzEgPSByb3cyOworCQlyb3cyID0gZHVtbXk7CisJfQorCisJaSA9IHJvdzFbbGVuMl07CisJZnJlZShyb3cwKTsKKwlmcmVlKHJvdzEpOworCWZyZWUocm93Mik7CisKKwlyZXR1cm4gaTsKK30KZGlmZiAtLWdpdCBhL2xldmVuc2h0ZWluLmggYi9sZXZlbnNodGVpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNzNhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9sZXZlbnNodGVpbi5oCkBAIC0wLDAgKzEsOCBAQAorI2lmbmRlZiBMRVZFTlNIVEVJTl9ICisjZGVmaW5lIExFVkVOU0hURUlOX0gKKworaW50IGxldmVuc2h0ZWluKGNvbnN0IGNoYXIgKnN0cmluZzEsIGNvbnN0IGNoYXIgKnN0cmluZzIsCisJaW50IHN3YXBfcGVuYWx0eSwgaW50IHN1YnN0aXRpb25fcGVuYWx0eSwKKwlpbnQgaW5zZXJ0aW9uX3BlbmFsdHksIGludCBkZWxldGlvbl9wZW5hbHR5KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9sbC1tZXJnZS5jIGIvbGwtbWVyZ2UuYwppbmRleCA5ODM3Yzg0Li5mYTJjYTUyIDEwMDY0NAotLS0gYS9sbC1tZXJnZS5jCisrKyBiL2xsLW1lcmdlLmMKQEAgLTgsNyArOCw2IEBACiAjaW5jbHVkZSAiYXR0ci5oIgogI2luY2x1ZGUgInhkaWZmLWludGVyZmFjZS5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCi0jaW5jbHVkZSAiaW50ZXJwb2xhdGUuaCIKICNpbmNsdWRlICJsbC1tZXJnZS5oIgogCiBzdHJ1Y3QgbGxfbWVyZ2VfZHJpdmVyOwpAQCAtNjMsNiArNjIsNyBAQAogCQkJaW50IHZpcnR1YWxfYW5jZXN0b3IpCiB7CiAJeHBwYXJhbV90IHhwcDsKKwlpbnQgc3R5bGUgPSAwOwogCiAJaWYgKGJ1ZmZlcl9pc19iaW5hcnkob3JpZy0+cHRyLCBvcmlnLT5zaXplKSB8fAogCSAgICBidWZmZXJfaXNfYmluYXJ5KHNyYzEtPnB0ciwgc3JjMS0+c2l6ZSkgfHwKQEAgLTc3LDEwICs3NywxMiBAQAogCX0KIAogCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CisJaWYgKGdpdF94bWVyZ2Vfc3R5bGUgPj0gMCkKKwkJc3R5bGUgPSBnaXRfeG1lcmdlX3N0eWxlOwogCXJldHVybiB4ZGxfbWVyZ2Uob3JpZywKIAkJCSBzcmMxLCBuYW1lMSwKIAkJCSBzcmMyLCBuYW1lMiwKLQkJCSAmeHBwLCBYRExfTUVSR0VfWkVBTE9VUywKKwkJCSAmeHBwLCBYRExfTUVSR0VfWkVBTE9VUyB8IHN0eWxlLAogCQkJIHJlc3VsdCk7CiB9CiAKQEAgLTk1LDEwICs5NywxNSBAQAogCWNoYXIgKnNyYywgKmRzdDsKIAlsb25nIHNpemU7CiAJY29uc3QgaW50IG1hcmtlcl9zaXplID0gNzsKKwlpbnQgc3RhdHVzLCBzYXZlZF9zdHlsZTsKIAotCWludCBzdGF0dXMgPSBsbF94ZGxfbWVyZ2UoZHJ2X3VudXNlZCwgcmVzdWx0LCBwYXRoX3VudXNlZCwKLQkJCQkgIG9yaWcsIHNyYzEsIE5VTEwsIHNyYzIsIE5VTEwsCi0JCQkJICB2aXJ0dWFsX2FuY2VzdG9yKTsKKwkvKiBXZSBoYXZlIHRvIGZvcmNlIHRoZSBSQ1MgIm1lcmdlIiBzdHlsZSAqLworCXNhdmVkX3N0eWxlID0gZ2l0X3htZXJnZV9zdHlsZTsKKwlnaXRfeG1lcmdlX3N0eWxlID0gMDsKKwlzdGF0dXMgPSBsbF94ZGxfbWVyZ2UoZHJ2X3VudXNlZCwgcmVzdWx0LCBwYXRoX3VudXNlZCwKKwkJCSAgICAgIG9yaWcsIHNyYzEsIE5VTEwsIHNyYzIsIE5VTEwsCisJCQkgICAgICB2aXJ0dWFsX2FuY2VzdG9yKTsKKwlnaXRfeG1lcmdlX3N0eWxlID0gc2F2ZWRfc3R5bGU7CiAJaWYgKHN0YXR1cyA8PSAwKQogCQlyZXR1cm4gc3RhdHVzOwogCXNpemUgPSByZXN1bHQtPnNpemU7CkBAIC0xNjEsMTEgKzE2OCwxMiBAQAogCQkJaW50IHZpcnR1YWxfYW5jZXN0b3IpCiB7CiAJY2hhciB0ZW1wWzNdWzUwXTsKLQljaGFyIGNtZGJ1ZlsyMDQ4XTsKLQlzdHJ1Y3QgaW50ZXJwIHRhYmxlW10gPSB7Ci0JCXsgIiVPIiB9LAotCQl7ICIlQSIgfSwKLQkJeyAiJUIiIH0sCisJc3RydWN0IHN0cmJ1ZiBjbWQgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmX2V4cGFuZF9kaWN0X2VudHJ5IGRpY3RbXSA9IHsKKwkJeyAiTyIsIHRlbXBbMF0gfSwKKwkJeyAiQSIsIHRlbXBbMV0gfSwKKwkJeyAiQiIsIHRlbXBbMl0gfSwKKwkJeyBOVUxMIH0KIAl9OwogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNoaWxkOwogCWNvbnN0IGNoYXIgKmFyZ3NbMjBdOwpAQCAtMTgxLDE3ICsxODksMTMgQEAKIAljcmVhdGVfdGVtcChzcmMxLCB0ZW1wWzFdKTsKIAljcmVhdGVfdGVtcChzcmMyLCB0ZW1wWzJdKTsKIAotCWludGVycF9zZXRfZW50cnkodGFibGUsIDAsIHRlbXBbMF0pOwotCWludGVycF9zZXRfZW50cnkodGFibGUsIDEsIHRlbXBbMV0pOwotCWludGVycF9zZXRfZW50cnkodGFibGUsIDIsIHRlbXBbMl0pOwotCi0JaW50ZXJwb2xhdGUoY21kYnVmLCBzaXplb2YoY21kYnVmKSwgZm4tPmNtZGxpbmUsIHRhYmxlLCAzKTsKKwlzdHJidWZfZXhwYW5kKCZjbWQsIGZuLT5jbWRsaW5lLCBzdHJidWZfZXhwYW5kX2RpY3RfY2IsICZkaWN0KTsKIAogCW1lbXNldCgmY2hpbGQsIDAsIHNpemVvZihjaGlsZCkpOwogCWNoaWxkLmFyZ3YgPSBhcmdzOwogCWFyZ3NbMF0gPSAic2giOwogCWFyZ3NbMV0gPSAiLWMiOwotCWFyZ3NbMl0gPSBjbWRidWY7CisJYXJnc1syXSA9IGNtZC5idWY7CiAJYXJnc1szXSA9IE5VTEw7CiAKIAlzdGF0dXMgPSBydW5fY29tbWFuZCgmY2hpbGQpOwpAQCAtMjE2LDYgKzIyMCw3IEBACiAgYmFkOgogCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspCiAJCXVubGluayh0ZW1wW2ldKTsKKwlzdHJidWZfcmVsZWFzZSgmY21kKTsKIAlyZXR1cm4gc3RhdHVzOwogfQogCmRpZmYgLS1naXQgYS9sb2NrZmlsZS5jIGIvbG9ja2ZpbGUuYwppbmRleCA2ZDc1NjA4Li44NTg5MTU1IDEwMDY0NAotLS0gYS9sb2NrZmlsZS5jCisrKyBiL2xvY2tmaWxlLmMKQEAgLTE0MCw2ICsxNDAsNyBAQAogCQkJc2lnbmFsKFNJR0hVUCwgcmVtb3ZlX2xvY2tfZmlsZV9vbl9zaWduYWwpOwogCQkJc2lnbmFsKFNJR1RFUk0sIHJlbW92ZV9sb2NrX2ZpbGVfb25fc2lnbmFsKTsKIAkJCXNpZ25hbChTSUdRVUlULCByZW1vdmVfbG9ja19maWxlX29uX3NpZ25hbCk7CisJCQlzaWduYWwoU0lHUElQRSwgcmVtb3ZlX2xvY2tfZmlsZV9vbl9zaWduYWwpOwogCQkJYXRleGl0KHJlbW92ZV9sb2NrX2ZpbGUpOwogCQl9CiAJCWxrLT5vd25lciA9IGdldHBpZCgpOwpkaWZmIC0tZ2l0IGEvbG9nLXRyZWUuYyBiL2xvZy10cmVlLmMKaW5kZXggYmQ4YjllNC4uMTk0ZGRiMSAxMDA2NDQKLS0tIGEvbG9nLXRyZWUuYworKysgYi9sb2ctdHJlZS5jCkBAIC0xLDEyICsxLDQ4IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJkaWZmLmgiCiAjaW5jbHVkZSAiY29tbWl0LmgiCisjaW5jbHVkZSAidGFnLmgiCiAjaW5jbHVkZSAiZ3JhcGguaCIKICNpbmNsdWRlICJsb2ctdHJlZS5oIgogI2luY2x1ZGUgInJlZmxvZy13YWxrLmgiCisjaW5jbHVkZSAicmVmcy5oIgogCiBzdHJ1Y3QgZGVjb3JhdGlvbiBuYW1lX2RlY29yYXRpb24gPSB7ICJvYmplY3QgbmFtZXMiIH07CiAKK3N0YXRpYyB2b2lkIGFkZF9uYW1lX2RlY29yYXRpb24oY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgb2JqZWN0ICpvYmopCit7CisJaW50IHBsZW4gPSBzdHJsZW4ocHJlZml4KTsKKwlpbnQgbmxlbiA9IHN0cmxlbihuYW1lKTsKKwlzdHJ1Y3QgbmFtZV9kZWNvcmF0aW9uICpyZXMgPSB4bWFsbG9jKHNpemVvZihzdHJ1Y3QgbmFtZV9kZWNvcmF0aW9uKSArIHBsZW4gKyBubGVuKTsKKwltZW1jcHkocmVzLT5uYW1lLCBwcmVmaXgsIHBsZW4pOworCW1lbWNweShyZXMtPm5hbWUgKyBwbGVuLCBuYW1lLCBubGVuICsgMSk7CisJcmVzLT5uZXh0ID0gYWRkX2RlY29yYXRpb24oJm5hbWVfZGVjb3JhdGlvbiwgb2JqLCByZXMpOworfQorCitzdGF0aWMgaW50IGFkZF9yZWZfZGVjb3JhdGlvbihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpCit7CisJc3RydWN0IG9iamVjdCAqb2JqID0gcGFyc2Vfb2JqZWN0KHNoYTEpOworCWlmICghb2JqKQorCQlyZXR1cm4gMDsKKwlhZGRfbmFtZV9kZWNvcmF0aW9uKCIiLCByZWZuYW1lLCBvYmopOworCXdoaWxlIChvYmotPnR5cGUgPT0gT0JKX1RBRykgeworCQlvYmogPSAoKHN0cnVjdCB0YWcgKilvYmopLT50YWdnZWQ7CisJCWlmICghb2JqKQorCQkJYnJlYWs7CisJCWFkZF9uYW1lX2RlY29yYXRpb24oInRhZzogIiwgcmVmbmFtZSwgb2JqKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgbG9hZF9yZWZfZGVjb3JhdGlvbnModm9pZCkKK3sKKwlzdGF0aWMgaW50IGxvYWRlZDsKKwlpZiAoIWxvYWRlZCkgeworCQlsb2FkZWQgPSAxOworCQlmb3JfZWFjaF9yZWYoYWRkX3JlZl9kZWNvcmF0aW9uLCBOVUxMKTsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIHNob3dfcGFyZW50cyhzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGludCBhYmJyZXYpCiB7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpwOwpAQCAtMTYsMTEgKzUyLDE1IEBACiAJfQogfQogCi12b2lkIHNob3dfZGVjb3JhdGlvbnMoc3RydWN0IGNvbW1pdCAqY29tbWl0KQordm9pZCBzaG93X2RlY29yYXRpb25zKHN0cnVjdCByZXZfaW5mbyAqb3B0LCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCiB7CiAJY29uc3QgY2hhciAqcHJlZml4OwogCXN0cnVjdCBuYW1lX2RlY29yYXRpb24gKmRlY29yYXRpb247CiAKKwlpZiAob3B0LT5zaG93X3NvdXJjZSAmJiBjb21taXQtPnV0aWwpCisJCXByaW50ZigiXHQlcyIsIChjaGFyICopIGNvbW1pdC0+dXRpbCk7CisJaWYgKCFvcHQtPnNob3dfZGVjb3JhdGlvbnMpCisJCXJldHVybjsKIAlkZWNvcmF0aW9uID0gbG9va3VwX2RlY29yYXRpb24oJm5hbWVfZGVjb3JhdGlvbiwgJmNvbW1pdC0+b2JqZWN0KTsKIAlpZiAoIWRlY29yYXRpb24pCiAJCXJldHVybjsKQEAgLTIxNiw3ICsyNTYsNyBAQAogCiB2b2lkIHNob3dfbG9nKHN0cnVjdCByZXZfaW5mbyAqb3B0KQogewotCXN0cnVjdCBzdHJidWYgbXNnYnVmOworCXN0cnVjdCBzdHJidWYgbXNnYnVmID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IGxvZ19pbmZvICpsb2cgPSBvcHQtPmxvZ2luZm87CiAJc3RydWN0IGNvbW1pdCAqY29tbWl0ID0gbG9nLT5jb21taXQsICpwYXJlbnQgPSBsb2ctPnBhcmVudDsKIAlpbnQgYWJicmV2ID0gb3B0LT5kaWZmb3B0LmFiYnJldjsKQEAgLTI0Myw3ICsyODMsNyBAQAogCQlmcHV0cyhkaWZmX3VuaXF1ZV9hYmJyZXYoY29tbWl0LT5vYmplY3Quc2hhMSwgYWJicmV2X2NvbW1pdCksIHN0ZG91dCk7CiAJCWlmIChvcHQtPnByaW50X3BhcmVudHMpCiAJCQlzaG93X3BhcmVudHMoY29tbWl0LCBhYmJyZXZfY29tbWl0KTsKLQkJc2hvd19kZWNvcmF0aW9ucyhjb21taXQpOworCQlzaG93X2RlY29yYXRpb25zKG9wdCwgY29tbWl0KTsKIAkJaWYgKG9wdC0+Z3JhcGggJiYgIWdyYXBoX2lzX2NvbW1pdF9maW5pc2hlZChvcHQtPmdyYXBoKSkgewogCQkJcHV0Y2hhcignXG4nKTsKIAkJCWdyYXBoX3Nob3dfcmVtYWluZGVyKG9wdC0+Z3JhcGgpOwpAQCAtMzE2LDcgKzM1Niw3IEBACiAJCQlwcmludGYoIiAoZnJvbSAlcykiLAogCQkJICAgICAgIGRpZmZfdW5pcXVlX2FiYnJldihwYXJlbnQtPm9iamVjdC5zaGExLAogCQkJCQkJICBhYmJyZXZfY29tbWl0KSk7Ci0JCXNob3dfZGVjb3JhdGlvbnMoY29tbWl0KTsKKwkJc2hvd19kZWNvcmF0aW9ucyhvcHQsIGNvbW1pdCk7CiAJCXByaW50ZigiJXMiLCBkaWZmX2dldF9jb2xvcl9vcHQoJm9wdC0+ZGlmZm9wdCwgRElGRl9SRVNFVCkpOwogCQlpZiAob3B0LT5jb21taXRfZm9ybWF0ID09IENNSVRfRk1UX09ORUxJTkUpIHsKIAkJCXB1dGNoYXIoJyAnKTsKQEAgLTM0NSw3ICszODUsNiBAQAogCS8qCiAJICogQW5kIHRoZW4gdGhlIHByZXR0eS1wcmludGVkIG1lc3NhZ2UgaXRzZWxmCiAJICovCi0Jc3RyYnVmX2luaXQoJm1zZ2J1ZiwgMCk7CiAJaWYgKG5lZWRfOGJpdF9jdGUgPj0gMCkKIAkJbmVlZF84Yml0X2N0ZSA9IGhhc19ub25fYXNjaWkob3B0LT5hZGRfc2lnbm9mZik7CiAJcHJldHR5X3ByaW50X2NvbW1pdChvcHQtPmNvbW1pdF9mb3JtYXQsIGNvbW1pdCwgJm1zZ2J1ZiwKQEAgLTQzMiw3ICs0NzEsNyBAQAogCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50czsKIAl1bnNpZ25lZCBjb25zdCBjaGFyICpzaGExID0gY29tbWl0LT5vYmplY3Quc2hhMTsKIAotCWlmICghb3B0LT5kaWZmKQorCWlmICghb3B0LT5kaWZmICYmICFESUZGX09QVF9UU1QoJm9wdC0+ZGlmZm9wdCwgRVhJVF9XSVRIX1NUQVRVUykpCiAJCXJldHVybiAwOwogCiAJLyogUm9vdCBjb21taXQ/ICovCmRpZmYgLS1naXQgYS9sb2ctdHJlZS5oIGIvbG9nLXRyZWUuaAppbmRleCA1OWJhNGM0Li5mMmE5MDA4IDEwMDY0NAotLS0gYS9sb2ctdHJlZS5oCisrKyBiL2xvZy10cmVlLmgKQEAgLTEyLDEwICsxMiwxMSBAQAogaW50IGxvZ190cmVlX2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKiwgc3RydWN0IGNvbW1pdCAqKTsKIGludCBsb2dfdHJlZV9vcHRfcGFyc2Uoc3RydWN0IHJldl9pbmZvICosIGNvbnN0IGNoYXIgKiosIGludCk7CiB2b2lkIHNob3dfbG9nKHN0cnVjdCByZXZfaW5mbyAqb3B0KTsKLXZvaWQgc2hvd19kZWNvcmF0aW9ucyhzdHJ1Y3QgY29tbWl0ICpjb21taXQpOwordm9pZCBzaG93X2RlY29yYXRpb25zKHN0cnVjdCByZXZfaW5mbyAqb3B0LCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpOwogdm9pZCBsb2dfd3JpdGVfZW1haWxfaGVhZGVycyhzdHJ1Y3QgcmV2X2luZm8gKm9wdCwgY29uc3QgY2hhciAqbmFtZSwKIAkJCSAgICAgY29uc3QgY2hhciAqKnN1YmplY3RfcCwKIAkJCSAgICAgY29uc3QgY2hhciAqKmV4dHJhX2hlYWRlcnNfcCwKIAkJCSAgICAgaW50ICpuZWVkXzhiaXRfY3RlX3ApOwordm9pZCBsb2FkX3JlZl9kZWNvcmF0aW9ucyh2b2lkKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9tZXJnZS1maWxlLmMgYi9tZXJnZS1maWxlLmMKaW5kZXggMmE5MzljOS4uMzEyMGE5NSAxMDA2NDQKLS0tIGEvbWVyZ2UtZmlsZS5jCisrKyBiL21lcmdlLWZpbGUuYwpAQCAtNjEsNiArNjEsNyBAQAogCXhkZW1pdGNvbmZfdCB4ZWNmZzsKIAl4ZGVtaXRjYl90IGVjYjsKIAorCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CiAJeHBwLmZsYWdzID0gWERGX05FRURfTUlOSU1BTDsKIAltZW1zZXQoJnhlY2ZnLCAwLCBzaXplb2YoeGVjZmcpKTsKIAl4ZWNmZy5jdHhsZW4gPSAzOwpkaWZmIC0tZ2l0IGEvbWVyZ2UtcmVjdXJzaXZlLmMgYi9tZXJnZS1yZWN1cnNpdmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTcwMjZiCi0tLSAvZGV2L251bGwKKysrIGIvbWVyZ2UtcmVjdXJzaXZlLmMKQEAgLTAsMCArMSwxMzkzIEBACisvKgorICogUmVjdXJzaXZlIE1lcmdlIGFsZ29yaXRobSBzdG9sZW4gZnJvbSBnaXQtbWVyZ2UtcmVjdXJzaXZlLnB5IGJ5CisgKiBGcmVkcmlrIEt1aXZpbmVuLgorICogVGhlIHRoaWV2ZXMgd2VyZSBBbGV4IFJpZXNlbiBhbmQgSm9oYW5uZXMgU2NoaW5kZWxpbiwgaW4gSnVuZS9KdWx5IDIwMDYKKyAqLworI2luY2x1ZGUgImNhY2hlLmgiCisjaW5jbHVkZSAiY2FjaGUtdHJlZS5oIgorI2luY2x1ZGUgImNvbW1pdC5oIgorI2luY2x1ZGUgImJsb2IuaCIKKyNpbmNsdWRlICJidWlsdGluLmgiCisjaW5jbHVkZSAidHJlZS13YWxrLmgiCisjaW5jbHVkZSAiZGlmZi5oIgorI2luY2x1ZGUgImRpZmZjb3JlLmgiCisjaW5jbHVkZSAidGFnLmgiCisjaW5jbHVkZSAidW5wYWNrLXRyZWVzLmgiCisjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKKyNpbmNsdWRlICJ4ZGlmZi1pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJsbC1tZXJnZS5oIgorI2luY2x1ZGUgImF0dHIuaCIKKyNpbmNsdWRlICJtZXJnZS1yZWN1cnNpdmUuaCIKKyNpbmNsdWRlICJkaXIuaCIKKworc3RhdGljIHN0cnVjdCB0cmVlICpzaGlmdF90cmVlX29iamVjdChzdHJ1Y3QgdHJlZSAqb25lLCBzdHJ1Y3QgdHJlZSAqdHdvKQoreworCXVuc2lnbmVkIGNoYXIgc2hpZnRlZFsyMF07CisKKwkvKgorCSAqIE5FRURTV09SSzogdGhpcyBsaW1pdHMgdGhlIHJlY3Vyc2lvbiBkZXB0aCB0byBoYXJkY29kZWQKKwkgKiB2YWx1ZSAnMicgdG8gYXZvaWQgZXhjZXNzaXZlIG92ZXJoZWFkLgorCSAqLworCXNoaWZ0X3RyZWUob25lLT5vYmplY3Quc2hhMSwgdHdvLT5vYmplY3Quc2hhMSwgc2hpZnRlZCwgMik7CisJaWYgKCFoYXNoY21wKHR3by0+b2JqZWN0LnNoYTEsIHNoaWZ0ZWQpKQorCQlyZXR1cm4gdHdvOworCXJldHVybiBsb29rdXBfdHJlZShzaGlmdGVkKTsKK30KKworLyoKKyAqIEEgdmlydHVhbCBjb21taXQgaGFzIChjb25zdCBjaGFyICopY29tbWl0LT51dGlsIHNldCB0byB0aGUgbmFtZS4KKyAqLworCitzdHJ1Y3QgY29tbWl0ICptYWtlX3ZpcnR1YWxfY29tbWl0KHN0cnVjdCB0cmVlICp0cmVlLCBjb25zdCBjaGFyICpjb21tZW50KQoreworCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBjb21taXQpKTsKKwljb21taXQtPnRyZWUgPSB0cmVlOworCWNvbW1pdC0+dXRpbCA9ICh2b2lkKiljb21tZW50OworCS8qIGF2b2lkIHdhcm5pbmdzICovCisJY29tbWl0LT5vYmplY3QucGFyc2VkID0gMTsKKwlyZXR1cm4gY29tbWl0OworfQorCisvKgorICogU2luY2Ugd2UgdXNlIGdldF90cmVlX2VudHJ5KCksIHdoaWNoIGRvZXMgbm90IHB1dCB0aGUgcmVhZCBvYmplY3QgaW50bworICogdGhlIG9iamVjdCBwb29sLCB3ZSBjYW5ub3QgcmVseSBvbiBhID09IGIuCisgKi8KK3N0YXRpYyBpbnQgc2hhX2VxKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmIpCit7CisJaWYgKCFhICYmICFiKQorCQlyZXR1cm4gMjsKKwlyZXR1cm4gYSAmJiBiICYmIGhhc2hjbXAoYSwgYikgPT0gMDsKK30KKworLyoKKyAqIFNpbmNlIHdlIHdhbnQgdG8gd3JpdGUgdGhlIGluZGV4IGV2ZW50dWFsbHksIHdlIGNhbm5vdCByZXVzZSB0aGUgaW5kZXgKKyAqIGZvciB0aGVzZSAodGVtcG9yYXJ5KSBkYXRhLgorICovCitzdHJ1Y3Qgc3RhZ2VfZGF0YQoreworCXN0cnVjdAorCXsKKwkJdW5zaWduZWQgbW9kZTsKKwkJdW5zaWduZWQgY2hhciBzaGFbMjBdOworCX0gc3RhZ2VzWzRdOworCXVuc2lnbmVkIHByb2Nlc3NlZDoxOworfTsKKworc3RhdGljIGludCBzaG93KHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLCBpbnQgdikKK3sKKwlyZXR1cm4gKCFvLT5jYWxsX2RlcHRoICYmIG8tPnZlcmJvc2l0eSA+PSB2KSB8fCBvLT52ZXJib3NpdHkgPj0gNTsKK30KKworc3RhdGljIHZvaWQgZmx1c2hfb3V0cHV0KHN0cnVjdCBtZXJnZV9vcHRpb25zICpvKQoreworCWlmIChvLT5vYnVmLmxlbikgeworCQlmcHV0cyhvLT5vYnVmLmJ1Ziwgc3Rkb3V0KTsKKwkJc3RyYnVmX3Jlc2V0KCZvLT5vYnVmKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIG91dHB1dChzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywgaW50IHYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCWludCBsZW47CisJdmFfbGlzdCBhcDsKKworCWlmICghc2hvdyhvLCB2KSkKKwkJcmV0dXJuOworCisJc3RyYnVmX2dyb3coJm8tPm9idWYsIG8tPmNhbGxfZGVwdGggKiAyICsgMik7CisJbWVtc2V0KG8tPm9idWYuYnVmICsgby0+b2J1Zi5sZW4sICcgJywgby0+Y2FsbF9kZXB0aCAqIDIpOworCXN0cmJ1Zl9zZXRsZW4oJm8tPm9idWYsIG8tPm9idWYubGVuICsgby0+Y2FsbF9kZXB0aCAqIDIpOworCisJdmFfc3RhcnQoYXAsIGZtdCk7CisJbGVuID0gdnNucHJpbnRmKG8tPm9idWYuYnVmICsgby0+b2J1Zi5sZW4sIHN0cmJ1Zl9hdmFpbCgmby0+b2J1ZiksIGZtdCwgYXApOworCXZhX2VuZChhcCk7CisKKwlpZiAobGVuIDwgMCkKKwkJbGVuID0gMDsKKwlpZiAobGVuID49IHN0cmJ1Zl9hdmFpbCgmby0+b2J1ZikpIHsKKwkJc3RyYnVmX2dyb3coJm8tPm9idWYsIGxlbiArIDIpOworCQl2YV9zdGFydChhcCwgZm10KTsKKwkJbGVuID0gdnNucHJpbnRmKG8tPm9idWYuYnVmICsgby0+b2J1Zi5sZW4sIHN0cmJ1Zl9hdmFpbCgmby0+b2J1ZiksIGZtdCwgYXApOworCQl2YV9lbmQoYXApOworCQlpZiAobGVuID49IHN0cmJ1Zl9hdmFpbCgmby0+b2J1ZikpIHsKKwkJCWRpZSgidGhpcyBzaG91bGQgbm90IGhhcHBlbiwgeW91ciBzbnByaW50ZiBpcyBicm9rZW4iKTsKKwkJfQorCX0KKwlzdHJidWZfc2V0bGVuKCZvLT5vYnVmLCBvLT5vYnVmLmxlbiArIGxlbik7CisJc3RyYnVmX2FkZCgmby0+b2J1ZiwgIlxuIiwgMSk7CisJaWYgKCFvLT5idWZmZXJfb3V0cHV0KQorCQlmbHVzaF9vdXRwdXQobyk7Cit9CisKK3N0YXRpYyB2b2lkIG91dHB1dF9jb21taXRfdGl0bGUoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3sKKwlpbnQgaTsKKwlmbHVzaF9vdXRwdXQobyk7CisJZm9yIChpID0gby0+Y2FsbF9kZXB0aDsgaS0tOykKKwkJZnB1dHMoIiAgIiwgc3Rkb3V0KTsKKwlpZiAoY29tbWl0LT51dGlsKQorCQlwcmludGYoInZpcnR1YWwgJXNcbiIsIChjaGFyICopY29tbWl0LT51dGlsKTsKKwllbHNlIHsKKwkJcHJpbnRmKCIlcyAiLCBmaW5kX3VuaXF1ZV9hYmJyZXYoY29tbWl0LT5vYmplY3Quc2hhMSwgREVGQVVMVF9BQkJSRVYpKTsKKwkJaWYgKHBhcnNlX2NvbW1pdChjb21taXQpICE9IDApCisJCQlwcmludGYoIihiYWQgY29tbWl0KVxuIik7CisJCWVsc2UgeworCQkJY29uc3QgY2hhciAqczsKKwkJCWludCBsZW47CisJCQlmb3IgKHMgPSBjb21taXQtPmJ1ZmZlcjsgKnM7IHMrKykKKwkJCQlpZiAoKnMgPT0gJ1xuJyAmJiBzWzFdID09ICdcbicpIHsKKwkJCQkJcyArPSAyOworCQkJCQlicmVhazsKKwkJCQl9CisJCQlmb3IgKGxlbiA9IDA7IHNbbGVuXSAmJiAnXG4nICE9IHNbbGVuXTsgbGVuKyspCisJCQkJOyAvKiBkbyBub3RoaW5nICovCisJCQlwcmludGYoIiUuKnNcbiIsIGxlbiwgcyk7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbnQgYWRkX2NhY2hlaW5mbyh1bnNpZ25lZCBpbnQgbW9kZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKKwkJY29uc3QgY2hhciAqcGF0aCwgaW50IHN0YWdlLCBpbnQgcmVmcmVzaCwgaW50IG9wdGlvbnMpCit7CisJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKKwljZSA9IG1ha2VfY2FjaGVfZW50cnkobW9kZSwgc2hhMSA/IHNoYTEgOiBudWxsX3NoYTEsIHBhdGgsIHN0YWdlLCByZWZyZXNoKTsKKwlpZiAoIWNlKQorCQlyZXR1cm4gZXJyb3IoImFkZGluZm9fY2FjaGUgZmFpbGVkIGZvciBwYXRoICclcyciLCBwYXRoKTsKKwlyZXR1cm4gYWRkX2NhY2hlX2VudHJ5KGNlLCBvcHRpb25zKTsKK30KKworc3RhdGljIHZvaWQgaW5pdF90cmVlX2Rlc2NfZnJvbV90cmVlKHN0cnVjdCB0cmVlX2Rlc2MgKmRlc2MsIHN0cnVjdCB0cmVlICp0cmVlKQoreworCXBhcnNlX3RyZWUodHJlZSk7CisJaW5pdF90cmVlX2Rlc2MoZGVzYywgdHJlZS0+YnVmZmVyLCB0cmVlLT5zaXplKTsKK30KKworc3RhdGljIGludCBnaXRfbWVyZ2VfdHJlZXMoaW50IGluZGV4X29ubHksCisJCQkgICBzdHJ1Y3QgdHJlZSAqY29tbW9uLAorCQkJICAgc3RydWN0IHRyZWUgKmhlYWQsCisJCQkgICBzdHJ1Y3QgdHJlZSAqbWVyZ2UpCit7CisJaW50IHJjOworCXN0cnVjdCB0cmVlX2Rlc2MgdFszXTsKKwlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgb3B0czsKKworCW1lbXNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlpZiAoaW5kZXhfb25seSkKKwkJb3B0cy5pbmRleF9vbmx5ID0gMTsKKwllbHNlCisJCW9wdHMudXBkYXRlID0gMTsKKwlvcHRzLm1lcmdlID0gMTsKKwlvcHRzLmhlYWRfaWR4ID0gMjsKKwlvcHRzLmZuID0gdGhyZWV3YXlfbWVyZ2U7CisJb3B0cy5zcmNfaW5kZXggPSAmdGhlX2luZGV4OworCW9wdHMuZHN0X2luZGV4ID0gJnRoZV9pbmRleDsKKworCWluaXRfdHJlZV9kZXNjX2Zyb21fdHJlZSh0KzAsIGNvbW1vbik7CisJaW5pdF90cmVlX2Rlc2NfZnJvbV90cmVlKHQrMSwgaGVhZCk7CisJaW5pdF90cmVlX2Rlc2NfZnJvbV90cmVlKHQrMiwgbWVyZ2UpOworCisJcmMgPSB1bnBhY2tfdHJlZXMoMywgdCwgJm9wdHMpOworCWNhY2hlX3RyZWVfZnJlZSgmYWN0aXZlX2NhY2hlX3RyZWUpOworCXJldHVybiByYzsKK30KKworc3RydWN0IHRyZWUgKndyaXRlX3RyZWVfZnJvbV9tZW1vcnkoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8pCit7CisJc3RydWN0IHRyZWUgKnJlc3VsdCA9IE5VTEw7CisKKwlpZiAodW5tZXJnZWRfY2FjaGUoKSkgeworCQlpbnQgaTsKKwkJb3V0cHV0KG8sIDAsICJUaGVyZSBhcmUgdW5tZXJnZWQgaW5kZXggZW50cmllczoiKTsKKwkJZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9ucjsgaSsrKSB7CisJCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQkJaWYgKGNlX3N0YWdlKGNlKSkKKwkJCQlvdXRwdXQobywgMCwgIiVkICUuKnMiLCBjZV9zdGFnZShjZSksIGNlX25hbWVsZW4oY2UpLCBjZS0+bmFtZSk7CisJCX0KKwkJcmV0dXJuIE5VTEw7CisJfQorCisJaWYgKCFhY3RpdmVfY2FjaGVfdHJlZSkKKwkJYWN0aXZlX2NhY2hlX3RyZWUgPSBjYWNoZV90cmVlKCk7CisKKwlpZiAoIWNhY2hlX3RyZWVfZnVsbHlfdmFsaWQoYWN0aXZlX2NhY2hlX3RyZWUpICYmCisJICAgIGNhY2hlX3RyZWVfdXBkYXRlKGFjdGl2ZV9jYWNoZV90cmVlLAorCQkJICAgICAgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIsIDAsIDApIDwgMCkKKwkJZGllKCJlcnJvciBidWlsZGluZyB0cmVlcyIpOworCisJcmVzdWx0ID0gbG9va3VwX3RyZWUoYWN0aXZlX2NhY2hlX3RyZWUtPnNoYTEpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludCBzYXZlX2ZpbGVzX2RpcnMoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKKwkJY29uc3QgY2hhciAqYmFzZSwgaW50IGJhc2VsZW4sIGNvbnN0IGNoYXIgKnBhdGgsCisJCXVuc2lnbmVkIGludCBtb2RlLCBpbnQgc3RhZ2UsIHZvaWQgKmNvbnRleHQpCit7CisJaW50IGxlbiA9IHN0cmxlbihwYXRoKTsKKwljaGFyICpuZXdwYXRoID0geG1hbGxvYyhiYXNlbGVuICsgbGVuICsgMSk7CisJc3RydWN0IG1lcmdlX29wdGlvbnMgKm8gPSBjb250ZXh0OworCisJbWVtY3B5KG5ld3BhdGgsIGJhc2UsIGJhc2VsZW4pOworCW1lbWNweShuZXdwYXRoICsgYmFzZWxlbiwgcGF0aCwgbGVuKTsKKwluZXdwYXRoW2Jhc2VsZW4gKyBsZW5dID0gJ1wwJzsKKworCWlmIChTX0lTRElSKG1vZGUpKQorCQlzdHJpbmdfbGlzdF9pbnNlcnQobmV3cGF0aCwgJm8tPmN1cnJlbnRfZGlyZWN0b3J5X3NldCk7CisJZWxzZQorCQlzdHJpbmdfbGlzdF9pbnNlcnQobmV3cGF0aCwgJm8tPmN1cnJlbnRfZmlsZV9zZXQpOworCWZyZWUobmV3cGF0aCk7CisKKwlyZXR1cm4gUkVBRF9UUkVFX1JFQ1VSU0lWRTsKK30KKworc3RhdGljIGludCBnZXRfZmlsZXNfZGlycyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywgc3RydWN0IHRyZWUgKnRyZWUpCit7CisJaW50IG47CisJaWYgKHJlYWRfdHJlZV9yZWN1cnNpdmUodHJlZSwgIiIsIDAsIDAsIE5VTEwsIHNhdmVfZmlsZXNfZGlycywgbykpCisJCXJldHVybiAwOworCW4gPSBvLT5jdXJyZW50X2ZpbGVfc2V0Lm5yICsgby0+Y3VycmVudF9kaXJlY3Rvcnlfc2V0Lm5yOworCXJldHVybiBuOworfQorCisvKgorICogUmV0dXJucyBhbiBpbmRleF9lbnRyeSBpbnN0YW5jZSB3aGljaCBkb2Vzbid0IGhhdmUgdG8gY29ycmVzcG9uZCB0bworICogYSByZWFsIGNhY2hlIGVudHJ5IGluIEdpdCdzIGluZGV4LgorICovCitzdGF0aWMgc3RydWN0IHN0YWdlX2RhdGEgKmluc2VydF9zdGFnZV9kYXRhKGNvbnN0IGNoYXIgKnBhdGgsCisJCXN0cnVjdCB0cmVlICpvLCBzdHJ1Y3QgdHJlZSAqYSwgc3RydWN0IHRyZWUgKmIsCisJCXN0cnVjdCBzdHJpbmdfbGlzdCAqZW50cmllcykKK3sKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKKwlzdHJ1Y3Qgc3RhZ2VfZGF0YSAqZSA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdGFnZV9kYXRhKSk7CisJZ2V0X3RyZWVfZW50cnkoby0+b2JqZWN0LnNoYTEsIHBhdGgsCisJCQllLT5zdGFnZXNbMV0uc2hhLCAmZS0+c3RhZ2VzWzFdLm1vZGUpOworCWdldF90cmVlX2VudHJ5KGEtPm9iamVjdC5zaGExLCBwYXRoLAorCQkJZS0+c3RhZ2VzWzJdLnNoYSwgJmUtPnN0YWdlc1syXS5tb2RlKTsKKwlnZXRfdHJlZV9lbnRyeShiLT5vYmplY3Quc2hhMSwgcGF0aCwKKwkJCWUtPnN0YWdlc1szXS5zaGEsICZlLT5zdGFnZXNbM10ubW9kZSk7CisJaXRlbSA9IHN0cmluZ19saXN0X2luc2VydChwYXRoLCBlbnRyaWVzKTsKKwlpdGVtLT51dGlsID0gZTsKKwlyZXR1cm4gZTsKK30KKworLyoKKyAqIENyZWF0ZSBhIGRpY3Rpb25hcnkgbWFwcGluZyBmaWxlIG5hbWVzIHRvIHN0YWdlX2RhdGEgb2JqZWN0cy4gVGhlCisgKiBkaWN0aW9uYXJ5IGNvbnRhaW5zIG9uZSBlbnRyeSBmb3IgZXZlcnkgcGF0aCB3aXRoIGEgbm9uLXplcm8gc3RhZ2UgZW50cnkuCisgKi8KK3N0YXRpYyBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmdldF91bm1lcmdlZCh2b2lkKQoreworCXN0cnVjdCBzdHJpbmdfbGlzdCAqdW5tZXJnZWQgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKKwlpbnQgaTsKKworCXVubWVyZ2VkLT5zdHJkdXBfc3RyaW5ncyA9IDE7CisKKwlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKKwkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW07CisJCXN0cnVjdCBzdGFnZV9kYXRhICplOworCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQlpZiAoIWNlX3N0YWdlKGNlKSkKKwkJCWNvbnRpbnVlOworCisJCWl0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAoY2UtPm5hbWUsIHVubWVyZ2VkKTsKKwkJaWYgKCFpdGVtKSB7CisJCQlpdGVtID0gc3RyaW5nX2xpc3RfaW5zZXJ0KGNlLT5uYW1lLCB1bm1lcmdlZCk7CisJCQlpdGVtLT51dGlsID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHN0YWdlX2RhdGEpKTsKKwkJfQorCQllID0gaXRlbS0+dXRpbDsKKwkJZS0+c3RhZ2VzW2NlX3N0YWdlKGNlKV0ubW9kZSA9IGNlLT5jZV9tb2RlOworCQloYXNoY3B5KGUtPnN0YWdlc1tjZV9zdGFnZShjZSldLnNoYSwgY2UtPnNoYTEpOworCX0KKworCXJldHVybiB1bm1lcmdlZDsKK30KKworc3RydWN0IHJlbmFtZQoreworCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyOworCXN0cnVjdCBzdGFnZV9kYXRhICpzcmNfZW50cnk7CisJc3RydWN0IHN0YWdlX2RhdGEgKmRzdF9lbnRyeTsKKwl1bnNpZ25lZCBwcm9jZXNzZWQ6MTsKK307CisKKy8qCisgKiBHZXQgaW5mb3JtYXRpb24gb2YgYWxsIHJlbmFtZXMgd2hpY2ggb2NjdXJyZWQgYmV0d2VlbiAnb190cmVlJyBhbmQKKyAqICd0cmVlJy4gV2UgbmVlZCB0aGUgdGhyZWUgdHJlZXMgaW4gdGhlIG1lcmdlICgnb190cmVlJywgJ2FfdHJlZScgYW5kCisgKiAnYl90cmVlJykgdG8gYmUgYWJsZSB0byBhc3NvY2lhdGUgdGhlIGNvcnJlY3QgY2FjaGUgZW50cmllcyB3aXRoCisgKiB0aGUgcmVuYW1lIGluZm9ybWF0aW9uLiAndHJlZScgaXMgYWx3YXlzIGVxdWFsIHRvIGVpdGhlciBhX3RyZWUgb3IgYl90cmVlLgorICovCitzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0ICpnZXRfcmVuYW1lcyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCQkgICAgICAgc3RydWN0IHRyZWUgKnRyZWUsCisJCQkJICAgICAgIHN0cnVjdCB0cmVlICpvX3RyZWUsCisJCQkJICAgICAgIHN0cnVjdCB0cmVlICphX3RyZWUsCisJCQkJICAgICAgIHN0cnVjdCB0cmVlICpiX3RyZWUsCisJCQkJICAgICAgIHN0cnVjdCBzdHJpbmdfbGlzdCAqZW50cmllcykKK3sKKwlpbnQgaTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnJlbmFtZXM7CisJc3RydWN0IGRpZmZfb3B0aW9ucyBvcHRzOworCisJcmVuYW1lcyA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOworCWRpZmZfc2V0dXAoJm9wdHMpOworCURJRkZfT1BUX1NFVCgmb3B0cywgUkVDVVJTSVZFKTsKKwlvcHRzLmRldGVjdF9yZW5hbWUgPSBESUZGX0RFVEVDVF9SRU5BTUU7CisJb3B0cy5yZW5hbWVfbGltaXQgPSBvLT5tZXJnZV9yZW5hbWVfbGltaXQgPj0gMCA/IG8tPm1lcmdlX3JlbmFtZV9saW1pdCA6CisJCQkgICAgby0+ZGlmZl9yZW5hbWVfbGltaXQgPj0gMCA/IG8tPmRpZmZfcmVuYW1lX2xpbWl0IDoKKwkJCSAgICA1MDA7CisJb3B0cy53YXJuX29uX3Rvb19sYXJnZV9yZW5hbWUgPSAxOworCW9wdHMub3V0cHV0X2Zvcm1hdCA9IERJRkZfRk9STUFUX05PX09VVFBVVDsKKwlpZiAoZGlmZl9zZXR1cF9kb25lKCZvcHRzKSA8IDApCisJCWRpZSgiZGlmZiBzZXR1cCBmYWlsZWQiKTsKKwlkaWZmX3RyZWVfc2hhMShvX3RyZWUtPm9iamVjdC5zaGExLCB0cmVlLT5vYmplY3Quc2hhMSwgIiIsICZvcHRzKTsKKwlkaWZmY29yZV9zdGQoJm9wdHMpOworCWZvciAoaSA9IDA7IGkgPCBkaWZmX3F1ZXVlZF9kaWZmLm5yOyArK2kpIHsKKwkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW07CisJCXN0cnVjdCByZW5hbWUgKnJlOworCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcGFpciA9IGRpZmZfcXVldWVkX2RpZmYucXVldWVbaV07CisJCWlmIChwYWlyLT5zdGF0dXMgIT0gJ1InKSB7CisJCQlkaWZmX2ZyZWVfZmlsZXBhaXIocGFpcik7CisJCQljb250aW51ZTsKKwkJfQorCQlyZSA9IHhtYWxsb2Moc2l6ZW9mKCpyZSkpOworCQlyZS0+cHJvY2Vzc2VkID0gMDsKKwkJcmUtPnBhaXIgPSBwYWlyOworCQlpdGVtID0gc3RyaW5nX2xpc3RfbG9va3VwKHJlLT5wYWlyLT5vbmUtPnBhdGgsIGVudHJpZXMpOworCQlpZiAoIWl0ZW0pCisJCQlyZS0+c3JjX2VudHJ5ID0gaW5zZXJ0X3N0YWdlX2RhdGEocmUtPnBhaXItPm9uZS0+cGF0aCwKKwkJCQkJb190cmVlLCBhX3RyZWUsIGJfdHJlZSwgZW50cmllcyk7CisJCWVsc2UKKwkJCXJlLT5zcmNfZW50cnkgPSBpdGVtLT51dGlsOworCisJCWl0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAocmUtPnBhaXItPnR3by0+cGF0aCwgZW50cmllcyk7CisJCWlmICghaXRlbSkKKwkJCXJlLT5kc3RfZW50cnkgPSBpbnNlcnRfc3RhZ2VfZGF0YShyZS0+cGFpci0+dHdvLT5wYXRoLAorCQkJCQlvX3RyZWUsIGFfdHJlZSwgYl90cmVlLCBlbnRyaWVzKTsKKwkJZWxzZQorCQkJcmUtPmRzdF9lbnRyeSA9IGl0ZW0tPnV0aWw7CisJCWl0ZW0gPSBzdHJpbmdfbGlzdF9pbnNlcnQocGFpci0+b25lLT5wYXRoLCByZW5hbWVzKTsKKwkJaXRlbS0+dXRpbCA9IHJlOworCX0KKwlvcHRzLm91dHB1dF9mb3JtYXQgPSBESUZGX0ZPUk1BVF9OT19PVVRQVVQ7CisJZGlmZl9xdWV1ZWRfZGlmZi5uciA9IDA7CisJZGlmZl9mbHVzaCgmb3B0cyk7CisJcmV0dXJuIHJlbmFtZXM7Cit9CisKK3N0YXRpYyBpbnQgdXBkYXRlX3N0YWdlcyhjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqbywKKwkJCSBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYSwgc3RydWN0IGRpZmZfZmlsZXNwZWMgKmIsCisJCQkgaW50IGNsZWFyKQoreworCWludCBvcHRpb25zID0gQUREX0NBQ0hFX09LX1RPX0FERCB8IEFERF9DQUNIRV9PS19UT19SRVBMQUNFOworCWlmIChjbGVhcikKKwkJaWYgKHJlbW92ZV9maWxlX2Zyb21fY2FjaGUocGF0aCkpCisJCQlyZXR1cm4gLTE7CisJaWYgKG8pCisJCWlmIChhZGRfY2FjaGVpbmZvKG8tPm1vZGUsIG8tPnNoYTEsIHBhdGgsIDEsIDAsIG9wdGlvbnMpKQorCQkJcmV0dXJuIC0xOworCWlmIChhKQorCQlpZiAoYWRkX2NhY2hlaW5mbyhhLT5tb2RlLCBhLT5zaGExLCBwYXRoLCAyLCAwLCBvcHRpb25zKSkKKwkJCXJldHVybiAtMTsKKwlpZiAoYikKKwkJaWYgKGFkZF9jYWNoZWluZm8oYi0+bW9kZSwgYi0+c2hhMSwgcGF0aCwgMywgMCwgb3B0aW9ucykpCisJCQlyZXR1cm4gLTE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmVtb3ZlX2ZpbGUoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sIGludCBjbGVhbiwKKwkJICAgICAgIGNvbnN0IGNoYXIgKnBhdGgsIGludCBub193ZCkKK3sKKwlpbnQgdXBkYXRlX2NhY2hlID0gby0+Y2FsbF9kZXB0aCB8fCBjbGVhbjsKKwlpbnQgdXBkYXRlX3dvcmtpbmdfZGlyZWN0b3J5ID0gIW8tPmNhbGxfZGVwdGggJiYgIW5vX3dkOworCisJaWYgKHVwZGF0ZV9jYWNoZSkgeworCQlpZiAocmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShwYXRoKSkKKwkJCXJldHVybiAtMTsKKwl9CisJaWYgKHVwZGF0ZV93b3JraW5nX2RpcmVjdG9yeSkgeworCQlpZiAocmVtb3ZlX3BhdGgocGF0aCkgJiYgZXJybm8gIT0gRU5PRU5UKQorCQkJcmV0dXJuIC0xOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNoYXIgKnVuaXF1ZV9wYXRoKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpicmFuY2gpCit7CisJY2hhciAqbmV3cGF0aCA9IHhtYWxsb2Moc3RybGVuKHBhdGgpICsgMSArIHN0cmxlbihicmFuY2gpICsgOCArIDEpOworCWludCBzdWZmaXggPSAwOworCXN0cnVjdCBzdGF0IHN0OworCWNoYXIgKnAgPSBuZXdwYXRoICsgc3RybGVuKHBhdGgpOworCXN0cmNweShuZXdwYXRoLCBwYXRoKTsKKwkqKHArKykgPSAnfic7CisJc3RyY3B5KHAsIGJyYW5jaCk7CisJZm9yICg7ICpwOyArK3ApCisJCWlmICgnLycgPT0gKnApCisJCQkqcCA9ICdfJzsKKwl3aGlsZSAoc3RyaW5nX2xpc3RfaGFzX3N0cmluZygmby0+Y3VycmVudF9maWxlX3NldCwgbmV3cGF0aCkgfHwKKwkgICAgICAgc3RyaW5nX2xpc3RfaGFzX3N0cmluZygmby0+Y3VycmVudF9kaXJlY3Rvcnlfc2V0LCBuZXdwYXRoKSB8fAorCSAgICAgICBsc3RhdChuZXdwYXRoLCAmc3QpID09IDApCisJCXNwcmludGYocCwgIl8lZCIsIHN1ZmZpeCsrKTsKKworCXN0cmluZ19saXN0X2luc2VydChuZXdwYXRoLCAmby0+Y3VycmVudF9maWxlX3NldCk7CisJcmV0dXJuIG5ld3BhdGg7Cit9CisKK3N0YXRpYyB2b2lkIGZsdXNoX2J1ZmZlcihpbnQgZmQsIGNvbnN0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBzaXplKQoreworCXdoaWxlIChzaXplID4gMCkgeworCQlsb25nIHJldCA9IHdyaXRlX2luX2Z1bGwoZmQsIGJ1Ziwgc2l6ZSk7CisJCWlmIChyZXQgPCAwKSB7CisJCQkvKiBJZ25vcmUgZXBpcGUgKi8KKwkJCWlmIChlcnJubyA9PSBFUElQRSkKKwkJCQlicmVhazsKKwkJCWRpZSgibWVyZ2UtcmVjdXJzaXZlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisJCX0gZWxzZSBpZiAoIXJldCkgeworCQkJZGllKCJtZXJnZS1yZWN1cnNpdmU6IGRpc2sgZnVsbD8iKTsKKwkJfQorCQlzaXplIC09IHJldDsKKwkJYnVmICs9IHJldDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgd291bGRfbG9zZV91bnRyYWNrZWQoY29uc3QgY2hhciAqcGF0aCkKK3sKKwlpbnQgcG9zID0gY2FjaGVfbmFtZV9wb3MocGF0aCwgc3RybGVuKHBhdGgpKTsKKworCWlmIChwb3MgPCAwKQorCQlwb3MgPSAtMSAtIHBvczsKKwl3aGlsZSAocG9zIDwgYWN0aXZlX25yICYmCisJICAgICAgICFzdHJjbXAocGF0aCwgYWN0aXZlX2NhY2hlW3Bvc10tPm5hbWUpKSB7CisJCS8qCisJCSAqIElmIHN0YWdlICMwLCBpdCBpcyBkZWZpbml0ZWx5IHRyYWNrZWQuCisJCSAqIElmIGl0IGhhcyBzdGFnZSAjMiB0aGVuIGl0IHdhcyB0cmFja2VkCisJCSAqIGJlZm9yZSB0aGlzIG1lcmdlIHN0YXJ0ZWQuICBBbGwgb3RoZXIKKwkJICogY2FzZXMgdGhlIHBhdGggd2FzIG5vdCB0cmFja2VkLgorCQkgKi8KKwkJc3dpdGNoIChjZV9zdGFnZShhY3RpdmVfY2FjaGVbcG9zXSkpIHsKKwkJY2FzZSAwOgorCQljYXNlIDI6CisJCQlyZXR1cm4gMDsKKwkJfQorCQlwb3MrKzsKKwl9CisJcmV0dXJuIGZpbGVfZXhpc3RzKHBhdGgpOworfQorCitzdGF0aWMgaW50IG1ha2Vfcm9vbV9mb3JfcGF0aChjb25zdCBjaGFyICpwYXRoKQoreworCWludCBzdGF0dXM7CisJY29uc3QgY2hhciAqbXNnID0gImZhaWxlZCB0byBjcmVhdGUgcGF0aCAnJXMnJXMiOworCisJc3RhdHVzID0gc2FmZV9jcmVhdGVfbGVhZGluZ19kaXJlY3Rvcmllc19jb25zdChwYXRoKTsKKwlpZiAoc3RhdHVzKSB7CisJCWlmIChzdGF0dXMgPT0gLTMpIHsKKwkJCS8qIHNvbWV0aGluZyBlbHNlIGV4aXN0cyAqLworCQkJZXJyb3IobXNnLCBwYXRoLCAiOiBwZXJoYXBzIGEgRC9GIGNvbmZsaWN0PyIpOworCQkJcmV0dXJuIC0xOworCQl9CisJCWRpZShtc2csIHBhdGgsICIiKTsKKwl9CisKKwkvKgorCSAqIERvIG5vdCB1bmxpbmsgYSBmaWxlIGluIHRoZSB3b3JrIHRyZWUgaWYgd2UgYXJlIG5vdAorCSAqIHRyYWNraW5nIGl0LgorCSAqLworCWlmICh3b3VsZF9sb3NlX3VudHJhY2tlZChwYXRoKSkKKwkJcmV0dXJuIGVycm9yKCJyZWZ1c2luZyB0byBsb3NlIHVudHJhY2tlZCBmaWxlIGF0ICclcyciLAorCQkJICAgICBwYXRoKTsKKworCS8qIFN1Y2Nlc3NmdWwgdW5saW5rIGlzIGdvb2QuLiAqLworCWlmICghdW5saW5rKHBhdGgpKQorCQlyZXR1cm4gMDsKKwkvKiAuLiBhbmQgc28gaXMgbm8gZXhpc3RpbmcgZmlsZSAqLworCWlmIChlcnJubyA9PSBFTk9FTlQpCisJCXJldHVybiAwOworCS8qIC4uIGJ1dCBub3Qgc29tZSBvdGhlciBlcnJvciAod2hvIHJlYWxseSBjYXJlcyB3aGF0PykgKi8KKwlyZXR1cm4gZXJyb3IobXNnLCBwYXRoLCAiOiBwZXJoYXBzIGEgRC9GIGNvbmZsaWN0PyIpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVfZmlsZV9mbGFncyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYSwKKwkJCSAgICAgIHVuc2lnbmVkIG1vZGUsCisJCQkgICAgICBjb25zdCBjaGFyICpwYXRoLAorCQkJICAgICAgaW50IHVwZGF0ZV9jYWNoZSwKKwkJCSAgICAgIGludCB1cGRhdGVfd2QpCit7CisJaWYgKG8tPmNhbGxfZGVwdGgpCisJCXVwZGF0ZV93ZCA9IDA7CisKKwlpZiAodXBkYXRlX3dkKSB7CisJCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKwkJdm9pZCAqYnVmOworCQl1bnNpZ25lZCBsb25nIHNpemU7CisKKwkJaWYgKFNfSVNHSVRMSU5LKG1vZGUpKQorCQkJZGllKCJjYW5ub3QgcmVhZCBvYmplY3QgJXMgJyVzJzogSXQgaXMgYSBzdWJtb2R1bGUhIiwKKwkJCSAgICBzaGExX3RvX2hleChzaGEpLCBwYXRoKTsKKworCQlidWYgPSByZWFkX3NoYTFfZmlsZShzaGEsICZ0eXBlLCAmc2l6ZSk7CisJCWlmICghYnVmKQorCQkJZGllKCJjYW5ub3QgcmVhZCBvYmplY3QgJXMgJyVzJyIsIHNoYTFfdG9faGV4KHNoYSksIHBhdGgpOworCQlpZiAodHlwZSAhPSBPQkpfQkxPQikKKwkJCWRpZSgiYmxvYiBleHBlY3RlZCBmb3IgJXMgJyVzJyIsIHNoYTFfdG9faGV4KHNoYSksIHBhdGgpOworCQlpZiAoU19JU1JFRyhtb2RlKSkgeworCQkJc3RydWN0IHN0cmJ1ZiBzdHJidWYgPSBTVFJCVUZfSU5JVDsKKwkJCWlmIChjb252ZXJ0X3RvX3dvcmtpbmdfdHJlZShwYXRoLCBidWYsIHNpemUsICZzdHJidWYpKSB7CisJCQkJZnJlZShidWYpOworCQkJCXNpemUgPSBzdHJidWYubGVuOworCQkJCWJ1ZiA9IHN0cmJ1Zl9kZXRhY2goJnN0cmJ1ZiwgTlVMTCk7CisJCQl9CisJCX0KKworCQlpZiAobWFrZV9yb29tX2Zvcl9wYXRoKHBhdGgpIDwgMCkgeworCQkJdXBkYXRlX3dkID0gMDsKKwkJCWZyZWUoYnVmKTsKKwkJCWdvdG8gdXBkYXRlX2luZGV4OworCQl9CisJCWlmIChTX0lTUkVHKG1vZGUpIHx8ICghaGFzX3N5bWxpbmtzICYmIFNfSVNMTksobW9kZSkpKSB7CisJCQlpbnQgZmQ7CisJCQlpZiAobW9kZSAmIDAxMDApCisJCQkJbW9kZSA9IDA3Nzc7CisJCQllbHNlCisJCQkJbW9kZSA9IDA2NjY7CisJCQlmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkgfCBPX1RSVU5DIHwgT19DUkVBVCwgbW9kZSk7CisJCQlpZiAoZmQgPCAwKQorCQkJCWRpZSgiZmFpbGVkIHRvIG9wZW4gJXM6ICVzIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZsdXNoX2J1ZmZlcihmZCwgYnVmLCBzaXplKTsKKwkJCWNsb3NlKGZkKTsKKwkJfSBlbHNlIGlmIChTX0lTTE5LKG1vZGUpKSB7CisJCQljaGFyICpsbmsgPSB4bWVtZHVweihidWYsIHNpemUpOworCQkJc2FmZV9jcmVhdGVfbGVhZGluZ19kaXJlY3Rvcmllc19jb25zdChwYXRoKTsKKwkJCXVubGluayhwYXRoKTsKKwkJCWlmIChzeW1saW5rKGxuaywgcGF0aCkpCisJCQkJZGllKCJmYWlsZWQgdG8gc3ltbGluayAlczogJXMiLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJZnJlZShsbmspOworCQl9IGVsc2UKKwkJCWRpZSgiZG8gbm90IGtub3cgd2hhdCB0byBkbyB3aXRoICUwNm8gJXMgJyVzJyIsCisJCQkgICAgbW9kZSwgc2hhMV90b19oZXgoc2hhKSwgcGF0aCk7CisJCWZyZWUoYnVmKTsKKwl9CisgdXBkYXRlX2luZGV4OgorCWlmICh1cGRhdGVfY2FjaGUpCisJCWFkZF9jYWNoZWluZm8obW9kZSwgc2hhLCBwYXRoLCAwLCB1cGRhdGVfd2QsIEFERF9DQUNIRV9PS19UT19BREQpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVfZmlsZShzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCWludCBjbGVhbiwKKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYSwKKwkJCXVuc2lnbmVkIG1vZGUsCisJCQljb25zdCBjaGFyICpwYXRoKQoreworCXVwZGF0ZV9maWxlX2ZsYWdzKG8sIHNoYSwgbW9kZSwgcGF0aCwgby0+Y2FsbF9kZXB0aCB8fCBjbGVhbiwgIW8tPmNhbGxfZGVwdGgpOworfQorCisvKiBMb3cgbGV2ZWwgZmlsZSBtZXJnaW5nLCB1cGRhdGUgYW5kIHJlbW92YWwgKi8KKworc3RydWN0IG1lcmdlX2ZpbGVfaW5mbworeworCXVuc2lnbmVkIGNoYXIgc2hhWzIwXTsKKwl1bnNpZ25lZCBtb2RlOworCXVuc2lnbmVkIGNsZWFuOjEsCisJCSBtZXJnZToxOworfTsKKworc3RhdGljIHZvaWQgZmlsbF9tbShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBtbWZpbGVfdCAqbW0pCit7CisJdW5zaWduZWQgbG9uZyBzaXplOworCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKworCWlmICghaGFzaGNtcChzaGExLCBudWxsX3NoYTEpKSB7CisJCW1tLT5wdHIgPSB4c3RyZHVwKCIiKTsKKwkJbW0tPnNpemUgPSAwOworCQlyZXR1cm47CisJfQorCisJbW0tPnB0ciA9IHJlYWRfc2hhMV9maWxlKHNoYTEsICZ0eXBlLCAmc2l6ZSk7CisJaWYgKCFtbS0+cHRyIHx8IHR5cGUgIT0gT0JKX0JMT0IpCisJCWRpZSgidW5hYmxlIHRvIHJlYWQgYmxvYiBvYmplY3QgJXMiLCBzaGExX3RvX2hleChzaGExKSk7CisJbW0tPnNpemUgPSBzaXplOworfQorCitzdGF0aWMgaW50IG1lcmdlXzN3YXkoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sCisJCSAgICAgIG1tYnVmZmVyX3QgKnJlc3VsdF9idWYsCisJCSAgICAgIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICpvbmUsCisJCSAgICAgIHN0cnVjdCBkaWZmX2ZpbGVzcGVjICphLAorCQkgICAgICBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYiwKKwkJICAgICAgY29uc3QgY2hhciAqYnJhbmNoMSwKKwkJICAgICAgY29uc3QgY2hhciAqYnJhbmNoMikKK3sKKwltbWZpbGVfdCBvcmlnLCBzcmMxLCBzcmMyOworCWNoYXIgKm5hbWUxLCAqbmFtZTI7CisJaW50IG1lcmdlX3N0YXR1czsKKworCW5hbWUxID0geHN0cmR1cChta3BhdGgoIiVzOiVzIiwgYnJhbmNoMSwgYS0+cGF0aCkpOworCW5hbWUyID0geHN0cmR1cChta3BhdGgoIiVzOiVzIiwgYnJhbmNoMiwgYi0+cGF0aCkpOworCisJZmlsbF9tbShvbmUtPnNoYTEsICZvcmlnKTsKKwlmaWxsX21tKGEtPnNoYTEsICZzcmMxKTsKKwlmaWxsX21tKGItPnNoYTEsICZzcmMyKTsKKworCW1lcmdlX3N0YXR1cyA9IGxsX21lcmdlKHJlc3VsdF9idWYsIGEtPnBhdGgsICZvcmlnLAorCQkJCSZzcmMxLCBuYW1lMSwgJnNyYzIsIG5hbWUyLAorCQkJCW8tPmNhbGxfZGVwdGgpOworCisJZnJlZShuYW1lMSk7CisJZnJlZShuYW1lMik7CisJZnJlZShvcmlnLnB0cik7CisJZnJlZShzcmMxLnB0cik7CisJZnJlZShzcmMyLnB0cik7CisJcmV0dXJuIG1lcmdlX3N0YXR1czsKK30KKworc3RhdGljIHN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWVyZ2VfZmlsZShzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCQkgICAgICAgICBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lLAorCQkJCQkgc3RydWN0IGRpZmZfZmlsZXNwZWMgKmEsCisJCQkJCSBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqYiwKKwkJCQkJIGNvbnN0IGNoYXIgKmJyYW5jaDEsCisJCQkJCSBjb25zdCBjaGFyICpicmFuY2gyKQoreworCXN0cnVjdCBtZXJnZV9maWxlX2luZm8gcmVzdWx0OworCXJlc3VsdC5tZXJnZSA9IDA7CisJcmVzdWx0LmNsZWFuID0gMTsKKworCWlmICgoU19JRk1UICYgYS0+bW9kZSkgIT0gKFNfSUZNVCAmIGItPm1vZGUpKSB7CisJCXJlc3VsdC5jbGVhbiA9IDA7CisJCWlmIChTX0lTUkVHKGEtPm1vZGUpKSB7CisJCQlyZXN1bHQubW9kZSA9IGEtPm1vZGU7CisJCQloYXNoY3B5KHJlc3VsdC5zaGEsIGEtPnNoYTEpOworCQl9IGVsc2UgeworCQkJcmVzdWx0Lm1vZGUgPSBiLT5tb2RlOworCQkJaGFzaGNweShyZXN1bHQuc2hhLCBiLT5zaGExKTsKKwkJfQorCX0gZWxzZSB7CisJCWlmICghc2hhX2VxKGEtPnNoYTEsIG9uZS0+c2hhMSkgJiYgIXNoYV9lcShiLT5zaGExLCBvbmUtPnNoYTEpKQorCQkJcmVzdWx0Lm1lcmdlID0gMTsKKworCQkvKgorCQkgKiBNZXJnZSBtb2RlcworCQkgKi8KKwkJaWYgKGEtPm1vZGUgPT0gYi0+bW9kZSB8fCBhLT5tb2RlID09IG9uZS0+bW9kZSkKKwkJCXJlc3VsdC5tb2RlID0gYi0+bW9kZTsKKwkJZWxzZSB7CisJCQlyZXN1bHQubW9kZSA9IGEtPm1vZGU7CisJCQlpZiAoYi0+bW9kZSAhPSBvbmUtPm1vZGUpIHsKKwkJCQlyZXN1bHQuY2xlYW4gPSAwOworCQkJCXJlc3VsdC5tZXJnZSA9IDE7CisJCQl9CisJCX0KKworCQlpZiAoc2hhX2VxKGEtPnNoYTEsIGItPnNoYTEpIHx8IHNoYV9lcShhLT5zaGExLCBvbmUtPnNoYTEpKQorCQkJaGFzaGNweShyZXN1bHQuc2hhLCBiLT5zaGExKTsKKwkJZWxzZSBpZiAoc2hhX2VxKGItPnNoYTEsIG9uZS0+c2hhMSkpCisJCQloYXNoY3B5KHJlc3VsdC5zaGEsIGEtPnNoYTEpOworCQllbHNlIGlmIChTX0lTUkVHKGEtPm1vZGUpKSB7CisJCQltbWJ1ZmZlcl90IHJlc3VsdF9idWY7CisJCQlpbnQgbWVyZ2Vfc3RhdHVzOworCisJCQltZXJnZV9zdGF0dXMgPSBtZXJnZV8zd2F5KG8sICZyZXN1bHRfYnVmLCBvbmUsIGEsIGIsCisJCQkJCQkgIGJyYW5jaDEsIGJyYW5jaDIpOworCisJCQlpZiAoKG1lcmdlX3N0YXR1cyA8IDApIHx8ICFyZXN1bHRfYnVmLnB0cikKKwkJCQlkaWUoIkZhaWxlZCB0byBleGVjdXRlIGludGVybmFsIG1lcmdlIik7CisKKwkJCWlmICh3cml0ZV9zaGExX2ZpbGUocmVzdWx0X2J1Zi5wdHIsIHJlc3VsdF9idWYuc2l6ZSwKKwkJCQkJICAgIGJsb2JfdHlwZSwgcmVzdWx0LnNoYSkpCisJCQkJZGllKCJVbmFibGUgdG8gYWRkICVzIHRvIGRhdGFiYXNlIiwKKwkJCQkgICAgYS0+cGF0aCk7CisKKwkJCWZyZWUocmVzdWx0X2J1Zi5wdHIpOworCQkJcmVzdWx0LmNsZWFuID0gKG1lcmdlX3N0YXR1cyA9PSAwKTsKKwkJfSBlbHNlIGlmIChTX0lTR0lUTElOSyhhLT5tb2RlKSkgeworCQkJcmVzdWx0LmNsZWFuID0gMDsKKwkJCWhhc2hjcHkocmVzdWx0LnNoYSwgYS0+c2hhMSk7CisJCX0gZWxzZSBpZiAoU19JU0xOSyhhLT5tb2RlKSkgeworCQkJaGFzaGNweShyZXN1bHQuc2hhLCBhLT5zaGExKTsKKworCQkJaWYgKCFzaGFfZXEoYS0+c2hhMSwgYi0+c2hhMSkpCisJCQkJcmVzdWx0LmNsZWFuID0gMDsKKwkJfSBlbHNlIHsKKwkJCWRpZSgidW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgaW4gdGhlIHRyZWUiKTsKKwkJfQorCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkIGNvbmZsaWN0X3JlbmFtZV9yZW5hbWUoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sCisJCQkJICAgc3RydWN0IHJlbmFtZSAqcmVuMSwKKwkJCQkgICBjb25zdCBjaGFyICpicmFuY2gxLAorCQkJCSAgIHN0cnVjdCByZW5hbWUgKnJlbjIsCisJCQkJICAgY29uc3QgY2hhciAqYnJhbmNoMikKK3sKKwljaGFyICpkZWxbMl07CisJaW50IGRlbHAgPSAwOworCWNvbnN0IGNoYXIgKnJlbjFfZHN0ID0gcmVuMS0+cGFpci0+dHdvLT5wYXRoOworCWNvbnN0IGNoYXIgKnJlbjJfZHN0ID0gcmVuMi0+cGFpci0+dHdvLT5wYXRoOworCWNvbnN0IGNoYXIgKmRzdF9uYW1lMSA9IHJlbjFfZHN0OworCWNvbnN0IGNoYXIgKmRzdF9uYW1lMiA9IHJlbjJfZHN0OworCWlmIChzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKCZvLT5jdXJyZW50X2RpcmVjdG9yeV9zZXQsIHJlbjFfZHN0KSkgeworCQlkc3RfbmFtZTEgPSBkZWxbZGVscCsrXSA9IHVuaXF1ZV9wYXRoKG8sIHJlbjFfZHN0LCBicmFuY2gxKTsKKwkJb3V0cHV0KG8sIDEsICIlcyBpcyBhIGRpcmVjdG9yeSBpbiAlcyBhZGRpbmcgYXMgJXMgaW5zdGVhZCIsCisJCSAgICAgICByZW4xX2RzdCwgYnJhbmNoMiwgZHN0X25hbWUxKTsKKwkJcmVtb3ZlX2ZpbGUobywgMCwgcmVuMV9kc3QsIDApOworCX0KKwlpZiAoc3RyaW5nX2xpc3RfaGFzX3N0cmluZygmby0+Y3VycmVudF9kaXJlY3Rvcnlfc2V0LCByZW4yX2RzdCkpIHsKKwkJZHN0X25hbWUyID0gZGVsW2RlbHArK10gPSB1bmlxdWVfcGF0aChvLCByZW4yX2RzdCwgYnJhbmNoMik7CisJCW91dHB1dChvLCAxLCAiJXMgaXMgYSBkaXJlY3RvcnkgaW4gJXMgYWRkaW5nIGFzICVzIGluc3RlYWQiLAorCQkgICAgICAgcmVuMl9kc3QsIGJyYW5jaDEsIGRzdF9uYW1lMik7CisJCXJlbW92ZV9maWxlKG8sIDAsIHJlbjJfZHN0LCAwKTsKKwl9CisJaWYgKG8tPmNhbGxfZGVwdGgpIHsKKwkJcmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShkc3RfbmFtZTEpOworCQlyZW1vdmVfZmlsZV9mcm9tX2NhY2hlKGRzdF9uYW1lMik7CisJCS8qCisJCSAqIFVuY29tbWVudCB0byBsZWF2ZSB0aGUgY29uZmxpY3RpbmcgbmFtZXMgaW4gdGhlIHJlc3VsdGluZyB0cmVlCisJCSAqCisJCSAqIHVwZGF0ZV9maWxlKG8sIDAsIHJlbjEtPnBhaXItPnR3by0+c2hhMSwgcmVuMS0+cGFpci0+dHdvLT5tb2RlLCBkc3RfbmFtZTEpOworCQkgKiB1cGRhdGVfZmlsZShvLCAwLCByZW4yLT5wYWlyLT50d28tPnNoYTEsIHJlbjItPnBhaXItPnR3by0+bW9kZSwgZHN0X25hbWUyKTsKKwkJICovCisJfSBlbHNlIHsKKwkJdXBkYXRlX3N0YWdlcyhkc3RfbmFtZTEsIE5VTEwsIHJlbjEtPnBhaXItPnR3bywgTlVMTCwgMSk7CisJCXVwZGF0ZV9zdGFnZXMoZHN0X25hbWUyLCBOVUxMLCBOVUxMLCByZW4yLT5wYWlyLT50d28sIDEpOworCX0KKwl3aGlsZSAoZGVscC0tKQorCQlmcmVlKGRlbFtkZWxwXSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbmZsaWN0X3JlbmFtZV9kaXIoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sCisJCQkJc3RydWN0IHJlbmFtZSAqcmVuMSwKKwkJCQljb25zdCBjaGFyICpicmFuY2gxKQoreworCWNoYXIgKm5ld19wYXRoID0gdW5pcXVlX3BhdGgobywgcmVuMS0+cGFpci0+dHdvLT5wYXRoLCBicmFuY2gxKTsKKwlvdXRwdXQobywgMSwgIlJlbmFtaW5nICVzIHRvICVzIGluc3RlYWQiLCByZW4xLT5wYWlyLT5vbmUtPnBhdGgsIG5ld19wYXRoKTsKKwlyZW1vdmVfZmlsZShvLCAwLCByZW4xLT5wYWlyLT50d28tPnBhdGgsIDApOworCXVwZGF0ZV9maWxlKG8sIDAsIHJlbjEtPnBhaXItPnR3by0+c2hhMSwgcmVuMS0+cGFpci0+dHdvLT5tb2RlLCBuZXdfcGF0aCk7CisJZnJlZShuZXdfcGF0aCk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbmZsaWN0X3JlbmFtZV9yZW5hbWVfMihzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCQkgICAgIHN0cnVjdCByZW5hbWUgKnJlbjEsCisJCQkJICAgICBjb25zdCBjaGFyICpicmFuY2gxLAorCQkJCSAgICAgc3RydWN0IHJlbmFtZSAqcmVuMiwKKwkJCQkgICAgIGNvbnN0IGNoYXIgKmJyYW5jaDIpCit7CisJY2hhciAqbmV3X3BhdGgxID0gdW5pcXVlX3BhdGgobywgcmVuMS0+cGFpci0+dHdvLT5wYXRoLCBicmFuY2gxKTsKKwljaGFyICpuZXdfcGF0aDIgPSB1bmlxdWVfcGF0aChvLCByZW4yLT5wYWlyLT50d28tPnBhdGgsIGJyYW5jaDIpOworCW91dHB1dChvLCAxLCAiUmVuYW1pbmcgJXMgdG8gJXMgYW5kICVzIHRvICVzIGluc3RlYWQiLAorCSAgICAgICByZW4xLT5wYWlyLT5vbmUtPnBhdGgsIG5ld19wYXRoMSwKKwkgICAgICAgcmVuMi0+cGFpci0+b25lLT5wYXRoLCBuZXdfcGF0aDIpOworCXJlbW92ZV9maWxlKG8sIDAsIHJlbjEtPnBhaXItPnR3by0+cGF0aCwgMCk7CisJdXBkYXRlX2ZpbGUobywgMCwgcmVuMS0+cGFpci0+dHdvLT5zaGExLCByZW4xLT5wYWlyLT50d28tPm1vZGUsIG5ld19wYXRoMSk7CisJdXBkYXRlX2ZpbGUobywgMCwgcmVuMi0+cGFpci0+dHdvLT5zaGExLCByZW4yLT5wYWlyLT50d28tPm1vZGUsIG5ld19wYXRoMik7CisJZnJlZShuZXdfcGF0aDIpOworCWZyZWUobmV3X3BhdGgxKTsKK30KKworc3RhdGljIGludCBwcm9jZXNzX3JlbmFtZXMoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sCisJCQkgICBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmFfcmVuYW1lcywKKwkJCSAgIHN0cnVjdCBzdHJpbmdfbGlzdCAqYl9yZW5hbWVzKQoreworCWludCBjbGVhbl9tZXJnZSA9IDEsIGksIGo7CisJc3RydWN0IHN0cmluZ19saXN0IGFfYnlfZHN0ID0ge05VTEwsIDAsIDAsIDB9LCBiX2J5X2RzdCA9IHtOVUxMLCAwLCAwLCAwfTsKKwljb25zdCBzdHJ1Y3QgcmVuYW1lICpzcmU7CisKKwlmb3IgKGkgPSAwOyBpIDwgYV9yZW5hbWVzLT5ucjsgaSsrKSB7CisJCXNyZSA9IGFfcmVuYW1lcy0+aXRlbXNbaV0udXRpbDsKKwkJc3RyaW5nX2xpc3RfaW5zZXJ0KHNyZS0+cGFpci0+dHdvLT5wYXRoLCAmYV9ieV9kc3QpLT51dGlsCisJCQk9IHNyZS0+ZHN0X2VudHJ5OworCX0KKwlmb3IgKGkgPSAwOyBpIDwgYl9yZW5hbWVzLT5ucjsgaSsrKSB7CisJCXNyZSA9IGJfcmVuYW1lcy0+aXRlbXNbaV0udXRpbDsKKwkJc3RyaW5nX2xpc3RfaW5zZXJ0KHNyZS0+cGFpci0+dHdvLT5wYXRoLCAmYl9ieV9kc3QpLT51dGlsCisJCQk9IHNyZS0+ZHN0X2VudHJ5OworCX0KKworCWZvciAoaSA9IDAsIGogPSAwOyBpIDwgYV9yZW5hbWVzLT5uciB8fCBqIDwgYl9yZW5hbWVzLT5ucjspIHsKKwkJaW50IGNvbXBhcmU7CisJCWNoYXIgKnNyYzsKKwkJc3RydWN0IHN0cmluZ19saXN0ICpyZW5hbWVzMSwgKnJlbmFtZXMyLCAqcmVuYW1lczJEc3Q7CisJCXN0cnVjdCByZW5hbWUgKnJlbjEgPSBOVUxMLCAqcmVuMiA9IE5VTEw7CisJCWNvbnN0IGNoYXIgKmJyYW5jaDEsICpicmFuY2gyOworCQljb25zdCBjaGFyICpyZW4xX3NyYywgKnJlbjFfZHN0OworCisJCWlmIChpID49IGFfcmVuYW1lcy0+bnIpIHsKKwkJCWNvbXBhcmUgPSAxOworCQkJcmVuMiA9IGJfcmVuYW1lcy0+aXRlbXNbaisrXS51dGlsOworCQl9IGVsc2UgaWYgKGogPj0gYl9yZW5hbWVzLT5ucikgeworCQkJY29tcGFyZSA9IC0xOworCQkJcmVuMSA9IGFfcmVuYW1lcy0+aXRlbXNbaSsrXS51dGlsOworCQl9IGVsc2UgeworCQkJY29tcGFyZSA9IHN0cmNtcChhX3JlbmFtZXMtPml0ZW1zW2ldLnN0cmluZywKKwkJCQkJYl9yZW5hbWVzLT5pdGVtc1tqXS5zdHJpbmcpOworCQkJaWYgKGNvbXBhcmUgPD0gMCkKKwkJCQlyZW4xID0gYV9yZW5hbWVzLT5pdGVtc1tpKytdLnV0aWw7CisJCQlpZiAoY29tcGFyZSA+PSAwKQorCQkJCXJlbjIgPSBiX3JlbmFtZXMtPml0ZW1zW2orK10udXRpbDsKKwkJfQorCisJCS8qIFRPRE86IHJlZmFjdG9yLCBzbyB0aGF0IDEvMiBhcmUgbm90IG5lZWRlZCAqLworCQlpZiAocmVuMSkgeworCQkJcmVuYW1lczEgPSBhX3JlbmFtZXM7CisJCQlyZW5hbWVzMiA9IGJfcmVuYW1lczsKKwkJCXJlbmFtZXMyRHN0ID0gJmJfYnlfZHN0OworCQkJYnJhbmNoMSA9IG8tPmJyYW5jaDE7CisJCQlicmFuY2gyID0gby0+YnJhbmNoMjsKKwkJfSBlbHNlIHsKKwkJCXN0cnVjdCByZW5hbWUgKnRtcDsKKwkJCXJlbmFtZXMxID0gYl9yZW5hbWVzOworCQkJcmVuYW1lczIgPSBhX3JlbmFtZXM7CisJCQlyZW5hbWVzMkRzdCA9ICZhX2J5X2RzdDsKKwkJCWJyYW5jaDEgPSBvLT5icmFuY2gyOworCQkJYnJhbmNoMiA9IG8tPmJyYW5jaDE7CisJCQl0bXAgPSByZW4yOworCQkJcmVuMiA9IHJlbjE7CisJCQlyZW4xID0gdG1wOworCQl9CisJCXNyYyA9IHJlbjEtPnBhaXItPm9uZS0+cGF0aDsKKworCQlyZW4xLT5kc3RfZW50cnktPnByb2Nlc3NlZCA9IDE7CisJCXJlbjEtPnNyY19lbnRyeS0+cHJvY2Vzc2VkID0gMTsKKworCQlpZiAocmVuMS0+cHJvY2Vzc2VkKQorCQkJY29udGludWU7CisJCXJlbjEtPnByb2Nlc3NlZCA9IDE7CisKKwkJcmVuMV9zcmMgPSByZW4xLT5wYWlyLT5vbmUtPnBhdGg7CisJCXJlbjFfZHN0ID0gcmVuMS0+cGFpci0+dHdvLT5wYXRoOworCisJCWlmIChyZW4yKSB7CisJCQljb25zdCBjaGFyICpyZW4yX3NyYyA9IHJlbjItPnBhaXItPm9uZS0+cGF0aDsKKwkJCWNvbnN0IGNoYXIgKnJlbjJfZHN0ID0gcmVuMi0+cGFpci0+dHdvLT5wYXRoOworCQkJLyogUmVuYW1lZCBpbiAxIGFuZCByZW5hbWVkIGluIDIgKi8KKwkJCWlmIChzdHJjbXAocmVuMV9zcmMsIHJlbjJfc3JjKSAhPSAwKQorCQkJCWRpZSgicmVuMS5zcmMgIT0gcmVuMi5zcmMiKTsKKwkJCXJlbjItPmRzdF9lbnRyeS0+cHJvY2Vzc2VkID0gMTsKKwkJCXJlbjItPnByb2Nlc3NlZCA9IDE7CisJCQlpZiAoc3RyY21wKHJlbjFfZHN0LCByZW4yX2RzdCkgIT0gMCkgeworCQkJCWNsZWFuX21lcmdlID0gMDsKKwkJCQlvdXRwdXQobywgMSwgIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogIgorCQkJCSAgICAgICAiUmVuYW1lIFwiJXNcIi0+XCIlc1wiIGluIGJyYW5jaCBcIiVzXCIgIgorCQkJCSAgICAgICAicmVuYW1lIFwiJXNcIi0+XCIlc1wiIGluIFwiJXNcIiVzIiwKKwkJCQkgICAgICAgc3JjLCByZW4xX2RzdCwgYnJhbmNoMSwKKwkJCQkgICAgICAgc3JjLCByZW4yX2RzdCwgYnJhbmNoMiwKKwkJCQkgICAgICAgby0+Y2FsbF9kZXB0aCA/ICIgKGxlZnQgdW5yZXNvbHZlZCkiOiAiIik7CisJCQkJaWYgKG8tPmNhbGxfZGVwdGgpIHsKKwkJCQkJcmVtb3ZlX2ZpbGVfZnJvbV9jYWNoZShzcmMpOworCQkJCQl1cGRhdGVfZmlsZShvLCAwLCByZW4xLT5wYWlyLT5vbmUtPnNoYTEsCisJCQkJCQkgICAgcmVuMS0+cGFpci0+b25lLT5tb2RlLCBzcmMpOworCQkJCX0KKwkJCQljb25mbGljdF9yZW5hbWVfcmVuYW1lKG8sIHJlbjEsIGJyYW5jaDEsIHJlbjIsIGJyYW5jaDIpOworCQkJfSBlbHNlIHsKKwkJCQlzdHJ1Y3QgbWVyZ2VfZmlsZV9pbmZvIG1maTsKKwkJCQlyZW1vdmVfZmlsZShvLCAxLCByZW4xX3NyYywgMSk7CisJCQkJbWZpID0gbWVyZ2VfZmlsZShvLAorCQkJCQkJIHJlbjEtPnBhaXItPm9uZSwKKwkJCQkJCSByZW4xLT5wYWlyLT50d28sCisJCQkJCQkgcmVuMi0+cGFpci0+dHdvLAorCQkJCQkJIGJyYW5jaDEsCisJCQkJCQkgYnJhbmNoMik7CisJCQkJaWYgKG1maS5tZXJnZSB8fCAhbWZpLmNsZWFuKQorCQkJCQlvdXRwdXQobywgMSwgIlJlbmFtaW5nICVzLT4lcyIsIHNyYywgcmVuMV9kc3QpOworCisJCQkJaWYgKG1maS5tZXJnZSkKKwkJCQkJb3V0cHV0KG8sIDIsICJBdXRvLW1lcmdpbmcgJXMiLCByZW4xX2RzdCk7CisKKwkJCQlpZiAoIW1maS5jbGVhbikgeworCQkJCQlvdXRwdXQobywgMSwgIkNPTkZMSUNUIChjb250ZW50KTogbWVyZ2UgY29uZmxpY3QgaW4gJXMiLAorCQkJCQkgICAgICAgcmVuMV9kc3QpOworCQkJCQljbGVhbl9tZXJnZSA9IDA7CisKKwkJCQkJaWYgKCFvLT5jYWxsX2RlcHRoKQorCQkJCQkJdXBkYXRlX3N0YWdlcyhyZW4xX2RzdCwKKwkJCQkJCQkgICAgICByZW4xLT5wYWlyLT5vbmUsCisJCQkJCQkJICAgICAgcmVuMS0+cGFpci0+dHdvLAorCQkJCQkJCSAgICAgIHJlbjItPnBhaXItPnR3bywKKwkJCQkJCQkgICAgICAxIC8qIGNsZWFyICovKTsKKwkJCQl9CisJCQkJdXBkYXRlX2ZpbGUobywgbWZpLmNsZWFuLCBtZmkuc2hhLCBtZmkubW9kZSwgcmVuMV9kc3QpOworCQkJfQorCQl9IGVsc2UgeworCQkJLyogUmVuYW1lZCBpbiAxLCBtYXliZSBjaGFuZ2VkIGluIDIgKi8KKwkJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCQkJLyogd2Ugb25seSB1c2Ugc2hhMSBhbmQgbW9kZSBvZiB0aGVzZSAqLworCQkJc3RydWN0IGRpZmZfZmlsZXNwZWMgc3JjX290aGVyLCBkc3Rfb3RoZXI7CisJCQlpbnQgdHJ5X21lcmdlLCBzdGFnZSA9IGFfcmVuYW1lcyA9PSByZW5hbWVzMSA/IDM6IDI7CisKKwkJCXJlbW92ZV9maWxlKG8sIDEsIHJlbjFfc3JjLCBvLT5jYWxsX2RlcHRoIHx8IHN0YWdlID09IDMpOworCisJCQloYXNoY3B5KHNyY19vdGhlci5zaGExLCByZW4xLT5zcmNfZW50cnktPnN0YWdlc1tzdGFnZV0uc2hhKTsKKwkJCXNyY19vdGhlci5tb2RlID0gcmVuMS0+c3JjX2VudHJ5LT5zdGFnZXNbc3RhZ2VdLm1vZGU7CisJCQloYXNoY3B5KGRzdF9vdGhlci5zaGExLCByZW4xLT5kc3RfZW50cnktPnN0YWdlc1tzdGFnZV0uc2hhKTsKKwkJCWRzdF9vdGhlci5tb2RlID0gcmVuMS0+ZHN0X2VudHJ5LT5zdGFnZXNbc3RhZ2VdLm1vZGU7CisKKwkJCXRyeV9tZXJnZSA9IDA7CisKKwkJCWlmIChzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKCZvLT5jdXJyZW50X2RpcmVjdG9yeV9zZXQsIHJlbjFfZHN0KSkgeworCQkJCWNsZWFuX21lcmdlID0gMDsKKwkJCQlvdXRwdXQobywgMSwgIkNPTkZMSUNUIChyZW5hbWUvZGlyZWN0b3J5KTogUmVuYW1lICVzLT4lcyBpbiAlcyAiCisJCQkJICAgICAgICIgZGlyZWN0b3J5ICVzIGFkZGVkIGluICVzIiwKKwkJCQkgICAgICAgcmVuMV9zcmMsIHJlbjFfZHN0LCBicmFuY2gxLAorCQkJCSAgICAgICByZW4xX2RzdCwgYnJhbmNoMik7CisJCQkJY29uZmxpY3RfcmVuYW1lX2RpcihvLCByZW4xLCBicmFuY2gxKTsKKwkJCX0gZWxzZSBpZiAoc2hhX2VxKHNyY19vdGhlci5zaGExLCBudWxsX3NoYTEpKSB7CisJCQkJY2xlYW5fbWVyZ2UgPSAwOworCQkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKHJlbmFtZS9kZWxldGUpOiBSZW5hbWUgJXMtPiVzIGluICVzICIKKwkJCQkgICAgICAgImFuZCBkZWxldGVkIGluICVzIiwKKwkJCQkgICAgICAgcmVuMV9zcmMsIHJlbjFfZHN0LCBicmFuY2gxLAorCQkJCSAgICAgICBicmFuY2gyKTsKKwkJCQl1cGRhdGVfZmlsZShvLCAwLCByZW4xLT5wYWlyLT50d28tPnNoYTEsIHJlbjEtPnBhaXItPnR3by0+bW9kZSwgcmVuMV9kc3QpOworCQkJCXVwZGF0ZV9zdGFnZXMocmVuMV9kc3QsIE5VTEwsCisJCQkJCQlicmFuY2gxID09IG8tPmJyYW5jaDEgPworCQkJCQkJcmVuMS0+cGFpci0+dHdvIDogTlVMTCwKKwkJCQkJCWJyYW5jaDEgPT0gby0+YnJhbmNoMSA/CisJCQkJCQlOVUxMIDogcmVuMS0+cGFpci0+dHdvLCAxKTsKKwkJCX0gZWxzZSBpZiAoIXNoYV9lcShkc3Rfb3RoZXIuc2hhMSwgbnVsbF9zaGExKSkgeworCQkJCWNvbnN0IGNoYXIgKm5ld19wYXRoOworCQkJCWNsZWFuX21lcmdlID0gMDsKKwkJCQl0cnlfbWVyZ2UgPSAxOworCQkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKHJlbmFtZS9hZGQpOiBSZW5hbWUgJXMtPiVzIGluICVzLiAiCisJCQkJICAgICAgICIlcyBhZGRlZCBpbiAlcyIsCisJCQkJICAgICAgIHJlbjFfc3JjLCByZW4xX2RzdCwgYnJhbmNoMSwKKwkJCQkgICAgICAgcmVuMV9kc3QsIGJyYW5jaDIpOworCQkJCW5ld19wYXRoID0gdW5pcXVlX3BhdGgobywgcmVuMV9kc3QsIGJyYW5jaDIpOworCQkJCW91dHB1dChvLCAxLCAiQWRkaW5nIGFzICVzIGluc3RlYWQiLCBuZXdfcGF0aCk7CisJCQkJdXBkYXRlX2ZpbGUobywgMCwgZHN0X290aGVyLnNoYTEsIGRzdF9vdGhlci5tb2RlLCBuZXdfcGF0aCk7CisJCQl9IGVsc2UgaWYgKChpdGVtID0gc3RyaW5nX2xpc3RfbG9va3VwKHJlbjFfZHN0LCByZW5hbWVzMkRzdCkpKSB7CisJCQkJcmVuMiA9IGl0ZW0tPnV0aWw7CisJCQkJY2xlYW5fbWVyZ2UgPSAwOworCQkJCXJlbjItPnByb2Nlc3NlZCA9IDE7CisJCQkJb3V0cHV0KG8sIDEsICJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6ICIKKwkJCQkgICAgICAgIlJlbmFtZSAlcy0+JXMgaW4gJXMuICIKKwkJCQkgICAgICAgIlJlbmFtZSAlcy0+JXMgaW4gJXMiLAorCQkJCSAgICAgICByZW4xX3NyYywgcmVuMV9kc3QsIGJyYW5jaDEsCisJCQkJICAgICAgIHJlbjItPnBhaXItPm9uZS0+cGF0aCwgcmVuMi0+cGFpci0+dHdvLT5wYXRoLCBicmFuY2gyKTsKKwkJCQljb25mbGljdF9yZW5hbWVfcmVuYW1lXzIobywgcmVuMSwgYnJhbmNoMSwgcmVuMiwgYnJhbmNoMik7CisJCQl9IGVsc2UKKwkJCQl0cnlfbWVyZ2UgPSAxOworCisJCQlpZiAodHJ5X21lcmdlKSB7CisJCQkJc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSwgKmEsICpiOworCQkJCXN0cnVjdCBtZXJnZV9maWxlX2luZm8gbWZpOworCQkJCXNyY19vdGhlci5wYXRoID0gKGNoYXIgKilyZW4xX3NyYzsKKworCQkJCW9uZSA9IHJlbjEtPnBhaXItPm9uZTsKKwkJCQlpZiAoYV9yZW5hbWVzID09IHJlbmFtZXMxKSB7CisJCQkJCWEgPSByZW4xLT5wYWlyLT50d287CisJCQkJCWIgPSAmc3JjX290aGVyOworCQkJCX0gZWxzZSB7CisJCQkJCWIgPSByZW4xLT5wYWlyLT50d287CisJCQkJCWEgPSAmc3JjX290aGVyOworCQkJCX0KKwkJCQltZmkgPSBtZXJnZV9maWxlKG8sIG9uZSwgYSwgYiwKKwkJCQkJCW8tPmJyYW5jaDEsIG8tPmJyYW5jaDIpOworCisJCQkJaWYgKG1maS5jbGVhbiAmJgorCQkJCSAgICBzaGFfZXEobWZpLnNoYSwgcmVuMS0+cGFpci0+dHdvLT5zaGExKSAmJgorCQkJCSAgICBtZmkubW9kZSA9PSByZW4xLT5wYWlyLT50d28tPm1vZGUpCisJCQkJCS8qCisJCQkJCSAqIFRoaXMgbWVzc2FnZWQgaXMgcGFydCBvZgorCQkJCQkgKiB0NjAyMiB0ZXN0LiBJZiB5b3UgY2hhbmdlCisJCQkJCSAqIGl0IHVwZGF0ZSB0aGUgdGVzdCB0b28uCisJCQkJCSAqLworCQkJCQlvdXRwdXQobywgMywgIlNraXBwZWQgJXMgKG1lcmdlZCBzYW1lIGFzIGV4aXN0aW5nKSIsIHJlbjFfZHN0KTsKKwkJCQllbHNlIHsKKwkJCQkJaWYgKG1maS5tZXJnZSB8fCAhbWZpLmNsZWFuKQorCQkJCQkJb3V0cHV0KG8sIDEsICJSZW5hbWluZyAlcyA9PiAlcyIsIHJlbjFfc3JjLCByZW4xX2RzdCk7CisJCQkJCWlmIChtZmkubWVyZ2UpCisJCQkJCQlvdXRwdXQobywgMiwgIkF1dG8tbWVyZ2luZyAlcyIsIHJlbjFfZHN0KTsKKwkJCQkJaWYgKCFtZmkuY2xlYW4pIHsKKwkJCQkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKHJlbmFtZS9tb2RpZnkpOiBNZXJnZSBjb25mbGljdCBpbiAlcyIsCisJCQkJCQkgICAgICAgcmVuMV9kc3QpOworCQkJCQkJY2xlYW5fbWVyZ2UgPSAwOworCisJCQkJCQlpZiAoIW8tPmNhbGxfZGVwdGgpCisJCQkJCQkJdXBkYXRlX3N0YWdlcyhyZW4xX2RzdCwKKwkJCQkJCQkJICAgICAgb25lLCBhLCBiLCAxKTsKKwkJCQkJfQorCQkJCQl1cGRhdGVfZmlsZShvLCBtZmkuY2xlYW4sIG1maS5zaGEsIG1maS5tb2RlLCByZW4xX2RzdCk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCXN0cmluZ19saXN0X2NsZWFyKCZhX2J5X2RzdCwgMCk7CisJc3RyaW5nX2xpc3RfY2xlYXIoJmJfYnlfZHN0LCAwKTsKKworCXJldHVybiBjbGVhbl9tZXJnZTsKK30KKworc3RhdGljIHVuc2lnbmVkIGNoYXIgKnN0YWdlX3NoYShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGEsIHVuc2lnbmVkIG1vZGUpCit7CisJcmV0dXJuIChpc19udWxsX3NoYTEoc2hhKSB8fCBtb2RlID09IDApID8gTlVMTDogKHVuc2lnbmVkIGNoYXIgKilzaGE7Cit9CisKKy8qIFBlciBlbnRyeSBtZXJnZSBmdW5jdGlvbiAqLworc3RhdGljIGludCBwcm9jZXNzX2VudHJ5KHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQkJIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGFnZV9kYXRhICplbnRyeSkKK3sKKwkvKgorCXByaW50ZigicHJvY2Vzc2luZyBlbnRyeSwgY2xlYW4gY2FjaGU6ICVzXG4iLCBpbmRleF9vbmx5ID8gInllcyI6ICJubyIpOworCXByaW50X2luZGV4X2VudHJ5KCJcdHBhdGg6ICIsIGVudHJ5KTsKKwkqLworCWludCBjbGVhbl9tZXJnZSA9IDE7CisJdW5zaWduZWQgb19tb2RlID0gZW50cnktPnN0YWdlc1sxXS5tb2RlOworCXVuc2lnbmVkIGFfbW9kZSA9IGVudHJ5LT5zdGFnZXNbMl0ubW9kZTsKKwl1bnNpZ25lZCBiX21vZGUgPSBlbnRyeS0+c3RhZ2VzWzNdLm1vZGU7CisJdW5zaWduZWQgY2hhciAqb19zaGEgPSBzdGFnZV9zaGEoZW50cnktPnN0YWdlc1sxXS5zaGEsIG9fbW9kZSk7CisJdW5zaWduZWQgY2hhciAqYV9zaGEgPSBzdGFnZV9zaGEoZW50cnktPnN0YWdlc1syXS5zaGEsIGFfbW9kZSk7CisJdW5zaWduZWQgY2hhciAqYl9zaGEgPSBzdGFnZV9zaGEoZW50cnktPnN0YWdlc1szXS5zaGEsIGJfbW9kZSk7CisKKwlpZiAob19zaGEgJiYgKCFhX3NoYSB8fCAhYl9zaGEpKSB7CisJCS8qIENhc2UgQTogRGVsZXRlZCBpbiBvbmUgKi8KKwkJaWYgKCghYV9zaGEgJiYgIWJfc2hhKSB8fAorCQkgICAgKHNoYV9lcShhX3NoYSwgb19zaGEpICYmICFiX3NoYSkgfHwKKwkJICAgICghYV9zaGEgJiYgc2hhX2VxKGJfc2hhLCBvX3NoYSkpKSB7CisJCQkvKiBEZWxldGVkIGluIGJvdGggb3IgZGVsZXRlZCBpbiBvbmUgYW5kCisJCQkgKiB1bmNoYW5nZWQgaW4gdGhlIG90aGVyICovCisJCQlpZiAoYV9zaGEpCisJCQkJb3V0cHV0KG8sIDIsICJSZW1vdmluZyAlcyIsIHBhdGgpOworCQkJLyogZG8gbm90IHRvdWNoIHdvcmtpbmcgZmlsZSBpZiBpdCBkaWQgbm90IGV4aXN0ICovCisJCQlyZW1vdmVfZmlsZShvLCAxLCBwYXRoLCAhYV9zaGEpOworCQl9IGVsc2UgeworCQkJLyogRGVsZXRlZCBpbiBvbmUgYW5kIGNoYW5nZWQgaW4gdGhlIG90aGVyICovCisJCQljbGVhbl9tZXJnZSA9IDA7CisJCQlpZiAoIWFfc2hhKSB7CisJCQkJb3V0cHV0KG8sIDEsICJDT05GTElDVCAoZGVsZXRlL21vZGlmeSk6ICVzIGRlbGV0ZWQgaW4gJXMgIgorCQkJCSAgICAgICAiYW5kIG1vZGlmaWVkIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgaW4gdHJlZS4iLAorCQkJCSAgICAgICBwYXRoLCBvLT5icmFuY2gxLAorCQkJCSAgICAgICBvLT5icmFuY2gyLCBvLT5icmFuY2gyLCBwYXRoKTsKKwkJCQl1cGRhdGVfZmlsZShvLCAwLCBiX3NoYSwgYl9tb2RlLCBwYXRoKTsKKwkJCX0gZWxzZSB7CisJCQkJb3V0cHV0KG8sIDEsICJDT05GTElDVCAoZGVsZXRlL21vZGlmeSk6ICVzIGRlbGV0ZWQgaW4gJXMgIgorCQkJCSAgICAgICAiYW5kIG1vZGlmaWVkIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgaW4gdHJlZS4iLAorCQkJCSAgICAgICBwYXRoLCBvLT5icmFuY2gyLAorCQkJCSAgICAgICBvLT5icmFuY2gxLCBvLT5icmFuY2gxLCBwYXRoKTsKKwkJCQl1cGRhdGVfZmlsZShvLCAwLCBhX3NoYSwgYV9tb2RlLCBwYXRoKTsKKwkJCX0KKwkJfQorCisJfSBlbHNlIGlmICgoIW9fc2hhICYmIGFfc2hhICYmICFiX3NoYSkgfHwKKwkJICAgKCFvX3NoYSAmJiAhYV9zaGEgJiYgYl9zaGEpKSB7CisJCS8qIENhc2UgQjogQWRkZWQgaW4gb25lLiAqLworCQljb25zdCBjaGFyICphZGRfYnJhbmNoOworCQljb25zdCBjaGFyICpvdGhlcl9icmFuY2g7CisJCXVuc2lnbmVkIG1vZGU7CisJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTsKKwkJY29uc3QgY2hhciAqY29uZjsKKworCQlpZiAoYV9zaGEpIHsKKwkJCWFkZF9icmFuY2ggPSBvLT5icmFuY2gxOworCQkJb3RoZXJfYnJhbmNoID0gby0+YnJhbmNoMjsKKwkJCW1vZGUgPSBhX21vZGU7CisJCQlzaGEgPSBhX3NoYTsKKwkJCWNvbmYgPSAiZmlsZS9kaXJlY3RvcnkiOworCQl9IGVsc2UgeworCQkJYWRkX2JyYW5jaCA9IG8tPmJyYW5jaDI7CisJCQlvdGhlcl9icmFuY2ggPSBvLT5icmFuY2gxOworCQkJbW9kZSA9IGJfbW9kZTsKKwkJCXNoYSA9IGJfc2hhOworCQkJY29uZiA9ICJkaXJlY3RvcnkvZmlsZSI7CisJCX0KKwkJaWYgKHN0cmluZ19saXN0X2hhc19zdHJpbmcoJm8tPmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgcGF0aCkpIHsKKwkJCWNvbnN0IGNoYXIgKm5ld19wYXRoID0gdW5pcXVlX3BhdGgobywgcGF0aCwgYWRkX2JyYW5jaCk7CisJCQljbGVhbl9tZXJnZSA9IDA7CisJCQlvdXRwdXQobywgMSwgIkNPTkZMSUNUICglcyk6IFRoZXJlIGlzIGEgZGlyZWN0b3J5IHdpdGggbmFtZSAlcyBpbiAlcy4gIgorCQkJICAgICAgICJBZGRpbmcgJXMgYXMgJXMiLAorCQkJICAgICAgIGNvbmYsIHBhdGgsIG90aGVyX2JyYW5jaCwgcGF0aCwgbmV3X3BhdGgpOworCQkJcmVtb3ZlX2ZpbGUobywgMCwgcGF0aCwgMCk7CisJCQl1cGRhdGVfZmlsZShvLCAwLCBzaGEsIG1vZGUsIG5ld19wYXRoKTsKKwkJfSBlbHNlIHsKKwkJCW91dHB1dChvLCAyLCAiQWRkaW5nICVzIiwgcGF0aCk7CisJCQl1cGRhdGVfZmlsZShvLCAxLCBzaGEsIG1vZGUsIHBhdGgpOworCQl9CisJfSBlbHNlIGlmIChhX3NoYSAmJiBiX3NoYSkgeworCQkvKiBDYXNlIEM6IEFkZGVkIGluIGJvdGggKGNoZWNrIGZvciBzYW1lIHBlcm1pc3Npb25zKSBhbmQgKi8KKwkJLyogY2FzZSBEOiBNb2RpZmllZCBpbiBib3RoLCBidXQgZGlmZmVyZW50bHkuICovCisJCWNvbnN0IGNoYXIgKnJlYXNvbiA9ICJjb250ZW50IjsKKwkJc3RydWN0IG1lcmdlX2ZpbGVfaW5mbyBtZmk7CisJCXN0cnVjdCBkaWZmX2ZpbGVzcGVjIG9uZSwgYSwgYjsKKworCQlpZiAoIW9fc2hhKSB7CisJCQlyZWFzb24gPSAiYWRkL2FkZCI7CisJCQlvX3NoYSA9ICh1bnNpZ25lZCBjaGFyICopbnVsbF9zaGExOworCQl9CisJCW91dHB1dChvLCAyLCAiQXV0by1tZXJnaW5nICVzIiwgcGF0aCk7CisJCW9uZS5wYXRoID0gYS5wYXRoID0gYi5wYXRoID0gKGNoYXIgKilwYXRoOworCQloYXNoY3B5KG9uZS5zaGExLCBvX3NoYSk7CisJCW9uZS5tb2RlID0gb19tb2RlOworCQloYXNoY3B5KGEuc2hhMSwgYV9zaGEpOworCQlhLm1vZGUgPSBhX21vZGU7CisJCWhhc2hjcHkoYi5zaGExLCBiX3NoYSk7CisJCWIubW9kZSA9IGJfbW9kZTsKKworCQltZmkgPSBtZXJnZV9maWxlKG8sICZvbmUsICZhLCAmYiwKKwkJCQkgby0+YnJhbmNoMSwgby0+YnJhbmNoMik7CisKKwkJY2xlYW5fbWVyZ2UgPSBtZmkuY2xlYW47CisJCWlmIChtZmkuY2xlYW4pCisJCQl1cGRhdGVfZmlsZShvLCAxLCBtZmkuc2hhLCBtZmkubW9kZSwgcGF0aCk7CisJCWVsc2UgaWYgKFNfSVNHSVRMSU5LKG1maS5tb2RlKSkKKwkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKHN1Ym1vZHVsZSk6IE1lcmdlIGNvbmZsaWN0IGluICVzICIKKwkJCSAgICAgICAiLSBuZWVkcyAlcyIsIHBhdGgsIHNoYTFfdG9faGV4KGIuc2hhMSkpOworCQllbHNlIHsKKwkJCW91dHB1dChvLCAxLCAiQ09ORkxJQ1QgKCVzKTogTWVyZ2UgY29uZmxpY3QgaW4gJXMiLAorCQkJCQlyZWFzb24sIHBhdGgpOworCisJCQlpZiAoby0+Y2FsbF9kZXB0aCkKKwkJCQl1cGRhdGVfZmlsZShvLCAwLCBtZmkuc2hhLCBtZmkubW9kZSwgcGF0aCk7CisJCQllbHNlCisJCQkJdXBkYXRlX2ZpbGVfZmxhZ3MobywgbWZpLnNoYSwgbWZpLm1vZGUsIHBhdGgsCisJCQkJCSAgICAgIDAgLyogdXBkYXRlX2NhY2hlICovLCAxIC8qIHVwZGF0ZV93b3JraW5nX2RpcmVjdG9yeSAqLyk7CisJCX0KKwl9IGVsc2UgaWYgKCFvX3NoYSAmJiAhYV9zaGEgJiYgIWJfc2hhKSB7CisJCS8qCisJCSAqIHRoaXMgZW50cnkgd2FzIGRlbGV0ZWQgYWx0b2dldGhlci4gYV9tb2RlID09IDAgbWVhbnMKKwkJICogd2UgaGFkIHRoYXQgcGF0aCBhbmQgd2FudCB0byBhY3RpdmVseSByZW1vdmUgaXQuCisJCSAqLworCQlyZW1vdmVfZmlsZShvLCAxLCBwYXRoLCAhYV9tb2RlKTsKKwl9IGVsc2UKKwkJZGllKCJGYXRhbCBtZXJnZSBmYWlsdXJlLCBzaG91bGRuJ3QgaGFwcGVuLiIpOworCisJcmV0dXJuIGNsZWFuX21lcmdlOworfQorCitpbnQgbWVyZ2VfdHJlZXMoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sCisJCXN0cnVjdCB0cmVlICpoZWFkLAorCQlzdHJ1Y3QgdHJlZSAqbWVyZ2UsCisJCXN0cnVjdCB0cmVlICpjb21tb24sCisJCXN0cnVjdCB0cmVlICoqcmVzdWx0KQoreworCWludCBjb2RlLCBjbGVhbjsKKworCWlmIChvLT5zdWJ0cmVlX21lcmdlKSB7CisJCW1lcmdlID0gc2hpZnRfdHJlZV9vYmplY3QoaGVhZCwgbWVyZ2UpOworCQljb21tb24gPSBzaGlmdF90cmVlX29iamVjdChoZWFkLCBjb21tb24pOworCX0KKworCWlmIChzaGFfZXEoY29tbW9uLT5vYmplY3Quc2hhMSwgbWVyZ2UtPm9iamVjdC5zaGExKSkgeworCQlvdXRwdXQobywgMCwgIkFscmVhZHkgdXB0b2RhdGUhIik7CisJCSpyZXN1bHQgPSBoZWFkOworCQlyZXR1cm4gMTsKKwl9CisKKwljb2RlID0gZ2l0X21lcmdlX3RyZWVzKG8tPmNhbGxfZGVwdGgsIGNvbW1vbiwgaGVhZCwgbWVyZ2UpOworCisJaWYgKGNvZGUgIT0gMCkKKwkJZGllKCJtZXJnaW5nIG9mIHRyZWVzICVzIGFuZCAlcyBmYWlsZWQiLAorCQkgICAgc2hhMV90b19oZXgoaGVhZC0+b2JqZWN0LnNoYTEpLAorCQkgICAgc2hhMV90b19oZXgobWVyZ2UtPm9iamVjdC5zaGExKSk7CisKKwlpZiAodW5tZXJnZWRfY2FjaGUoKSkgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmVudHJpZXMsICpyZV9oZWFkLCAqcmVfbWVyZ2U7CisJCWludCBpOworCQlzdHJpbmdfbGlzdF9jbGVhcigmby0+Y3VycmVudF9maWxlX3NldCwgMSk7CisJCXN0cmluZ19saXN0X2NsZWFyKCZvLT5jdXJyZW50X2RpcmVjdG9yeV9zZXQsIDEpOworCQlnZXRfZmlsZXNfZGlycyhvLCBoZWFkKTsKKwkJZ2V0X2ZpbGVzX2RpcnMobywgbWVyZ2UpOworCisJCWVudHJpZXMgPSBnZXRfdW5tZXJnZWQoKTsKKwkJcmVfaGVhZCAgPSBnZXRfcmVuYW1lcyhvLCBoZWFkLCBjb21tb24sIGhlYWQsIG1lcmdlLCBlbnRyaWVzKTsKKwkJcmVfbWVyZ2UgPSBnZXRfcmVuYW1lcyhvLCBtZXJnZSwgY29tbW9uLCBoZWFkLCBtZXJnZSwgZW50cmllcyk7CisJCWNsZWFuID0gcHJvY2Vzc19yZW5hbWVzKG8sIHJlX2hlYWQsIHJlX21lcmdlKTsKKwkJZm9yIChpID0gMDsgaSA8IGVudHJpZXMtPm5yOyBpKyspIHsKKwkJCWNvbnN0IGNoYXIgKnBhdGggPSBlbnRyaWVzLT5pdGVtc1tpXS5zdHJpbmc7CisJCQlzdHJ1Y3Qgc3RhZ2VfZGF0YSAqZSA9IGVudHJpZXMtPml0ZW1zW2ldLnV0aWw7CisJCQlpZiAoIWUtPnByb2Nlc3NlZAorCQkJCSYmICFwcm9jZXNzX2VudHJ5KG8sIHBhdGgsIGUpKQorCQkJCWNsZWFuID0gMDsKKwkJfQorCisJCXN0cmluZ19saXN0X2NsZWFyKHJlX21lcmdlLCAwKTsKKwkJc3RyaW5nX2xpc3RfY2xlYXIocmVfaGVhZCwgMCk7CisJCXN0cmluZ19saXN0X2NsZWFyKGVudHJpZXMsIDEpOworCisJfQorCWVsc2UKKwkJY2xlYW4gPSAxOworCisJaWYgKG8tPmNhbGxfZGVwdGgpCisJCSpyZXN1bHQgPSB3cml0ZV90cmVlX2Zyb21fbWVtb3J5KG8pOworCisJcmV0dXJuIGNsZWFuOworfQorCitzdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICpyZXZlcnNlX2NvbW1pdF9saXN0KHN0cnVjdCBjb21taXRfbGlzdCAqbGlzdCkKK3sKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKm5leHQgPSBOVUxMLCAqY3VycmVudCwgKmJhY2t1cDsKKwlmb3IgKGN1cnJlbnQgPSBsaXN0OyBjdXJyZW50OyBjdXJyZW50ID0gYmFja3VwKSB7CisJCWJhY2t1cCA9IGN1cnJlbnQtPm5leHQ7CisJCWN1cnJlbnQtPm5leHQgPSBuZXh0OworCQluZXh0ID0gY3VycmVudDsKKwl9CisJcmV0dXJuIG5leHQ7Cit9CisKKy8qCisgKiBNZXJnZSB0aGUgY29tbWl0cyBoMSBhbmQgaDIsIHJldHVybiB0aGUgcmVzdWx0aW5nIHZpcnR1YWwKKyAqIGNvbW1pdCBvYmplY3QgYW5kIGEgZmxhZyBpbmRpY2F0aW5nIHRoZSBjbGVhbm5lc3Mgb2YgdGhlIG1lcmdlLgorICovCitpbnQgbWVyZ2VfcmVjdXJzaXZlKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvLAorCQkgICAgc3RydWN0IGNvbW1pdCAqaDEsCisJCSAgICBzdHJ1Y3QgY29tbWl0ICpoMiwKKwkJICAgIHN0cnVjdCBjb21taXRfbGlzdCAqY2EsCisJCSAgICBzdHJ1Y3QgY29tbWl0ICoqcmVzdWx0KQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqaXRlcjsKKwlzdHJ1Y3QgY29tbWl0ICptZXJnZWRfY29tbW9uX2FuY2VzdG9yczsKKwlzdHJ1Y3QgdHJlZSAqbXJ0cmVlID0gbXJ0cmVlOworCWludCBjbGVhbjsKKworCWlmIChzaG93KG8sIDQpKSB7CisJCW91dHB1dChvLCA0LCAiTWVyZ2luZzoiKTsKKwkJb3V0cHV0X2NvbW1pdF90aXRsZShvLCBoMSk7CisJCW91dHB1dF9jb21taXRfdGl0bGUobywgaDIpOworCX0KKworCWlmICghY2EpIHsKKwkJY2EgPSBnZXRfbWVyZ2VfYmFzZXMoaDEsIGgyLCAxKTsKKwkJY2EgPSByZXZlcnNlX2NvbW1pdF9saXN0KGNhKTsKKwl9CisKKwlpZiAoc2hvdyhvLCA1KSkgeworCQlvdXRwdXQobywgNSwgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcihzKToiLCBjb21taXRfbGlzdF9jb3VudChjYSkpOworCQlmb3IgKGl0ZXIgPSBjYTsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQpCisJCQlvdXRwdXRfY29tbWl0X3RpdGxlKG8sIGl0ZXItPml0ZW0pOworCX0KKworCW1lcmdlZF9jb21tb25fYW5jZXN0b3JzID0gcG9wX2NvbW1pdCgmY2EpOworCWlmIChtZXJnZWRfY29tbW9uX2FuY2VzdG9ycyA9PSBOVUxMKSB7CisJCS8qIGlmIHRoZXJlIGlzIG5vIGNvbW1vbiBhbmNlc3RvciwgbWFrZSBhbiBlbXB0eSB0cmVlICovCisJCXN0cnVjdCB0cmVlICp0cmVlID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHRyZWUpKTsKKworCQl0cmVlLT5vYmplY3QucGFyc2VkID0gMTsKKwkJdHJlZS0+b2JqZWN0LnR5cGUgPSBPQkpfVFJFRTsKKwkJcHJldGVuZF9zaGExX2ZpbGUoTlVMTCwgMCwgT0JKX1RSRUUsIHRyZWUtPm9iamVjdC5zaGExKTsKKwkJbWVyZ2VkX2NvbW1vbl9hbmNlc3RvcnMgPSBtYWtlX3ZpcnR1YWxfY29tbWl0KHRyZWUsICJhbmNlc3RvciIpOworCX0KKworCWZvciAoaXRlciA9IGNhOyBpdGVyOyBpdGVyID0gaXRlci0+bmV4dCkgeworCQljb25zdCBjaGFyICpzYXZlZF9iMSwgKnNhdmVkX2IyOworCQlvLT5jYWxsX2RlcHRoKys7CisJCS8qCisJCSAqIFdoZW4gdGhlIG1lcmdlIGZhaWxzLCB0aGUgcmVzdWx0IGNvbnRhaW5zIGZpbGVzCisJCSAqIHdpdGggY29uZmxpY3QgbWFya2Vycy4gVGhlIGNsZWFubmVzcyBmbGFnIGlzCisJCSAqIGlnbm9yZWQsIGl0IHdhcyBuZXZlciBhY3R1YWxseSB1c2VkLCBhcyByZXN1bHQgb2YKKwkJICogbWVyZ2VfdHJlZXMgaGFzIGFsd2F5cyBvdmVyd3JpdHRlbiBpdDogdGhlIGNvbW1pdHRlZAorCQkgKiAiY29uZmxpY3RzIiB3ZXJlIGFscmVhZHkgcmVzb2x2ZWQuCisJCSAqLworCQlkaXNjYXJkX2NhY2hlKCk7CisJCXNhdmVkX2IxID0gby0+YnJhbmNoMTsKKwkJc2F2ZWRfYjIgPSBvLT5icmFuY2gyOworCQlvLT5icmFuY2gxID0gIlRlbXBvcmFyeSBtZXJnZSBicmFuY2ggMSI7CisJCW8tPmJyYW5jaDIgPSAiVGVtcG9yYXJ5IG1lcmdlIGJyYW5jaCAyIjsKKwkJbWVyZ2VfcmVjdXJzaXZlKG8sIG1lcmdlZF9jb21tb25fYW5jZXN0b3JzLCBpdGVyLT5pdGVtLAorCQkJCU5VTEwsICZtZXJnZWRfY29tbW9uX2FuY2VzdG9ycyk7CisJCW8tPmJyYW5jaDEgPSBzYXZlZF9iMTsKKwkJby0+YnJhbmNoMiA9IHNhdmVkX2IyOworCQlvLT5jYWxsX2RlcHRoLS07CisKKwkJaWYgKCFtZXJnZWRfY29tbW9uX2FuY2VzdG9ycykKKwkJCWRpZSgibWVyZ2UgcmV0dXJuZWQgbm8gY29tbWl0Iik7CisJfQorCisJZGlzY2FyZF9jYWNoZSgpOworCWlmICghby0+Y2FsbF9kZXB0aCkKKwkJcmVhZF9jYWNoZSgpOworCisJY2xlYW4gPSBtZXJnZV90cmVlcyhvLCBoMS0+dHJlZSwgaDItPnRyZWUsIG1lcmdlZF9jb21tb25fYW5jZXN0b3JzLT50cmVlLAorCQkJICAgICZtcnRyZWUpOworCisJaWYgKG8tPmNhbGxfZGVwdGgpIHsKKwkJKnJlc3VsdCA9IG1ha2VfdmlydHVhbF9jb21taXQobXJ0cmVlLCAibWVyZ2VkIHRyZWUiKTsKKwkJY29tbWl0X2xpc3RfaW5zZXJ0KGgxLCAmKCpyZXN1bHQpLT5wYXJlbnRzKTsKKwkJY29tbWl0X2xpc3RfaW5zZXJ0KGgyLCAmKCpyZXN1bHQpLT5wYXJlbnRzLT5uZXh0KTsKKwl9CisJZmx1c2hfb3V0cHV0KG8pOworCXJldHVybiBjbGVhbjsKK30KKworc3RhdGljIHN0cnVjdCBjb21taXQgKmdldF9yZWYoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3Q7CisKKwlvYmplY3QgPSBkZXJlZl90YWcocGFyc2Vfb2JqZWN0KHNoYTEpLCBuYW1lLCBzdHJsZW4obmFtZSkpOworCWlmICghb2JqZWN0KQorCQlyZXR1cm4gTlVMTDsKKwlpZiAob2JqZWN0LT50eXBlID09IE9CSl9UUkVFKQorCQlyZXR1cm4gbWFrZV92aXJ0dWFsX2NvbW1pdCgoc3RydWN0IHRyZWUqKW9iamVjdCwgbmFtZSk7CisJaWYgKG9iamVjdC0+dHlwZSAhPSBPQkpfQ09NTUlUKQorCQlyZXR1cm4gTlVMTDsKKwlpZiAocGFyc2VfY29tbWl0KChzdHJ1Y3QgY29tbWl0ICopb2JqZWN0KSkKKwkJcmV0dXJuIE5VTEw7CisJcmV0dXJuIChzdHJ1Y3QgY29tbWl0ICopb2JqZWN0OworfQorCitpbnQgbWVyZ2VfcmVjdXJzaXZlX2dlbmVyaWMoc3RydWN0IG1lcmdlX29wdGlvbnMgKm8sCisJCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaGVhZCwKKwkJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICptZXJnZSwKKwkJCSAgICBpbnQgbnVtX2Jhc2VfbGlzdCwKKwkJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICoqYmFzZV9saXN0LAorCQkJICAgIHN0cnVjdCBjb21taXQgKipyZXN1bHQpCit7CisJaW50IGNsZWFuLCBpbmRleF9mZDsKKwlzdHJ1Y3QgbG9ja19maWxlICpsb2NrID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxvY2tfZmlsZSkpOworCXN0cnVjdCBjb21taXQgKmhlYWRfY29tbWl0ID0gZ2V0X3JlZihoZWFkLCBvLT5icmFuY2gxKTsKKwlzdHJ1Y3QgY29tbWl0ICpuZXh0X2NvbW1pdCA9IGdldF9yZWYobWVyZ2UsIG8tPmJyYW5jaDIpOworCXN0cnVjdCBjb21taXRfbGlzdCAqY2EgPSBOVUxMOworCisJaWYgKGJhc2VfbGlzdCkgeworCQlpbnQgaTsKKwkJZm9yIChpID0gMDsgaSA8IG51bV9iYXNlX2xpc3Q7ICsraSkgeworCQkJc3RydWN0IGNvbW1pdCAqYmFzZTsKKwkJCWlmICghKGJhc2UgPSBnZXRfcmVmKGJhc2VfbGlzdFtpXSwgc2hhMV90b19oZXgoYmFzZV9saXN0W2ldKSkpKQorCQkJCXJldHVybiBlcnJvcigiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnIiwKKwkJCQkJc2hhMV90b19oZXgoYmFzZV9saXN0W2ldKSk7CisJCQljb21taXRfbGlzdF9pbnNlcnQoYmFzZSwgJmNhKTsKKwkJfQorCX0KKworCWluZGV4X2ZkID0gaG9sZF9sb2NrZWRfaW5kZXgobG9jaywgMSk7CisJY2xlYW4gPSBtZXJnZV9yZWN1cnNpdmUobywgaGVhZF9jb21taXQsIG5leHRfY29tbWl0LCBjYSwKKwkJCXJlc3VsdCk7CisJaWYgKGFjdGl2ZV9jYWNoZV9jaGFuZ2VkICYmCisJCQkod3JpdGVfY2FjaGUoaW5kZXhfZmQsIGFjdGl2ZV9jYWNoZSwgYWN0aXZlX25yKSB8fAorCQkJIGNvbW1pdF9sb2NrZWRfaW5kZXgobG9jaykpKQorCQlyZXR1cm4gZXJyb3IoIlVuYWJsZSB0byB3cml0ZSBpbmRleC4iKTsKKworCXJldHVybiBjbGVhbiA/IDAgOiAxOworfQorCitzdGF0aWMgaW50IG1lcmdlX3JlY3Vyc2l2ZV9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCit7CisJc3RydWN0IG1lcmdlX29wdGlvbnMgKm8gPSBjYjsKKwlpZiAoIXN0cmNhc2VjbXAodmFyLCAibWVyZ2UudmVyYm9zaXR5IikpIHsKKwkJby0+dmVyYm9zaXR5ID0gZ2l0X2NvbmZpZ19pbnQodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKwlpZiAoIXN0cmNhc2VjbXAodmFyLCAiZGlmZi5yZW5hbWVsaW1pdCIpKSB7CisJCW8tPmRpZmZfcmVuYW1lX2xpbWl0ID0gZ2l0X2NvbmZpZ19pbnQodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKwlpZiAoIXN0cmNhc2VjbXAodmFyLCAibWVyZ2UucmVuYW1lbGltaXQiKSkgeworCQlvLT5tZXJnZV9yZW5hbWVfbGltaXQgPSBnaXRfY29uZmlnX2ludCh2YXIsIHZhbHVlKTsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiBnaXRfeG1lcmdlX2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7Cit9CisKK3ZvaWQgaW5pdF9tZXJnZV9vcHRpb25zKHN0cnVjdCBtZXJnZV9vcHRpb25zICpvKQoreworCW1lbXNldChvLCAwLCBzaXplb2Yoc3RydWN0IG1lcmdlX29wdGlvbnMpKTsKKwlvLT52ZXJib3NpdHkgPSAyOworCW8tPmJ1ZmZlcl9vdXRwdXQgPSAxOworCW8tPmRpZmZfcmVuYW1lX2xpbWl0ID0gLTE7CisJby0+bWVyZ2VfcmVuYW1lX2xpbWl0ID0gLTE7CisJZ2l0X2NvbmZpZyhtZXJnZV9yZWN1cnNpdmVfY29uZmlnLCBvKTsKKwlpZiAoZ2V0ZW52KCJHSVRfTUVSR0VfVkVSQk9TSVRZIikpCisJCW8tPnZlcmJvc2l0eSA9CisJCQlzdHJ0b2woZ2V0ZW52KCJHSVRfTUVSR0VfVkVSQk9TSVRZIiksIE5VTEwsIDEwKTsKKwlpZiAoby0+dmVyYm9zaXR5ID49IDUpCisJCW8tPmJ1ZmZlcl9vdXRwdXQgPSAwOworCXN0cmJ1Zl9pbml0KCZvLT5vYnVmLCAwKTsKKwltZW1zZXQoJm8tPmN1cnJlbnRfZmlsZV9zZXQsIDAsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKKwlvLT5jdXJyZW50X2ZpbGVfc2V0LnN0cmR1cF9zdHJpbmdzID0gMTsKKwltZW1zZXQoJm8tPmN1cnJlbnRfZGlyZWN0b3J5X3NldCwgMCwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOworCW8tPmN1cnJlbnRfZGlyZWN0b3J5X3NldC5zdHJkdXBfc3RyaW5ncyA9IDE7Cit9CmRpZmYgLS1naXQgYS9tZXJnZS1yZWN1cnNpdmUuaCBiL21lcmdlLXJlY3Vyc2l2ZS5oCmluZGV4IGYzNzYzMGEuLmZkMTM4Y2EgMTAwNjQ0Ci0tLSBhL21lcmdlLXJlY3Vyc2l2ZS5oCisrKyBiL21lcmdlLXJlY3Vyc2l2ZS5oCkBAIC0xLDIwICsxLDQ4IEBACiAjaWZuZGVmIE1FUkdFX1JFQ1VSU0lWRV9ICiAjZGVmaW5lIE1FUkdFX1JFQ1VSU0lWRV9ICiAKLWludCBtZXJnZV9yZWN1cnNpdmUoc3RydWN0IGNvbW1pdCAqaDEsCisjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKKworc3RydWN0IG1lcmdlX29wdGlvbnMgeworCWNvbnN0IGNoYXIgKmJyYW5jaDE7CisJY29uc3QgY2hhciAqYnJhbmNoMjsKKwl1bnNpZ25lZCBzdWJ0cmVlX21lcmdlIDogMTsKKwl1bnNpZ25lZCBidWZmZXJfb3V0cHV0IDogMTsKKwlpbnQgdmVyYm9zaXR5OworCWludCBkaWZmX3JlbmFtZV9saW1pdDsKKwlpbnQgbWVyZ2VfcmVuYW1lX2xpbWl0OworCWludCBjYWxsX2RlcHRoOworCXN0cnVjdCBzdHJidWYgb2J1ZjsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgY3VycmVudF9maWxlX3NldDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgY3VycmVudF9kaXJlY3Rvcnlfc2V0OworfTsKKworLyogbWVyZ2VfdHJlZXMoKSBidXQgd2l0aCByZWN1cnNpdmUgYW5jZXN0b3IgY29uc29saWRhdGlvbiAqLworaW50IG1lcmdlX3JlY3Vyc2l2ZShzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJICAgIHN0cnVjdCBjb21taXQgKmgxLAogCQkgICAgc3RydWN0IGNvbW1pdCAqaDIsCi0JCSAgICBjb25zdCBjaGFyICpicmFuY2gxLAotCQkgICAgY29uc3QgY2hhciAqYnJhbmNoMiwKIAkJICAgIHN0cnVjdCBjb21taXRfbGlzdCAqYW5jZXN0b3JzLAogCQkgICAgc3RydWN0IGNvbW1pdCAqKnJlc3VsdCk7CiAKLWludCBtZXJnZV90cmVlcyhzdHJ1Y3QgdHJlZSAqaGVhZCwKKy8qIHJlbmFtZS1kZXRlY3RpbmcgdGhyZWUtd2F5IG1lcmdlLCBubyByZWN1cnNpb24gKi8KK2ludCBtZXJnZV90cmVlcyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJc3RydWN0IHRyZWUgKmhlYWQsCiAJCXN0cnVjdCB0cmVlICptZXJnZSwKIAkJc3RydWN0IHRyZWUgKmNvbW1vbiwKLQkJY29uc3QgY2hhciAqYnJhbmNoMSwKLQkJY29uc3QgY2hhciAqYnJhbmNoMiwKIAkJc3RydWN0IHRyZWUgKipyZXN1bHQpOwogCi1zdHJ1Y3QgdHJlZSAqd3JpdGVfdHJlZV9mcm9tX21lbW9yeSh2b2lkKTsKKy8qCisgKiAiZ2l0LW1lcmdlLXJlY3Vyc2l2ZSIgY2FuIGJlIGZlZCB0cmVlczsgd3JhcCB0aGVtIGludG8KKyAqIHZpcnR1YWwgY29tbWl0cyBhbmQgY2FsbCBtZXJnZV9yZWN1cnNpdmUoKSBwcm9wZXIuCisgKi8KK2ludCBtZXJnZV9yZWN1cnNpdmVfZ2VuZXJpYyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbywKKwkJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpoZWFkLAorCQkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1lcmdlLAorCQkJICAgIGludCBudW1fY2EsCisJCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKmNhLAorCQkJICAgIHN0cnVjdCBjb21taXQgKipyZXN1bHQpOworCit2b2lkIGluaXRfbWVyZ2Vfb3B0aW9ucyhzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbyk7CitzdHJ1Y3QgdHJlZSAqd3JpdGVfdHJlZV9mcm9tX21lbW9yeShzdHJ1Y3QgbWVyZ2Vfb3B0aW9ucyAqbyk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVyZ2UtdHJlZS5jIGIvbWVyZ2UtdHJlZS5jCmluZGV4IDAyZmMxMGYuLjJkMTQxM2UgMTAwNjQ0Ci0tLSBhL21lcmdlLXRyZWUuYworKysgYi9tZXJnZS10cmVlLmMKQEAgLTE1OCw5ICsxNTgsOCBAQAogCiBzdGF0aWMgc3RydWN0IG1lcmdlX2xpc3QgKmNyZWF0ZV9lbnRyeSh1bnNpZ25lZCBzdGFnZSwgdW5zaWduZWQgbW9kZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCkKIHsKLQlzdHJ1Y3QgbWVyZ2VfbGlzdCAqcmVzID0geG1hbGxvYyhzaXplb2YoKnJlcykpOworCXN0cnVjdCBtZXJnZV9saXN0ICpyZXMgPSB4Y2FsbG9jKDEsIHNpemVvZigqcmVzKSk7CiAKLQltZW1zZXQocmVzLCAwLCBzaXplb2YoKnJlcykpOwogCXJlcy0+c3RhZ2UgPSBzdGFnZTsKIAlyZXMtPnBhdGggPSBwYXRoOwogCXJlcy0+bW9kZSA9IG1vZGU7CmRpZmYgLS1naXQgYS9ta3RhZy5jIGIvbWt0YWcuYwppbmRleCAwYjM0MzQxLi5iYTNkNDk1IDEwMDY0NAotLS0gYS9ta3RhZy5jCisrKyBiL21rdGFnLmMKQEAgLTE1Myw3ICsxNTMsNyBAQAogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAl1bnNpZ25lZCBjaGFyIHJlc3VsdF9zaGExWzIwXTsKIAogCWlmIChhcmdjICE9IDEpCkBAIC0xNjEsNyArMTYxLDYgQEAKIAogCXNldHVwX2dpdF9kaXJlY3RvcnkoKTsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCWlmIChzdHJidWZfcmVhZCgmYnVmLCAwLCA0MDk2KSA8IDApIHsKIAkJZGllKCJjb3VsZCBub3QgcmVhZCBmcm9tIHN0ZGluIik7CiAJfQpkaWZmIC0tZ2l0IGEvbWt0cmVlLmMgYi9ta3RyZWUuYwppbmRleCBlMGRhMTEwLi41MTRmZDliIDEwMDY0NAotLS0gYS9ta3RyZWUuYworKysgYi9ta3RyZWUuYwpAQCAtNjUsOCArNjUsOCBAQAogCiBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKIHsKLQlzdHJ1Y3Qgc3RyYnVmIHNiOwotCXN0cnVjdCBzdHJidWYgcF91cTsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IHN0cmJ1ZiBwX3VxID0gU1RSQlVGX0lOSVQ7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAlpbnQgbGluZV90ZXJtaW5hdGlvbiA9ICdcbic7CiAKQEAgLTgyLDggKzgyLDYgQEAKIAkJYXYrKzsKIAl9CiAKLQlzdHJidWZfaW5pdCgmc2IsIDApOwotCXN0cmJ1Zl9pbml0KCZwX3VxLCAwKTsKIAl3aGlsZSAoc3RyYnVmX2dldGxpbmUoJnNiLCBzdGRpbiwgbGluZV90ZXJtaW5hdGlvbikgIT0gRU9GKSB7CiAJCWNoYXIgKnB0ciwgKm50cjsKIAkJdW5zaWduZWQgbW9kZTsKZGlmZiAtLWdpdCBhL21vemlsbGEtc2hhMS9zaGExLmMgYi9tb3ppbGxhLXNoYTEvc2hhMS5jCmluZGV4IDNmMDZiODMuLjk1YTRlYmYgMTAwNjQ0Ci0tLSBhL21vemlsbGEtc2hhMS9zaGExLmMKKysrIGIvbW96aWxsYS1zaGExL3NoYTEuYwpAQCAtMzUsOSArMzUsOSBAQAogCiAjaW5jbHVkZSAic2hhMS5oIgogCi1zdGF0aWMgdm9pZCBzaGFIYXNoQmxvY2soU0hBX0NUWCAqY3R4KTsKK3N0YXRpYyB2b2lkIHNoYUhhc2hCbG9jayhtb3pfU0hBX0NUWCAqY3R4KTsKIAotdm9pZCBTSEExX0luaXQoU0hBX0NUWCAqY3R4KSB7Cit2b2lkIG1vel9TSEExX0luaXQobW96X1NIQV9DVFggKmN0eCkgewogICBpbnQgaTsKIAogICBjdHgtPmxlblcgPSAwOwpAQCAtNTYsNyArNTYsNyBAQAogfQogCiAKLXZvaWQgU0hBMV9VcGRhdGUoU0hBX0NUWCAqY3R4LCBjb25zdCB2b2lkICpfZGF0YUluLCBpbnQgbGVuKSB7Cit2b2lkIG1vel9TSEExX1VwZGF0ZShtb3pfU0hBX0NUWCAqY3R4LCBjb25zdCB2b2lkICpfZGF0YUluLCBpbnQgbGVuKSB7CiAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGFJbiA9IF9kYXRhSW47CiAgIGludCBpOwogCkBAIC03NSw3ICs3NSw3IEBACiB9CiAKIAotdm9pZCBTSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgaGFzaG91dFsyMF0sIFNIQV9DVFggKmN0eCkgewordm9pZCBtb3pfU0hBMV9GaW5hbCh1bnNpZ25lZCBjaGFyIGhhc2hvdXRbMjBdLCBtb3pfU0hBX0NUWCAqY3R4KSB7CiAgIHVuc2lnbmVkIGNoYXIgcGFkMHg4MCA9IDB4ODA7CiAgIHVuc2lnbmVkIGNoYXIgcGFkMHgwMCA9IDB4MDA7CiAgIHVuc2lnbmVkIGNoYXIgcGFkbGVuWzhdOwpAQCAtOTEsMTAgKzkxLDEwIEBACiAgIHBhZGxlbls1XSA9ICh1bnNpZ25lZCBjaGFyKSgoY3R4LT5zaXplTG8gPj4gMTYpICYgMjU1KTsKICAgcGFkbGVuWzZdID0gKHVuc2lnbmVkIGNoYXIpKChjdHgtPnNpemVMbyA+PiA4KSAmIDI1NSk7CiAgIHBhZGxlbls3XSA9ICh1bnNpZ25lZCBjaGFyKSgoY3R4LT5zaXplTG8gPj4gMCkgJiAyNTUpOwotICBTSEExX1VwZGF0ZShjdHgsICZwYWQweDgwLCAxKTsKKyAgbW96X1NIQTFfVXBkYXRlKGN0eCwgJnBhZDB4ODAsIDEpOwogICB3aGlsZSAoY3R4LT5sZW5XICE9IDU2KQotICAgIFNIQTFfVXBkYXRlKGN0eCwgJnBhZDB4MDAsIDEpOwotICBTSEExX1VwZGF0ZShjdHgsIHBhZGxlbiwgOCk7CisgICAgbW96X1NIQTFfVXBkYXRlKGN0eCwgJnBhZDB4MDAsIDEpOworICBtb3pfU0hBMV9VcGRhdGUoY3R4LCBwYWRsZW4sIDgpOwogCiAgIC8qIE91dHB1dCBoYXNoCiAgICAqLwpAQCAtMTA2LDEzICsxMDYsMTMgQEAKICAgLyoKICAgICogIFJlLWluaXRpYWxpemUgdGhlIGNvbnRleHQgKGFsc28gemVyb2l6ZXMgY29udGVudHMpCiAgICAqLwotICBTSEExX0luaXQoY3R4KTsKKyAgbW96X1NIQTFfSW5pdChjdHgpOwogfQogCiAKICNkZWZpbmUgU0hBX1JPVChYLG4pICgoKFgpIDw8IChuKSkgfCAoKFgpID4+ICgzMi0obikpKSkKIAotc3RhdGljIHZvaWQgc2hhSGFzaEJsb2NrKFNIQV9DVFggKmN0eCkgeworc3RhdGljIHZvaWQgc2hhSGFzaEJsb2NrKG1vel9TSEFfQ1RYICpjdHgpIHsKICAgaW50IHQ7CiAgIHVuc2lnbmVkIGludCBBLEIsQyxELEUsVEVNUDsKIApkaWZmIC0tZ2l0IGEvbW96aWxsYS1zaGExL3NoYTEuaCBiL21vemlsbGEtc2hhMS9zaGExLmgKaW5kZXggMTZmMmQzZC4uYWE0OGE0NiAxMDA2NDQKLS0tIGEvbW96aWxsYS1zaGExL3NoYTEuaAorKysgYi9tb3ppbGxhLXNoYTEvc2hhMS5oCkBAIC0zOCw4ICszOCwxMyBAQAogICB1bnNpZ25lZCBpbnQgV1s4MF07CiAgIGludCBsZW5XOwogICB1bnNpZ25lZCBpbnQgc2l6ZUhpLHNpemVMbzsKLX0gU0hBX0NUWDsKK30gbW96X1NIQV9DVFg7CiAKLXZvaWQgU0hBMV9Jbml0KFNIQV9DVFggKmN0eCk7Ci12b2lkIFNIQTFfVXBkYXRlKFNIQV9DVFggKmN0eCwgY29uc3Qgdm9pZCAqZGF0YUluLCBpbnQgbGVuKTsKLXZvaWQgU0hBMV9GaW5hbCh1bnNpZ25lZCBjaGFyIGhhc2hvdXRbMjBdLCBTSEFfQ1RYICpjdHgpOwordm9pZCBtb3pfU0hBMV9Jbml0KG1vel9TSEFfQ1RYICpjdHgpOwordm9pZCBtb3pfU0hBMV9VcGRhdGUobW96X1NIQV9DVFggKmN0eCwgY29uc3Qgdm9pZCAqZGF0YUluLCBpbnQgbGVuKTsKK3ZvaWQgbW96X1NIQTFfRmluYWwodW5zaWduZWQgY2hhciBoYXNob3V0WzIwXSwgbW96X1NIQV9DVFggKmN0eCk7CisKKyNkZWZpbmUgZ2l0X1NIQV9DVFgJbW96X1NIQV9DVFgKKyNkZWZpbmUgZ2l0X1NIQTFfSW5pdAltb3pfU0hBMV9Jbml0CisjZGVmaW5lIGdpdF9TSEExX1VwZGF0ZQltb3pfU0hBMV9VcGRhdGUKKyNkZWZpbmUgZ2l0X1NIQTFfRmluYWwJbW96X1NIQTFfRmluYWwKZGlmZiAtLWdpdCBhL29iamVjdC5jIGIvb2JqZWN0LmMKaW5kZXggNTBiNjUyOC4uN2U2YTkyYyAxMDA2NDQKLS0tIGEvb2JqZWN0LmMKKysrIGIvb2JqZWN0LmMKQEAgLTI2OCwzICsyNjgsMjIgQEAKIAlvYmplY3RzW25yXS5tb2RlID0gbW9kZTsKIAlhcnJheS0+bnIgPSArK25yOwogfQorCit2b2lkIG9iamVjdF9hcnJheV9yZW1vdmVfZHVwbGljYXRlcyhzdHJ1Y3Qgb2JqZWN0X2FycmF5ICphcnJheSkKK3sKKwlpbnQgcmVmLCBzcmMsIGRzdDsKKwlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICpvYmplY3RzID0gYXJyYXktPm9iamVjdHM7CisKKwlmb3IgKHJlZiA9IDA7IHJlZiA8IGFycmF5LT5uciAtIDE7IHJlZisrKSB7CisJCWZvciAoc3JjID0gcmVmICsgMSwgZHN0ID0gc3JjOworCQkgICAgIHNyYyA8IGFycmF5LT5ucjsKKwkJICAgICBzcmMrKykgeworCQkJaWYgKCFzdHJjbXAob2JqZWN0c1tyZWZdLm5hbWUsIG9iamVjdHNbc3JjXS5uYW1lKSkKKwkJCQljb250aW51ZTsKKwkJCWlmIChzcmMgIT0gZHN0KQorCQkJCW9iamVjdHNbZHN0XSA9IG9iamVjdHNbc3JjXTsKKwkJCWRzdCsrOworCQl9CisJCWFycmF5LT5uciA9IGRzdDsKKwl9Cit9CmRpZmYgLS1naXQgYS9vYmplY3QuaCBiL29iamVjdC5oCmluZGV4IDAzNmJkNjYuLjg5ZGQwYzQgMTAwNjQ0Ci0tLSBhL29iamVjdC5oCisrKyBiL29iamVjdC5oCkBAIC00MSw3ICs0MSwxOCBAQAogZXh0ZXJuIHVuc2lnbmVkIGludCBnZXRfbWF4X29iamVjdF9pbmRleCh2b2lkKTsKIGV4dGVybiBzdHJ1Y3Qgb2JqZWN0ICpnZXRfaW5kZXhlZF9vYmplY3QodW5zaWduZWQgaW50KTsKIAotLyoqIEludGVybmFsIG9ubHkgKiovCisvKgorICogVGhpcyBjYW4gYmUgdXNlZCB0byBzZWUgaWYgd2UgaGF2ZSBoZWFyZCBvZiB0aGUgb2JqZWN0IGJlZm9yZSwgYnV0CisgKiBpdCBjYW4gcmV0dXJuICJ5ZXMgd2UgaGF2ZSwgYW5kIGhlcmUgaXMgYSBoYWxmLWluaXRpYWxpc2VkIG9iamVjdCIKKyAqIGZvciBhbiBvYmplY3QgdGhhdCB3ZSBoYXZlbid0IGxvYWRlZC9wYXJzZWQgeWV0LgorICoKKyAqIFdoZW4gcGFyc2luZyBhIGNvbW1pdCB0byBjcmVhdGUgYW4gaW4tY29yZSBjb21taXQgb2JqZWN0LCBpdHMKKyAqIHBhcmVudHMgbGlzdCBob2xkcyBjb21taXQgb2JqZWN0cyB0aGF0IHJlcHJlc2VudCBpdHMgcGFyZW50cywgYnV0CisgKiB0aGV5IGFyZSBleHBlY3RlZCB0byBiZSBsYXppbHkgaW5pdGlhbGl6ZWQgYW5kIGRvIG5vdCBrbm93IHdoYXQKKyAqIHRoZWlyIHRyZWVzIG9yIHBhcmVudHMgYXJlIHlldC4gIFdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2ggYQorICogaGFsZi1pbml0aWFsaXNlZCBvYmplY3RzLCB0aGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIGluaXRpYWxpemUgdGhlbQorICogYnkgY2FsbGluZyBwYXJzZV9vYmplY3QoKSBvbiB0aGVtLgorICovCiBzdHJ1Y3Qgb2JqZWN0ICpsb29rdXBfb2JqZWN0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpOwogCiBleHRlcm4gdm9pZCAqY3JlYXRlX29iamVjdChjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgdHlwZSwgdm9pZCAqb2JqKTsKQEAgLTcxLDUgKzgyLDYgQEAKIC8qIE9iamVjdCBhcnJheSBoYW5kbGluZyAuLiAqLwogdm9pZCBhZGRfb2JqZWN0X2FycmF5KHN0cnVjdCBvYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IG9iamVjdF9hcnJheSAqYXJyYXkpOwogdm9pZCBhZGRfb2JqZWN0X2FycmF5X3dpdGhfbW9kZShzdHJ1Y3Qgb2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5LCB1bnNpZ25lZCBtb2RlKTsKK3ZvaWQgb2JqZWN0X2FycmF5X3JlbW92ZV9kdXBsaWNhdGVzKHN0cnVjdCBvYmplY3RfYXJyYXkgKik7CiAKICNlbmRpZiAvKiBPQkpFQ1RfSCAqLwpkaWZmIC0tZ2l0IGEvcGFjay1jaGVjay5jIGIvcGFjay1jaGVjay5jCmluZGV4IGY1OTZiZjIuLjkwYzMzYjEgMTAwNjQ0Ci0tLSBhL3BhY2stY2hlY2suYworKysgYi9wYWNrLWNoZWNrLmMKQEAgLTQ3LDcgKzQ3LDcgQEAKIHsKIAlvZmZfdCBpbmRleF9zaXplID0gcC0+aW5kZXhfc2l6ZTsKIAljb25zdCB1bnNpZ25lZCBjaGFyICppbmRleF9iYXNlID0gcC0+aW5kZXhfZGF0YTsKLQlTSEFfQ1RYIGN0eDsKKwlnaXRfU0hBX0NUWCBjdHg7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXSwgKnBhY2tfc2lnOwogCW9mZl90IG9mZnNldCA9IDAsIHBhY2tfc2lnX29mcyA9IHAtPnBhY2tfc2l6ZSAtIDIwOwogCXVpbnQzMl90IG5yX29iamVjdHMsIGk7CkBAIC02MCwxNiArNjAsMTYgQEAKIAkgKiBpbW1lZGlhdGVseS4KIAkgKi8KIAotCVNIQTFfSW5pdCgmY3R4KTsKKwlnaXRfU0hBMV9Jbml0KCZjdHgpOwogCXdoaWxlIChvZmZzZXQgPCBwYWNrX3NpZ19vZnMpIHsKIAkJdW5zaWduZWQgaW50IHJlbWFpbmluZzsKIAkJdW5zaWduZWQgY2hhciAqaW4gPSB1c2VfcGFjayhwLCB3X2N1cnMsIG9mZnNldCwgJnJlbWFpbmluZyk7CiAJCW9mZnNldCArPSByZW1haW5pbmc7CiAJCWlmIChvZmZzZXQgPiBwYWNrX3NpZ19vZnMpCiAJCQlyZW1haW5pbmcgLT0gKHVuc2lnbmVkIGludCkob2Zmc2V0IC0gcGFja19zaWdfb2ZzKTsKLQkJU0hBMV9VcGRhdGUoJmN0eCwgaW4sIHJlbWFpbmluZyk7CisJCWdpdF9TSEExX1VwZGF0ZSgmY3R4LCBpbiwgcmVtYWluaW5nKTsKIAl9Ci0JU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKKwlnaXRfU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKIAlwYWNrX3NpZyA9IHVzZV9wYWNrKHAsIHdfY3VycywgcGFja19zaWdfb2ZzLCBOVUxMKTsKIAlpZiAoaGFzaGNtcChzaGExLCBwYWNrX3NpZykpCiAJCWVyciA9IGVycm9yKCIlcyBTSEExIGNoZWNrc3VtIG1pc21hdGNoIiwKQEAgLTEzNSw3ICsxMzUsNyBAQAogewogCW9mZl90IGluZGV4X3NpemU7CiAJY29uc3QgdW5zaWduZWQgY2hhciAqaW5kZXhfYmFzZTsKLQlTSEFfQ1RYIGN0eDsKKwlnaXRfU0hBX0NUWCBjdHg7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAlpbnQgZXJyID0gMDsKIAlzdHJ1Y3QgcGFja193aW5kb3cgKndfY3VycyA9IE5VTEw7CkBAIC0xNDYsOSArMTQ2LDkgQEAKIAlpbmRleF9iYXNlID0gcC0+aW5kZXhfZGF0YTsKIAogCS8qIFZlcmlmeSBTSEExIHN1bSBvZiB0aGUgaW5kZXggZmlsZSAqLwotCVNIQTFfSW5pdCgmY3R4KTsKLQlTSEExX1VwZGF0ZSgmY3R4LCBpbmRleF9iYXNlLCAodW5zaWduZWQgaW50KShpbmRleF9zaXplIC0gMjApKTsKLQlTSEExX0ZpbmFsKHNoYTEsICZjdHgpOworCWdpdF9TSEExX0luaXQoJmN0eCk7CisJZ2l0X1NIQTFfVXBkYXRlKCZjdHgsIGluZGV4X2Jhc2UsICh1bnNpZ25lZCBpbnQpKGluZGV4X3NpemUgLSAyMCkpOworCWdpdF9TSEExX0ZpbmFsKHNoYTEsICZjdHgpOwogCWlmIChoYXNoY21wKHNoYTEsIGluZGV4X2Jhc2UgKyBpbmRleF9zaXplIC0gMjApKQogCQllcnIgPSBlcnJvcigiUGFja2ZpbGUgaW5kZXggZm9yICVzIFNIQTEgbWlzbWF0Y2giLAogCQkJICAgIHAtPnBhY2tfbmFtZSk7CmRpZmYgLS1naXQgYS9wYWNrLXJldmluZGV4LmMgYi9wYWNrLXJldmluZGV4LmMKaW5kZXggNjA5NmI2Mi4uMWRlNTNjOCAxMDA2NDQKLS0tIGEvcGFjay1yZXZpbmRleC5jCisrKyBiL3BhY2stcmV2aW5kZXguYwpAQCAtMTQwLDcgKzE0MCw4IEBACiAJCWVsc2UKIAkJCWxvID0gbWkgKyAxOwogCX0gd2hpbGUgKGxvIDwgaGkpOwotCWRpZSgiaW50ZXJuYWwgZXJyb3I6IHBhY2sgcmV2aW5kZXggY29ycnVwdCIpOworCWVycm9yKCJiYWQgb2Zmc2V0IGZvciByZXZpbmRleCIpOworCXJldHVybiBOVUxMOwogfQogCiB2b2lkIGRpc2NhcmRfcmV2aW5kZXgodm9pZCkKZGlmZiAtLWdpdCBhL3BhY2std3JpdGUuYyBiL3BhY2std3JpdGUuYwppbmRleCAzNjIxZjFkLi5iNDI2MDA2IDEwMDY0NAotLS0gYS9wYWNrLXdyaXRlLmMKKysrIGIvcGFjay13cml0ZS5jCkBAIC0yNSw3ICsyNSw3IEBACiAJb2ZmX3QgbGFzdF9vYmpfb2Zmc2V0ID0gMDsKIAl1aW50MzJfdCBhcnJheVsyNTZdOwogCWludCBpLCBmZDsKLQlTSEFfQ1RYIGN0eDsKKwlnaXRfU0hBX0NUWCBjdHg7CiAJdWludDMyX3QgaW5kZXhfdmVyc2lvbjsKIAogCWlmIChucl9vYmplY3RzKSB7CkBAIC04Niw3ICs4Niw3IEBACiAJc2hhMXdyaXRlKGYsIGFycmF5LCAyNTYgKiA0KTsKIAogCS8qIGNvbXB1dGUgdGhlIFNIQTEgaGFzaCBvZiBzb3J0ZWQgb2JqZWN0IG5hbWVzLiAqLwotCVNIQTFfSW5pdCgmY3R4KTsKKwlnaXRfU0hBMV9Jbml0KCZjdHgpOwogCiAJLyoKIAkgKiBXcml0ZSB0aGUgYWN0dWFsIFNIQTEgZW50cmllcy4uCkBAIC05OSw3ICs5OSw3IEBACiAJCQlzaGExd3JpdGUoZiwgJm9mZnNldCwgNCk7CiAJCX0KIAkJc2hhMXdyaXRlKGYsIG9iai0+c2hhMSwgMjApOwotCQlTSEExX1VwZGF0ZSgmY3R4LCBvYmotPnNoYTEsIDIwKTsKKwkJZ2l0X1NIQTFfVXBkYXRlKCZjdHgsIG9iai0+c2hhMSwgMjApOwogCX0KIAogCWlmIChpbmRleF92ZXJzaW9uID49IDIpIHsKQEAgLTE0MCw3ICsxNDAsNyBAQAogCiAJc2hhMXdyaXRlKGYsIHNoYTEsIDIwKTsKIAlzaGExY2xvc2UoZiwgTlVMTCwgQ1NVTV9GU1lOQyk7Ci0JU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKKwlnaXRfU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKIAlyZXR1cm4gaW5kZXhfbmFtZTsKIH0KIApAQCAtMTY4LDEyICsxNjgsMTIgQEAKIAkJCSBvZmZfdCBwYXJ0aWFsX3BhY2tfb2Zmc2V0KQogewogCWludCBhbGlnbmVkX3N6LCBidWZfc3ogPSA4ICogMTAyNDsKLQlTSEFfQ1RYIG9sZF9zaGExX2N0eCwgbmV3X3NoYTFfY3R4OworCWdpdF9TSEFfQ1RYIG9sZF9zaGExX2N0eCwgbmV3X3NoYTFfY3R4OwogCXN0cnVjdCBwYWNrX2hlYWRlciBoZHI7CiAJY2hhciAqYnVmOwogCi0JU0hBMV9Jbml0KCZvbGRfc2hhMV9jdHgpOwotCVNIQTFfSW5pdCgmbmV3X3NoYTFfY3R4KTsKKwlnaXRfU0hBMV9Jbml0KCZvbGRfc2hhMV9jdHgpOworCWdpdF9TSEExX0luaXQoJm5ld19zaGExX2N0eCk7CiAKIAlpZiAobHNlZWsocGFja19mZCwgMCwgU0VFS19TRVQpICE9IDApCiAJCWRpZSgiRmFpbGVkIHNlZWtpbmcgdG8gc3RhcnQgb2YgJXM6ICVzIiwgcGFja19uYW1lLCBzdHJlcnJvcihlcnJubykpOwpAQCAtMTgxLDkgKzE4MSw5IEBACiAJCWRpZSgiVW5hYmxlIHRvIHJlcmVhZCBoZWFkZXIgb2YgJXM6ICVzIiwgcGFja19uYW1lLCBzdHJlcnJvcihlcnJubykpOwogCWlmIChsc2VlayhwYWNrX2ZkLCAwLCBTRUVLX1NFVCkgIT0gMCkKIAkJZGllKCJGYWlsZWQgc2Vla2luZyB0byBzdGFydCBvZiAlczogJXMiLCBwYWNrX25hbWUsIHN0cmVycm9yKGVycm5vKSk7Ci0JU0hBMV9VcGRhdGUoJm9sZF9zaGExX2N0eCwgJmhkciwgc2l6ZW9mKGhkcikpOworCWdpdF9TSEExX1VwZGF0ZSgmb2xkX3NoYTFfY3R4LCAmaGRyLCBzaXplb2YoaGRyKSk7CiAJaGRyLmhkcl9lbnRyaWVzID0gaHRvbmwob2JqZWN0X2NvdW50KTsKLQlTSEExX1VwZGF0ZSgmbmV3X3NoYTFfY3R4LCAmaGRyLCBzaXplb2YoaGRyKSk7CisJZ2l0X1NIQTFfVXBkYXRlKCZuZXdfc2hhMV9jdHgsICZoZHIsIHNpemVvZihoZHIpKTsKIAl3cml0ZV9vcl9kaWUocGFja19mZCwgJmhkciwgc2l6ZW9mKGhkcikpOwogCXBhcnRpYWxfcGFja19vZmZzZXQgLT0gc2l6ZW9mKGhkcik7CiAKQEAgLTE5OCw3ICsxOTgsNyBAQAogCQkJYnJlYWs7CiAJCWlmIChuIDwgMCkKIAkJCWRpZSgiRmFpbGVkIHRvIGNoZWNrc3VtICVzOiAlcyIsIHBhY2tfbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKLQkJU0hBMV9VcGRhdGUoJm5ld19zaGExX2N0eCwgYnVmLCBuKTsKKwkJZ2l0X1NIQTFfVXBkYXRlKCZuZXdfc2hhMV9jdHgsIGJ1Ziwgbik7CiAKIAkJYWxpZ25lZF9zeiAtPSBuOwogCQlpZiAoIWFsaWduZWRfc3opCkBAIC0yMDcsMTEgKzIwNywxMSBAQAogCQlpZiAoIXBhcnRpYWxfcGFja19zaGExKQogCQkJY29udGludWU7CiAKLQkJU0hBMV9VcGRhdGUoJm9sZF9zaGExX2N0eCwgYnVmLCBuKTsKKwkJZ2l0X1NIQTFfVXBkYXRlKCZvbGRfc2hhMV9jdHgsIGJ1Ziwgbik7CiAJCXBhcnRpYWxfcGFja19vZmZzZXQgLT0gbjsKIAkJaWYgKHBhcnRpYWxfcGFja19vZmZzZXQgPT0gMCkgewogCQkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKLQkJCVNIQTFfRmluYWwoc2hhMSwgJm9sZF9zaGExX2N0eCk7CisJCQlnaXRfU0hBMV9GaW5hbChzaGExLCAmb2xkX3NoYTFfY3R4KTsKIAkJCWlmIChoYXNoY21wKHNoYTEsIHBhcnRpYWxfcGFja19zaGExKSAhPSAwKQogCQkJCWRpZSgiVW5leHBlY3RlZCBjaGVja3N1bSBmb3IgJXMgIgogCQkJCSAgICAiKGRpc2sgY29ycnVwdGlvbj8pIiwgcGFja19uYW1lKTsKQEAgLTIyMCw3ICsyMjAsNyBAQAogCQkJICogcGFjaywgd2hpY2ggYWxzbyBtZWFucyBtYWtpbmcgcGFydGlhbF9wYWNrX29mZnNldAogCQkJICogYmlnIGVub3VnaCBub3QgdG8gbWF0dGVyIGFueW1vcmUuCiAJCQkgKi8KLQkJCVNIQTFfSW5pdCgmb2xkX3NoYTFfY3R4KTsKKwkJCWdpdF9TSEExX0luaXQoJm9sZF9zaGExX2N0eCk7CiAJCQlwYXJ0aWFsX3BhY2tfb2Zmc2V0ID0gfnBhcnRpYWxfcGFja19vZmZzZXQ7CiAJCQlwYXJ0aWFsX3BhY2tfb2Zmc2V0IC09IE1TQihwYXJ0aWFsX3BhY2tfb2Zmc2V0LCAxKTsKIAkJfQpAQCAtMjI4LDggKzIyOCw4IEBACiAJZnJlZShidWYpOwogCiAJaWYgKHBhcnRpYWxfcGFja19zaGExKQotCQlTSEExX0ZpbmFsKHBhcnRpYWxfcGFja19zaGExLCAmb2xkX3NoYTFfY3R4KTsKLQlTSEExX0ZpbmFsKG5ld19wYWNrX3NoYTEsICZuZXdfc2hhMV9jdHgpOworCQlnaXRfU0hBMV9GaW5hbChwYXJ0aWFsX3BhY2tfc2hhMSwgJm9sZF9zaGExX2N0eCk7CisJZ2l0X1NIQTFfRmluYWwobmV3X3BhY2tfc2hhMSwgJm5ld19zaGExX2N0eCk7CiAJd3JpdGVfb3JfZGllKHBhY2tfZmQsIG5ld19wYWNrX3NoYTEsIDIwKTsKIAlmc3luY19vcl9kaWUocGFja19mZCwgcGFja19uYW1lKTsKIH0KZGlmZiAtLWdpdCBhL3BhZ2VyLmMgYi9wYWdlci5jCmluZGV4IDBiN2U1NWYuLmYxOWRkYmMgMTAwNjQ0Ci0tLSBhL3BhZ2VyLmMKKysrIGIvcGFnZXIuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCiAKIC8qCiAgKiBUaGlzIGlzIHNwbGl0IHVwIGZyb20gdGhlIHJlc3Qgb2YgZ2l0IHNvIHRoYXQgd2UgY2FuIGRvCkBAIC04LDcgKzksNyBAQAogc3RhdGljIGludCBzcGF3bmVkX3BhZ2VyOwogCiAjaWZuZGVmIF9fTUlOR1czMl9fCi1zdGF0aWMgdm9pZCBydW5fcGFnZXIoY29uc3QgY2hhciAqcGFnZXIpCitzdGF0aWMgdm9pZCBwYWdlcl9wcmVleGVjKHZvaWQpCiB7CiAJLyoKIAkgKiBXb3JrIGFyb3VuZCBidWcgaW4gImxlc3MiIGJ5IG5vdCBzdGFydGluZyBpdCB1bnRpbCB3ZQpAQCAtMjAsMTcgKzIxLDEzIEBACiAJRkRfU0VUKDAsICZpbik7CiAJc2VsZWN0KDEsICZpbiwgTlVMTCwgJmluLCBOVUxMKTsKIAotCWV4ZWNscChwYWdlciwgcGFnZXIsIE5VTEwpOwotCWV4ZWNsKCIvYmluL3NoIiwgInNoIiwgIi1jIiwgcGFnZXIsIE5VTEwpOworCXNldGVudigiTEVTUyIsICJGUlNYIiwgMCk7CiB9Ci0jZWxzZQotI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCisjZW5kaWYKIAogc3RhdGljIGNvbnN0IGNoYXIgKnBhZ2VyX2FyZ3ZbXSA9IHsgInNoIiwgIi1jIiwgTlVMTCwgTlVMTCB9Owotc3RhdGljIHN0cnVjdCBjaGlsZF9wcm9jZXNzIHBhZ2VyX3Byb2Nlc3MgPSB7Ci0JLmFyZ3YgPSBwYWdlcl9hcmd2LAotCS5pbiA9IC0xCi19Oworc3RhdGljIHN0cnVjdCBjaGlsZF9wcm9jZXNzIHBhZ2VyX3Byb2Nlc3M7CisKIHN0YXRpYyB2b2lkIHdhaXRfZm9yX3BhZ2VyKHZvaWQpCiB7CiAJZmZsdXNoKHN0ZG91dCk7CkBAIC00MCwxNCArMzcsOSBAQAogCWNsb3NlKDIpOwogCWZpbmlzaF9jb21tYW5kKCZwYWdlcl9wcm9jZXNzKTsKIH0KLSNlbmRpZgogCiB2b2lkIHNldHVwX3BhZ2VyKHZvaWQpCiB7Ci0jaWZuZGVmIF9fTUlOR1czMl9fCi0JcGlkX3QgcGlkOwotCWludCBmZFsyXTsKLSNlbmRpZgogCWNvbnN0IGNoYXIgKnBhZ2VyID0gZ2V0ZW52KCJHSVRfUEFHRVIiKTsKIAogCWlmICghaXNhdHR5KDEpKQpAQCAtNjYsMzcgKzU4LDEzIEBACiAKIAlzcGF3bmVkX3BhZ2VyID0gMTsgLyogbWVhbnMgd2UgYXJlIGVtaXR0aW5nIHRvIHRlcm1pbmFsICovCiAKLSNpZm5kZWYgX19NSU5HVzMyX18KLQlpZiAocGlwZShmZCkgPCAwKQotCQlyZXR1cm47Ci0JcGlkID0gZm9yaygpOwotCWlmIChwaWQgPCAwKSB7Ci0JCWNsb3NlKGZkWzBdKTsKLQkJY2xvc2UoZmRbMV0pOwotCQlyZXR1cm47Ci0JfQotCi0JLyogcmV0dXJuIGluIHRoZSBjaGlsZCAqLwotCWlmICghcGlkKSB7Ci0JCWR1cDIoZmRbMV0sIDEpOwotCQlkdXAyKGZkWzFdLCAyKTsKLQkJY2xvc2UoZmRbMF0pOwotCQljbG9zZShmZFsxXSk7Ci0JCXJldHVybjsKLQl9Ci0KLQkvKiBUaGUgb3JpZ2luYWwgcHJvY2VzcyB0dXJucyBpbnRvIHRoZSBQQUdFUiAqLwotCWR1cDIoZmRbMF0sIDApOwotCWNsb3NlKGZkWzBdKTsKLQljbG9zZShmZFsxXSk7Ci0KLQlzZXRlbnYoIkxFU1MiLCAiRlJTWCIsIDApOwotCXJ1bl9wYWdlcihwYWdlcik7Ci0JZGllKCJ1bmFibGUgdG8gZXhlY3V0ZSBwYWdlciAnJXMnIiwgcGFnZXIpOwotCWV4aXQoMjU1KTsKLSNlbHNlCiAJLyogc3Bhd24gdGhlIHBhZ2VyICovCiAJcGFnZXJfYXJndlsyXSA9IHBhZ2VyOworCXBhZ2VyX3Byb2Nlc3MuYXJndiA9IHBhZ2VyX2FyZ3Y7CisJcGFnZXJfcHJvY2Vzcy5pbiA9IC0xOworI2lmbmRlZiBfX01JTkdXMzJfXworCXBhZ2VyX3Byb2Nlc3MucHJlZXhlY19jYiA9IHBhZ2VyX3ByZWV4ZWM7CisjZW5kaWYKIAlpZiAoc3RhcnRfY29tbWFuZCgmcGFnZXJfcHJvY2VzcykpCiAJCXJldHVybjsKIApAQCAtMTA4LDcgKzc2LDYgQEAKIAogCS8qIHRoaXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBwYXJlbnQgdGVybWluYXRlcyBhZnRlciB0aGUgcGFnZXIgKi8KIAlhdGV4aXQod2FpdF9mb3JfcGFnZXIpOwotI2VuZGlmCiB9CiAKIGludCBwYWdlcl9pbl91c2Uodm9pZCkKZGlmZiAtLWdpdCBhL3BhcnNlLW9wdGlvbnMuYyBiL3BhcnNlLW9wdGlvbnMuYwppbmRleCBmZDA4YmI0Li45ZWI1NWNjIDEwMDY0NAotLS0gYS9wYXJzZS1vcHRpb25zLmMKKysrIGIvcGFyc2Utb3B0aW9ucy5jCkBAIC00ODQsNiArNDg0LDI4IEBACiAJcmV0dXJuIDA7CiB9CiAKK2ludCBwYXJzZV9vcHRfdmVyYm9zaXR5X2NiKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwgY29uc3QgY2hhciAqYXJnLAorCQkJICAgaW50IHVuc2V0KQoreworCWludCAqdGFyZ2V0ID0gb3B0LT52YWx1ZTsKKworCWlmICh1bnNldCkKKwkJLyogLS1uby1xdWlldCwgLS1uby12ZXJib3NlICovCisJCSp0YXJnZXQgPSAwOworCWVsc2UgaWYgKG9wdC0+c2hvcnRfbmFtZSA9PSAndicpIHsKKwkJaWYgKCp0YXJnZXQgPj0gMCkKKwkJCSgqdGFyZ2V0KSsrOworCQllbHNlCisJCQkqdGFyZ2V0ID0gMTsKKwl9IGVsc2UgeworCQlpZiAoKnRhcmdldCA8PSAwKQorCQkJKCp0YXJnZXQpLS07CisJCWVsc2UKKwkJCSp0YXJnZXQgPSAtMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKIC8qCiAgKiBUaGlzIHNob3VsZCByZWFsbHkgYmUgT1BUSU9OX0ZJTEVOQU1FIHR5cGUgYXMgYSBwYXJ0IG9mCiAgKiBwYXJzZV9vcHRpb25zIHRoYXQgdGFrZSBwcmVmaXggdG8gZG8gdGhpcyB3aGlsZSBwYXJzaW5nLgpkaWZmIC0tZ2l0IGEvcGFyc2Utb3B0aW9ucy5oIGIvcGFyc2Utb3B0aW9ucy5oCmluZGV4IDUxOTk5NTAuLjAzNDE2MmUgMTAwNjQ0Ci0tLSBhL3BhcnNlLW9wdGlvbnMuaAorKysgYi9wYXJzZS1vcHRpb25zLmgKQEAgLTE1MCw5ICsxNTAsMTUgQEAKIC8qLS0tLS0gc29tZSBvZnRlbiB1c2VkIG9wdGlvbnMgLS0tLS0qLwogZXh0ZXJuIGludCBwYXJzZV9vcHRfYWJicmV2X2NiKGNvbnN0IHN0cnVjdCBvcHRpb24gKiwgY29uc3QgY2hhciAqLCBpbnQpOwogZXh0ZXJuIGludCBwYXJzZV9vcHRfYXBwcm94aWRhdGVfY2IoY29uc3Qgc3RydWN0IG9wdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CitleHRlcm4gaW50IHBhcnNlX29wdF92ZXJib3NpdHlfY2IoY29uc3Qgc3RydWN0IG9wdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CiAKICNkZWZpbmUgT1BUX19WRVJCT1NFKHZhcikgIE9QVF9CT09MRUFOKCd2JywgInZlcmJvc2UiLCAodmFyKSwgImJlIHZlcmJvc2UiKQogI2RlZmluZSBPUFRfX1FVSUVUKHZhcikgICAgT1BUX0JPT0xFQU4oJ3EnLCAicXVpZXQiLCAgICh2YXIpLCAiYmUgcXVpZXQiKQorI2RlZmluZSBPUFRfX1ZFUkJPU0lUWSh2YXIpIFwKKwl7IE9QVElPTl9DQUxMQkFDSywgJ3YnLCAidmVyYm9zZSIsICh2YXIpLCBOVUxMLCAiYmUgbW9yZSB2ZXJib3NlIiwgXAorCSAgUEFSU0VfT1BUX05PQVJHLCAmcGFyc2Vfb3B0X3ZlcmJvc2l0eV9jYiwgMCB9LCBcCisJeyBPUFRJT05fQ0FMTEJBQ0ssICdxJywgInF1aWV0IiwgKHZhciksIE5VTEwsICJiZSBtb3JlIHF1aWV0IiwgXAorCSAgUEFSU0VfT1BUX05PQVJHLCAmcGFyc2Vfb3B0X3ZlcmJvc2l0eV9jYiwgMCB9CiAjZGVmaW5lIE9QVF9fRFJZX1JVTih2YXIpICBPUFRfQk9PTEVBTignbicsICJkcnktcnVuIiwgKHZhciksICJkcnkgcnVuIikKICNkZWZpbmUgT1BUX19BQkJSRVYodmFyKSAgXAogCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAiYWJicmV2IiwgKHZhciksICJuIiwgXApkaWZmIC0tZ2l0IGEvcGF0Y2gtaWQuYyBiL3BhdGNoLWlkLmMKaW5kZXggOTM0OWJjNS4uODcxZjFkMiAxMDA2NDQKLS0tIGEvcGF0Y2gtaWQuYworKysgYi9wYXRjaC1pZC5jCkBAIC0xLDYgKzEsNiBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAKLXN0YXRpYyB2b2lkIGZsdXNoX2N1cnJlbnRfaWQoaW50IHBhdGNobGVuLCB1bnNpZ25lZCBjaGFyICppZCwgU0hBX0NUWCAqYykKK3N0YXRpYyB2b2lkIGZsdXNoX2N1cnJlbnRfaWQoaW50IHBhdGNobGVuLCB1bnNpZ25lZCBjaGFyICppZCwgZ2l0X1NIQV9DVFggKmMpCiB7CiAJdW5zaWduZWQgY2hhciByZXN1bHRbMjBdOwogCWNoYXIgbmFtZVs1MF07CkBAIC04LDEwICs4LDEwIEBACiAJaWYgKCFwYXRjaGxlbikKIAkJcmV0dXJuOwogCi0JU0hBMV9GaW5hbChyZXN1bHQsIGMpOworCWdpdF9TSEExX0ZpbmFsKHJlc3VsdCwgYyk7CiAJbWVtY3B5KG5hbWUsIHNoYTFfdG9faGV4KGlkKSwgNDEpOwogCXByaW50ZigiJXMgJXNcbiIsIHNoYTFfdG9faGV4KHJlc3VsdCksIG5hbWUpOwotCVNIQTFfSW5pdChjKTsKKwlnaXRfU0hBMV9Jbml0KGMpOwogfQogCiBzdGF0aWMgaW50IHJlbW92ZV9zcGFjZShjaGFyICpsaW5lKQpAQCAtMzEsMTAgKzMxLDEwIEBACiB7CiAJc3RhdGljIHVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJc3RhdGljIGNoYXIgbGluZVsxMDAwXTsKLQlTSEFfQ1RYIGN0eDsKKwlnaXRfU0hBX0NUWCBjdHg7CiAJaW50IHBhdGNobGVuID0gMDsKIAotCVNIQTFfSW5pdCgmY3R4KTsKKwlnaXRfU0hBMV9Jbml0KCZjdHgpOwogCXdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIHN0ZGluKSAhPSBOVUxMKSB7CiAJCXVuc2lnbmVkIGNoYXIgblsyMF07CiAJCWNoYXIgKnAgPSBsaW5lOwpAQCAtNjcsNyArNjcsNyBAQAogCQkvKiBDb21wdXRlIHRoZSBzaGEgd2l0aG91dCB3aGl0ZXNwYWNlICovCiAJCWxlbiA9IHJlbW92ZV9zcGFjZShsaW5lKTsKIAkJcGF0Y2hsZW4gKz0gbGVuOwotCQlTSEExX1VwZGF0ZSgmY3R4LCBsaW5lLCBsZW4pOworCQlnaXRfU0hBMV9VcGRhdGUoJmN0eCwgbGluZSwgbGVuKTsKIAl9CiAJZmx1c2hfY3VycmVudF9pZChwYXRjaGxlbiwgc2hhMSwgJmN0eCk7CiB9CmRpZmYgLS1naXQgYS9wZXJsL0dpdC5wbSBiL3BlcmwvR2l0LnBtCmluZGV4IDI5YTE3ODMuLjdkN2YyYjEgMTAwNjQ0Ci0tLSBhL3BlcmwvR2l0LnBtCisrKyBiL3BlcmwvR2l0LnBtCkBAIC0xNjYsMTEgKzE2NiwxMiBAQAogCQl9CiAJfQogCi0JaWYgKG5vdCBkZWZpbmVkICRvcHRze1JlcG9zaXRvcnl9IGFuZCBub3QgZGVmaW5lZCAkb3B0c3tXb3JraW5nQ29weX0pIHsKLQkJJG9wdHN7RGlyZWN0b3J5fSB8fD0gJy4nOworCWlmIChub3QgZGVmaW5lZCAkb3B0c3tSZXBvc2l0b3J5fSBhbmQgbm90IGRlZmluZWQgJG9wdHN7V29ya2luZ0NvcHl9CisJCWFuZCBub3QgZGVmaW5lZCAkb3B0c3tEaXJlY3Rvcnl9KSB7CisJCSRvcHRze0RpcmVjdG9yeX0gPSAnLic7CiAJfQogCi0JaWYgKCRvcHRze0RpcmVjdG9yeX0pIHsKKwlpZiAoZGVmaW5lZCAkb3B0c3tEaXJlY3Rvcnl9KSB7CiAJCS1kICRvcHRze0RpcmVjdG9yeX0gb3IgdGhyb3cgRXJyb3I6OlNpbXBsZSgiRGlyZWN0b3J5IG5vdCBmb3VuZDogJCEiKTsKIAogCQlteSAkc2VhcmNoID0gR2l0LT5yZXBvc2l0b3J5KFdvcmtpbmdDb3B5ID0+ICRvcHRze0RpcmVjdG9yeX0pOwpAQCAtMjA0LDE0ICsyMDUsMTQgQEAKIAogCQkJdW5sZXNzICgtZCAiJGRpci9yZWZzIiBhbmQgLWQgIiRkaXIvb2JqZWN0cyIgYW5kIC1lICIkZGlyL0hFQUQiKSB7CiAJCQkJIyBNaW1pY2sgZ2l0LXJldi1wYXJzZSAtLWdpdC1kaXIgZXJyb3IgbWVzc2FnZToKLQkJCQl0aHJvdyBFcnJvcjo6U2ltcGxlKCdmYXRhbDogTm90IGEgZ2l0IHJlcG9zaXRvcnknKTsKKwkJCQl0aHJvdyBFcnJvcjo6U2ltcGxlKCJmYXRhbDogTm90IGEgZ2l0IHJlcG9zaXRvcnk6ICRkaXIiKTsKIAkJCX0KIAkJCW15ICRzZWFyY2ggPSBHaXQtPnJlcG9zaXRvcnkoUmVwb3NpdG9yeSA9PiAkZGlyKTsKIAkJCXRyeSB7CiAJCQkJJHNlYXJjaC0+Y29tbWFuZCgnc3ltYm9saWMtcmVmJywgJ0hFQUQnKTsKIAkJCX0gY2F0Y2ggR2l0OjpFcnJvcjo6Q29tbWFuZCB3aXRoIHsKIAkJCQkjIE1pbWljayBnaXQtcmV2LXBhcnNlIC0tZ2l0LWRpciBlcnJvciBtZXNzYWdlOgotCQkJCXRocm93IEVycm9yOjpTaW1wbGUoJ2ZhdGFsOiBOb3QgYSBnaXQgcmVwb3NpdG9yeScpOworCQkJCXRocm93IEVycm9yOjpTaW1wbGUoImZhdGFsOiBOb3QgYSBnaXQgcmVwb3NpdG9yeTogJGRpciIpOwogCQkJfQogCiAJCQkkb3B0c3tSZXBvc2l0b3J5fSA9IGFic19wYXRoKCRkaXIpOwpAQCAtOTYxLDkgKzk2Miw3IEBACiA9Y3V0CiAKIHN1YiB0ZW1wX2FjcXVpcmUgewotCW15ICgkc2VsZiwgJG5hbWUpID0gX21heWJlX3NlbGYoQF8pOwotCi0JbXkgJHRlbXBfZmQgPSBfdGVtcF9jYWNoZSgkbmFtZSk7CisJbXkgJHRlbXBfZmQgPSBfdGVtcF9jYWNoZShAXyk7CiAKIAkkVEVNUF9GSUxFU3skdGVtcF9mZH17bG9ja2VkfSA9IDE7CiAJJHRlbXBfZmQ7CkBAIC0xMDA1LDcgKzEwMDQsNyBAQAogfQogCiBzdWIgX3RlbXBfY2FjaGUgewotCW15ICgkbmFtZSkgPSBAXzsKKwlteSAoJHNlbGYsICRuYW1lKSA9IF9tYXliZV9zZWxmKEBfKTsKIAogCV92ZXJpZnlfcmVxdWlyZSgpOwogCkBAIC0xMDIyLDkgKzEwMjEsMTYgQEAKIAkJCQkiJyB3YXMgY2xvc2VkLiBPcGVuaW5nIHJlcGxhY2VtZW50LiI7CiAJCX0KIAkJbXkgJGZuYW1lOworCisJCW15ICR0bXBkaXI7CisJCWlmIChkZWZpbmVkICRzZWxmKSB7CisJCQkkdG1wZGlyID0gJHNlbGYtPnJlcG9fcGF0aCgpOworCQl9CisKIAkJKCQkdGVtcF9mZCwgJGZuYW1lKSA9IEZpbGU6OlRlbXAtPnRlbXBmaWxlKAotCQkJJ0dpdF9YWFhYWFgnLCBVTkxJTksgPT4gMQorCQkJJ0dpdF9YWFhYWFgnLCBVTkxJTksgPT4gMSwgRElSID0+ICR0bXBkaXIsCiAJCQkpIG9yIHRocm93IEVycm9yOjpTaW1wbGUoImNvdWxkbid0IG9wZW4gbmV3IHRlbXAgZmlsZSIpOworCiAJCSQkdGVtcF9mZC0+YXV0b2ZsdXNoOwogCQliaW5tb2RlICQkdGVtcF9mZDsKIAkJJFRFTVBfRklMRVN7JCR0ZW1wX2ZkfXtmbmFtZX0gPSAkZm5hbWU7CmRpZmYgLS1naXQgYS9wcGMvc2hhMS5jIGIvcHBjL3NoYTEuYwppbmRleCA3MzhlMzZjLi5lYzZhMTkyIDEwMDY0NAotLS0gYS9wcGMvc2hhMS5jCisrKyBiL3BwYy9zaGExLmMKQEAgLTEwLDEwICsxMCwxMCBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgInNoYTEuaCIKIAotZXh0ZXJuIHZvaWQgc2hhMV9jb3JlKHVpbnQzMl90ICpoYXNoLCBjb25zdCB1bnNpZ25lZCBjaGFyICpwLAotCQkgICAgICB1bnNpZ25lZCBpbnQgbmJsb2Nrcyk7CitleHRlcm4gdm9pZCBwcGNfc2hhMV9jb3JlKHVpbnQzMl90ICpoYXNoLCBjb25zdCB1bnNpZ25lZCBjaGFyICpwLAorCQkJICB1bnNpZ25lZCBpbnQgbmJsb2Nrcyk7CiAKLWludCBTSEExX0luaXQoU0hBX0NUWCAqYykKK2ludCBwcGNfU0hBMV9Jbml0KHBwY19TSEFfQ1RYICpjKQogewogCWMtPmhhc2hbMF0gPSAweDY3NDUyMzAxOwogCWMtPmhhc2hbMV0gPSAweEVGQ0RBQjg5OwpAQCAtMjUsNyArMjUsNyBAQAogCXJldHVybiAwOwogfQogCi1pbnQgU0hBMV9VcGRhdGUoU0hBX0NUWCAqYywgY29uc3Qgdm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIG4pCitpbnQgcHBjX1NIQTFfVXBkYXRlKHBwY19TSEFfQ1RYICpjLCBjb25zdCB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgbikKIHsKIAl1bnNpZ25lZCBsb25nIG5iOwogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBwdHI7CkBAIC0zOCwxMiArMzgsMTIgQEAKIAkJCQluYiA9IG47CiAJCQltZW1jcHkoJmMtPmJ1Zi5iW2MtPmNudF0sIHAsIG5iKTsKIAkJCWlmICgoYy0+Y250ICs9IG5iKSA9PSA2NCkgewotCQkJCXNoYTFfY29yZShjLT5oYXNoLCBjLT5idWYuYiwgMSk7CisJCQkJcHBjX3NoYTFfY29yZShjLT5oYXNoLCBjLT5idWYuYiwgMSk7CiAJCQkJYy0+Y250ID0gMDsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCW5iID0gbiA+PiA2OwotCQkJc2hhMV9jb3JlKGMtPmhhc2gsIHAsIG5iKTsKKwkJCXBwY19zaGExX2NvcmUoYy0+aGFzaCwgcCwgbmIpOwogCQkJbmIgPDw9IDY7CiAJCX0KIAkJbiAtPSBuYjsKQEAgLTUyLDcgKzUyLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotaW50IFNIQTFfRmluYWwodW5zaWduZWQgY2hhciAqaGFzaCwgU0hBX0NUWCAqYykKK2ludCBwcGNfU0hBMV9GaW5hbCh1bnNpZ25lZCBjaGFyICpoYXNoLCBwcGNfU0hBX0NUWCAqYykKIHsKIAl1bnNpZ25lZCBpbnQgY250ID0gYy0+Y250OwogCkBAIC02MCwxMyArNjAsMTMgQEAKIAlpZiAoY250ID4gNTYpIHsKIAkJaWYgKGNudCA8IDY0KQogCQkJbWVtc2V0KCZjLT5idWYuYltjbnRdLCAwLCA2NCAtIGNudCk7Ci0JCXNoYTFfY29yZShjLT5oYXNoLCBjLT5idWYuYiwgMSk7CisJCXBwY19zaGExX2NvcmUoYy0+aGFzaCwgYy0+YnVmLmIsIDEpOwogCQljbnQgPSAwOwogCX0KIAlpZiAoY250IDwgNTYpCiAJCW1lbXNldCgmYy0+YnVmLmJbY250XSwgMCwgNTYgLSBjbnQpOwogCWMtPmJ1Zi5sWzddID0gYy0+bGVuOwotCXNoYTFfY29yZShjLT5oYXNoLCBjLT5idWYuYiwgMSk7CisJcHBjX3NoYTFfY29yZShjLT5oYXNoLCBjLT5idWYuYiwgMSk7CiAJbWVtY3B5KGhhc2gsIGMtPmhhc2gsIDIwKTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3BwYy9zaGExLmggYi9wcGMvc2hhMS5oCmluZGV4IGMzYzUxYWEuLmM0MDVmNzMgMTAwNjQ0Ci0tLSBhL3BwYy9zaGExLmgKKysrIGIvcHBjL3NoYTEuaApAQCAtNSw3ICs1LDcgQEAKICAqLwogI2luY2x1ZGUgPHN0ZGludC5oPgogCi10eXBlZGVmIHN0cnVjdCBzaGFfY29udGV4dCB7Cit0eXBlZGVmIHN0cnVjdCB7CiAJdWludDMyX3QgaGFzaFs1XTsKIAl1aW50MzJfdCBjbnQ7CiAJdWludDY0X3QgbGVuOwpAQCAtMTMsOCArMTMsMTMgQEAKIAkJdW5zaWduZWQgY2hhciBiWzY0XTsKIAkJdWludDY0X3QgbFs4XTsKIAl9IGJ1ZjsKLX0gU0hBX0NUWDsKK30gcHBjX1NIQV9DVFg7CiAKLWludCBTSEExX0luaXQoU0hBX0NUWCAqYyk7Ci1pbnQgU0hBMV9VcGRhdGUoU0hBX0NUWCAqYywgY29uc3Qgdm9pZCAqcCwgdW5zaWduZWQgbG9uZyBuKTsKLWludCBTSEExX0ZpbmFsKHVuc2lnbmVkIGNoYXIgKmhhc2gsIFNIQV9DVFggKmMpOworaW50IHBwY19TSEExX0luaXQocHBjX1NIQV9DVFggKmMpOworaW50IHBwY19TSEExX1VwZGF0ZShwcGNfU0hBX0NUWCAqYywgY29uc3Qgdm9pZCAqcCwgdW5zaWduZWQgbG9uZyBuKTsKK2ludCBwcGNfU0hBMV9GaW5hbCh1bnNpZ25lZCBjaGFyICpoYXNoLCBwcGNfU0hBX0NUWCAqYyk7CisKKyNkZWZpbmUgZ2l0X1NIQV9DVFgJcHBjX1NIQV9DVFgKKyNkZWZpbmUgZ2l0X1NIQTFfSW5pdAlwcGNfU0hBMV9Jbml0CisjZGVmaW5lIGdpdF9TSEExX1VwZGF0ZQlwcGNfU0hBMV9VcGRhdGUKKyNkZWZpbmUgZ2l0X1NIQTFfRmluYWwJcHBjX1NIQTFfRmluYWwKZGlmZiAtLWdpdCBhL3BwYy9zaGExcHBjLlMgYi9wcGMvc2hhMXBwYy5TCmluZGV4IGYxMzI2OTYuLjE3MTFlZWYgMTAwNjQ0Ci0tLSBhL3BwYy9zaGExcHBjLlMKKysrIGIvcHBjL3NoYTFwcGMuUwpAQCAtMTYyLDggKzE2Miw4IEBACiAJU1RFUFVQNChmbiwgKHQpKzEyLCAocykrMTIsKTsJXAogCVNURVBVUDQoZm4sICh0KSsxNiwgKHMpKzE2LCBsb2FkaykKIAotCS5nbG9ibAlzaGExX2NvcmUKLXNoYTFfY29yZToKKwkuZ2xvYmwJcHBjX3NoYTFfY29yZQorcHBjX3NoYTFfY29yZToKIAlzdHd1CSVyMSwtODAoJXIxKQogCXN0bXcJJXIxMyw0KCVyMSkKIApkaWZmIC0tZ2l0IGEvcHJlbG9hZC1pbmRleC5jIGIvcHJlbG9hZC1pbmRleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZWRjNWYKLS0tIC9kZXYvbnVsbAorKysgYi9wcmVsb2FkLWluZGV4LmMKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTGludXMgVG9ydmFsZHMKKyAqLworI2luY2x1ZGUgImNhY2hlLmgiCisKKyNpZmRlZiBOT19QVEhSRUFEUworc3RhdGljIHZvaWQgcHJlbG9hZF9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmluZGV4LCBjb25zdCBjaGFyICoqcGF0aHNwZWMpCit7CisJOyAvKiBub3RoaW5nICovCit9CisjZWxzZQorCisjaW5jbHVkZSA8cHRocmVhZC5oPgorCisvKgorICogTW9zdGx5IHJhbmRvbWx5IGNob3NlbiBtYXhpbXVtIHRocmVhZCBjb3VudHM6IHdlCisgKiBjYXAgdGhlIHBhcmFsbGVsaXNtIHRvIDIwIHRocmVhZHMsIGFuZCB3ZSB3YW50CisgKiB0byBoYXZlIGF0IGxlYXN0IDUwMCBsc3RhdCdzIHBlciB0aHJlYWQgZm9yIGl0IHRvCisgKiBiZSB3b3J0aCBzdGFydGluZyBhIHRocmVhZC4KKyAqLworI2RlZmluZSBNQVhfUEFSQUxMRUwgKDIwKQorI2RlZmluZSBUSFJFQURfQ09TVCAoNTAwKQorCitzdHJ1Y3QgdGhyZWFkX2RhdGEgeworCXB0aHJlYWRfdCBwdGhyZWFkOworCXN0cnVjdCBpbmRleF9zdGF0ZSAqaW5kZXg7CisJY29uc3QgY2hhciAqKnBhdGhzcGVjOworCWludCBvZmZzZXQsIG5yOworfTsKKworc3RhdGljIHZvaWQgKnByZWxvYWRfdGhyZWFkKHZvaWQgKl9kYXRhKQoreworCWludCBucjsKKwlzdHJ1Y3QgdGhyZWFkX2RhdGEgKnAgPSBfZGF0YTsKKwlzdHJ1Y3QgaW5kZXhfc3RhdGUgKmluZGV4ID0gcC0+aW5kZXg7CisJc3RydWN0IGNhY2hlX2VudHJ5ICoqY2VwID0gaW5kZXgtPmNhY2hlICsgcC0+b2Zmc2V0OworCisJbnIgPSBwLT5ucjsKKwlpZiAobnIgKyBwLT5vZmZzZXQgPiBpbmRleC0+Y2FjaGVfbnIpCisJCW5yID0gaW5kZXgtPmNhY2hlX25yIC0gcC0+b2Zmc2V0OworCisJZG8geworCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gKmNlcCsrOworCQlzdHJ1Y3Qgc3RhdCBzdDsKKworCQlpZiAoY2Vfc3RhZ2UoY2UpKQorCQkJY29udGludWU7CisJCWlmIChjZV91cHRvZGF0ZShjZSkpCisJCQljb250aW51ZTsKKwkJaWYgKCFjZV9wYXRoX21hdGNoKGNlLCBwLT5wYXRoc3BlYykpCisJCQljb250aW51ZTsKKwkJaWYgKGxzdGF0KGNlLT5uYW1lLCAmc3QpKQorCQkJY29udGludWU7CisJCWlmIChpZV9tYXRjaF9zdGF0KGluZGV4LCBjZSwgJnN0LCBDRV9NQVRDSF9SQUNZX0lTX0RJUlRZKSkKKwkJCWNvbnRpbnVlOworCQljZV9tYXJrX3VwdG9kYXRlKGNlKTsKKwl9IHdoaWxlICgtLW5yID4gMCk7CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIHByZWxvYWRfaW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICppbmRleCwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQoreworCWludCB0aHJlYWRzLCBpLCB3b3JrLCBvZmZzZXQ7CisJc3RydWN0IHRocmVhZF9kYXRhIGRhdGFbTUFYX1BBUkFMTEVMXTsKKworCWlmICghY29yZV9wcmVsb2FkX2luZGV4KQorCQlyZXR1cm47CisKKwl0aHJlYWRzID0gaW5kZXgtPmNhY2hlX25yIC8gVEhSRUFEX0NPU1Q7CisJaWYgKHRocmVhZHMgPCAyKQorCQlyZXR1cm47CisJaWYgKHRocmVhZHMgPiBNQVhfUEFSQUxMRUwpCisJCXRocmVhZHMgPSBNQVhfUEFSQUxMRUw7CisJb2Zmc2V0ID0gMDsKKwl3b3JrID0gKGluZGV4LT5jYWNoZV9uciArIHRocmVhZHMgLSAxKSAvIHRocmVhZHM7CisJZm9yIChpID0gMDsgaSA8IHRocmVhZHM7IGkrKykgeworCQlzdHJ1Y3QgdGhyZWFkX2RhdGEgKnAgPSBkYXRhK2k7CisJCXAtPmluZGV4ID0gaW5kZXg7CisJCXAtPnBhdGhzcGVjID0gcGF0aHNwZWM7CisJCXAtPm9mZnNldCA9IG9mZnNldDsKKwkJcC0+bnIgPSB3b3JrOworCQlvZmZzZXQgKz0gd29yazsKKwkJaWYgKHB0aHJlYWRfY3JlYXRlKCZwLT5wdGhyZWFkLCBOVUxMLCBwcmVsb2FkX3RocmVhZCwgcCkpCisJCQlkaWUoInVuYWJsZSB0byBjcmVhdGUgdGhyZWFkZWQgbHN0YXQiKTsKKwl9CisJZm9yIChpID0gMDsgaSA8IHRocmVhZHM7IGkrKykgeworCQlzdHJ1Y3QgdGhyZWFkX2RhdGEgKnAgPSBkYXRhK2k7CisJCWlmIChwdGhyZWFkX2pvaW4ocC0+cHRocmVhZCwgTlVMTCkpCisJCQlkaWUoInVuYWJsZSB0byBqb2luIHRocmVhZGVkIGxzdGF0Iik7CisJfQorfQorI2VuZGlmCisKK2ludCByZWFkX2luZGV4X3ByZWxvYWQoc3RydWN0IGluZGV4X3N0YXRlICppbmRleCwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQoreworCWludCByZXR2YWwgPSByZWFkX2luZGV4KGluZGV4KTsKKworCXByZWxvYWRfaW5kZXgoaW5kZXgsIHBhdGhzcGVjKTsKKwlyZXR1cm4gcmV0dmFsOworfQpkaWZmIC0tZ2l0IGEvcHJldHR5LmMgYi9wcmV0dHkuYwppbmRleCBhMjljMjkwLi40MjFkOWM1IDEwMDY0NAotLS0gYS9wcmV0dHkuYworKysgYi9wcmV0dHkuYwpAQCAtNSw2ICs1LDcgQEAKICNpbmNsdWRlICJyZXZpc2lvbi5oIgogI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCiAjaW5jbHVkZSAibWFpbG1hcC5oIgorI2luY2x1ZGUgImxvZy10cmVlLmgiCiAKIHN0YXRpYyBjaGFyICp1c2VyX2Zvcm1hdDsKIApAQCAtMTgwLDYgKzE4MSwyMCBAQAogCXJldHVybiAhbGVuOwogfQogCitzdGF0aWMgY29uc3QgY2hhciAqc2tpcF9lbXB0eV9saW5lcyhjb25zdCBjaGFyICptc2cpCit7CisJZm9yICg7OykgeworCQlpbnQgbGluZWxlbiA9IGdldF9vbmVfbGluZShtc2cpOworCQlpbnQgbGwgPSBsaW5lbGVuOworCQlpZiAoIWxpbmVsZW4pCisJCQlicmVhazsKKwkJaWYgKCFpc19lbXB0eV9saW5lKG1zZywgJmxsKSkKKwkJCWJyZWFrOworCQltc2cgKz0gbGluZWxlbjsKKwl9CisJcmV0dXJuIG1zZzsKK30KKwogc3RhdGljIHZvaWQgYWRkX21lcmdlX2luZm8oZW51bSBjbWl0X2ZtdCBmbXQsIHN0cnVjdCBzdHJidWYgKnNiLAogCQkJY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0LCBpbnQgYWJicmV2KQogewpAQCAtMjMzLDcgKzI0OCw3IEBACiAKIHN0YXRpYyBjaGFyICpyZXBsYWNlX2VuY29kaW5nX2hlYWRlcihjaGFyICpidWYsIGNvbnN0IGNoYXIgKmVuY29kaW5nKQogewotCXN0cnVjdCBzdHJidWYgdG1wOworCXN0cnVjdCBzdHJidWYgdG1wID0gU1RSQlVGX0lOSVQ7CiAJc2l6ZV90IHN0YXJ0LCBsZW47CiAJY2hhciAqY3AgPSBidWY7CiAKQEAgLTI0OSw3ICsyNjQsNiBAQAogCQlyZXR1cm4gYnVmOyAvKiBzaG91bGQgbm90IGhhcHBlbiBidXQgYmUgZGVmZW5zaXZlICovCiAJbGVuID0gY3AgKyAxIC0gKGJ1ZiArIHN0YXJ0KTsKIAotCXN0cmJ1Zl9pbml0KCZ0bXAsIDApOwogCXN0cmJ1Zl9hdHRhY2goJnRtcCwgYnVmLCBzdHJsZW4oYnVmKSwgc3RybGVuKGJ1ZikgKyAxKTsKIAlpZiAoaXNfZW5jb2RpbmdfdXRmOChlbmNvZGluZykpIHsKIAkJLyogd2UgaGF2ZSByZS1jb2RlZCB0byBVVEYtODsgZHJvcCB0aGUgaGVhZGVyICovCkBAIC00MTAsMTMgKzQyNCwxNSBAQAogc3RydWN0IGZvcm1hdF9jb21taXRfY29udGV4dCB7CiAJY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0OwogCWVudW0gZGF0ZV9tb2RlIGRtb2RlOworCXVuc2lnbmVkIGNvbW1pdF9oZWFkZXJfcGFyc2VkOjE7CisJdW5zaWduZWQgY29tbWl0X21lc3NhZ2VfcGFyc2VkOjE7CiAKIAkvKiBUaGVzZSBvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbW1pdCBtZXNzYWdlLiAqLwotCWludCBjb21taXRfaGVhZGVyX3BhcnNlZDsKLQlzdHJ1Y3QgY2h1bmsgc3ViamVjdDsKIAlzdHJ1Y3QgY2h1bmsgYXV0aG9yOwogCXN0cnVjdCBjaHVuayBjb21taXR0ZXI7CiAJc3RydWN0IGNodW5rIGVuY29kaW5nOworCXNpemVfdCBtZXNzYWdlX29mZjsKKwlzaXplX3Qgc3ViamVjdF9vZmY7CiAJc2l6ZV90IGJvZHlfb2ZmOwogCiAJLyogVGhlIGZvbGxvd2luZyBvbmVzIGFyZSByZWxhdGl2ZSB0byB0aGUgcmVzdWx0IHN0cnVjdCBzdHJidWYuICovCkBAIC00NDYsMjMgKzQ2MiwxNCBAQAogewogCWNvbnN0IGNoYXIgKm1zZyA9IGNvbnRleHQtPmNvbW1pdC0+YnVmZmVyOwogCWludCBpOwotCWVudW0geyBIRUFERVIsIFNVQkpFQ1QsIEJPRFkgfSBzdGF0ZTsKIAotCWZvciAoaSA9IDAsIHN0YXRlID0gSEVBREVSOyBtc2dbaV0gJiYgc3RhdGUgPCBCT0RZOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBtc2dbaV07IGkrKykgewogCQlpbnQgZW9sOwogCQlmb3IgKGVvbCA9IGk7IG1zZ1tlb2xdICYmIG1zZ1tlb2xdICE9ICdcbic7IGVvbCsrKQogCQkJOyAvKiBkbyBub3RoaW5nICovCiAKLQkJaWYgKHN0YXRlID09IFNVQkpFQ1QpIHsKLQkJCWNvbnRleHQtPnN1YmplY3Qub2ZmID0gaTsKLQkJCWNvbnRleHQtPnN1YmplY3QubGVuID0gZW9sIC0gaTsKLQkJCWkgPSBlb2w7Ci0JCX0KIAkJaWYgKGkgPT0gZW9sKSB7Ci0JCQlzdGF0ZSsrOwotCQkJLyogc3RyaXAgZW1wdHkgbGluZXMgKi8KLQkJCXdoaWxlIChtc2dbZW9sXSA9PSAnXG4nICYmIG1zZ1tlb2wgKyAxXSA9PSAnXG4nKQotCQkJCWVvbCsrOworCQkJYnJlYWs7CiAJCX0gZWxzZSBpZiAoIXByZWZpeGNtcChtc2cgKyBpLCAiYXV0aG9yICIpKSB7CiAJCQljb250ZXh0LT5hdXRob3Iub2ZmID0gaSArIDc7CiAJCQljb250ZXh0LT5hdXRob3IubGVuID0gZW9sIC0gaSAtIDc7CkBAIC00NzQsMTMgKzQ4MSw2NyBAQAogCQkJY29udGV4dC0+ZW5jb2RpbmcubGVuID0gZW9sIC0gaSAtIDk7CiAJCX0KIAkJaSA9IGVvbDsKLQkJaWYgKCFtc2dbaV0pCi0JCQlicmVhazsKIAl9Ci0JY29udGV4dC0+Ym9keV9vZmYgPSBpOworCWNvbnRleHQtPm1lc3NhZ2Vfb2ZmID0gaTsKIAljb250ZXh0LT5jb21taXRfaGVhZGVyX3BhcnNlZCA9IDE7CiB9CiAKK2NvbnN0IGNoYXIgKmZvcm1hdF9zdWJqZWN0KHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICptc2csCisJCQkgICBjb25zdCBjaGFyICpsaW5lX3NlcGFyYXRvcikKK3sKKwlpbnQgZmlyc3QgPSAxOworCisJZm9yICg7OykgeworCQljb25zdCBjaGFyICpsaW5lID0gbXNnOworCQlpbnQgbGluZWxlbiA9IGdldF9vbmVfbGluZShsaW5lKTsKKworCQltc2cgKz0gbGluZWxlbjsKKwkJaWYgKCFsaW5lbGVuIHx8IGlzX2VtcHR5X2xpbmUobGluZSwgJmxpbmVsZW4pKQorCQkJYnJlYWs7CisKKwkJaWYgKCFzYikKKwkJCWNvbnRpbnVlOworCQlzdHJidWZfZ3JvdyhzYiwgbGluZWxlbiArIDIpOworCQlpZiAoIWZpcnN0KQorCQkJc3RyYnVmX2FkZHN0cihzYiwgbGluZV9zZXBhcmF0b3IpOworCQlzdHJidWZfYWRkKHNiLCBsaW5lLCBsaW5lbGVuKTsKKwkJZmlyc3QgPSAwOworCX0KKwlyZXR1cm4gbXNnOworfQorCitzdGF0aWMgdm9pZCBwYXJzZV9jb21taXRfbWVzc2FnZShzdHJ1Y3QgZm9ybWF0X2NvbW1pdF9jb250ZXh0ICpjKQoreworCWNvbnN0IGNoYXIgKm1zZyA9IGMtPmNvbW1pdC0+YnVmZmVyICsgYy0+bWVzc2FnZV9vZmY7CisJY29uc3QgY2hhciAqc3RhcnQgPSBjLT5jb21taXQtPmJ1ZmZlcjsKKworCW1zZyA9IHNraXBfZW1wdHlfbGluZXMobXNnKTsKKwljLT5zdWJqZWN0X29mZiA9IG1zZyAtIHN0YXJ0OworCisJbXNnID0gZm9ybWF0X3N1YmplY3QoTlVMTCwgbXNnLCBOVUxMKTsKKwltc2cgPSBza2lwX2VtcHR5X2xpbmVzKG1zZyk7CisJYy0+Ym9keV9vZmYgPSBtc2cgLSBzdGFydDsKKworCWMtPmNvbW1pdF9tZXNzYWdlX3BhcnNlZCA9IDE7Cit9CisKK3N0YXRpYyB2b2lkIGZvcm1hdF9kZWNvcmF0aW9uKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit7CisJc3RydWN0IG5hbWVfZGVjb3JhdGlvbiAqZDsKKwljb25zdCBjaGFyICpwcmVmaXggPSAiICgiOworCisJbG9hZF9yZWZfZGVjb3JhdGlvbnMoKTsKKwlkID0gbG9va3VwX2RlY29yYXRpb24oJm5hbWVfZGVjb3JhdGlvbiwgJmNvbW1pdC0+b2JqZWN0KTsKKwl3aGlsZSAoZCkgeworCQlzdHJidWZfYWRkc3RyKHNiLCBwcmVmaXgpOworCQlwcmVmaXggPSAiLCAiOworCQlzdHJidWZfYWRkc3RyKHNiLCBkLT5uYW1lKTsKKwkJZCA9IGQtPm5leHQ7CisJfQorCWlmIChwcmVmaXhbMF0gPT0gJywnKQorCQlzdHJidWZfYWRkY2goc2IsICcpJyk7Cit9CisKIHN0YXRpYyBzaXplX3QgZm9ybWF0X2NvbW1pdF9pdGVtKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpwbGFjZWhvbGRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb250ZXh0KQogewpAQCAtNTczLDYgKzYzNCw5IEBACiAJCSAgICAgICAgICAgICAgICAgPyAnPCcKIAkJICAgICAgICAgICAgICAgICA6ICc+Jyk7CiAJCXJldHVybiAxOworCWNhc2UgJ2QnOgorCQlmb3JtYXRfZGVjb3JhdGlvbihzYiwgY29tbWl0KTsKKwkJcmV0dXJuIDE7CiAJfQogCiAJLyogRm9yIHRoZSByZXN0IHdlIGhhdmUgdG8gcGFyc2UgdGhlIGNvbW1pdCBoZWFkZXIuICovCkBAIC01ODAsOSArNjQ0LDYgQEAKIAkJcGFyc2VfY29tbWl0X2hlYWRlcihjKTsKIAogCXN3aXRjaCAocGxhY2Vob2xkZXJbMF0pIHsKLQljYXNlICdzJzoJLyogc3ViamVjdCAqLwotCQlzdHJidWZfYWRkKHNiLCBtc2cgKyBjLT5zdWJqZWN0Lm9mZiwgYy0+c3ViamVjdC5sZW4pOwotCQlyZXR1cm4gMTsKIAljYXNlICdhJzoJLyogYXV0aG9yIC4uLiAqLwogCQlyZXR1cm4gZm9ybWF0X3BlcnNvbl9wYXJ0KHNiLCBwbGFjZWhvbGRlclsxXSwKIAkJCQkgICBtc2cgKyBjLT5hdXRob3Iub2ZmLCBjLT5hdXRob3IubGVuLApAQCAtNTk0LDYgKzY1NSwxNiBAQAogCWNhc2UgJ2UnOgkvKiBlbmNvZGluZyAqLwogCQlzdHJidWZfYWRkKHNiLCBtc2cgKyBjLT5lbmNvZGluZy5vZmYsIGMtPmVuY29kaW5nLmxlbik7CiAJCXJldHVybiAxOworCX0KKworCS8qIE5vdyB3ZSBuZWVkIHRvIHBhcnNlIHRoZSBjb21taXQgbWVzc2FnZS4gKi8KKwlpZiAoIWMtPmNvbW1pdF9tZXNzYWdlX3BhcnNlZCkKKwkJcGFyc2VfY29tbWl0X21lc3NhZ2UoYyk7CisKKwlzd2l0Y2ggKHBsYWNlaG9sZGVyWzBdKSB7CisJY2FzZSAncyc6CS8qIHN1YmplY3QgKi8KKwkJZm9ybWF0X3N1YmplY3Qoc2IsIG1zZyArIGMtPnN1YmplY3Rfb2ZmLCAiICIpOworCQlyZXR1cm4gMTsKIAljYXNlICdiJzoJLyogYm9keSAqLwogCQlzdHJidWZfYWRkc3RyKHNiLCBtc2cgKyBjLT5ib2R5X29mZik7CiAJCXJldHVybiAxOwpAQCAtNjg0LDI3ICs3NTUsMTEgQEAKIAkJICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAJCSAgIGludCBuZWVkXzhiaXRfY3RlKQogeworCWNvbnN0IGNoYXIgKmxpbmVfc2VwYXJhdG9yID0gKGZtdCA9PSBDTUlUX0ZNVF9FTUFJTCkgPyAiXG4gIiA6ICIgIjsKIAlzdHJ1Y3Qgc3RyYnVmIHRpdGxlOwogCiAJc3RyYnVmX2luaXQoJnRpdGxlLCA4MCk7Ci0KLQlmb3IgKDs7KSB7Ci0JCWNvbnN0IGNoYXIgKmxpbmUgPSAqbXNnX3A7Ci0JCWludCBsaW5lbGVuID0gZ2V0X29uZV9saW5lKGxpbmUpOwotCi0JCSptc2dfcCArPSBsaW5lbGVuOwotCQlpZiAoIWxpbmVsZW4gfHwgaXNfZW1wdHlfbGluZShsaW5lLCAmbGluZWxlbikpCi0JCQlicmVhazsKLQotCQlzdHJidWZfZ3JvdygmdGl0bGUsIGxpbmVsZW4gKyAyKTsKLQkJaWYgKHRpdGxlLmxlbikgewotCQkJaWYgKGZtdCA9PSBDTUlUX0ZNVF9FTUFJTCkgewotCQkJCXN0cmJ1Zl9hZGRjaCgmdGl0bGUsICdcbicpOwotCQkJfQotCQkJc3RyYnVmX2FkZGNoKCZ0aXRsZSwgJyAnKTsKLQkJfQotCQlzdHJidWZfYWRkKCZ0aXRsZSwgbGluZSwgbGluZWxlbik7Ci0JfQorCSptc2dfcCA9IGZvcm1hdF9zdWJqZWN0KCZ0aXRsZSwgKm1zZ19wLCBsaW5lX3NlcGFyYXRvcik7CiAKIAlzdHJidWZfZ3JvdyhzYiwgdGl0bGUubGVuICsgMTAyNCk7CiAJaWYgKHN1YmplY3QpIHsKQEAgLTc2Myw2ICs4MTgsMjAgQEAKIAl9CiB9CiAKK2NoYXIgKnJlZW5jb2RlX2NvbW1pdF9tZXNzYWdlKGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwgY29uc3QgY2hhciAqKmVuY29kaW5nX3ApCit7CisJY29uc3QgY2hhciAqZW5jb2Rpbmc7CisKKwllbmNvZGluZyA9IChnaXRfbG9nX291dHB1dF9lbmNvZGluZworCQkgICAgPyBnaXRfbG9nX291dHB1dF9lbmNvZGluZworCQkgICAgOiBnaXRfY29tbWl0X2VuY29kaW5nKTsKKwlpZiAoIWVuY29kaW5nKQorCQllbmNvZGluZyA9ICJ1dGYtOCI7CisJaWYgKGVuY29kaW5nX3ApCisJCSplbmNvZGluZ19wID0gZW5jb2Rpbmc7CisJcmV0dXJuIGxvZ21zZ19yZWVuY29kZShjb21taXQsIGVuY29kaW5nKTsKK30KKwogdm9pZCBwcmV0dHlfcHJpbnRfY29tbWl0KGVudW0gY21pdF9mbXQgZm10LCBjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCiAJCQkgc3RydWN0IHN0cmJ1ZiAqc2IsIGludCBhYmJyZXYsCiAJCQkgY29uc3QgY2hhciAqc3ViamVjdCwgY29uc3QgY2hhciAqYWZ0ZXJfc3ViamVjdCwKQEAgLTc3OSwxMiArODQ4LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCWVuY29kaW5nID0gKGdpdF9sb2dfb3V0cHV0X2VuY29kaW5nCi0JCSAgICA/IGdpdF9sb2dfb3V0cHV0X2VuY29kaW5nCi0JCSAgICA6IGdpdF9jb21taXRfZW5jb2RpbmcpOwotCWlmICghZW5jb2RpbmcpCi0JCWVuY29kaW5nID0gInV0Zi04IjsKLQlyZWVuY29kZWQgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBlbmNvZGluZyk7CisJcmVlbmNvZGVkID0gcmVlbmNvZGVfY29tbWl0X21lc3NhZ2UoY29tbWl0LCAmZW5jb2RpbmcpOwogCWlmIChyZWVuY29kZWQpIHsKIAkJbXNnID0gcmVlbmNvZGVkOwogCX0KQEAgLTgyMSwxNSArODg1LDcgQEAKIAl9CiAKIAkvKiBTa2lwIGV4Y2VzcyBibGFuayBsaW5lcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGJvZHksIGlmIGFueS4uLiAqLwotCWZvciAoOzspIHsKLQkJaW50IGxpbmVsZW4gPSBnZXRfb25lX2xpbmUobXNnKTsKLQkJaW50IGxsID0gbGluZWxlbjsKLQkJaWYgKCFsaW5lbGVuKQotCQkJYnJlYWs7Ci0JCWlmICghaXNfZW1wdHlfbGluZShtc2csICZsbCkpCi0JCQlicmVhazsKLQkJbXNnICs9IGxpbmVsZW47Ci0JfQorCW1zZyA9IHNraXBfZW1wdHlfbGluZXMobXNnKTsKIAogCS8qIFRoZXNlIGZvcm1hdHMgdHJlYXQgdGhlIHRpdGxlIGxpbmUgc3BlY2lhbGx5LiAqLwogCWlmIChmbXQgPT0gQ01JVF9GTVRfT05FTElORSB8fCBmbXQgPT0gQ01JVF9GTVRfRU1BSUwpCmRpZmYgLS1naXQgYS9yZWFkLWNhY2hlLmMgYi9yZWFkLWNhY2hlLmMKaW5kZXggNTI1ZDEzOC4uYjE0NzVmZiAxMDA2NDQKLS0tIGEvcmVhZC1jYWNoZS5jCisrKyBiL3JlYWQtY2FjaGUuYwpAQCAtOCw2ICs4LDEyIEBACiAjaW5jbHVkZSAiY2FjaGUtdHJlZS5oIgogI2luY2x1ZGUgInJlZnMuaCIKICNpbmNsdWRlICJkaXIuaCIKKyNpbmNsdWRlICJ0cmVlLmgiCisjaW5jbHVkZSAiY29tbWl0LmgiCisjaW5jbHVkZSAiZGlmZi5oIgorI2luY2x1ZGUgImRpZmZjb3JlLmgiCisjaW5jbHVkZSAicmV2aXNpb24uaCIKKyNpbmNsdWRlICJibG9iLmgiCiAKIC8qIEluZGV4IGV4dGVuc2lvbnMuCiAgKgpAQCAtOTMsMjcgKzk5LDIxIEBACiBzdGF0aWMgaW50IGNlX2NvbXBhcmVfbGluayhzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzaXplX3QgZXhwZWN0ZWRfc2l6ZSkKIHsKIAlpbnQgbWF0Y2ggPSAtMTsKLQljaGFyICp0YXJnZXQ7CiAJdm9pZCAqYnVmZmVyOwogCXVuc2lnbmVkIGxvbmcgc2l6ZTsKIAllbnVtIG9iamVjdF90eXBlIHR5cGU7Ci0JaW50IGxlbjsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CiAKLQl0YXJnZXQgPSB4bWFsbG9jKGV4cGVjdGVkX3NpemUpOwotCWxlbiA9IHJlYWRsaW5rKGNlLT5uYW1lLCB0YXJnZXQsIGV4cGVjdGVkX3NpemUpOwotCWlmIChsZW4gIT0gZXhwZWN0ZWRfc2l6ZSkgewotCQlmcmVlKHRhcmdldCk7CisJaWYgKHN0cmJ1Zl9yZWFkbGluaygmc2IsIGNlLT5uYW1lLCBleHBlY3RlZF9zaXplKSkKIAkJcmV0dXJuIC0xOwotCX0KKwogCWJ1ZmZlciA9IHJlYWRfc2hhMV9maWxlKGNlLT5zaGExLCAmdHlwZSwgJnNpemUpOwotCWlmICghYnVmZmVyKSB7Ci0JCWZyZWUodGFyZ2V0KTsKLQkJcmV0dXJuIC0xOworCWlmIChidWZmZXIpIHsKKwkJaWYgKHNpemUgPT0gc2IubGVuKQorCQkJbWF0Y2ggPSBtZW1jbXAoYnVmZmVyLCBzYi5idWYsIHNpemUpOworCQlmcmVlKGJ1ZmZlcik7CiAJfQotCWlmIChzaXplID09IGV4cGVjdGVkX3NpemUpCi0JCW1hdGNoID0gbWVtY21wKGJ1ZmZlciwgdGFyZ2V0LCBzaXplKTsKLQlmcmVlKGJ1ZmZlcik7Ci0JZnJlZSh0YXJnZXQpOworCXN0cmJ1Zl9yZWxlYXNlKCZzYik7CiAJcmV0dXJuIG1hdGNoOwogfQogCkBAIC0xNTQsNyArMTU0LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpc19lbXB0eV9ibG9iX3NoYTEoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSkKK2ludCBpc19lbXB0eV9ibG9iX3NoYTEoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSkKIHsKIAlzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBlbXB0eV9ibG9iX3NoYTFbMjBdID0gewogCQkweGU2LDB4OWQsMHhlMiwweDliLDB4YjIsMHhkMSwweGQ2LDB4NDMsMHg0YiwweDhiLApAQCAtMjUxLDYgKzI1MSwxNCBAQAogCWlmICghaWdub3JlX3ZhbGlkICYmIChjZS0+Y2VfZmxhZ3MgJiBDRV9WQUxJRCkpCiAJCXJldHVybiAwOwogCisJLyoKKwkgKiBJbnRlbnQtdG8tYWRkIGVudHJpZXMgaGF2ZSBub3QgYmVlbiBhZGRlZCwgc28gdGhlIGluZGV4IGVudHJ5CisJICogYnkgZGVmaW5pdGlvbiBuZXZlciBtYXRjaGVzIHdoYXQgaXMgaW4gdGhlIHdvcmsgdHJlZSB1bnRpbCBpdAorCSAqIGFjdHVhbGx5IGdldHMgYWRkZWQuCisJICovCisJaWYgKGNlLT5jZV9mbGFncyAmIENFX0lOVEVOVF9UT19BREQpCisJCXJldHVybiBEQVRBX0NIQU5HRUQgfCBUWVBFX0NIQU5HRUQgfCBNT0RFX0NIQU5HRUQ7CisKIAljaGFuZ2VkID0gY2VfbWF0Y2hfc3RhdF9iYXNpYyhjZSwgc3QpOwogCiAJLyoKQEAgLTUwNiw2ICs1MTQsMTQgQEAKIAlyZXR1cm4gbmV3OwogfQogCitzdGF0aWMgdm9pZCByZWNvcmRfaW50ZW50X3RvX2FkZChzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQoreworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJaWYgKHdyaXRlX3NoYTFfZmlsZSgiIiwgMCwgYmxvYl90eXBlLCBzaGExKSkKKwkJZGllKCJjYW5ub3QgY3JlYXRlIGFuIGVtcHR5IGJsb2IgaW4gdGhlIG9iamVjdCBkYXRhYmFzZSIpOworCWhhc2hjcHkoY2UtPnNoYTEsIHNoYTEpOworfQorCiBpbnQgYWRkX3RvX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLCBjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QsIGludCBmbGFncykKIHsKIAlpbnQgc2l6ZSwgbmFtZWxlbiwgd2FzX3NhbWU7CkBAIC01MTQsNiArNTMwLDkgQEAKIAl1bnNpZ25lZCBjZV9vcHRpb24gPSBDRV9NQVRDSF9JR05PUkVfVkFMSUR8Q0VfTUFUQ0hfUkFDWV9JU19ESVJUWTsKIAlpbnQgdmVyYm9zZSA9IGZsYWdzICYgKEFERF9DQUNIRV9WRVJCT1NFIHwgQUREX0NBQ0hFX1BSRVRFTkQpOwogCWludCBwcmV0ZW5kID0gZmxhZ3MgJiBBRERfQ0FDSEVfUFJFVEVORDsKKwlpbnQgaW50ZW50X29ubHkgPSBmbGFncyAmIEFERF9DQUNIRV9JTlRFTlQ7CisJaW50IGFkZF9vcHRpb24gPSAoQUREX0NBQ0hFX09LX1RPX0FERHxBRERfQ0FDSEVfT0tfVE9fUkVQTEFDRXwKKwkJCSAgKGludGVudF9vbmx5ID8gQUREX0NBQ0hFX05FV19PTkxZIDogMCkpOwogCiAJaWYgKCFTX0lTUkVHKHN0X21vZGUpICYmICFTX0lTTE5LKHN0X21vZGUpICYmICFTX0lTRElSKHN0X21vZGUpKQogCQlyZXR1cm4gZXJyb3IoIiVzOiBjYW4gb25seSBhZGQgcmVndWxhciBmaWxlcywgc3ltYm9saWMgbGlua3Mgb3IgZ2l0LWRpcmVjdG9yaWVzIiwgcGF0aCk7CkBAIC01MjcsNyArNTQ2LDEwIEBACiAJY2UgPSB4Y2FsbG9jKDEsIHNpemUpOwogCW1lbWNweShjZS0+bmFtZSwgcGF0aCwgbmFtZWxlbik7CiAJY2UtPmNlX2ZsYWdzID0gbmFtZWxlbjsKLQlmaWxsX3N0YXRfY2FjaGVfaW5mbyhjZSwgc3QpOworCWlmICghaW50ZW50X29ubHkpCisJCWZpbGxfc3RhdF9jYWNoZV9pbmZvKGNlLCBzdCk7CisJZWxzZQorCQljZS0+Y2VfZmxhZ3MgfD0gQ0VfSU5URU5UX1RPX0FERDsKIAogCWlmICh0cnVzdF9leGVjdXRhYmxlX2JpdCAmJiBoYXNfc3ltbGlua3MpCiAJCWNlLT5jZV9tb2RlID0gY3JlYXRlX2NlX21vZGUoc3RfbW9kZSk7CkBAIC01NTAsOCArNTcyLDEyIEBACiAJCWFsaWFzLT5jZV9mbGFncyB8PSBDRV9BRERFRDsKIAkJcmV0dXJuIDA7CiAJfQotCWlmIChpbmRleF9wYXRoKGNlLT5zaGExLCBwYXRoLCBzdCwgMSkpCi0JCXJldHVybiBlcnJvcigidW5hYmxlIHRvIGluZGV4IGZpbGUgJXMiLCBwYXRoKTsKKwlpZiAoIWludGVudF9vbmx5KSB7CisJCWlmIChpbmRleF9wYXRoKGNlLT5zaGExLCBwYXRoLCBzdCwgMSkpCisJCQlyZXR1cm4gZXJyb3IoInVuYWJsZSB0byBpbmRleCBmaWxlICVzIiwgcGF0aCk7CisJfSBlbHNlCisJCXJlY29yZF9pbnRlbnRfdG9fYWRkKGNlKTsKKwogCWlmIChpZ25vcmVfY2FzZSAmJiBhbGlhcyAmJiBkaWZmZXJlbnRfbmFtZShjZSwgYWxpYXMpKQogCQljZSA9IGNyZWF0ZV9hbGlhc19jZShjZSwgYWxpYXMpOwogCWNlLT5jZV9mbGFncyB8PSBDRV9BRERFRDsKQEAgLTU2NCw3ICs1OTAsNyBAQAogCiAJaWYgKHByZXRlbmQpCiAJCTsKLQllbHNlIGlmIChhZGRfaW5kZXhfZW50cnkoaXN0YXRlLCBjZSwgQUREX0NBQ0hFX09LX1RPX0FERHxBRERfQ0FDSEVfT0tfVE9fUkVQTEFDRSkpCisJZWxzZSBpZiAoYWRkX2luZGV4X2VudHJ5KGlzdGF0ZSwgY2UsIGFkZF9vcHRpb24pKQogCQlyZXR1cm4gZXJyb3IoInVuYWJsZSB0byBhZGQgJXMgdG8gaW5kZXgiLHBhdGgpOwogCWlmICh2ZXJib3NlICYmICF3YXNfc2FtZSkKIAkJcHJpbnRmKCJhZGQgJyVzJ1xuIiwgcGF0aCk7CkBAIC01ODYsOCArNjEyLDEwIEBACiAJaW50IHNpemUsIGxlbjsKIAlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOwogCi0JaWYgKCF2ZXJpZnlfcGF0aChwYXRoKSkKKwlpZiAoIXZlcmlmeV9wYXRoKHBhdGgpKSB7CisJCWVycm9yKCJJbnZhbGlkIHBhdGggJyVzJyIsIHBhdGgpOwogCQlyZXR1cm4gTlVMTDsKKwl9CiAKIAlsZW4gPSBzdHJsZW4ocGF0aCk7CiAJc2l6ZSA9IGNhY2hlX2VudHJ5X3NpemUobGVuKTsKQEAgLTg0MywxMyArODcxLDE1IEBACiAJaW50IG9rX3RvX2FkZCA9IG9wdGlvbiAmIEFERF9DQUNIRV9PS19UT19BREQ7CiAJaW50IG9rX3RvX3JlcGxhY2UgPSBvcHRpb24gJiBBRERfQ0FDSEVfT0tfVE9fUkVQTEFDRTsKIAlpbnQgc2tpcF9kZl9jaGVjayA9IG9wdGlvbiAmIEFERF9DQUNIRV9TS0lQX0RGQ0hFQ0s7CisJaW50IG5ld19vbmx5ID0gb3B0aW9uICYgQUREX0NBQ0hFX05FV19PTkxZOwogCiAJY2FjaGVfdHJlZV9pbnZhbGlkYXRlX3BhdGgoaXN0YXRlLT5jYWNoZV90cmVlLCBjZS0+bmFtZSk7CiAJcG9zID0gaW5kZXhfbmFtZV9wb3MoaXN0YXRlLCBjZS0+bmFtZSwgY2UtPmNlX2ZsYWdzKTsKIAogCS8qIGV4aXN0aW5nIG1hdGNoPyBKdXN0IHJlcGxhY2UgaXQuICovCiAJaWYgKHBvcyA+PSAwKSB7Ci0JCXJlcGxhY2VfaW5kZXhfZW50cnkoaXN0YXRlLCBwb3MsIGNlKTsKKwkJaWYgKCFuZXdfb25seSkKKwkJCXJlcGxhY2VfaW5kZXhfZW50cnkoaXN0YXRlLCBwb3MsIGNlKTsKIAkJcmV0dXJuIDA7CiAJfQogCXBvcyA9IC1wb3MtMTsKQEAgLTg2OSw3ICs4OTksNyBAQAogCWlmICghb2tfdG9fYWRkKQogCQlyZXR1cm4gLTE7CiAJaWYgKCF2ZXJpZnlfcGF0aChjZS0+bmFtZSkpCi0JCXJldHVybiAtMTsKKwkJcmV0dXJuIGVycm9yKCJJbnZhbGlkIHBhdGggJyVzJyIsIGNlLT5uYW1lKTsKIAogCWlmICghc2tpcF9kZl9jaGVjayAmJgogCSAgICBjaGVja19maWxlX2RpcmVjdG9yeV9jb25mbGljdChpc3RhdGUsIGNlLCBwb3MsIG9rX3RvX3JlcGxhY2UpKSB7CkBAIC0xMDY3LDE2ICsxMDk3LDE2IEBACiAKIHN0YXRpYyBpbnQgdmVyaWZ5X2hkcihzdHJ1Y3QgY2FjaGVfaGVhZGVyICpoZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKLQlTSEFfQ1RYIGM7CisJZ2l0X1NIQV9DVFggYzsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCiAJaWYgKGhkci0+aGRyX3NpZ25hdHVyZSAhPSBodG9ubChDQUNIRV9TSUdOQVRVUkUpKQogCQlyZXR1cm4gZXJyb3IoImJhZCBzaWduYXR1cmUiKTsKLQlpZiAoaGRyLT5oZHJfdmVyc2lvbiAhPSBodG9ubCgyKSkKKwlpZiAoaGRyLT5oZHJfdmVyc2lvbiAhPSBodG9ubCgyKSAmJiBoZHItPmhkcl92ZXJzaW9uICE9IGh0b25sKDMpKQogCQlyZXR1cm4gZXJyb3IoImJhZCBpbmRleCB2ZXJzaW9uIik7Ci0JU0hBMV9Jbml0KCZjKTsKLQlTSEExX1VwZGF0ZSgmYywgaGRyLCBzaXplIC0gMjApOwotCVNIQTFfRmluYWwoc2hhMSwgJmMpOworCWdpdF9TSEExX0luaXQoJmMpOworCWdpdF9TSEExX1VwZGF0ZSgmYywgaGRyLCBzaXplIC0gMjApOworCWdpdF9TSEExX0ZpbmFsKHNoYTEsICZjKTsKIAlpZiAoaGFzaGNtcChzaGExLCAodW5zaWduZWQgY2hhciAqKWhkciArIHNpemUgLSAyMCkpCiAJCXJldHVybiBlcnJvcigiYmFkIGluZGV4IGZpbGUgc2hhMSBzaWduYXR1cmUiKTsKIAlyZXR1cm4gMDsKQEAgLTExMDcsNiArMTEzNyw3IEBACiBzdGF0aWMgdm9pZCBjb252ZXJ0X2Zyb21fZGlzayhzdHJ1Y3Qgb25kaXNrX2NhY2hlX2VudHJ5ICpvbmRpc2ssIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCiB7CiAJc2l6ZV90IGxlbjsKKwljb25zdCBjaGFyICpuYW1lOwogCiAJY2UtPmNlX2N0aW1lID0gbnRvaGwob25kaXNrLT5jdGltZS5zZWMpOwogCWNlLT5jZV9tdGltZSA9IG50b2hsKG9uZGlzay0+bXRpbWUuc2VjKTsKQEAgLTExMTgsMTYgKzExNDksMzIgQEAKIAljZS0+Y2Vfc2l6ZSAgPSBudG9obChvbmRpc2stPnNpemUpOwogCS8qIE9uLWRpc2sgZmxhZ3MgYXJlIGp1c3QgMTYgYml0cyAqLwogCWNlLT5jZV9mbGFncyA9IG50b2hzKG9uZGlzay0+ZmxhZ3MpOworCiAJaGFzaGNweShjZS0+c2hhMSwgb25kaXNrLT5zaGExKTsKIAogCWxlbiA9IGNlLT5jZV9mbGFncyAmIENFX05BTUVNQVNLOworCisJaWYgKGNlLT5jZV9mbGFncyAmIENFX0VYVEVOREVEKSB7CisJCXN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnlfZXh0ZW5kZWQgKm9uZGlzazI7CisJCWludCBleHRlbmRlZF9mbGFnczsKKwkJb25kaXNrMiA9IChzdHJ1Y3Qgb25kaXNrX2NhY2hlX2VudHJ5X2V4dGVuZGVkICopb25kaXNrOworCQlleHRlbmRlZF9mbGFncyA9IG50b2hzKG9uZGlzazItPmZsYWdzMikgPDwgMTY7CisJCS8qIFdlIGRvIG5vdCB5ZXQgdW5kZXJzdGFuZCBhbnkgYml0IG91dCBvZiBDRV9FWFRFTkRFRF9GTEFHUyAqLworCQlpZiAoZXh0ZW5kZWRfZmxhZ3MgJiB+Q0VfRVhURU5ERURfRkxBR1MpCisJCQlkaWUoIlVua25vd24gaW5kZXggZW50cnkgZm9ybWF0ICUwOHgiLCBleHRlbmRlZF9mbGFncyk7CisJCWNlLT5jZV9mbGFncyB8PSBleHRlbmRlZF9mbGFnczsKKwkJbmFtZSA9IG9uZGlzazItPm5hbWU7CisJfQorCWVsc2UKKwkJbmFtZSA9IG9uZGlzay0+bmFtZTsKKwogCWlmIChsZW4gPT0gQ0VfTkFNRU1BU0spCi0JCWxlbiA9IHN0cmxlbihvbmRpc2stPm5hbWUpOworCQlsZW4gPSBzdHJsZW4obmFtZSk7CiAJLyoKIAkgKiBORUVEU1dPUks6IElmIHRoZSBvcmlnaW5hbCBpbmRleCBpcyBjcmFmdGVkLCB0aGlzIGNvcHkgY291bGQKIAkgKiBnbyB1bmNoZWNrZWQuCiAJICovCi0JbWVtY3B5KGNlLT5uYW1lLCBvbmRpc2stPm5hbWUsIGxlbiArIDEpOworCW1lbWNweShjZS0+bmFtZSwgbmFtZSwgbGVuICsgMSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGVzdGltYXRlX2NhY2hlX3NpemUoc2l6ZV90IG9uZGlza19zaXplLCB1bnNpZ25lZCBpbnQgZW50cmllcykKQEAgLTEyNzQsMTEgKzEzMjEsMTEgQEAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHdyaXRlX2J1ZmZlcltXUklURV9CVUZGRVJfU0laRV07CiBzdGF0aWMgdW5zaWduZWQgbG9uZyB3cml0ZV9idWZmZXJfbGVuOwogCi1zdGF0aWMgaW50IGNlX3dyaXRlX2ZsdXNoKFNIQV9DVFggKmNvbnRleHQsIGludCBmZCkKK3N0YXRpYyBpbnQgY2Vfd3JpdGVfZmx1c2goZ2l0X1NIQV9DVFggKmNvbnRleHQsIGludCBmZCkKIHsKIAl1bnNpZ25lZCBpbnQgYnVmZmVyZWQgPSB3cml0ZV9idWZmZXJfbGVuOwogCWlmIChidWZmZXJlZCkgewotCQlTSEExX1VwZGF0ZShjb250ZXh0LCB3cml0ZV9idWZmZXIsIGJ1ZmZlcmVkKTsKKwkJZ2l0X1NIQTFfVXBkYXRlKGNvbnRleHQsIHdyaXRlX2J1ZmZlciwgYnVmZmVyZWQpOwogCQlpZiAod3JpdGVfaW5fZnVsbChmZCwgd3JpdGVfYnVmZmVyLCBidWZmZXJlZCkgIT0gYnVmZmVyZWQpCiAJCQlyZXR1cm4gLTE7CiAJCXdyaXRlX2J1ZmZlcl9sZW4gPSAwOwpAQCAtMTI4Niw3ICsxMzMzLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjZV93cml0ZShTSEFfQ1RYICpjb250ZXh0LCBpbnQgZmQsIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBsZW4pCitzdGF0aWMgaW50IGNlX3dyaXRlKGdpdF9TSEFfQ1RYICpjb250ZXh0LCBpbnQgZmQsIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBsZW4pCiB7CiAJd2hpbGUgKGxlbikgewogCQl1bnNpZ25lZCBpbnQgYnVmZmVyZWQgPSB3cml0ZV9idWZmZXJfbGVuOwpAQCAtMTMwOCw3ICsxMzU1LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB3cml0ZV9pbmRleF9leHRfaGVhZGVyKFNIQV9DVFggKmNvbnRleHQsIGludCBmZCwKK3N0YXRpYyBpbnQgd3JpdGVfaW5kZXhfZXh0X2hlYWRlcihnaXRfU0hBX0NUWCAqY29udGV4dCwgaW50IGZkLAogCQkJCSAgdW5zaWduZWQgaW50IGV4dCwgdW5zaWduZWQgaW50IHN6KQogewogCWV4dCA9IGh0b25sKGV4dCk7CkBAIC0xMzE3LDEzICsxMzY0LDEzIEBACiAJCShjZV93cml0ZShjb250ZXh0LCBmZCwgJnN6LCA0KSA8IDApKSA/IC0xIDogMDsKIH0KIAotc3RhdGljIGludCBjZV9mbHVzaChTSEFfQ1RYICpjb250ZXh0LCBpbnQgZmQpCitzdGF0aWMgaW50IGNlX2ZsdXNoKGdpdF9TSEFfQ1RYICpjb250ZXh0LCBpbnQgZmQpCiB7CiAJdW5zaWduZWQgaW50IGxlZnQgPSB3cml0ZV9idWZmZXJfbGVuOwogCiAJaWYgKGxlZnQpIHsKIAkJd3JpdGVfYnVmZmVyX2xlbiA9IDA7Ci0JCVNIQTFfVXBkYXRlKGNvbnRleHQsIHdyaXRlX2J1ZmZlciwgbGVmdCk7CisJCWdpdF9TSEExX1VwZGF0ZShjb250ZXh0LCB3cml0ZV9idWZmZXIsIGxlZnQpOwogCX0KIAogCS8qIEZsdXNoIGZpcnN0IGlmIG5vdCBlbm91Z2ggc3BhY2UgZm9yIFNIQTEgc2lnbmF0dXJlICovCkBAIC0xMzM0LDcgKzEzODEsNyBAQAogCX0KIAogCS8qIEFwcGVuZCB0aGUgU0hBMSBzaWduYXR1cmUgYXQgdGhlIGVuZCAqLwotCVNIQTFfRmluYWwod3JpdGVfYnVmZmVyICsgbGVmdCwgY29udGV4dCk7CisJZ2l0X1NIQTFfRmluYWwod3JpdGVfYnVmZmVyICsgbGVmdCwgY29udGV4dCk7CiAJbGVmdCArPSAyMDsKIAlyZXR1cm4gKHdyaXRlX2luX2Z1bGwoZmQsIHdyaXRlX2J1ZmZlciwgbGVmdCkgIT0gbGVmdCkgPyAtMSA6IDA7CiB9CkBAIC0xMzg4LDEwICsxNDM1LDExIEBACiAJfQogfQogCi1zdGF0aWMgaW50IGNlX3dyaXRlX2VudHJ5KFNIQV9DVFggKmMsIGludCBmZCwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKK3N0YXRpYyBpbnQgY2Vfd3JpdGVfZW50cnkoZ2l0X1NIQV9DVFggKmMsIGludCBmZCwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKIAlpbnQgc2l6ZSA9IG9uZGlza19jZV9zaXplKGNlKTsKIAlzdHJ1Y3Qgb25kaXNrX2NhY2hlX2VudHJ5ICpvbmRpc2sgPSB4Y2FsbG9jKDEsIHNpemUpOworCWNoYXIgKm5hbWU7CiAKIAlvbmRpc2stPmN0aW1lLnNlYyA9IGh0b25sKGNlLT5jZV9jdGltZSk7CiAJb25kaXNrLT5jdGltZS5uc2VjID0gMDsKQEAgLTE0MDUsMjggKzE0NTMsNDUgQEAKIAlvbmRpc2stPnNpemUgPSBodG9ubChjZS0+Y2Vfc2l6ZSk7CiAJaGFzaGNweShvbmRpc2stPnNoYTEsIGNlLT5zaGExKTsKIAlvbmRpc2stPmZsYWdzID0gaHRvbnMoY2UtPmNlX2ZsYWdzKTsKLQltZW1jcHkob25kaXNrLT5uYW1lLCBjZS0+bmFtZSwgY2VfbmFtZWxlbihjZSkpOworCWlmIChjZS0+Y2VfZmxhZ3MgJiBDRV9FWFRFTkRFRCkgeworCQlzdHJ1Y3Qgb25kaXNrX2NhY2hlX2VudHJ5X2V4dGVuZGVkICpvbmRpc2syOworCQlvbmRpc2syID0gKHN0cnVjdCBvbmRpc2tfY2FjaGVfZW50cnlfZXh0ZW5kZWQgKilvbmRpc2s7CisJCW9uZGlzazItPmZsYWdzMiA9IGh0b25zKChjZS0+Y2VfZmxhZ3MgJiBDRV9FWFRFTkRFRF9GTEFHUykgPj4gMTYpOworCQluYW1lID0gb25kaXNrMi0+bmFtZTsKKwl9CisJZWxzZQorCQluYW1lID0gb25kaXNrLT5uYW1lOworCW1lbWNweShuYW1lLCBjZS0+bmFtZSwgY2VfbmFtZWxlbihjZSkpOwogCiAJcmV0dXJuIGNlX3dyaXRlKGMsIGZkLCBvbmRpc2ssIHNpemUpOwogfQogCiBpbnQgd3JpdGVfaW5kZXgoY29uc3Qgc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIGludCBuZXdmZCkKIHsKLQlTSEFfQ1RYIGM7CisJZ2l0X1NIQV9DVFggYzsKIAlzdHJ1Y3QgY2FjaGVfaGVhZGVyIGhkcjsKLQlpbnQgaSwgZXJyLCByZW1vdmVkOworCWludCBpLCBlcnIsIHJlbW92ZWQsIGV4dGVuZGVkOwogCXN0cnVjdCBjYWNoZV9lbnRyeSAqKmNhY2hlID0gaXN0YXRlLT5jYWNoZTsKIAlpbnQgZW50cmllcyA9IGlzdGF0ZS0+Y2FjaGVfbnI7CiAKLQlmb3IgKGkgPSByZW1vdmVkID0gMDsgaSA8IGVudHJpZXM7IGkrKykKKwlmb3IgKGkgPSByZW1vdmVkID0gZXh0ZW5kZWQgPSAwOyBpIDwgZW50cmllczsgaSsrKSB7CiAJCWlmIChjYWNoZVtpXS0+Y2VfZmxhZ3MgJiBDRV9SRU1PVkUpCiAJCQlyZW1vdmVkKys7CiAKKwkJLyogcmVkdWNlIGV4dGVuZGVkIGVudHJpZXMgaWYgcG9zc2libGUgKi8KKwkJY2FjaGVbaV0tPmNlX2ZsYWdzICY9IH5DRV9FWFRFTkRFRDsKKwkJaWYgKGNhY2hlW2ldLT5jZV9mbGFncyAmIENFX0VYVEVOREVEX0ZMQUdTKSB7CisJCQlleHRlbmRlZCsrOworCQkJY2FjaGVbaV0tPmNlX2ZsYWdzIHw9IENFX0VYVEVOREVEOworCQl9CisJfQorCiAJaGRyLmhkcl9zaWduYXR1cmUgPSBodG9ubChDQUNIRV9TSUdOQVRVUkUpOwotCWhkci5oZHJfdmVyc2lvbiA9IGh0b25sKDIpOworCS8qIGZvciBleHRlbmRlZCBmb3JtYXQsIGluY3JlYXNlIHZlcnNpb24gc28gb2xkZXIgZ2l0IHdvbid0IHRyeSB0byByZWFkIGl0ICovCisJaGRyLmhkcl92ZXJzaW9uID0gaHRvbmwoZXh0ZW5kZWQgPyAzIDogMik7CiAJaGRyLmhkcl9lbnRyaWVzID0gaHRvbmwoZW50cmllcyAtIHJlbW92ZWQpOwogCi0JU0hBMV9Jbml0KCZjKTsKKwlnaXRfU0hBMV9Jbml0KCZjKTsKIAlpZiAoY2Vfd3JpdGUoJmMsIG5ld2ZkLCAmaGRyLCBzaXplb2YoaGRyKSkgPCAwKQogCQlyZXR1cm4gLTE7CiAKQEAgLTE0NDIsOSArMTUwNyw4IEBACiAKIAkvKiBXcml0ZSBleHRlbnNpb24gZGF0YSBoZXJlICovCiAJaWYgKGlzdGF0ZS0+Y2FjaGVfdHJlZSkgewotCQlzdHJ1Y3Qgc3RyYnVmIHNiOworCQlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CiAKLQkJc3RyYnVmX2luaXQoJnNiLCAwKTsKIAkJY2FjaGVfdHJlZV93cml0ZSgmc2IsIGlzdGF0ZS0+Y2FjaGVfdHJlZSk7CiAJCWVyciA9IHdyaXRlX2luZGV4X2V4dF9oZWFkZXIoJmMsIG5ld2ZkLCBDQUNIRV9FWFRfVFJFRSwgc2IubGVuKSA8IDAKIAkJCXx8IGNlX3dyaXRlKCZjLCBuZXdmZCwgc2IuYnVmLCBzYi5sZW4pIDwgMDsKQEAgLTE0NTcsNyArMTUyMSw3IEBACiAKIC8qCiAgKiBSZWFkIHRoZSBpbmRleCBmaWxlIHRoYXQgaXMgcG90ZW50aWFsbHkgdW5tZXJnZWQgaW50byBnaXZlbgotICogaW5kZXhfc3RhdGUsIGRyb3BwaW5nIGFueSB1bm1lcmdlZCBlbnRyaWVzLiAgUmV0dXJucyB0cnVlIGlzCisgKiBpbmRleF9zdGF0ZSwgZHJvcHBpbmcgYW55IHVubWVyZ2VkIGVudHJpZXMuICBSZXR1cm5zIHRydWUgaWYKICAqIHRoZSBpbmRleCBpcyB1bm1lcmdlZC4gIENhbGxlcnMgd2hvIHdhbnQgdG8gcmVmdXNlIHRvIHdvcmsKICAqIGZyb20gYW4gdW5tZXJnZWQgc3RhdGUgY2FuIGNhbGwgdGhpcyBhbmQgY2hlY2sgaXRzIHJldHVybiB2YWx1ZSwKICAqIGluc3RlYWQgb2YgY2FsbGluZyByZWFkX2NhY2hlKCkuCkBAIC0xNDkxLDYgKzE1NTUsNjEgQEAKIAlyZXR1cm4gdW5tZXJnZWQ7CiB9CiAKK3N0cnVjdCB1cGRhdGVfY2FsbGJhY2tfZGF0YQoreworCWludCBmbGFnczsKKwlpbnQgYWRkX2Vycm9yczsKK307CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9jYWxsYmFjayhzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnEsCisJCQkgICAgc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0LCB2b2lkICpjYmRhdGEpCit7CisJaW50IGk7CisJc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhICpkYXRhID0gY2JkYXRhOworCisJZm9yIChpID0gMDsgaSA8IHEtPm5yOyBpKyspIHsKKwkJc3RydWN0IGRpZmZfZmlsZXBhaXIgKnAgPSBxLT5xdWV1ZVtpXTsKKwkJY29uc3QgY2hhciAqcGF0aCA9IHAtPm9uZS0+cGF0aDsKKwkJc3dpdGNoIChwLT5zdGF0dXMpIHsKKwkJZGVmYXVsdDoKKwkJCWRpZSgidW5leHBlY3RlZCBkaWZmIHN0YXR1cyAlYyIsIHAtPnN0YXR1cyk7CisJCWNhc2UgRElGRl9TVEFUVVNfVU5NRVJHRUQ6CisJCWNhc2UgRElGRl9TVEFUVVNfTU9ESUZJRUQ6CisJCWNhc2UgRElGRl9TVEFUVVNfVFlQRV9DSEFOR0VEOgorCQkJaWYgKGFkZF9maWxlX3RvX2luZGV4KCZ0aGVfaW5kZXgsIHBhdGgsIGRhdGEtPmZsYWdzKSkgeworCQkJCWlmICghKGRhdGEtPmZsYWdzICYgQUREX0NBQ0hFX0lHTk9SRV9FUlJPUlMpKQorCQkJCQlkaWUoInVwZGF0aW5nIGZpbGVzIGZhaWxlZCIpOworCQkJCWRhdGEtPmFkZF9lcnJvcnMrKzsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIERJRkZfU1RBVFVTX0RFTEVURUQ6CisJCQlpZiAoZGF0YS0+ZmxhZ3MgJiBBRERfQ0FDSEVfSUdOT1JFX1JFTU9WQUwpCisJCQkJYnJlYWs7CisJCQlpZiAoIShkYXRhLT5mbGFncyAmIEFERF9DQUNIRV9QUkVURU5EKSkKKwkJCQlyZW1vdmVfZmlsZV9mcm9tX2luZGV4KCZ0aGVfaW5kZXgsIHBhdGgpOworCQkJaWYgKGRhdGEtPmZsYWdzICYgKEFERF9DQUNIRV9QUkVURU5EfEFERF9DQUNIRV9WRVJCT1NFKSkKKwkJCQlwcmludGYoInJlbW92ZSAnJXMnXG4iLCBwYXRoKTsKKwkJCWJyZWFrOworCQl9CisJfQorfQorCitpbnQgYWRkX2ZpbGVzX3RvX2NhY2hlKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqKnBhdGhzcGVjLCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhIGRhdGE7CisJc3RydWN0IHJldl9pbmZvIHJldjsKKwlpbml0X3JldmlzaW9ucygmcmV2LCBwcmVmaXgpOworCXNldHVwX3JldmlzaW9ucygwLCBOVUxMLCAmcmV2LCBOVUxMKTsKKwlyZXYucHJ1bmVfZGF0YSA9IHBhdGhzcGVjOworCXJldi5kaWZmb3B0Lm91dHB1dF9mb3JtYXQgPSBESUZGX0ZPUk1BVF9DQUxMQkFDSzsKKwlyZXYuZGlmZm9wdC5mb3JtYXRfY2FsbGJhY2sgPSB1cGRhdGVfY2FsbGJhY2s7CisJZGF0YS5mbGFncyA9IGZsYWdzOworCWRhdGEuYWRkX2Vycm9ycyA9IDA7CisJcmV2LmRpZmZvcHQuZm9ybWF0X2NhbGxiYWNrX2RhdGEgPSAmZGF0YTsKKwlydW5fZGlmZl9maWxlcygmcmV2LCBESUZGX1JBQ1lfSVNfTU9ESUZJRUQpOworCXJldHVybiAhIWRhdGEuYWRkX2Vycm9yczsKK30KKwogLyoKICAqIFJldHVybnMgMSBpZiB0aGUgcGF0aCBpcyBhbiAib3RoZXIiIHBhdGggd2l0aCByZXNwZWN0IHRvCiAgKiB0aGUgaW5kZXg7IHRoYXQgaXMsIHRoZSBwYXRoIGlzIG5vdCBtZW50aW9uZWQgaW4gdGhlIGluZGV4IGF0IGFsbCwKZGlmZiAtLWdpdCBhL3JlZnMuYyBiL3JlZnMuYwppbmRleCBiZTA5NWNiLi4zM2NlZDY1IDEwMDY0NAotLS0gYS9yZWZzLmMKKysrIGIvcmVmcy5jCkBAIC0zOTAsNiArMzkwLDE4IEBACiAJcmV0dXJuIHJldHZhbDsKIH0KIAorLyoKKyAqIElmIHRoZSAicmVhZGluZyIgYXJndW1lbnQgaXMgc2V0LCB0aGlzIGZ1bmN0aW9uIGZpbmRzIG91dCB3aGF0IF9vYmplY3RfCisgKiB0aGUgcmVmIHBvaW50cyBhdCBieSAicmVhZGluZyIgdGhlIHJlZi4gIFRoZSByZWYsIGlmIGl0IGlzIG5vdCBzeW1ib2xpYywKKyAqIGhhcyB0byBleGlzdCwgYW5kIGlmIGl0IGlzIHN5bWJvbGljLCBpdCBoYXMgdG8gcG9pbnQgYXQgYW4gZXhpc3RpbmcgcmVmLAorICogYmVjYXVzZSB0aGUgInJlYWQiIGdvZXMgdGhyb3VnaCB0aGUgc3ltcmVmIHRvIHRoZSByZWYgaXQgcG9pbnRzIGF0LgorICoKKyAqIFRoZSBhY2Nlc3MgdGhhdCBpcyBub3QgInJlYWRpbmciIG1heSBvZnRlbiBiZSAid3JpdGluZyIsIGJ1dCBkb2VzIG5vdAorICogaGF2ZSB0bzsgaXQgY2FuIGJlIG1lcmVseSBjaGVja2luZyBfd2hlcmUgaXQgbGVhZHMgdG9fLiBJZiBpdCBpcyBhCisgKiBwcmVsdWRlIHRvICJ3cml0aW5nIiB0byB0aGUgcmVmLCBhIHdyaXRlIHRvIGEgc3ltcmVmIHRoYXQgcG9pbnRzIGF0CisgKiB5ZXQtdG8tYmUtYm9ybiByZWYgd2lsbCBjcmVhdGUgdGhlIHJlYWwgcmVmIHBvaW50ZWQgYnkgdGhlIHN5bXJlZi4KKyAqIHJlYWRpbmc9MCBhbGxvd3MgdGhlIGNhbGxlciB0byBjaGVjayB3aGVyZSBzdWNoIGEgc3ltcmVmIGxlYWRzIHRvLgorICovCiBjb25zdCBjaGFyICpyZXNvbHZlX3JlZihjb25zdCBjaGFyICpyZWYsIHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCByZWFkaW5nLCBpbnQgKmZsYWcpCiB7CiAJaW50IGRlcHRoID0gTUFYREVQVEg7CkBAIC00MTAsMTMgKzQyMiw3IEBACiAJCQlyZXR1cm4gTlVMTDsKIAogCQlnaXRfc25wYXRoKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzIiwgcmVmKTsKLQkJLyogU3BlY2lhbCBjYXNlOiBub24tZXhpc3RpbmcgZmlsZS4KLQkJICogTm90IGhhdmluZyB0aGUgcmVmcy9oZWFkcy9uZXctYnJhbmNoIGlzIE9LCi0JCSAqIGlmIHdlIGFyZSB3cml0aW5nIGludG8gaXQsIHNvIGlzIC5naXQvSEVBRAotCQkgKiB0aGF0IHBvaW50cyBhdCByZWZzL2hlYWRzL21hc3RlciBzdGlsbCB0byBiZQotCQkgKiBib3JuLiAgSXQgaXMgTk9UIE9LIGlmIHdlIGFyZSByZXNvbHZpbmcgZm9yCi0JCSAqIHJlYWRpbmcuCi0JCSAqLworCQkvKiBTcGVjaWFsIGNhc2U6IG5vbi1leGlzdGluZyBmaWxlLiAqLwogCQlpZiAobHN0YXQocGF0aCwgJnN0KSA8IDApIHsKIAkJCXN0cnVjdCByZWZfbGlzdCAqbGlzdCA9IGdldF9wYWNrZWRfcmVmcygpOwogCQkJd2hpbGUgKGxpc3QpIHsKZGlmZiAtLWdpdCBhL3JlbW90ZS5jIGIvcmVtb3RlLmMKaW5kZXggOTFmMWI3Yy4uNTcwZTExMiAxMDA2NDQKLS0tIGEvcmVtb3RlLmMKKysrIGIvcmVtb3RlLmMKQEAgLTY5LDcgKzY5LDcgQEAKIAlpZiAoIWxvbmdlc3QpCiAJCXJldHVybiB1cmw7CiAKLQlyZXQgPSBtYWxsb2MocmV3cml0ZVtsb25nZXN0X2ldLT5iYXNlbGVuICsKKwlyZXQgPSB4bWFsbG9jKHJld3JpdGVbbG9uZ2VzdF9pXS0+YmFzZWxlbiArCiAJCSAgICAgKHN0cmxlbih1cmwpIC0gbG9uZ2VzdC0+bGVuKSArIDEpOwogCXN0cmNweShyZXQsIHJld3JpdGVbbG9uZ2VzdF9pXS0+YmFzZSk7CiAJc3RyY3B5KHJldCArIHJld3JpdGVbbG9uZ2VzdF9pXS0+YmFzZWxlbiwgdXJsICsgbG9uZ2VzdC0+bGVuKTsKQEAgLTE1Miw3ICsxNTIsNyBAQAogCQlyZXQtPm5hbWUgPSB4c3RybmR1cChuYW1lLCBsZW4pOwogCWVsc2UKIAkJcmV0LT5uYW1lID0geHN0cmR1cChuYW1lKTsKLQlyZWZuYW1lID0gbWFsbG9jKHN0cmxlbihuYW1lKSArIHN0cmxlbigicmVmcy9oZWFkcy8iKSArIDEpOworCXJlZm5hbWUgPSB4bWFsbG9jKHN0cmxlbihuYW1lKSArIHN0cmxlbigicmVmcy9oZWFkcy8iKSArIDEpOwogCXN0cmNweShyZWZuYW1lLCAicmVmcy9oZWFkcy8iKTsKIAlzdHJjcHkocmVmbmFtZSArIHN0cmxlbigicmVmcy9oZWFkcy8iKSwgcmV0LT5uYW1lKTsKIAlyZXQtPnJlZm5hbWUgPSByZWZuYW1lOwpAQCAtMjAxLDYgKzIwMSw3IEBACiAKIAlpZiAoIWYpCiAJCXJldHVybjsKKwlyZW1vdGUtPm9yaWdpbiA9IFJFTU9URV9SRU1PVEVTOwogCXdoaWxlIChmZ2V0cyhidWZmZXIsIEJVRl9TSVpFLCBmKSkgewogCQlpbnQgdmFsdWVfbGlzdDsKIAkJY2hhciAqcywgKnA7CkBAIC0yNDUsNyArMjQ2LDcgQEAKIHsKIAljb25zdCBjaGFyICpzbGFzaCA9IHN0cmNocihyZW1vdGUtPm5hbWUsICcvJyk7CiAJY2hhciAqZnJhZzsKLQlzdHJ1Y3Qgc3RyYnVmIGJyYW5jaDsKKwlzdHJ1Y3Qgc3RyYnVmIGJyYW5jaCA9IFNUUkJVRl9JTklUOwogCWludCBuID0gc2xhc2ggPyBzbGFzaCAtIHJlbW90ZS0+bmFtZSA6IDEwMDA7CiAJRklMRSAqZiA9IGZvcGVuKGdpdF9wYXRoKCJicmFuY2hlcy8lLipzIiwgbiwgcmVtb3RlLT5uYW1lKSwgInIiKTsKIAljaGFyICpzLCAqcDsKQEAgLTI2MSw2ICsyNjIsNyBAQAogCQlzKys7CiAJaWYgKCEqcykKIAkJcmV0dXJuOworCXJlbW90ZS0+b3JpZ2luID0gUkVNT1RFX0JSQU5DSEVTOwogCXAgPSBzICsgc3RybGVuKHMpOwogCXdoaWxlIChpc3NwYWNlKHBbLTFdKSkKIAkJKi0tcCA9IDA7CkBAIC0yODMsNyArMjg1LDYgQEAKIAkgKiAjYnJhbmNoIHNwZWNpZmllZC4gIFRoZSAibWFzdGVyIiAob3Igc3BlY2lmaWVkKSBicmFuY2ggaXMKIAkgKiBmZXRjaGVkIGFuZCBzdG9yZWQgaW4gdGhlIGxvY2FsIGJyYW5jaCBvZiB0aGUgc2FtZSBuYW1lLgogCSAqLwotCXN0cmJ1Zl9pbml0KCZicmFuY2gsIDApOwogCWZyYWcgPSBzdHJjaHIocCwgJyMnKTsKIAlpZiAoZnJhZykgewogCQkqKGZyYWcrKykgPSAnXDAnOwpAQCAtMzYyLDYgKzM2Myw3IEBACiAJaWYgKCFzdWJrZXkpCiAJCXJldHVybiBlcnJvcigiQ29uZmlnIHdpdGggbm8ga2V5IGZvciByZW1vdGUgJXMiLCBuYW1lKTsKIAlyZW1vdGUgPSBtYWtlX3JlbW90ZShuYW1lLCBzdWJrZXkgLSBuYW1lKTsKKwlyZW1vdGUtPm9yaWdpbiA9IFJFTU9URV9DT05GSUc7CiAJaWYgKCFzdHJjbXAoc3Via2V5LCAiLm1pcnJvciIpKQogCQlyZW1vdGUtPm1pcnJvciA9IGdpdF9jb25maWdfYm9vbChrZXksIHZhbHVlKTsKIAllbHNlIGlmICghc3RyY21wKHN1YmtleSwgIi5za2lwZGVmYXVsdHVwZGF0ZSIpKQpAQCAtNDYxLDYgKzQ2MywyNiBAQAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGZyZWVzIGEgcmVmc3BlYyBhcnJheS4KKyAqIFdhcm5pbmc6IGNvZGUgcGF0aHMgc2hvdWxkIGJlIGNoZWNrZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHNyYworICogICAgICAgICAgYW5kIGRzdCBwb2ludGVycyBhcmUgYWx3YXlzIGZyZWVhYmxlIHBvaW50ZXJzIGFzIHdlbGwKKyAqICAgICAgICAgIGFzIHRoZSByZWZzcGVjIHBvaW50ZXIgaXRzZWxmLgorICovCitzdGF0aWMgdm9pZCBmcmVlX3JlZnNwZWNzKHN0cnVjdCByZWZzcGVjICpyZWZzcGVjLCBpbnQgbnJfcmVmc3BlYykKK3sKKwlpbnQgaTsKKworCWlmICghcmVmc3BlYykKKwkJcmV0dXJuOworCisJZm9yIChpID0gMDsgaSA8IG5yX3JlZnNwZWM7IGkrKykgeworCQlmcmVlKHJlZnNwZWNbaV0uc3JjKTsKKwkJZnJlZShyZWZzcGVjW2ldLmRzdCk7CisJfQorCWZyZWUocmVmc3BlYyk7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgcmVmc3BlYyAqcGFyc2VfcmVmc3BlY19pbnRlcm5hbChpbnQgbnJfcmVmc3BlYywgY29uc3QgY2hhciAqKnJlZnNwZWMsIGludCBmZXRjaCwgaW50IHZlcmlmeSkKIHsKIAlpbnQgaTsKQEAgLTU3OSw3ICs2MDEsMTIgQEAKIAogIGludmFsaWQ6CiAJaWYgKHZlcmlmeSkgewotCQlmcmVlKHJzKTsKKwkJLyoKKwkJICogbnJfcmVmc3BlYyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBpIG11c3QgYmUgdmFsaWQKKwkJICogc2luY2UgaXQgaXMgb25seSBwb3NzaWJsZSB0byByZWFjaCB0aGlzIHBvaW50IGZyb20gd2l0aGluCisJCSAqIHRoZSBmb3IgbG9vcCBhYm92ZS4KKwkJICovCisJCWZyZWVfcmVmc3BlY3MocnMsIGkrMSk7CiAJCXJldHVybiBOVUxMOwogCX0KIAlkaWUoIkludmFsaWQgcmVmc3BlYyAnJXMnIiwgcmVmc3BlY1tpXSk7CkBAIC01OTEsNyArNjE4LDcgQEAKIAlzdHJ1Y3QgcmVmc3BlYyAqcmVmc3BlYzsKIAogCXJlZnNwZWMgPSBwYXJzZV9yZWZzcGVjX2ludGVybmFsKDEsIGZldGNoX3JlZnNwZWMsIDEsIDEpOwotCWZyZWUocmVmc3BlYyk7CisJZnJlZV9yZWZzcGVjcyhyZWZzcGVjLCAxKTsKIAlyZXR1cm4gISFyZWZzcGVjOwogfQogCkBAIC02MDAsNyArNjI3LDcgQEAKIAlyZXR1cm4gcGFyc2VfcmVmc3BlY19pbnRlcm5hbChucl9yZWZzcGVjLCByZWZzcGVjLCAxLCAwKTsKIH0KIAotc3RydWN0IHJlZnNwZWMgKnBhcnNlX3B1c2hfcmVmc3BlYyhpbnQgbnJfcmVmc3BlYywgY29uc3QgY2hhciAqKnJlZnNwZWMpCitzdGF0aWMgc3RydWN0IHJlZnNwZWMgKnBhcnNlX3B1c2hfcmVmc3BlYyhpbnQgbnJfcmVmc3BlYywgY29uc3QgY2hhciAqKnJlZnNwZWMpCiB7CiAJcmV0dXJuIHBhcnNlX3JlZnNwZWNfaW50ZXJuYWwobnJfcmVmc3BlYywgcmVmc3BlYywgMCwgMCk7CiB9CkBAIC03MzYsMTggKzc2MywxOSBAQAogCXJldHVybiAtMTsKIH0KIAotc3RydWN0IHJlZiAqYWxsb2NfcmVmKHVuc2lnbmVkIG5hbWVsZW4pCitzdGF0aWMgc3RydWN0IHJlZiAqYWxsb2NfcmVmX3dpdGhfcHJlZml4KGNvbnN0IGNoYXIgKnByZWZpeCwgc2l6ZV90IHByZWZpeGxlbiwKKwkJY29uc3QgY2hhciAqbmFtZSkKIHsKLQlzdHJ1Y3QgcmVmICpyZXQgPSB4bWFsbG9jKHNpemVvZihzdHJ1Y3QgcmVmKSArIG5hbWVsZW4pOwotCW1lbXNldChyZXQsIDAsIHNpemVvZihzdHJ1Y3QgcmVmKSArIG5hbWVsZW4pOwotCXJldHVybiByZXQ7CisJc2l6ZV90IGxlbiA9IHN0cmxlbihuYW1lKTsKKwlzdHJ1Y3QgcmVmICpyZWYgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgcmVmKSArIHByZWZpeGxlbiArIGxlbiArIDEpOworCW1lbWNweShyZWYtPm5hbWUsIHByZWZpeCwgcHJlZml4bGVuKTsKKwltZW1jcHkocmVmLT5uYW1lICsgcHJlZml4bGVuLCBuYW1lLCBsZW4pOworCXJldHVybiByZWY7CiB9CiAKLXN0cnVjdCByZWYgKmFsbG9jX3JlZl9mcm9tX3N0cihjb25zdCBjaGFyKiBzdHIpCitzdHJ1Y3QgcmVmICphbGxvY19yZWYoY29uc3QgY2hhciAqbmFtZSkKIHsKLQlzdHJ1Y3QgcmVmICpyZXQgPSBhbGxvY19yZWYoc3RybGVuKHN0cikgKyAxKTsKLQlzdHJjcHkocmV0LT5uYW1lLCBzdHIpOwotCXJldHVybiByZXQ7CisJcmV0dXJuIGFsbG9jX3JlZl93aXRoX3ByZWZpeCgiIiwgMCwgbmFtZSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcmVmICpjb3B5X3JlZihjb25zdCBzdHJ1Y3QgcmVmICpyZWYpCkBAIC03NzAsNyArNzk4LDcgQEAKIAlyZXR1cm4gcmV0OwogfQogCi12b2lkIGZyZWVfcmVmKHN0cnVjdCByZWYgKnJlZikKK3N0YXRpYyB2b2lkIGZyZWVfcmVmKHN0cnVjdCByZWYgKnJlZikKIHsKIAlpZiAoIXJlZikKIAkJcmV0dXJuOwpAQCAtODU4LDIxICs4ODYsMjAgQEAKIAlzdHJ1Y3QgcmVmICpyZWY7CiAKIAlpZiAoISpuYW1lKSB7Ci0JCXJlZiA9IGFsbG9jX3JlZigyMCk7Ci0JCXN0cmNweShyZWYtPm5hbWUsICIoZGVsZXRlKSIpOworCQlyZWYgPSBhbGxvY19yZWYoIihkZWxldGUpIik7CiAJCWhhc2hjbHIocmVmLT5uZXdfc2hhMSk7CiAJCXJldHVybiByZWY7CiAJfQogCWlmIChnZXRfc2hhMShuYW1lLCBzaGExKSkKIAkJcmV0dXJuIE5VTEw7Ci0JcmVmID0gYWxsb2NfcmVmX2Zyb21fc3RyKG5hbWUpOworCXJlZiA9IGFsbG9jX3JlZihuYW1lKTsKIAloYXNoY3B5KHJlZi0+bmV3X3NoYTEsIHNoYTEpOwogCXJldHVybiByZWY7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcmVmICptYWtlX2xpbmtlZF9yZWYoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHJlZiAqKip0YWlsKQogewotCXN0cnVjdCByZWYgKnJldCA9IGFsbG9jX3JlZl9mcm9tX3N0cihuYW1lKTsKKwlzdHJ1Y3QgcmVmICpyZXQgPSBhbGxvY19yZWYobmFtZSk7CiAJdGFpbF9saW5rX3JlZihyZXQsIHRhaWwpOwogCXJldHVybiByZXQ7CiB9CkBAIC0xMTQwLDEwICsxMTY3LDggQEAKIAkJCXN0cnVjdCByZWYgKmNweSA9IGNvcHlfcmVmKHJlZik7CiAJCQltYXRjaCA9IHJlZi0+bmFtZSArIHJlbW90ZV9wcmVmaXhfbGVuOwogCi0JCQljcHktPnBlZXJfcmVmID0gYWxsb2NfcmVmKGxvY2FsX3ByZWZpeF9sZW4gKwotCQkJCQkJICBzdHJsZW4obWF0Y2gpICsgMSk7Ci0JCQlzcHJpbnRmKGNweS0+cGVlcl9yZWYtPm5hbWUsICIlcyVzIiwKLQkJCQlyZWZzcGVjLT5kc3QsIG1hdGNoKTsKKwkJCWNweS0+cGVlcl9yZWYgPSBhbGxvY19yZWZfd2l0aF9wcmVmaXgocmVmc3BlYy0+ZHN0LAorCQkJCQlsb2NhbF9wcmVmaXhfbGVuLCBtYXRjaCk7CiAJCQlpZiAocmVmc3BlYy0+Zm9yY2UpCiAJCQkJY3B5LT5wZWVyX3JlZi0+Zm9yY2UgPSAxOwogCQkJKnRhaWwgPSBjcHk7CkBAIC0xMTc2LDI1ICsxMjAxLDE4IEBACiAKIHN0YXRpYyBzdHJ1Y3QgcmVmICpnZXRfbG9jYWxfcmVmKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0Jc3RydWN0IHJlZiAqcmV0OwogCWlmICghbmFtZSkKIAkJcmV0dXJuIE5VTEw7CiAKLQlpZiAoIXByZWZpeGNtcChuYW1lLCAicmVmcy8iKSkgewotCQlyZXR1cm4gYWxsb2NfcmVmX2Zyb21fc3RyKG5hbWUpOwotCX0KKwlpZiAoIXByZWZpeGNtcChuYW1lLCAicmVmcy8iKSkKKwkJcmV0dXJuIGFsbG9jX3JlZihuYW1lKTsKIAogCWlmICghcHJlZml4Y21wKG5hbWUsICJoZWFkcy8iKSB8fAogCSAgICAhcHJlZml4Y21wKG5hbWUsICJ0YWdzLyIpIHx8Ci0JICAgICFwcmVmaXhjbXAobmFtZSwgInJlbW90ZXMvIikpIHsKLQkJcmV0ID0gYWxsb2NfcmVmKHN0cmxlbihuYW1lKSArIDYpOwotCQlzcHJpbnRmKHJldC0+bmFtZSwgInJlZnMvJXMiLCBuYW1lKTsKLQkJcmV0dXJuIHJldDsKLQl9CisJICAgICFwcmVmaXhjbXAobmFtZSwgInJlbW90ZXMvIikpCisJCXJldHVybiBhbGxvY19yZWZfd2l0aF9wcmVmaXgoInJlZnMvIiwgNSwgbmFtZSk7CiAKLQlyZXQgPSBhbGxvY19yZWYoc3RybGVuKG5hbWUpICsgMTIpOwotCXNwcmludGYocmV0LT5uYW1lLCAicmVmcy9oZWFkcy8lcyIsIG5hbWUpOwotCXJldHVybiByZXQ7CisJcmV0dXJuIGFsbG9jX3JlZl93aXRoX3ByZWZpeCgicmVmcy9oZWFkcy8iLCAxMSwgbmFtZSk7CiB9CiAKIGludCBnZXRfZmV0Y2hfbWFwKGNvbnN0IHN0cnVjdCByZWYgKnJlbW90ZV9yZWZzLApkaWZmIC0tZ2l0IGEvcmVtb3RlLmggYi9yZW1vdGUuaAppbmRleCAwOTFiMWQwLi5hNDZhNWJlIDEwMDY0NAotLS0gYS9yZW1vdGUuaAorKysgYi9yZW1vdGUuaApAQCAtMSw4ICsxLDE1IEBACiAjaWZuZGVmIFJFTU9URV9ICiAjZGVmaW5lIFJFTU9URV9ICiAKK2VudW0geworCVJFTU9URV9DT05GSUcsCisJUkVNT1RFX1JFTU9URVMsCisJUkVNT1RFX0JSQU5DSEVTCit9OworCiBzdHJ1Y3QgcmVtb3RlIHsKIAljb25zdCBjaGFyICpuYW1lOworCWludCBvcmlnaW47CiAKIAljb25zdCBjaGFyICoqdXJsOwogCWludCB1cmxfbnI7CkBAIC01NSw5ICs2Miw3IEBACiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgcmVmc3BlYyAqdGFnX3JlZnNwZWM7CiAKLXN0cnVjdCByZWYgKmFsbG9jX3JlZih1bnNpZ25lZCBuYW1lbGVuKTsKLQotc3RydWN0IHJlZiAqYWxsb2NfcmVmX2Zyb21fc3RyKGNvbnN0IGNoYXIqIHN0cik7CitzdHJ1Y3QgcmVmICphbGxvY19yZWYoY29uc3QgY2hhciAqbmFtZSk7CiAKIHN0cnVjdCByZWYgKmNvcHlfcmVmX2xpc3QoY29uc3Qgc3RydWN0IHJlZiAqcmVmKTsKIApAQCAtNzcsNyArODIsNiBAQAogCiBpbnQgdmFsaWRfZmV0Y2hfcmVmc3BlYyhjb25zdCBjaGFyICpyZWZzcGVjKTsKIHN0cnVjdCByZWZzcGVjICpwYXJzZV9mZXRjaF9yZWZzcGVjKGludCBucl9yZWZzcGVjLCBjb25zdCBjaGFyICoqcmVmc3BlYyk7Ci1zdHJ1Y3QgcmVmc3BlYyAqcGFyc2VfcHVzaF9yZWZzcGVjKGludCBucl9yZWZzcGVjLCBjb25zdCBjaGFyICoqcmVmc3BlYyk7CiAKIGludCBtYXRjaF9yZWZzKHN0cnVjdCByZWYgKnNyYywgc3RydWN0IHJlZiAqZHN0LCBzdHJ1Y3QgcmVmICoqKmRzdF90YWlsLAogCSAgICAgICBpbnQgbnJfcmVmc3BlYywgY29uc3QgY2hhciAqKnJlZnNwZWMsIGludCBhbGwpOwpkaWZmIC0tZ2l0IGEvcmVyZXJlLmMgYi9yZXJlcmUuYwppbmRleCBhMGQ0NzdhLi43MThmYjUyIDEwMDY0NAotLS0gYS9yZXJlcmUuYworKysgYi9yZXJlcmUuYwpAQCAtNzAsMTUgKzcwLDMyIEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGZlcnJfd3JpdGUoY29uc3Qgdm9pZCAqcCwgc2l6ZV90IGNvdW50LCBGSUxFICpmcCwgaW50ICplcnIpCit7CisJaWYgKCFjb3VudCB8fCAqZXJyKQorCQlyZXR1cm47CisJaWYgKGZ3cml0ZShwLCBjb3VudCwgMSwgZnApICE9IDEpCisJCSplcnIgPSBlcnJubzsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZlcnJfcHV0cyhjb25zdCBjaGFyICpzLCBGSUxFICpmcCwgaW50ICplcnIpCit7CisJZmVycl93cml0ZShzLCBzdHJsZW4ocyksIGZwLCBlcnIpOworfQorCiBzdGF0aWMgaW50IGhhbmRsZV9maWxlKGNvbnN0IGNoYXIgKnBhdGgsCiAJIHVuc2lnbmVkIGNoYXIgKnNoYTEsIGNvbnN0IGNoYXIgKm91dHB1dCkKIHsKLQlTSEFfQ1RYIGN0eDsKKwlnaXRfU0hBX0NUWCBjdHg7CiAJY2hhciBidWZbMTAyNF07Ci0JaW50IGh1bmsgPSAwLCBodW5rX25vID0gMDsKLQlzdHJ1Y3Qgc3RyYnVmIG9uZSwgdHdvOworCWludCBodW5rX25vID0gMDsKKwllbnVtIHsKKwkJUlJfQ09OVEVYVCA9IDAsIFJSX1NJREVfMSwgUlJfU0lERV8yLCBSUl9PUklHSU5BTCwKKwl9IGh1bmsgPSBSUl9DT05URVhUOworCXN0cnVjdCBzdHJidWYgb25lID0gU1RSQlVGX0lOSVQsIHR3byA9IFNUUkJVRl9JTklUOwogCUZJTEUgKmYgPSBmb3BlbihwYXRoLCAiciIpOwogCUZJTEUgKm91dCA9IE5VTEw7CisJaW50IHdyZXJyb3IgPSAwOwogCiAJaWYgKCFmKQogCQlyZXR1cm4gZXJyb3IoIkNvdWxkIG5vdCBvcGVuICVzIiwgcGF0aCk7CkBAIC05Miw0NyArMTA5LDUxIEBACiAJfQogCiAJaWYgKHNoYTEpCi0JCVNIQTFfSW5pdCgmY3R4KTsKKwkJZ2l0X1NIQTFfSW5pdCgmY3R4KTsKIAotCXN0cmJ1Zl9pbml0KCZvbmUsIDApOwotCXN0cmJ1Zl9pbml0KCZ0d28sICAwKTsKIAl3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZikpIHsKIAkJaWYgKCFwcmVmaXhjbXAoYnVmLCAiPDw8PDw8PCAiKSkgewotCQkJaWYgKGh1bmspCisJCQlpZiAoaHVuayAhPSBSUl9DT05URVhUKQogCQkJCWdvdG8gYmFkOwotCQkJaHVuayA9IDE7CisJCQlodW5rID0gUlJfU0lERV8xOworCQl9IGVsc2UgaWYgKCFwcmVmaXhjbXAoYnVmLCAifHx8fHx8fCIpICYmIGlzc3BhY2UoYnVmWzddKSkgeworCQkJaWYgKGh1bmsgIT0gUlJfU0lERV8xKQorCQkJCWdvdG8gYmFkOworCQkJaHVuayA9IFJSX09SSUdJTkFMOwogCQl9IGVsc2UgaWYgKCFwcmVmaXhjbXAoYnVmLCAiPT09PT09PSIpICYmIGlzc3BhY2UoYnVmWzddKSkgewotCQkJaWYgKGh1bmsgIT0gMSkKKwkJCWlmIChodW5rICE9IFJSX1NJREVfMSAmJiBodW5rICE9IFJSX09SSUdJTkFMKQogCQkJCWdvdG8gYmFkOwotCQkJaHVuayA9IDI7CisJCQlodW5rID0gUlJfU0lERV8yOwogCQl9IGVsc2UgaWYgKCFwcmVmaXhjbXAoYnVmLCAiPj4+Pj4+PiAiKSkgewotCQkJaWYgKGh1bmsgIT0gMikKKwkJCWlmIChodW5rICE9IFJSX1NJREVfMikKIAkJCQlnb3RvIGJhZDsKIAkJCWlmIChzdHJidWZfY21wKCZvbmUsICZ0d28pID4gMCkKIAkJCQlzdHJidWZfc3dhcCgmb25lLCAmdHdvKTsKIAkJCWh1bmtfbm8rKzsKLQkJCWh1bmsgPSAwOworCQkJaHVuayA9IFJSX0NPTlRFWFQ7CiAJCQlpZiAob3V0KSB7Ci0JCQkJZnB1dHMoIjw8PDw8PDxcbiIsIG91dCk7Ci0JCQkJZndyaXRlKG9uZS5idWYsIG9uZS5sZW4sIDEsIG91dCk7Ci0JCQkJZnB1dHMoIj09PT09PT1cbiIsIG91dCk7Ci0JCQkJZndyaXRlKHR3by5idWYsIHR3by5sZW4sIDEsIG91dCk7Ci0JCQkJZnB1dHMoIj4+Pj4+Pj5cbiIsIG91dCk7CisJCQkJZmVycl9wdXRzKCI8PDw8PDw8XG4iLCBvdXQsICZ3cmVycm9yKTsKKwkJCQlmZXJyX3dyaXRlKG9uZS5idWYsIG9uZS5sZW4sIG91dCwgJndyZXJyb3IpOworCQkJCWZlcnJfcHV0cygiPT09PT09PVxuIiwgb3V0LCAmd3JlcnJvcik7CisJCQkJZmVycl93cml0ZSh0d28uYnVmLCB0d28ubGVuLCBvdXQsICZ3cmVycm9yKTsKKwkJCQlmZXJyX3B1dHMoIj4+Pj4+Pj5cbiIsIG91dCwgJndyZXJyb3IpOwogCQkJfQogCQkJaWYgKHNoYTEpIHsKLQkJCQlTSEExX1VwZGF0ZSgmY3R4LCBvbmUuYnVmID8gb25lLmJ1ZiA6ICIiLAorCQkJCWdpdF9TSEExX1VwZGF0ZSgmY3R4LCBvbmUuYnVmID8gb25lLmJ1ZiA6ICIiLAogCQkJCQkgICAgb25lLmxlbiArIDEpOwotCQkJCVNIQTFfVXBkYXRlKCZjdHgsIHR3by5idWYgPyB0d28uYnVmIDogIiIsCisJCQkJZ2l0X1NIQTFfVXBkYXRlKCZjdHgsIHR3by5idWYgPyB0d28uYnVmIDogIiIsCiAJCQkJCSAgICB0d28ubGVuICsgMSk7CiAJCQl9CiAJCQlzdHJidWZfcmVzZXQoJm9uZSk7CiAJCQlzdHJidWZfcmVzZXQoJnR3byk7Ci0JCX0gZWxzZSBpZiAoaHVuayA9PSAxKQorCQl9IGVsc2UgaWYgKGh1bmsgPT0gUlJfU0lERV8xKQogCQkJc3RyYnVmX2FkZHN0cigmb25lLCBidWYpOwotCQllbHNlIGlmIChodW5rID09IDIpCisJCWVsc2UgaWYgKGh1bmsgPT0gUlJfT1JJR0lOQUwpCisJCQk7IC8qIGRpc2NhcmQgKi8KKwkJZWxzZSBpZiAoaHVuayA9PSBSUl9TSURFXzIpCiAJCQlzdHJidWZfYWRkc3RyKCZ0d28sIGJ1Zik7CiAJCWVsc2UgaWYgKG91dCkKLQkJCWZwdXRzKGJ1Ziwgb3V0KTsKKwkJCWZlcnJfcHV0cyhidWYsIG91dCwgJndyZXJyb3IpOwogCQljb250aW51ZTsKIAliYWQ6CiAJCWh1bmsgPSA5OTsgLyogZm9yY2UgZXJyb3IgZXhpdCAqLwpAQCAtMTQyLDE1ICsxNjMsMjEgQEAKIAlzdHJidWZfcmVsZWFzZSgmdHdvKTsKIAogCWZjbG9zZShmKTsKLQlpZiAob3V0KQotCQlmY2xvc2Uob3V0KTsKKwlpZiAod3JlcnJvcikKKwkJZXJyb3IoIlRoZXJlIHdlcmUgZXJyb3JzIHdoaWxlIHdyaXRpbmcgJXMgKCVzKSIsCisJCSAgICAgIHBhdGgsIHN0cmVycm9yKHdyZXJyb3IpKTsKKwlpZiAob3V0ICYmIGZjbG9zZShvdXQpKQorCQl3cmVycm9yID0gZXJyb3IoIkZhaWxlZCB0byBmbHVzaCAlczogJXMiLAorCQkJCXBhdGgsIHN0cmVycm9yKGVycm5vKSk7CiAJaWYgKHNoYTEpCi0JCVNIQTFfRmluYWwoc2hhMSwgJmN0eCk7Ci0JaWYgKGh1bmspIHsKKwkJZ2l0X1NIQTFfRmluYWwoc2hhMSwgJmN0eCk7CisJaWYgKGh1bmsgIT0gUlJfQ09OVEVYVCkgewogCQlpZiAob3V0cHV0KQogCQkJdW5saW5rKG91dHB1dCk7CiAJCXJldHVybiBlcnJvcigiQ291bGQgbm90IHBhcnNlIGNvbmZsaWN0IGh1bmtzIGluICVzIiwgcGF0aCk7CiAJfQorCWlmICh3cmVycm9yKQorCQlyZXR1cm4gLTE7CiAJcmV0dXJuIGh1bmtfbm87CiB9CiAKQEAgLTE5Myw5ICsyMjAsMTMgQEAKIAlpZiAoIXJldCkgewogCQlGSUxFICpmID0gZm9wZW4ocGF0aCwgInciKTsKIAkJaWYgKCFmKQotCQkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3Qgd3JpdGUgdG8gJXMiLCBwYXRoKTsKLQkJZndyaXRlKHJlc3VsdC5wdHIsIHJlc3VsdC5zaXplLCAxLCBmKTsKLQkJZmNsb3NlKGYpOworCQkJcmV0dXJuIGVycm9yKCJDb3VsZCBub3Qgb3BlbiAlczogJXMiLCBwYXRoLAorCQkJCSAgICAgc3RyZXJyb3IoZXJybm8pKTsKKwkJaWYgKGZ3cml0ZShyZXN1bHQucHRyLCByZXN1bHQuc2l6ZSwgMSwgZikgIT0gMSkKKwkJCWVycm9yKCJDb3VsZCBub3Qgd3JpdGUgJXM6ICVzIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJaWYgKGZjbG9zZShmKSkKKwkJCXJldHVybiBlcnJvcigiV3JpdGluZyAlcyBmYWlsZWQ6ICVzIiwgcGF0aCwKKwkJCQkgICAgIHN0cmVycm9yKGVycm5vKSk7CiAJfQogCiAJZnJlZShjdXIucHRyKTsKQEAgLTMxOSw3ICszNTAsNiBAQAogCiBzdGF0aWMgaW50IGlzX3JlcmVyZV9lbmFibGVkKHZvaWQpCiB7Ci0Jc3RydWN0IHN0YXQgc3Q7CiAJY29uc3QgY2hhciAqcnJfY2FjaGU7CiAJaW50IHJyX2NhY2hlX2V4aXN0czsKIApAQCAtMzI3LDcgKzM1Nyw3IEBACiAJCXJldHVybiAwOwogCiAJcnJfY2FjaGUgPSBnaXRfcGF0aCgicnItY2FjaGUiKTsKLQlycl9jYWNoZV9leGlzdHMgPSAhc3RhdChycl9jYWNoZSwgJnN0KSAmJiBTX0lTRElSKHN0LnN0X21vZGUpOworCXJyX2NhY2hlX2V4aXN0cyA9IGlzX2RpcmVjdG9yeShycl9jYWNoZSk7CiAJaWYgKHJlcmVyZV9lbmFibGVkIDwgMCkKIAkJcmV0dXJuIHJyX2NhY2hlX2V4aXN0czsKIApkaWZmIC0tZ2l0IGEvcmV2aXNpb24uYyBiL3JldmlzaW9uLmMKaW5kZXggNDVmZDdhMy4uYjA2NTE4NCAxMDA2NDQKLS0tIGEvcmV2aXNpb24uYworKysgYi9yZXZpc2lvbi5jCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAicmVmbG9nLXdhbGsuaCIKICNpbmNsdWRlICJwYXRjaC1pZHMuaCIKICNpbmNsdWRlICJkZWNvcmF0ZS5oIgorI2luY2x1ZGUgImxvZy10cmVlLmgiCiAKIHZvbGF0aWxlIHNob3dfZWFybHlfb3V0cHV0X2ZuX3Qgc2hvd19lYXJseV9vdXRwdXQ7CiAKQEAgLTE5OSw2ICsyMDAsOCBAQAogCQkJbWFya19wYXJlbnRzX3VuaW50ZXJlc3RpbmcoY29tbWl0KTsKIAkJCXJldnMtPmxpbWl0ZWQgPSAxOwogCQl9CisJCWlmIChyZXZzLT5zaG93X3NvdXJjZSAmJiAhY29tbWl0LT51dGlsKQorCQkJY29tbWl0LT51dGlsID0gKHZvaWQgKikgbmFtZTsKIAkJcmV0dXJuIGNvbW1pdDsKIAl9CiAKQEAgLTI5MiwxMCArMjk1LDMxIEBACiAJRElGRl9PUFRfU0VUKG9wdGlvbnMsIEhBU19DSEFOR0VTKTsKIH0KIAotc3RhdGljIGludCByZXZfY29tcGFyZV90cmVlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IHRyZWUgKnQxLCBzdHJ1Y3QgdHJlZSAqdDIpCitzdGF0aWMgaW50IHJldl9jb21wYXJlX3RyZWUoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpwYXJlbnQsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKIHsKKwlzdHJ1Y3QgdHJlZSAqdDEgPSBwYXJlbnQtPnRyZWU7CisJc3RydWN0IHRyZWUgKnQyID0gY29tbWl0LT50cmVlOworCiAJaWYgKCF0MSkKIAkJcmV0dXJuIFJFVl9UUkVFX05FVzsKKworCWlmIChyZXZzLT5zaW1wbGlmeV9ieV9kZWNvcmF0aW9uKSB7CisJCS8qCisJCSAqIElmIHdlIGFyZSBzaW1wbGlmeWluZyBieSBkZWNvcmF0aW9uLCB0aGVuIHRoZSBjb21taXQKKwkJICogaXMgd29ydGggc2hvd2luZyBpZiBpdCBoYXMgYSB0YWcgcG9pbnRpbmcgYXQgaXQuCisJCSAqLworCQlpZiAobG9va3VwX2RlY29yYXRpb24oJm5hbWVfZGVjb3JhdGlvbiwgJmNvbW1pdC0+b2JqZWN0KSkKKwkJCXJldHVybiBSRVZfVFJFRV9ESUZGRVJFTlQ7CisJCS8qCisJCSAqIEEgY29tbWl0IHRoYXQgaXMgbm90IHBvaW50ZWQgYnkgYSB0YWcgaXMgdW5pbnRlcmVzdGluZworCQkgKiBpZiB3ZSBhcmUgbm90IGxpbWl0ZWQgYnkgcGF0aC4gIFRoaXMgbWVhbnMgdGhhdCB5b3Ugd2lsbAorCQkgKiBzZWUgdGhlIHVzdWFsICJjb21taXRzIHRoYXQgdG91Y2ggdGhlIHBhdGhzIiBwbHVzIGFueQorCQkgKiB0YWdnZWQgY29tbWl0IGJ5IHNwZWNpZnlpbmcgYm90aCAtLXNpbXBsaWZ5LWJ5LWRlY29yYXRpb24KKwkJICogYW5kIHBhdGhzcGVjLgorCQkgKi8KKwkJaWYgKCFyZXZzLT5wcnVuZV9kYXRhKQorCQkJcmV0dXJuIFJFVl9UUkVFX1NBTUU7CisJfQogCWlmICghdDIpCiAJCXJldHVybiBSRVZfVFJFRV9ESUZGRVJFTlQ7CiAJdHJlZV9kaWZmZXJlbmNlID0gUkVWX1RSRUVfU0FNRTsKQEAgLTMwNiwxMiArMzMwLDEzIEBACiAJcmV0dXJuIHRyZWVfZGlmZmVyZW5jZTsKIH0KIAotc3RhdGljIGludCByZXZfc2FtZV90cmVlX2FzX2VtcHR5KHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IHRyZWUgKnQxKQorc3RhdGljIGludCByZXZfc2FtZV90cmVlX2FzX2VtcHR5KHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0KQogewogCWludCByZXR2YWw7CiAJdm9pZCAqdHJlZTsKIAl1bnNpZ25lZCBsb25nIHNpemU7CiAJc3RydWN0IHRyZWVfZGVzYyBlbXB0eSwgcmVhbDsKKwlzdHJ1Y3QgdHJlZSAqdDEgPSBjb21taXQtPnRyZWU7CiAKIAlpZiAoIXQxKQogCQlyZXR1cm4gMDsKQEAgLTM0NSw3ICszNzAsNyBAQAogCQlyZXR1cm47CiAKIAlpZiAoIWNvbW1pdC0+cGFyZW50cykgewotCQlpZiAocmV2X3NhbWVfdHJlZV9hc19lbXB0eShyZXZzLCBjb21taXQtPnRyZWUpKQorCQlpZiAocmV2X3NhbWVfdHJlZV9hc19lbXB0eShyZXZzLCBjb21taXQpKQogCQkJY29tbWl0LT5vYmplY3QuZmxhZ3MgfD0gVFJFRVNBTUU7CiAJCXJldHVybjsKIAl9CkBAIC0zNjUsNyArMzkwLDcgQEAKIAkJCWRpZSgiY2Fubm90IHNpbXBsaWZ5IGNvbW1pdCAlcyAoYmVjYXVzZSBvZiAlcykiLAogCQkJICAgIHNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpLAogCQkJICAgIHNoYTFfdG9faGV4KHAtPm9iamVjdC5zaGExKSk7Ci0JCXN3aXRjaCAocmV2X2NvbXBhcmVfdHJlZShyZXZzLCBwLT50cmVlLCBjb21taXQtPnRyZWUpKSB7CisJCXN3aXRjaCAocmV2X2NvbXBhcmVfdHJlZShyZXZzLCBwLCBjb21taXQpKSB7CiAJCWNhc2UgUkVWX1RSRUVfU0FNRToKIAkJCXRyZWVfc2FtZSA9IDE7CiAJCQlpZiAoIXJldnMtPnNpbXBsaWZ5X2hpc3RvcnkgfHwgKHAtPm9iamVjdC5mbGFncyAmIFVOSU5URVJFU1RJTkcpKSB7CkBAIC0zODUsNyArNDEwLDcgQEAKIAogCQljYXNlIFJFVl9UUkVFX05FVzoKIAkJCWlmIChyZXZzLT5yZW1vdmVfZW1wdHlfdHJlZXMgJiYKLQkJCSAgICByZXZfc2FtZV90cmVlX2FzX2VtcHR5KHJldnMsIHAtPnRyZWUpKSB7CisJCQkgICAgcmV2X3NhbWVfdHJlZV9hc19lbXB0eShyZXZzLCBwKSkgewogCQkJCS8qIFdlIGFyZSBhZGRpbmcgYWxsIHRoZSBzcGVjaWZpZWQKIAkJCQkgKiBwYXRocyBmcm9tIHRoaXMgcGFyZW50LCBzbyB0aGUKIAkJCQkgKiBoaXN0b3J5IGJleW9uZCB0aGlzIHBhcmVudCBpcyBub3QKQEAgLTQ4NCwxMiArNTA5LDE0IEBACiAKIAkJaWYgKHBhcnNlX2NvbW1pdChwKSA8IDApCiAJCQlyZXR1cm4gLTE7CisJCWlmIChyZXZzLT5zaG93X3NvdXJjZSAmJiAhcC0+dXRpbCkKKwkJCXAtPnV0aWwgPSBjb21taXQtPnV0aWw7CiAJCXAtPm9iamVjdC5mbGFncyB8PSBsZWZ0X2ZsYWc7CiAJCWlmICghKHAtPm9iamVjdC5mbGFncyAmIFNFRU4pKSB7CiAJCQlwLT5vYmplY3QuZmxhZ3MgfD0gU0VFTjsKIAkJCWluc2VydF9ieV9kYXRlX2NhY2hlZChwLCBsaXN0LCBjYWNoZWRfYmFzZSwgY2FjaGVfcHRyKTsKIAkJfQotCQlpZihyZXZzLT5maXJzdF9wYXJlbnRfb25seSkKKwkJaWYgKHJldnMtPmZpcnN0X3BhcmVudF9vbmx5KQogCQkJYnJlYWs7CiAJfQogCXJldHVybiAwOwpAQCAtMTAyOCw2ICsxMDU1LDE5IEBACiAJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tdG9wby1vcmRlciIpKSB7CiAJCXJldnMtPmxpZm8gPSAxOwogCQlyZXZzLT50b3BvX29yZGVyID0gMTsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1zaW1wbGlmeS1tZXJnZXMiKSkgeworCQlyZXZzLT5zaW1wbGlmeV9tZXJnZXMgPSAxOworCQlyZXZzLT5yZXdyaXRlX3BhcmVudHMgPSAxOworCQlyZXZzLT5zaW1wbGlmeV9oaXN0b3J5ID0gMDsKKwkJcmV2cy0+bGltaXRlZCA9IDE7CisJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tc2ltcGxpZnktYnktZGVjb3JhdGlvbiIpKSB7CisJCXJldnMtPnNpbXBsaWZ5X21lcmdlcyA9IDE7CisJCXJldnMtPnJld3JpdGVfcGFyZW50cyA9IDE7CisJCXJldnMtPnNpbXBsaWZ5X2hpc3RvcnkgPSAwOworCQlyZXZzLT5zaW1wbGlmeV9ieV9kZWNvcmF0aW9uID0gMTsKKwkJcmV2cy0+bGltaXRlZCA9IDE7CisJCXJldnMtPnBydW5lID0gMTsKKwkJbG9hZF9yZWZfZGVjb3JhdGlvbnMoKTsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1kYXRlLW9yZGVyIikpIHsKIAkJcmV2cy0+bGlmbyA9IDA7CiAJCXJldnMtPnRvcG9fb3JkZXIgPSAxOwpAQCAtMTIyMyw2ICsxMjYzLDcgQEAKIAogCQkJaWYgKCFzdHJjbXAoYXJnLCAiLS1hbGwiKSkgewogCQkJCWhhbmRsZV9yZWZzKHJldnMsIGZsYWdzLCBmb3JfZWFjaF9yZWYpOworCQkJCWhhbmRsZV9yZWZzKHJldnMsIGZsYWdzLCBoZWFkX3JlZik7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCQlpZiAoIXN0cmNtcChhcmcsICItLWJyYW5jaGVzIikpIHsKQEAgLTEzNTUsNiArMTM5NiwxNzkgQEAKIAlsLT5uZXh0ID0gYWRkX2RlY29yYXRpb24oJnJldnMtPmNoaWxkcmVuLCAmcGFyZW50LT5vYmplY3QsIGwpOwogfQogCitzdGF0aWMgaW50IHJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit7CisJc3RydWN0IGNvbW1pdF9saXN0ICoqcHAsICpwOworCWludCBzdXJ2aXZpbmdfcGFyZW50czsKKworCS8qIEV4YW1pbmUgZXhpc3RpbmcgcGFyZW50cyB3aGlsZSBtYXJraW5nIG9uZXMgd2UgaGF2ZSBzZWVuLi4uICovCisJcHAgPSAmY29tbWl0LT5wYXJlbnRzOworCXdoaWxlICgocCA9ICpwcCkgIT0gTlVMTCkgeworCQlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQgPSBwLT5pdGVtOworCQlpZiAocGFyZW50LT5vYmplY3QuZmxhZ3MgJiBUTVBfTUFSSykgeworCQkJKnBwID0gcC0+bmV4dDsKKwkJCWNvbnRpbnVlOworCQl9CisJCXBhcmVudC0+b2JqZWN0LmZsYWdzIHw9IFRNUF9NQVJLOworCQlwcCA9ICZwLT5uZXh0OworCX0KKwkvKiBjb3VudCB0aGVtIHdoaWxlIGNsZWFyaW5nIHRoZSB0ZW1wb3JhcnkgbWFyayAqLworCXN1cnZpdmluZ19wYXJlbnRzID0gMDsKKwlmb3IgKHAgPSBjb21taXQtPnBhcmVudHM7IHA7IHAgPSBwLT5uZXh0KSB7CisJCXAtPml0ZW0tPm9iamVjdC5mbGFncyAmPSB+VE1QX01BUks7CisJCXN1cnZpdmluZ19wYXJlbnRzKys7CisJfQorCXJldHVybiBzdXJ2aXZpbmdfcGFyZW50czsKK30KKworc3RydWN0IG1lcmdlX3NpbXBsaWZ5X3N0YXRlIHsKKwlzdHJ1Y3QgY29tbWl0ICpzaW1wbGlmaWVkOworfTsKKworc3RhdGljIHN0cnVjdCBtZXJnZV9zaW1wbGlmeV9zdGF0ZSAqbG9jYXRlX3NpbXBsaWZ5X3N0YXRlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBtZXJnZV9zaW1wbGlmeV9zdGF0ZSAqc3Q7CisKKwlzdCA9IGxvb2t1cF9kZWNvcmF0aW9uKCZyZXZzLT5tZXJnZV9zaW1wbGlmaWNhdGlvbiwgJmNvbW1pdC0+b2JqZWN0KTsKKwlpZiAoIXN0KSB7CisJCXN0ID0geGNhbGxvYygxLCBzaXplb2YoKnN0KSk7CisJCWFkZF9kZWNvcmF0aW9uKCZyZXZzLT5tZXJnZV9zaW1wbGlmaWNhdGlvbiwgJmNvbW1pdC0+b2JqZWN0LCBzdCk7CisJfQorCXJldHVybiBzdDsKK30KKworc3RhdGljIHN0cnVjdCBjb21taXRfbGlzdCAqKnNpbXBsaWZ5X29uZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCwgc3RydWN0IGNvbW1pdF9saXN0ICoqdGFpbCkKK3sKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7CisJc3RydWN0IG1lcmdlX3NpbXBsaWZ5X3N0YXRlICpzdCwgKnBzdDsKKwlpbnQgY250OworCisJc3QgPSBsb2NhdGVfc2ltcGxpZnlfc3RhdGUocmV2cywgY29tbWl0KTsKKworCS8qCisJICogSGF2ZSB3ZSBoYW5kbGVkIHRoaXMgb25lPworCSAqLworCWlmIChzdC0+c2ltcGxpZmllZCkKKwkJcmV0dXJuIHRhaWw7CisKKwkvKgorCSAqIEFuIFVOSU5URVJFU1RJTkcgY29tbWl0IHNpbXBsaWZpZXMgdG8gaXRzZWxmLCBzbyBkb2VzIGEKKwkgKiByb290IGNvbW1pdC4gIFdlIGRvIG5vdCByZXdyaXRlIHBhcmVudHMgb2Ygc3VjaCBjb21taXQKKwkgKiBhbnl3YXkuCisJICovCisJaWYgKChjb21taXQtPm9iamVjdC5mbGFncyAmIFVOSU5URVJFU1RJTkcpIHx8ICFjb21taXQtPnBhcmVudHMpIHsKKwkJc3QtPnNpbXBsaWZpZWQgPSBjb21taXQ7CisJCXJldHVybiB0YWlsOworCX0KKworCS8qCisJICogRG8gd2Uga25vdyB3aGF0IGNvbW1pdCBhbGwgb2Ygb3VyIHBhcmVudHMgc2hvdWxkIGJlIHJld3JpdHRlbiB0bz8KKwkgKiBPdGhlcndpc2Ugd2UgYXJlIG5vdCByZWFkeSB0byByZXdyaXRlIHRoaXMgb25lIHlldC4KKwkgKi8KKwlmb3IgKGNudCA9IDAsIHAgPSBjb21taXQtPnBhcmVudHM7IHA7IHAgPSBwLT5uZXh0KSB7CisJCXBzdCA9IGxvY2F0ZV9zaW1wbGlmeV9zdGF0ZShyZXZzLCBwLT5pdGVtKTsKKwkJaWYgKCFwc3QtPnNpbXBsaWZpZWQpIHsKKwkJCXRhaWwgPSAmY29tbWl0X2xpc3RfaW5zZXJ0KHAtPml0ZW0sIHRhaWwpLT5uZXh0OworCQkJY250Kys7CisJCX0KKwl9CisJaWYgKGNudCkgeworCQl0YWlsID0gJmNvbW1pdF9saXN0X2luc2VydChjb21taXQsIHRhaWwpLT5uZXh0OworCQlyZXR1cm4gdGFpbDsKKwl9CisKKwkvKgorCSAqIFJld3JpdGUgb3VyIGxpc3Qgb2YgcGFyZW50cy4KKwkgKi8KKwlmb3IgKHAgPSBjb21taXQtPnBhcmVudHM7IHA7IHAgPSBwLT5uZXh0KSB7CisJCXBzdCA9IGxvY2F0ZV9zaW1wbGlmeV9zdGF0ZShyZXZzLCBwLT5pdGVtKTsKKwkJcC0+aXRlbSA9IHBzdC0+c2ltcGxpZmllZDsKKwl9CisJY250ID0gcmVtb3ZlX2R1cGxpY2F0ZV9wYXJlbnRzKGNvbW1pdCk7CisKKwkvKgorCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2UgYXJlIGEgbWVyZ2UgYW5kIG9uZSBzaWRlIGJyYW5jaAorCSAqIGRvZXMgbm90IGhhdmUgYW55IGNvbW1pdCB0aGF0IHRvdWNoZXMgdGhlIGdpdmVuIHBhdGhzOworCSAqIGluIHN1Y2ggYSBjYXNlLCB0aGUgaW1tZWRpYXRlIHBhcmVudHMgd2lsbCBiZSByZXdyaXR0ZW4KKwkgKiB0byBkaWZmZXJlbnQgY29tbWl0cy4KKwkgKgorCSAqICAgICAgby0tLS1YCQlYOiB0aGUgY29tbWl0IHdlIGFyZSBsb29raW5nIGF0OworCSAqICAgICAvICAgIC8JCW86IGEgY29tbWl0IHRoYXQgdG91Y2hlcyB0aGUgcGF0aHM7CisJICogLS0tby0tLS0nCisJICoKKwkgKiBGdXJ0aGVyIHJlZHVjZSB0aGUgcGFyZW50cyBieSByZW1vdmluZyByZWR1bmRhbnQgcGFyZW50cy4KKwkgKi8KKwlpZiAoMSA8IGNudCkgeworCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKmggPSByZWR1Y2VfaGVhZHMoY29tbWl0LT5wYXJlbnRzKTsKKwkJY250ID0gY29tbWl0X2xpc3RfY291bnQoaCk7CisJCWZyZWVfY29tbWl0X2xpc3QoY29tbWl0LT5wYXJlbnRzKTsKKwkJY29tbWl0LT5wYXJlbnRzID0gaDsKKwl9CisKKwkvKgorCSAqIEEgY29tbWl0IHNpbXBsaWZpZXMgdG8gaXRzZWxmIGlmIGl0IGlzIGEgcm9vdCwgaWYgaXQgaXMKKwkgKiBVTklOVEVSRVNUSU5HLCBpZiBpdCB0b3VjaGVzIHRoZSBnaXZlbiBwYXRocywgb3IgaWYgaXQgaXMgYQorCSAqIG1lcmdlIGFuZCBpdHMgcGFyZW50cyBzaW1wbGlmaWVzIHRvIG1vcmUgdGhhbiBvbmUgY29tbWl0cworCSAqICh0aGUgZmlyc3QgdHdvIGNhc2VzIGFyZSBhbHJlYWR5IGhhbmRsZWQgYXQgdGhlIGJlZ2lubmluZyBvZgorCSAqIHRoaXMgZnVuY3Rpb24pLgorCSAqCisJICogT3RoZXJ3aXNlLCBpdCBzaW1wbGlmaWVzIHRvIHdoYXQgaXRzIHNvbGUgcGFyZW50IHNpbXBsaWZpZXMgdG8uCisJICovCisJaWYgKCFjbnQgfHwKKwkgICAgKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgVU5JTlRFUkVTVElORykgfHwKKwkgICAgIShjb21taXQtPm9iamVjdC5mbGFncyAmIFRSRUVTQU1FKSB8fAorCSAgICAoMSA8IGNudCkpCisJCXN0LT5zaW1wbGlmaWVkID0gY29tbWl0OworCWVsc2UgeworCQlwc3QgPSBsb2NhdGVfc2ltcGxpZnlfc3RhdGUocmV2cywgY29tbWl0LT5wYXJlbnRzLT5pdGVtKTsKKwkJc3QtPnNpbXBsaWZpZWQgPSBwc3QtPnNpbXBsaWZpZWQ7CisJfQorCXJldHVybiB0YWlsOworfQorCitzdGF0aWMgdm9pZCBzaW1wbGlmeV9tZXJnZXMoc3RydWN0IHJldl9pbmZvICpyZXZzKQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqbGlzdDsKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKnlldF90b19kbywgKip0YWlsOworCisJaWYgKCFyZXZzLT50b3BvX29yZGVyKQorCQlzb3J0X2luX3RvcG9sb2dpY2FsX29yZGVyKCZyZXZzLT5jb21taXRzLCByZXZzLT5saWZvKTsKKwlpZiAoIXJldnMtPnBydW5lKQorCQlyZXR1cm47CisKKwkvKiBmZWVkIHRoZSBsaXN0IHJldmVyc2VkICovCisJeWV0X3RvX2RvID0gTlVMTDsKKwlmb3IgKGxpc3QgPSByZXZzLT5jb21taXRzOyBsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkKKwkJY29tbWl0X2xpc3RfaW5zZXJ0KGxpc3QtPml0ZW0sICZ5ZXRfdG9fZG8pOworCXdoaWxlICh5ZXRfdG9fZG8pIHsKKwkJbGlzdCA9IHlldF90b19kbzsKKwkJeWV0X3RvX2RvID0gTlVMTDsKKwkJdGFpbCA9ICZ5ZXRfdG9fZG87CisJCXdoaWxlIChsaXN0KSB7CisJCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBsaXN0LT5pdGVtOworCQkJc3RydWN0IGNvbW1pdF9saXN0ICpuZXh0ID0gbGlzdC0+bmV4dDsKKwkJCWZyZWUobGlzdCk7CisJCQlsaXN0ID0gbmV4dDsKKwkJCXRhaWwgPSBzaW1wbGlmeV9vbmUocmV2cywgY29tbWl0LCB0YWlsKTsKKwkJfQorCX0KKworCS8qIGNsZWFuIHVwIHRoZSByZXN1bHQsIHJlbW92aW5nIHRoZSBzaW1wbGlmaWVkIG9uZXMgKi8KKwlsaXN0ID0gcmV2cy0+Y29tbWl0czsKKwlyZXZzLT5jb21taXRzID0gTlVMTDsKKwl0YWlsID0gJnJldnMtPmNvbW1pdHM7CisJd2hpbGUgKGxpc3QpIHsKKwkJc3RydWN0IGNvbW1pdCAqY29tbWl0ID0gbGlzdC0+aXRlbTsKKwkJc3RydWN0IGNvbW1pdF9saXN0ICpuZXh0ID0gbGlzdC0+bmV4dDsKKwkJc3RydWN0IG1lcmdlX3NpbXBsaWZ5X3N0YXRlICpzdDsKKwkJZnJlZShsaXN0KTsKKwkJbGlzdCA9IG5leHQ7CisJCXN0ID0gbG9jYXRlX3NpbXBsaWZ5X3N0YXRlKHJldnMsIGNvbW1pdCk7CisJCWlmIChzdC0+c2ltcGxpZmllZCA9PSBjb21taXQpCisJCQl0YWlsID0gJmNvbW1pdF9saXN0X2luc2VydChjb21taXQsIHRhaWwpLT5uZXh0OworCX0KK30KKwogc3RhdGljIHZvaWQgc2V0X2NoaWxkcmVuKHN0cnVjdCByZXZfaW5mbyAqcmV2cykKIHsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKmw7CkBAIC0xMzk1LDYgKzE2MDksOCBAQAogCQkJcmV0dXJuIC0xOwogCWlmIChyZXZzLT50b3BvX29yZGVyKQogCQlzb3J0X2luX3RvcG9sb2dpY2FsX29yZGVyKCZyZXZzLT5jb21taXRzLCByZXZzLT5saWZvKTsKKwlpZiAocmV2cy0+c2ltcGxpZnlfbWVyZ2VzKQorCQlzaW1wbGlmeV9tZXJnZXMocmV2cyk7CiAJaWYgKHJldnMtPmNoaWxkcmVuLm5hbWUpCiAJCXNldF9jaGlsZHJlbihyZXZzKTsKIAlyZXR1cm4gMDsKQEAgLTE0MjcsMjYgKzE2NDMsNiBAQAogCX0KIH0KIAotc3RhdGljIHZvaWQgcmVtb3ZlX2R1cGxpY2F0ZV9wYXJlbnRzKHN0cnVjdCBjb21taXQgKmNvbW1pdCkKLXsKLQlzdHJ1Y3QgY29tbWl0X2xpc3QgKipwcCwgKnA7Ci0KLQkvKiBFeGFtaW5lIGV4aXN0aW5nIHBhcmVudHMgd2hpbGUgbWFya2luZyBvbmVzIHdlIGhhdmUgc2Vlbi4uLiAqLwotCXBwID0gJmNvbW1pdC0+cGFyZW50czsKLQl3aGlsZSAoKHAgPSAqcHApICE9IE5VTEwpIHsKLQkJc3RydWN0IGNvbW1pdCAqcGFyZW50ID0gcC0+aXRlbTsKLQkJaWYgKHBhcmVudC0+b2JqZWN0LmZsYWdzICYgVE1QX01BUkspIHsKLQkJCSpwcCA9IHAtPm5leHQ7Ci0JCQljb250aW51ZTsKLQkJfQotCQlwYXJlbnQtPm9iamVjdC5mbGFncyB8PSBUTVBfTUFSSzsKLQkJcHAgPSAmcC0+bmV4dDsKLQl9Ci0JLyogLi4uIGFuZCBjbGVhciB0aGUgdGVtcG9yYXJ5IG1hcmsgKi8KLQlmb3IgKHAgPSBjb21taXQtPnBhcmVudHM7IHA7IHAgPSBwLT5uZXh0KQotCQlwLT5pdGVtLT5vYmplY3QuZmxhZ3MgJj0gflRNUF9NQVJLOwotfQotCiBzdGF0aWMgaW50IHJld3JpdGVfcGFyZW50cyhzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKIHsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKipwcCA9ICZjb21taXQtPnBhcmVudHM7CkBAIC0xNjMzLDI2ICsxODI5LDYgQEAKIAkJcmV0dXJuIGM7CiAJfQogCi0JaWYgKHJldnMtPnJldmVyc2UpIHsKLQkJaW50IGxpbWl0ID0gLTE7Ci0KLQkJaWYgKDAgPD0gcmV2cy0+bWF4X2NvdW50KSB7Ci0JCQlsaW1pdCA9IHJldnMtPm1heF9jb3VudDsKLQkJCWlmICgwIDwgcmV2cy0+c2tpcF9jb3VudCkKLQkJCQlsaW1pdCArPSByZXZzLT5za2lwX2NvdW50OwotCQl9Ci0JCWwgPSBOVUxMOwotCQl3aGlsZSAoKGMgPSBnZXRfcmV2aXNpb25fMShyZXZzKSkpIHsKLQkJCWNvbW1pdF9saXN0X2luc2VydChjLCAmbCk7Ci0JCQlpZiAoKDAgPCBsaW1pdCkgJiYgIS0tbGltaXQpCi0JCQkJYnJlYWs7Ci0JCX0KLQkJcmV2cy0+Y29tbWl0cyA9IGw7Ci0JCXJldnMtPnJldmVyc2UgPSAwOwotCQlyZXZzLT5tYXhfY291bnQgPSAtMTsKLQkJYyA9IE5VTEw7Ci0JfQotCiAJLyoKIAkgKiBOb3cgcGljayB1cCB3aGF0IHRoZXkgd2FudCB0byBnaXZlIHVzCiAJICovCkBAIC0xNzI1LDcgKzE5MDEsMjMgQEAKIAogc3RydWN0IGNvbW1pdCAqZ2V0X3JldmlzaW9uKHN0cnVjdCByZXZfaW5mbyAqcmV2cykKIHsKLQlzdHJ1Y3QgY29tbWl0ICpjID0gZ2V0X3JldmlzaW9uX2ludGVybmFsKHJldnMpOworCXN0cnVjdCBjb21taXQgKmM7CisJc3RydWN0IGNvbW1pdF9saXN0ICpyZXZlcnNlZDsKKworCWlmIChyZXZzLT5yZXZlcnNlKSB7CisJCXJldmVyc2VkID0gTlVMTDsKKwkJd2hpbGUgKChjID0gZ2V0X3JldmlzaW9uX2ludGVybmFsKHJldnMpKSkgeworCQkJY29tbWl0X2xpc3RfaW5zZXJ0KGMsICZyZXZlcnNlZCk7CisJCX0KKwkJcmV2cy0+Y29tbWl0cyA9IHJldmVyc2VkOworCQlyZXZzLT5yZXZlcnNlID0gMDsKKwkJcmV2cy0+cmV2ZXJzZV9vdXRwdXRfc3RhZ2UgPSAxOworCX0KKworCWlmIChyZXZzLT5yZXZlcnNlX291dHB1dF9zdGFnZSkKKwkJcmV0dXJuIHBvcF9jb21taXQoJnJldnMtPmNvbW1pdHMpOworCisJYyA9IGdldF9yZXZpc2lvbl9pbnRlcm5hbChyZXZzKTsKIAlpZiAoYyAmJiByZXZzLT5ncmFwaCkKIAkJZ3JhcGhfdXBkYXRlKHJldnMtPmdyYXBoLCBjKTsKIAlyZXR1cm4gYzsKZGlmZiAtLWdpdCBhL3JldmlzaW9uLmggYi9yZXZpc2lvbi5oCmluZGV4IDkxZjE5NDQuLjdjZjg0ODcgMTAwNjQ0Ci0tLSBhL3JldmlzaW9uLmgKKysrIGIvcmV2aXNpb24uaApAQCAtNDIsNiArNDIsOCBAQAogCQkJc2ltcGxpZnlfaGlzdG9yeToxLAogCQkJbGlmbzoxLAogCQkJdG9wb19vcmRlcjoxLAorCQkJc2ltcGxpZnlfbWVyZ2VzOjEsCisJCQlzaW1wbGlmeV9ieV9kZWNvcmF0aW9uOjEsCiAJCQl0YWdfb2JqZWN0czoxLAogCQkJdHJlZV9vYmplY3RzOjEsCiAJCQlibG9iX29iamVjdHM6MSwKQEAgLTUyLDcgKzU0LDEwIEBACiAJCQlsZWZ0X3JpZ2h0OjEsCiAJCQlyZXdyaXRlX3BhcmVudHM6MSwKIAkJCXByaW50X3BhcmVudHM6MSwKKwkJCXNob3dfc291cmNlOjEsCisJCQlzaG93X2RlY29yYXRpb25zOjEsCiAJCQlyZXZlcnNlOjEsCisJCQlyZXZlcnNlX291dHB1dF9zdGFnZToxLAogCQkJY2hlcnJ5X3BpY2s6MSwKIAkJCWZpcnN0X3BhcmVudF9vbmx5OjE7CiAKQEAgLTExMCw2ICsxMTUsNyBAQAogCiAJc3RydWN0IHJlZmxvZ193YWxrX2luZm8gKnJlZmxvZ19pbmZvOwogCXN0cnVjdCBkZWNvcmF0aW9uIGNoaWxkcmVuOworCXN0cnVjdCBkZWNvcmF0aW9uIG1lcmdlX3NpbXBsaWZpY2F0aW9uOwogfTsKIAogI2RlZmluZSBSRVZfVFJFRV9TQU1FCQkwCmRpZmYgLS1naXQgYS9ydW4tY29tbWFuZC5jIGIvcnVuLWNvbW1hbmQuYwppbmRleCBiYmI5Yzc3Li5jOTBjZGM1IDEwMDY0NAotLS0gYS9ydW4tY29tbWFuZC5jCisrKyBiL3J1bi1jb21tYW5kLmMKQEAgLTExMSw2ICsxMTEsOCBAQAogCQkJCQl1bnNldGVudigqY21kLT5lbnYpOwogCQkJfQogCQl9CisJCWlmIChjbWQtPnByZWV4ZWNfY2IpCisJCQljbWQtPnByZWV4ZWNfY2IoKTsKIAkJaWYgKGNtZC0+Z2l0X2NtZCkgewogCQkJZXhlY3ZfZ2l0X2NtZChjbWQtPmFyZ3YpOwogCQl9IGVsc2UgewpAQCAtMjcxLDE0ICsyNzMsNiBAQAogCXJldHVybiBydW5fY29tbWFuZCgmY21kKTsKIH0KIAotaW50IHJ1bl9jb21tYW5kX3Zfb3B0X2NkKGNvbnN0IGNoYXIgKiphcmd2LCBpbnQgb3B0LCBjb25zdCBjaGFyICpkaXIpCi17Ci0Jc3RydWN0IGNoaWxkX3Byb2Nlc3MgY21kOwotCXByZXBhcmVfcnVuX2NvbW1hbmRfdl9vcHQoJmNtZCwgYXJndiwgb3B0KTsKLQljbWQuZGlyID0gZGlyOwotCXJldHVybiBydW5fY29tbWFuZCgmY21kKTsKLX0KLQogaW50IHJ1bl9jb21tYW5kX3Zfb3B0X2NkX2Vudihjb25zdCBjaGFyICoqYXJndiwgaW50IG9wdCwgY29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpjb25zdCAqZW52KQogewogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNtZDsKZGlmZiAtLWdpdCBhL3J1bi1jb21tYW5kLmggYi9ydW4tY29tbWFuZC5oCmluZGV4IDUyMDNhOWUuLmE4YjBjMjAgMTAwNjQ0Ci0tLSBhL3J1bi1jb21tYW5kLmgKKysrIGIvcnVuLWNvbW1hbmQuaApAQCAtNDIsNiArNDIsNyBAQAogCXVuc2lnbmVkIG5vX3N0ZGVycjoxOwogCXVuc2lnbmVkIGdpdF9jbWQ6MTsgLyogaWYgdGhpcyBpcyB0byBiZSBnaXQgc3ViLWNvbW1hbmQgKi8KIAl1bnNpZ25lZCBzdGRvdXRfdG9fc3RkZXJyOjE7CisJdm9pZCAoKnByZWV4ZWNfY2IpKHZvaWQpOwogfTsKIAogaW50IHN0YXJ0X2NvbW1hbmQoc3RydWN0IGNoaWxkX3Byb2Nlc3MgKik7CkBAIC01Miw3ICs1Myw2IEBACiAjZGVmaW5lIFJVTl9HSVRfQ01ECSAgICAgMgkvKklmIHRoaXMgaXMgdG8gYmUgZ2l0IHN1Yi1jb21tYW5kICovCiAjZGVmaW5lIFJVTl9DT01NQU5EX1NURE9VVF9UT19TVERFUlIgNAogaW50IHJ1bl9jb21tYW5kX3Zfb3B0KGNvbnN0IGNoYXIgKiphcmd2LCBpbnQgb3B0KTsKLWludCBydW5fY29tbWFuZF92X29wdF9jZChjb25zdCBjaGFyICoqYXJndiwgaW50IG9wdCwgY29uc3QgY2hhciAqZGlyKTsKIAogLyoKICAqIGVudiAodGhlIGVudmlyb25tZW50KSBpcyB0byBiZSBmb3JtYXR0ZWQgbGlrZSBlbnZpcm9uOiAiVkFSPVZBTFVFIi4KZGlmZiAtLWdpdCBhL3NldHVwLmMgYi9zZXR1cC5jCmluZGV4IDc4YTgwNDEuLmRmZGE1MzIgMTAwNjQ0Ci0tLSBhL3NldHVwLmMKKysrIGIvc2V0dXAuYwpAQCAtNDU2LDcgKzQ1NiwxMSBAQAogCQkJaW5zaWRlX2dpdF9kaXIgPSAxOwogCQkJaWYgKCF3b3JrX3RyZWVfZW52KQogCQkJCWluc2lkZV93b3JrX3RyZWUgPSAwOwotCQkJc2V0ZW52KEdJVF9ESVJfRU5WSVJPTk1FTlQsICIuIiwgMSk7CisJCQlpZiAob2Zmc2V0ICE9IGxlbikgeworCQkJCWN3ZFtvZmZzZXRdID0gJ1wwJzsKKwkJCQlzZXRlbnYoR0lUX0RJUl9FTlZJUk9OTUVOVCwgY3dkLCAxKTsKKwkJCX0gZWxzZQorCQkJCXNldGVudihHSVRfRElSX0VOVklST05NRU5ULCAiLiIsIDEpOwogCQkJY2hlY2tfcmVwb3NpdG9yeV9mb3JtYXRfZ2VudGx5KG5vbmdpdF9vayk7CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQpAQCAtNDY4LDkgKzQ3MiwxMCBAQAogCQkJCSpub25naXRfb2sgPSAxOwogCQkJCXJldHVybiBOVUxMOwogCQkJfQotCQkJZGllKCJOb3QgYSBnaXQgcmVwb3NpdG9yeSIpOworCQkJZGllKCJOb3QgYSBnaXQgcmVwb3NpdG9yeSAob3IgYW55IG9mIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMpOiAlcyIsIERFRkFVTFRfR0lUX0RJUl9FTlZJUk9OTUVOVCk7CiAJCX0KLQkJY2hkaXIoIi4uIik7CisJCWlmIChjaGRpcigiLi4iKSkKKwkJCWRpZSgiQ2Fubm90IGNoYW5nZSB0byAlcy8uLjogJXMiLCBjd2QsIHN0cmVycm9yKGVycm5vKSk7CiAJfQogCiAJaW5zaWRlX2dpdF9kaXIgPSAwOwpkaWZmIC0tZ2l0IGEvc2hhMV9maWxlLmMgYi9zaGExX2ZpbGUuYwppbmRleCAwY2ZlYTllLi5jZWQzM2U4IDEwMDY0NAotLS0gYS9zaGExX2ZpbGUuYworKysgYi9zaGExX2ZpbGUuYwpAQCAtOTksNyArOTksMTEgQEAKIAkJcG9zID0gc3RyY2hyKHBvcywgJy8nKTsKIAkJaWYgKCFwb3MpCiAJCQlicmVhazsKLQkJKnBvcyA9IDA7CisJCXdoaWxlICgqKytwb3MgPT0gJy8nKQorCQkJOworCQlpZiAoISpwb3MpCisJCQlicmVhazsKKwkJKi0tcG9zID0gJ1wwJzsKIAkJaWYgKCFzdGF0KHBhdGgsICZzdCkpIHsKIAkJCS8qIHBhdGggZXhpc3RzICovCiAJCQlpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKQEAgLTI1MCw3ICsyNTQsNiBAQAogICovCiBzdGF0aWMgaW50IGxpbmtfYWx0X29kYl9lbnRyeShjb25zdCBjaGFyICogZW50cnksIGludCBsZW4sIGNvbnN0IGNoYXIgKiByZWxhdGl2ZV9iYXNlLCBpbnQgZGVwdGgpCiB7Ci0Jc3RydWN0IHN0YXQgc3Q7CiAJY29uc3QgY2hhciAqb2JqZGlyID0gZ2V0X29iamVjdF9kaXJlY3RvcnkoKTsKIAlzdHJ1Y3QgYWx0ZXJuYXRlX29iamVjdF9kYXRhYmFzZSAqZW50OwogCXN0cnVjdCBhbHRlcm5hdGVfb2JqZWN0X2RhdGFiYXNlICphbHQ7CkBAIC0yODEsNyArMjg0LDcgQEAKIAllbnQtPmJhc2VbcGZ4bGVuXSA9IGVudC0+YmFzZVtlbnRsZW4tMV0gPSAwOwogCiAJLyogRGV0ZWN0IGNhc2VzIHdoZXJlIGFsdGVybmF0ZSBkaXNhcHBlYXJlZCAqLwotCWlmIChzdGF0KGVudC0+YmFzZSwgJnN0KSB8fCAhU19JU0RJUihzdC5zdF9tb2RlKSkgeworCWlmICghaXNfZGlyZWN0b3J5KGVudC0+YmFzZSkpIHsKIAkJZXJyb3IoIm9iamVjdCBkaXJlY3RvcnkgJXMgZG9lcyBub3QgZXhpc3Q7ICIKIAkJICAgICAgImNoZWNrIC5naXQvb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMuIiwKIAkJICAgICAgZW50LT5iYXNlKTsKQEAgLTM5NCw2ICszOTcsMTYgQEAKIAkJbGlua19hbHRfb2RiX2VudHJpZXMoYWx0LCBhbHQgKyBzdHJsZW4oYWx0KSwgJ1xuJywgTlVMTCwgMCk7CiB9CiAKK3ZvaWQgZm9yZWFjaF9hbHRfb2RiKGFsdF9vZGJfZm4gZm4sIHZvaWQgKmNiKQoreworCXN0cnVjdCBhbHRlcm5hdGVfb2JqZWN0X2RhdGFiYXNlICplbnQ7CisKKwlwcmVwYXJlX2FsdF9vZGIoKTsKKwlmb3IgKGVudCA9IGFsdF9vZGJfbGlzdDsgZW50OyBlbnQgPSBlbnQtPm5leHQpCisJCWlmIChmbihlbnQsIGNiKSkKKwkJCXJldHVybjsKK30KKwogdm9pZCBwcmVwYXJlX2FsdF9vZGIodm9pZCkKIHsKIAljb25zdCBjaGFyICphbHQ7CkBAIC0xMTQwLDcgKzExNTMsOCBAQAogCQlyZXR1cm4gMDsKIH0KIAotdW5zaWduZWQgbG9uZyB1bnBhY2tfb2JqZWN0X2hlYWRlcl9nZW50bHkoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIGxlbiwgZW51bSBvYmplY3RfdHlwZSAqdHlwZSwgdW5zaWduZWQgbG9uZyAqc2l6ZXApCit1bnNpZ25lZCBsb25nIHVucGFja19vYmplY3RfaGVhZGVyX2J1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsCisJCXVuc2lnbmVkIGxvbmcgbGVuLCBlbnVtIG9iamVjdF90eXBlICp0eXBlLCB1bnNpZ25lZCBsb25nICpzaXplcCkKIHsKIAl1bnNpZ25lZCBzaGlmdDsKIAl1bnNpZ25lZCBjaGFyIGM7CkBAIC0xMTUyLDEwICsxMTY2LDEwIEBACiAJc2l6ZSA9IGMgJiAxNTsKIAlzaGlmdCA9IDQ7CiAJd2hpbGUgKGMgJiAweDgwKSB7Ci0JCWlmIChsZW4gPD0gdXNlZCkKKwkJaWYgKGxlbiA8PSB1c2VkIHx8IHNpemVvZihsb25nKSAqIDggPD0gc2hpZnQpIHsKKwkJCWVycm9yKCJiYWQgb2JqZWN0IGhlYWRlciIpOwogCQkJcmV0dXJuIDA7Ci0JCWlmIChzaXplb2YobG9uZykgKiA4IDw9IHNoaWZ0KQotCQkJcmV0dXJuIDA7CisJCX0KIAkJYyA9IGJ1Zlt1c2VkKytdOwogCQlzaXplICs9IChjICYgMHg3ZikgPDwgc2hpZnQ7CiAJCXNoaWZ0ICs9IDc7CkBAIC0xMTgyLDggKzExOTYsOCBAQAogCXN0cmVhbS0+YXZhaWxfb3V0ID0gYnVmc2l6OwogCiAJaWYgKGxlZ2FjeV9sb29zZV9vYmplY3QobWFwKSkgewotCQlpbmZsYXRlSW5pdChzdHJlYW0pOwotCQlyZXR1cm4gaW5mbGF0ZShzdHJlYW0sIDApOworCQlnaXRfaW5mbGF0ZV9pbml0KHN0cmVhbSk7CisJCXJldHVybiBnaXRfaW5mbGF0ZShzdHJlYW0sIDApOwogCX0KIAogCkBAIC0xMTk0LDcgKzEyMDgsNyBAQAogCSAqIHJlYWxseSB3b3J0aCBpdCBhbmQgd2UgZG9uJ3Qgd3JpdGUgaXQgYW55IGxvbmdlci4gIEJ1dCB3ZQogCSAqIGNhbiBzdGlsbCByZWFkIGl0LgogCSAqLwotCXVzZWQgPSB1bnBhY2tfb2JqZWN0X2hlYWRlcl9nZW50bHkobWFwLCBtYXBzaXplLCAmdHlwZSwgJnNpemUpOworCXVzZWQgPSB1bnBhY2tfb2JqZWN0X2hlYWRlcl9idWZmZXIobWFwLCBtYXBzaXplLCAmdHlwZSwgJnNpemUpOwogCWlmICghdXNlZCB8fCAhdmFsaWRfbG9vc2Vfb2JqZWN0X3R5cGVbdHlwZV0pCiAJCXJldHVybiAtMTsKIAltYXAgKz0gdXNlZDsKQEAgLTEyMDMsNyArMTIxNyw3IEBACiAJLyogU2V0IHVwIHRoZSBzdHJlYW0gZm9yIHRoZSByZXN0Li4gKi8KIAlzdHJlYW0tPm5leHRfaW4gPSBtYXA7CiAJc3RyZWFtLT5hdmFpbF9pbiA9IG1hcHNpemU7Ci0JaW5mbGF0ZUluaXQoc3RyZWFtKTsKKwlnaXRfaW5mbGF0ZV9pbml0KHN0cmVhbSk7CiAKIAkvKiBBbmQgZ2VuZXJhdGUgdGhlIGZha2UgdHJhZGl0aW9uYWwgaGVhZGVyICovCiAJc3RyZWFtLT50b3RhbF9vdXQgPSAxICsgc25wcmludGYoYnVmZmVyLCBidWZzaXosICIlcyAlbHUiLApAQCAtMTI0MCwxMSArMTI1NCwxMSBAQAogCQlzdHJlYW0tPm5leHRfb3V0ID0gYnVmICsgYnl0ZXM7CiAJCXN0cmVhbS0+YXZhaWxfb3V0ID0gc2l6ZSAtIGJ5dGVzOwogCQl3aGlsZSAoc3RhdHVzID09IFpfT0spCi0JCQlzdGF0dXMgPSBpbmZsYXRlKHN0cmVhbSwgWl9GSU5JU0gpOworCQkJc3RhdHVzID0gZ2l0X2luZmxhdGUoc3RyZWFtLCBaX0ZJTklTSCk7CiAJfQogCWJ1ZltzaXplXSA9IDA7CiAJaWYgKHN0YXR1cyA9PSBaX1NUUkVBTV9FTkQgJiYgIXN0cmVhbS0+YXZhaWxfaW4pIHsKLQkJaW5mbGF0ZUVuZChzdHJlYW0pOworCQlnaXRfaW5mbGF0ZV9lbmQoc3RyZWFtKTsKIAkJcmV0dXJuIGJ1ZjsKIAl9CiAKQEAgLTEzMzQsMTcgKzEzNDgsMTkgQEAKIAlzdHJlYW0ubmV4dF9vdXQgPSBkZWx0YV9oZWFkOwogCXN0cmVhbS5hdmFpbF9vdXQgPSBzaXplb2YoZGVsdGFfaGVhZCk7CiAKLQlpbmZsYXRlSW5pdCgmc3RyZWFtKTsKKwlnaXRfaW5mbGF0ZV9pbml0KCZzdHJlYW0pOwogCWRvIHsKIAkJaW4gPSB1c2VfcGFjayhwLCB3X2N1cnMsIGN1cnBvcywgJnN0cmVhbS5hdmFpbF9pbik7CiAJCXN0cmVhbS5uZXh0X2luID0gaW47Ci0JCXN0ID0gaW5mbGF0ZSgmc3RyZWFtLCBaX0ZJTklTSCk7CisJCXN0ID0gZ2l0X2luZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpOwogCQljdXJwb3MgKz0gc3RyZWFtLm5leHRfaW4gLSBpbjsKIAl9IHdoaWxlICgoc3QgPT0gWl9PSyB8fCBzdCA9PSBaX0JVRl9FUlJPUikgJiYKIAkJIHN0cmVhbS50b3RhbF9vdXQgPCBzaXplb2YoZGVsdGFfaGVhZCkpOwotCWluZmxhdGVFbmQoJnN0cmVhbSk7Ci0JaWYgKChzdCAhPSBaX1NUUkVBTV9FTkQpICYmIHN0cmVhbS50b3RhbF9vdXQgIT0gc2l6ZW9mKGRlbHRhX2hlYWQpKQotCQlkaWUoImRlbHRhIGRhdGEgdW5wYWNrLWluaXRpYWwgZmFpbGVkIik7CisJZ2l0X2luZmxhdGVfZW5kKCZzdHJlYW0pOworCWlmICgoc3QgIT0gWl9TVFJFQU1fRU5EKSAmJiBzdHJlYW0udG90YWxfb3V0ICE9IHNpemVvZihkZWx0YV9oZWFkKSkgeworCQllcnJvcigiZGVsdGEgZGF0YSB1bnBhY2staW5pdGlhbCBmYWlsZWQiKTsKKwkJcmV0dXJuIDA7CisJfQogCiAJLyogRXhhbWluZSB0aGUgaW5pdGlhbCBwYXJ0IG9mIHRoZSBkZWx0YSB0byBmaWd1cmUgb3V0CiAJICogdGhlIHJlc3VsdCBzaXplLgpAQCAtMTM4NSw3ICsxNDAxLDcgQEAKIAkJCWJhc2Vfb2Zmc2V0ID0gKGJhc2Vfb2Zmc2V0IDw8IDcpICsgKGMgJiAxMjcpOwogCQl9CiAJCWJhc2Vfb2Zmc2V0ID0gZGVsdGFfb2JqX29mZnNldCAtIGJhc2Vfb2Zmc2V0OwotCQlpZiAoYmFzZV9vZmZzZXQgPj0gZGVsdGFfb2JqX29mZnNldCkKKwkJaWYgKGJhc2Vfb2Zmc2V0IDw9IDAgfHwgYmFzZV9vZmZzZXQgPj0gZGVsdGFfb2JqX29mZnNldCkKIAkJCXJldHVybiAwOyAgLyogb3V0IG9mIGJvdW5kICovCiAJCSpjdXJwb3MgKz0gdXNlZDsKIAl9IGVsc2UgaWYgKHR5cGUgPT0gT0JKX1JFRl9ERUxUQSkgewpAQCAtMTQxMSwxNSArMTQyNywzMiBAQAogCW9mZl90IGJhc2Vfb2Zmc2V0OwogCiAJYmFzZV9vZmZzZXQgPSBnZXRfZGVsdGFfYmFzZShwLCB3X2N1cnMsICZjdXJwb3MsIHR5cGUsIG9ial9vZmZzZXQpOworCWlmICghYmFzZV9vZmZzZXQpCisJCXJldHVybiBPQkpfQkFEOwogCXR5cGUgPSBwYWNrZWRfb2JqZWN0X2luZm8ocCwgYmFzZV9vZmZzZXQsIE5VTEwpOworCWlmICh0eXBlIDw9IE9CSl9OT05FKSB7CisJCXN0cnVjdCByZXZpbmRleF9lbnRyeSAqcmV2aWR4OworCQljb25zdCB1bnNpZ25lZCBjaGFyICpiYXNlX3NoYTE7CisJCXJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBiYXNlX29mZnNldCk7CisJCWlmICghcmV2aWR4KQorCQkJcmV0dXJuIE9CSl9CQUQ7CisJCWJhc2Vfc2hhMSA9IG50aF9wYWNrZWRfb2JqZWN0X3NoYTEocCwgcmV2aWR4LT5ucik7CisJCW1hcmtfYmFkX3BhY2tlZF9vYmplY3QocCwgYmFzZV9zaGExKTsKKwkJdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oYmFzZV9zaGExLCBOVUxMKTsKKwkJaWYgKHR5cGUgPD0gT0JKX05PTkUpCisJCQlyZXR1cm4gT0JKX0JBRDsKKwl9CiAKIAkvKiBXZSBjaG9vc2UgdG8gb25seSBnZXQgdGhlIHR5cGUgb2YgdGhlIGJhc2Ugb2JqZWN0IGFuZAogCSAqIGlnbm9yZSBwb3RlbnRpYWxseSBjb3JydXB0IHBhY2sgZmlsZSB0aGF0IGV4cGVjdHMgdGhlIGRlbHRhCiAJICogYmFzZWQgb24gYSBiYXNlIHdpdGggYSB3cm9uZyBzaXplLiAgVGhpcyBzYXZlcyB0b25zIG9mCiAJICogaW5mbGF0ZSgpIGNhbGxzLgogCSAqLwotCWlmIChzaXplcCkKKwlpZiAoc2l6ZXApIHsKIAkJKnNpemVwID0gZ2V0X3NpemVfZnJvbV9kZWx0YShwLCB3X2N1cnMsIGN1cnBvcyk7CisJCWlmICgqc2l6ZXAgPT0gMCkKKwkJCXR5cGUgPSBPQkpfQkFEOworCX0KIAogCXJldHVybiB0eXBlOwogfQpAQCAtMTQ0MSwxMCArMTQ3NCwxMSBAQAogCSAqIGluc2FuZSwgc28gd2Uga25vdyB3b24ndCBleGNlZWQgd2hhdCB3ZSBoYXZlIGJlZW4gZ2l2ZW4uCiAJICovCiAJYmFzZSA9IHVzZV9wYWNrKHAsIHdfY3VycywgKmN1cnBvcywgJmxlZnQpOwotCXVzZWQgPSB1bnBhY2tfb2JqZWN0X2hlYWRlcl9nZW50bHkoYmFzZSwgbGVmdCwgJnR5cGUsIHNpemVwKTsKLQlpZiAoIXVzZWQpCi0JCWRpZSgib2JqZWN0IG9mZnNldCBvdXRzaWRlIG9mIHBhY2sgZmlsZSIpOwotCSpjdXJwb3MgKz0gdXNlZDsKKwl1c2VkID0gdW5wYWNrX29iamVjdF9oZWFkZXJfYnVmZmVyKGJhc2UsIGxlZnQsICZ0eXBlLCBzaXplcCk7CisJaWYgKCF1c2VkKSB7CisJCXR5cGUgPSBPQkpfQkFEOworCX0gZWxzZQorCQkqY3VycG9zICs9IHVzZWQ7CiAKIAlyZXR1cm4gdHlwZTsKIH0KQEAgLTE1MjgsOCArMTU2Miw5IEBACiAJCQkqc2l6ZXAgPSBzaXplOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlkaWUoInBhY2sgJXMgY29udGFpbnMgdW5rbm93biBvYmplY3QgdHlwZSAlZCIsCi0JCSAgICBwLT5wYWNrX25hbWUsIHR5cGUpOworCQllcnJvcigidW5rbm93biBvYmplY3QgdHlwZSAlaSBhdCBvZmZzZXQgJSJQUkl1TUFYIiBpbiAlcyIsCisJCSAgICAgIHR5cGUsICh1aW50bWF4X3Qpb2JqX29mZnNldCwgcC0+cGFja19uYW1lKTsKKwkJdHlwZSA9IE9CSl9CQUQ7CiAJfQogCXVudXNlX3BhY2soJndfY3Vycyk7CiAJcmV0dXJuIHR5cGU7CkBAIC0xNTUwLDE0ICsxNTg1LDE0IEBACiAJc3RyZWFtLm5leHRfb3V0ID0gYnVmZmVyOwogCXN0cmVhbS5hdmFpbF9vdXQgPSBzaXplOwogCi0JaW5mbGF0ZUluaXQoJnN0cmVhbSk7CisJZ2l0X2luZmxhdGVfaW5pdCgmc3RyZWFtKTsKIAlkbyB7CiAJCWluID0gdXNlX3BhY2socCwgd19jdXJzLCBjdXJwb3MsICZzdHJlYW0uYXZhaWxfaW4pOwogCQlzdHJlYW0ubmV4dF9pbiA9IGluOwotCQlzdCA9IGluZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpOworCQlzdCA9IGdpdF9pbmZsYXRlKCZzdHJlYW0sIFpfRklOSVNIKTsKIAkJY3VycG9zICs9IHN0cmVhbS5uZXh0X2luIC0gaW47CiAJfSB3aGlsZSAoc3QgPT0gWl9PSyB8fCBzdCA9PSBaX0JVRl9FUlJPUik7Ci0JaW5mbGF0ZUVuZCgmc3RyZWFtKTsKKwlnaXRfaW5mbGF0ZV9lbmQoJnN0cmVhbSk7CiAJaWYgKChzdCAhPSBaX1NUUkVBTV9FTkQpIHx8IHN0cmVhbS50b3RhbF9vdXQgIT0gc2l6ZSkgewogCQlmcmVlKGJ1ZmZlcik7CiAJCXJldHVybiBOVUxMOwpAQCAtMTYwMSwxMSArMTYzNiw5IEBACiAJc3RydWN0IGRlbHRhX2Jhc2VfY2FjaGVfZW50cnkgKmVudCA9IGRlbHRhX2Jhc2VfY2FjaGUgKyBoYXNoOwogCiAJcmV0ID0gZW50LT5kYXRhOwotCWlmIChyZXQgJiYgZW50LT5wID09IHAgJiYgZW50LT5iYXNlX29mZnNldCA9PSBiYXNlX29mZnNldCkKLQkJZ290byBmb3VuZF9jYWNoZV9lbnRyeTsKLQlyZXR1cm4gdW5wYWNrX2VudHJ5KHAsIGJhc2Vfb2Zmc2V0LCB0eXBlLCBiYXNlX3NpemUpOworCWlmICghcmV0IHx8IGVudC0+cCAhPSBwIHx8IGVudC0+YmFzZV9vZmZzZXQgIT0gYmFzZV9vZmZzZXQpCisJCXJldHVybiB1bnBhY2tfZW50cnkocCwgYmFzZV9vZmZzZXQsIHR5cGUsIGJhc2Vfc2l6ZSk7CiAKLWZvdW5kX2NhY2hlX2VudHJ5OgogCWlmICgha2VlcF9jYWNoZSkgewogCQllbnQtPmRhdGEgPSBOVUxMOwogCQllbnQtPmxydS5uZXh0LT5wcmV2ID0gZW50LT5scnUucHJldjsKQEAgLTE2OTUsOSArMTcyOCwxMiBAQAogCQkgKiBUaGlzIGlzIGNvc3RseSBidXQgc2hvdWxkIGhhcHBlbiBvbmx5IGluIHRoZSBwcmVzZW5jZQogCQkgKiBvZiBhIGNvcnJ1cHRlZCBwYWNrLCBhbmQgaXMgYmV0dGVyIHRoYW4gZmFpbGluZyBvdXRyaWdodC4KIAkJICovCi0JCXN0cnVjdCByZXZpbmRleF9lbnRyeSAqcmV2aWR4ID0gZmluZF9wYWNrX3JldmluZGV4KHAsIGJhc2Vfb2Zmc2V0KTsKLQkJY29uc3QgdW5zaWduZWQgY2hhciAqYmFzZV9zaGExID0KLQkJCQkJbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKKwkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHg7CisJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmJhc2Vfc2hhMTsKKwkJcmV2aWR4ID0gZmluZF9wYWNrX3JldmluZGV4KHAsIGJhc2Vfb2Zmc2V0KTsKKwkJaWYgKCFyZXZpZHgpCisJCQlyZXR1cm4gTlVMTDsKKwkJYmFzZV9zaGExID0gbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKIAkJZXJyb3IoImZhaWxlZCB0byByZWFkIGRlbHRhIGJhc2Ugb2JqZWN0ICVzIgogCQkgICAgICAiIGF0IG9mZnNldCAlIlBSSXVNQVgiIGZyb20gJXMiLAogCQkgICAgICBzaGExX3RvX2hleChiYXNlX3NoYTEpLCAodWludG1heF90KWJhc2Vfb2Zmc2V0LApAQCAtMTcyNiw2ICsxNzYyLDggQEAKIAlyZXR1cm4gcmVzdWx0OwogfQogCitpbnQgZG9fY2hlY2tfcGFja2VkX29iamVjdF9jcmM7CisKIHZvaWQgKnVucGFja19lbnRyeShzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3Qgb2JqX29mZnNldCwKIAkJICAgZW51bSBvYmplY3RfdHlwZSAqdHlwZSwgdW5zaWduZWQgbG9uZyAqc2l6ZXApCiB7CkBAIC0xNzMzLDYgKzE3NzEsMjAgQEAKIAlvZmZfdCBjdXJwb3MgPSBvYmpfb2Zmc2V0OwogCXZvaWQgKmRhdGE7CiAKKwlpZiAoZG9fY2hlY2tfcGFja2VkX29iamVjdF9jcmMgJiYgcC0+aW5kZXhfdmVyc2lvbiA+IDEpIHsKKwkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHggPSBmaW5kX3BhY2tfcmV2aW5kZXgocCwgb2JqX29mZnNldCk7CisJCXVuc2lnbmVkIGxvbmcgbGVuID0gcmV2aWR4WzFdLm9mZnNldCAtIG9ial9vZmZzZXQ7CisJCWlmIChjaGVja19wYWNrX2NyYyhwLCAmd19jdXJzLCBvYmpfb2Zmc2V0LCBsZW4sIHJldmlkeC0+bnIpKSB7CisJCQljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExID0KKwkJCQludGhfcGFja2VkX29iamVjdF9zaGExKHAsIHJldmlkeC0+bnIpOworCQkJZXJyb3IoImJhZCBwYWNrZWQgb2JqZWN0IENSQyBmb3IgJXMiLAorCQkJICAgICAgc2hhMV90b19oZXgoc2hhMSkpOworCQkJbWFya19iYWRfcGFja2VkX29iamVjdChwLCBzaGExKTsKKwkJCXVudXNlX3BhY2soJndfY3Vycyk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCX0KKwogCSp0eXBlID0gdW5wYWNrX29iamVjdF9oZWFkZXIocCwgJndfY3VycywgJmN1cnBvcywgc2l6ZXApOwogCXN3aXRjaCAoKnR5cGUpIHsKIAljYXNlIE9CSl9PRlNfREVMVEE6CkBAIC0xOTY1LDcgKzIwMTcsNyBAQAogCQlzdGF0dXMgPSBlcnJvcigidW5hYmxlIHRvIHBhcnNlICVzIGhlYWRlciIsIHNoYTFfdG9faGV4KHNoYTEpKTsKIAllbHNlIGlmIChzaXplcCkKIAkJKnNpemVwID0gc2l6ZTsKLQlpbmZsYXRlRW5kKCZzdHJlYW0pOworCWdpdF9pbmZsYXRlX2VuZCgmc3RyZWFtKTsKIAltdW5tYXAobWFwLCBtYXBzaXplKTsKIAlyZXR1cm4gc3RhdHVzOwogfQpAQCAtMTk4Niw3ICsyMDM4LDE0IEBACiAJCWlmICghZmluZF9wYWNrX2VudHJ5KHNoYTEsICZlLCBOVUxMKSkKIAkJCXJldHVybiBzdGF0dXM7CiAJfQotCXJldHVybiBwYWNrZWRfb2JqZWN0X2luZm8oZS5wLCBlLm9mZnNldCwgc2l6ZXApOworCisJc3RhdHVzID0gcGFja2VkX29iamVjdF9pbmZvKGUucCwgZS5vZmZzZXQsIHNpemVwKTsKKwlpZiAoc3RhdHVzIDwgMCkgeworCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KGUucCwgc2hhMSk7CisJCXN0YXR1cyA9IHNoYTFfb2JqZWN0X2luZm8oc2hhMSwgc2l6ZXApOworCX0KKworCXJldHVybiBzdGF0dXM7CiB9CiAKIHN0YXRpYyB2b2lkICpyZWFkX3BhY2tlZF9zaGExKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCkBAIC0yMDI4LDkgKzIwODcsNyBAQAogc3RhdGljIGludCBjYWNoZWRfb2JqZWN0X25yLCBjYWNoZWRfb2JqZWN0X2FsbG9jOwogCiBzdGF0aWMgc3RydWN0IGNhY2hlZF9vYmplY3QgZW1wdHlfdHJlZSA9IHsKLQkvKiBlbXB0eSB0cmVlIHNoYTE6IDRiODI1ZGM2NDJjYjZlYjlhMDYwZTU0YmY4ZDY5Mjg4ZmJlZTQ5MDQgKi8KLQkiXHg0Ylx4ODJceDVkXHhjNlx4NDJceGNiXHg2ZVx4YjlceGEwXHg2MCIKLQkiXHhlNVx4NGJceGY4XHhkNlx4OTJceDg4XHhmYlx4ZWVceDQ5XHgwNCIsCisJRU1QVFlfVFJFRV9TSEExX0JJTiwKIAlPQkpfVFJFRSwKIAkiIiwKIAkwCkBAIC0yMTYyLDE2ICsyMjE5LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0eXBlLCB1bnNpZ25lZCBjaGFyICpzaGExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqaGRyLCBpbnQgKmhkcmxlbikKIHsKLQlTSEFfQ1RYIGM7CisJZ2l0X1NIQV9DVFggYzsKIAogCS8qIEdlbmVyYXRlIHRoZSBoZWFkZXIgKi8KIAkqaGRybGVuID0gc3ByaW50ZihoZHIsICIlcyAlbHUiLCB0eXBlLCBsZW4pKzE7CiAKIAkvKiBTaGExLi4gKi8KLQlTSEExX0luaXQoJmMpOwotCVNIQTFfVXBkYXRlKCZjLCBoZHIsICpoZHJsZW4pOwotCVNIQTFfVXBkYXRlKCZjLCBidWYsIGxlbik7Ci0JU0hBMV9GaW5hbChzaGExLCAmYyk7CisJZ2l0X1NIQTFfSW5pdCgmYyk7CisJZ2l0X1NIQTFfVXBkYXRlKCZjLCBoZHIsICpoZHJsZW4pOworCWdpdF9TSEExX1VwZGF0ZSgmYywgYnVmLCBsZW4pOworCWdpdF9TSEExX0ZpbmFsKHNoYTEsICZjKTsKIH0KIAogLyoKQEAgLTI0MTEsNTEgKzI0NjgsMjEgQEAKIAlyZXR1cm4gaGFzX2xvb3NlX29iamVjdChzaGExKTsKIH0KIAotaW50IGluZGV4X3BpcGUodW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZkLCBjb25zdCBjaGFyICp0eXBlLCBpbnQgd3JpdGVfb2JqZWN0KQorc3RhdGljIGludCBpbmRleF9tZW0odW5zaWduZWQgY2hhciAqc2hhMSwgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwKKwkJICAgICBpbnQgd3JpdGVfb2JqZWN0LCBlbnVtIG9iamVjdF90eXBlIHR5cGUsIGNvbnN0IGNoYXIgKnBhdGgpCiB7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7Ci0JaW50IHJldDsKLQotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwotCWlmIChzdHJidWZfcmVhZCgmYnVmLCBmZCwgNDA5NikgPCAwKSB7Ci0JCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwotCQlyZXR1cm4gLTE7Ci0JfQotCi0JaWYgKCF0eXBlKQotCQl0eXBlID0gYmxvYl90eXBlOwotCWlmICh3cml0ZV9vYmplY3QpCi0JCXJldCA9IHdyaXRlX3NoYTFfZmlsZShidWYuYnVmLCBidWYubGVuLCB0eXBlLCBzaGExKTsKLQllbHNlCi0JCXJldCA9IGhhc2hfc2hhMV9maWxlKGJ1Zi5idWYsIGJ1Zi5sZW4sIHR5cGUsIHNoYTEpOwotCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotaW50IGluZGV4X2ZkKHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgd3JpdGVfb2JqZWN0LAotCSAgICAgZW51bSBvYmplY3RfdHlwZSB0eXBlLCBjb25zdCBjaGFyICpwYXRoKQotewotCXNpemVfdCBzaXplID0geHNpemVfdChzdC0+c3Rfc2l6ZSk7Ci0Jdm9pZCAqYnVmID0gTlVMTDsKIAlpbnQgcmV0LCByZV9hbGxvY2F0ZWQgPSAwOwogCi0JaWYgKHNpemUpCi0JCWJ1ZiA9IHhtbWFwKE5VTEwsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKLQljbG9zZShmZCk7Ci0KIAlpZiAoIXR5cGUpCiAJCXR5cGUgPSBPQkpfQkxPQjsKIAogCS8qCiAJICogQ29udmVydCBibG9icyB0byBnaXQgaW50ZXJuYWwgZm9ybWF0CiAJICovCi0JaWYgKCh0eXBlID09IE9CSl9CTE9CKSAmJiBTX0lTUkVHKHN0LT5zdF9tb2RlKSkgewotCQlzdHJ1Y3Qgc3RyYnVmIG5idWY7Ci0JCXN0cmJ1Zl9pbml0KCZuYnVmLCAwKTsKKwlpZiAoKHR5cGUgPT0gT0JKX0JMT0IpICYmIHBhdGgpIHsKKwkJc3RydWN0IHN0cmJ1ZiBuYnVmID0gU1RSQlVGX0lOSVQ7CiAJCWlmIChjb252ZXJ0X3RvX2dpdChwYXRoLCBidWYsIHNpemUsICZuYnVmLAogCQkgICAgICAgICAgICAgICAgICAgd3JpdGVfb2JqZWN0ID8gc2FmZV9jcmxmIDogMCkpIHsKLQkJCW11bm1hcChidWYsIHNpemUpOwogCQkJYnVmID0gc3RyYnVmX2RldGFjaCgmbmJ1ZiwgJnNpemUpOwogCQkJcmVfYWxsb2NhdGVkID0gMTsKIAkJfQpAQCAtMjQ2NSwyMCArMjQ5MiwzOSBAQAogCQlyZXQgPSB3cml0ZV9zaGExX2ZpbGUoYnVmLCBzaXplLCB0eXBlbmFtZSh0eXBlKSwgc2hhMSk7CiAJZWxzZQogCQlyZXQgPSBoYXNoX3NoYTFfZmlsZShidWYsIHNpemUsIHR5cGVuYW1lKHR5cGUpLCBzaGExKTsKLQlpZiAocmVfYWxsb2NhdGVkKSB7CisJaWYgKHJlX2FsbG9jYXRlZCkKIAkJZnJlZShidWYpOwotCQlyZXR1cm4gcmV0OwotCX0KLQlpZiAoc2l6ZSkKKwlyZXR1cm4gcmV0OworfQorCitpbnQgaW5kZXhfZmQodW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QsIGludCB3cml0ZV9vYmplY3QsCisJICAgICBlbnVtIG9iamVjdF90eXBlIHR5cGUsIGNvbnN0IGNoYXIgKnBhdGgpCit7CisJaW50IHJldDsKKwlzaXplX3Qgc2l6ZSA9IHhzaXplX3Qoc3QtPnN0X3NpemUpOworCisJaWYgKCFTX0lTUkVHKHN0LT5zdF9tb2RlKSkgeworCQlzdHJ1Y3Qgc3RyYnVmIHNidWYgPSBTVFJCVUZfSU5JVDsKKwkJaWYgKHN0cmJ1Zl9yZWFkKCZzYnVmLCBmZCwgNDA5NikgPj0gMCkKKwkJCXJldCA9IGluZGV4X21lbShzaGExLCBzYnVmLmJ1Ziwgc2J1Zi5sZW4sIHdyaXRlX29iamVjdCwKKwkJCQkJdHlwZSwgcGF0aCk7CisJCWVsc2UKKwkJCXJldCA9IC0xOworCQlzdHJidWZfcmVsZWFzZSgmc2J1Zik7CisJfSBlbHNlIGlmIChzaXplKSB7CisJCXZvaWQgKmJ1ZiA9IHhtbWFwKE5VTEwsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKwkJcmV0ID0gaW5kZXhfbWVtKHNoYTEsIGJ1Ziwgc2l6ZSwgd3JpdGVfb2JqZWN0LCB0eXBlLCBwYXRoKTsKIAkJbXVubWFwKGJ1Ziwgc2l6ZSk7CisJfSBlbHNlCisJCXJldCA9IGluZGV4X21lbShzaGExLCBOVUxMLCBzaXplLCB3cml0ZV9vYmplY3QsIHR5cGUsIHBhdGgpOworCWNsb3NlKGZkKTsKIAlyZXR1cm4gcmV0OwogfQogCiBpbnQgaW5kZXhfcGF0aCh1bnNpZ25lZCBjaGFyICpzaGExLCBjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqc3QsIGludCB3cml0ZV9vYmplY3QpCiB7CiAJaW50IGZkOwotCWNoYXIgKnRhcmdldDsKLQlzaXplX3QgbGVuOworCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAogCXN3aXRjaCAoc3QtPnN0X21vZGUgJiBTX0lGTVQpIHsKIAljYXNlIFNfSUZSRUc6CkBAIC0yNDkxLDIwICsyNTM3LDE3IEBACiAJCQkJICAgICBwYXRoKTsKIAkJYnJlYWs7CiAJY2FzZSBTX0lGTE5LOgotCQlsZW4gPSB4c2l6ZV90KHN0LT5zdF9zaXplKTsKLQkJdGFyZ2V0ID0geG1hbGxvYyhsZW4gKyAxKTsKLQkJaWYgKHJlYWRsaW5rKHBhdGgsIHRhcmdldCwgbGVuICsgMSkgIT0gc3QtPnN0X3NpemUpIHsKKwkJaWYgKHN0cmJ1Zl9yZWFkbGluaygmc2IsIHBhdGgsIHN0LT5zdF9zaXplKSkgewogCQkJY2hhciAqZXJyc3RyID0gc3RyZXJyb3IoZXJybm8pOwotCQkJZnJlZSh0YXJnZXQpOwogCQkJcmV0dXJuIGVycm9yKCJyZWFkbGluayhcIiVzXCIpOiAlcyIsIHBhdGgsCiAJCQkgICAgICAgICAgICAgZXJyc3RyKTsKIAkJfQogCQlpZiAoIXdyaXRlX29iamVjdCkKLQkJCWhhc2hfc2hhMV9maWxlKHRhcmdldCwgbGVuLCBibG9iX3R5cGUsIHNoYTEpOwotCQllbHNlIGlmICh3cml0ZV9zaGExX2ZpbGUodGFyZ2V0LCBsZW4sIGJsb2JfdHlwZSwgc2hhMSkpCisJCQloYXNoX3NoYTFfZmlsZShzYi5idWYsIHNiLmxlbiwgYmxvYl90eXBlLCBzaGExKTsKKwkJZWxzZSBpZiAod3JpdGVfc2hhMV9maWxlKHNiLmJ1Ziwgc2IubGVuLCBibG9iX3R5cGUsIHNoYTEpKQogCQkJcmV0dXJuIGVycm9yKCIlczogZmFpbGVkIHRvIGluc2VydCBpbnRvIGRhdGFiYXNlIiwKIAkJCQkgICAgIHBhdGgpOwotCQlmcmVlKHRhcmdldCk7CisJCXN0cmJ1Zl9yZWxlYXNlKCZzYik7CiAJCWJyZWFrOwogCWNhc2UgU19JRkRJUjoKIAkJcmV0dXJuIHJlc29sdmVfZ2l0bGlua19yZWYocGF0aCwgIkhFQUQiLCBzaGExKTsKZGlmZiAtLWdpdCBhL3NoYTFfbmFtZS5jIGIvc2hhMV9uYW1lLmMKaW5kZXggYzRmZGFkZS4uNzIyZmMzNSAxMDA2NDQKLS0tIGEvc2hhMV9uYW1lLmMKKysrIGIvc2hhMV9uYW1lLmMKQEAgLTM1MSw3ICszNTEsMTAgQEAKIAkJCWVsc2UKIAkJCQludGggPSAtMTsKIAkJfQotCQlpZiAoMCA8PSBudGgpCisJCWlmICgxMDAwMDAwMDAgPD0gbnRoKSB7CisJCQlhdF90aW1lID0gbnRoOworCQkJbnRoID0gLTE7CisJCX0gZWxzZSBpZiAoMCA8PSBudGgpCiAJCQlhdF90aW1lID0gMDsKIAkJZWxzZSB7CiAJCQljaGFyICp0bXAgPSB4c3RybmR1cChzdHIgKyBhdCArIDIsIHJlZmxvZ19sZW4pOwpkaWZmIC0tZ2l0IGEvc3RyYnVmLmMgYi9zdHJidWYuYwppbmRleCA3MjA3MzdkLi5iZGY0OTU0IDEwMDY0NAotLS0gYS9zdHJidWYuYworKysgYi9zdHJidWYuYwpAQCAtMjM3LDYgKzIzNywyMiBAQAogCX0KIH0KIAorc2l6ZV90IHN0cmJ1Zl9leHBhbmRfZGljdF9jYihzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsCisJCXZvaWQgKmNvbnRleHQpCit7CisJc3RydWN0IHN0cmJ1Zl9leHBhbmRfZGljdF9lbnRyeSAqZSA9IGNvbnRleHQ7CisJc2l6ZV90IGxlbjsKKworCWZvciAoOyBlLT5wbGFjZWhvbGRlciAmJiAobGVuID0gc3RybGVuKGUtPnBsYWNlaG9sZGVyKSk7IGUrKykgeworCQlpZiAoIXN0cm5jbXAocGxhY2Vob2xkZXIsIGUtPnBsYWNlaG9sZGVyLCBsZW4pKSB7CisJCQlpZiAoZS0+dmFsdWUpCisJCQkJc3RyYnVmX2FkZHN0cihzYiwgZS0+dmFsdWUpOworCQkJcmV0dXJuIGxlbjsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKwogc2l6ZV90IHN0cmJ1Zl9mcmVhZChzdHJ1Y3Qgc3RyYnVmICpzYiwgc2l6ZV90IHNpemUsIEZJTEUgKmYpCiB7CiAJc2l6ZV90IHJlczsKQEAgLTI3Miw2ICsyODgsMzMgQEAKIAlyZXR1cm4gc2ItPmxlbiAtIG9sZGxlbjsKIH0KIAorI2RlZmluZSBTVFJCVUZfTUFYTElOSyAoMipQQVRIX01BWCkKKworaW50IHN0cmJ1Zl9yZWFkbGluayhzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcGF0aCwgc2l6ZV90IGhpbnQpCit7CisJaWYgKGhpbnQgPCAzMikKKwkJaGludCA9IDMyOworCisJd2hpbGUgKGhpbnQgPCBTVFJCVUZfTUFYTElOSykgeworCQlpbnQgbGVuOworCisJCXN0cmJ1Zl9ncm93KHNiLCBoaW50KTsKKwkJbGVuID0gcmVhZGxpbmsocGF0aCwgc2ItPmJ1ZiwgaGludCk7CisJCWlmIChsZW4gPCAwKSB7CisJCQlpZiAoZXJybm8gIT0gRVJBTkdFKQorCQkJCWJyZWFrOworCQl9IGVsc2UgaWYgKGxlbiA8IGhpbnQpIHsKKwkJCXN0cmJ1Zl9zZXRsZW4oc2IsIGxlbik7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJCS8qIC4uIHRoZSBidWZmZXIgd2FzIHRvbyBzbWFsbCAtIHRyeSBhZ2FpbiAqLworCQloaW50ICo9IDI7CisJfQorCXN0cmJ1Zl9yZWxlYXNlKHNiKTsKKwlyZXR1cm4gLTE7Cit9CisKIGludCBzdHJidWZfZ2V0bGluZShzdHJ1Y3Qgc3RyYnVmICpzYiwgRklMRSAqZnAsIGludCB0ZXJtKQogewogCWludCBjaDsKZGlmZiAtLWdpdCBhL3N0cmJ1Zi5oIGIvc3RyYnVmLmgKaW5kZXggZWJhN2JhNC4uODliZDM2ZSAxMDA2NDQKLS0tIGEvc3RyYnVmLmgKKysrIGIvc3RyYnVmLmgKQEAgLTExMSw2ICsxMTEsMTEgQEAKIAogdHlwZWRlZiBzaXplX3QgKCpleHBhbmRfZm5fdCkgKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpwbGFjZWhvbGRlciwgdm9pZCAqY29udGV4dCk7CiBleHRlcm4gdm9pZCBzdHJidWZfZXhwYW5kKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpmb3JtYXQsIGV4cGFuZF9mbl90IGZuLCB2b2lkICpjb250ZXh0KTsKK3N0cnVjdCBzdHJidWZfZXhwYW5kX2RpY3RfZW50cnkgeworCWNvbnN0IGNoYXIgKnBsYWNlaG9sZGVyOworCWNvbnN0IGNoYXIgKnZhbHVlOworfTsKK2V4dGVybiBzaXplX3Qgc3RyYnVmX2V4cGFuZF9kaWN0X2NiKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpwbGFjZWhvbGRlciwgdm9pZCAqY29udGV4dCk7CiAKIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYsMiwzKSkpCiBleHRlcm4gdm9pZCBzdHJidWZfYWRkZihzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwpAQCAtMTE5LDYgKzEyNCw3IEBACiAvKiBYWFg6IGlmIHJlYWQgZmFpbHMsIGFueSBwYXJ0aWFsIHJlYWQgaXMgdW5kb25lICovCiBleHRlcm4gc3NpemVfdCBzdHJidWZfcmVhZChzdHJ1Y3Qgc3RyYnVmICosIGludCBmZCwgc2l6ZV90IGhpbnQpOwogZXh0ZXJuIGludCBzdHJidWZfcmVhZF9maWxlKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpwYXRoLCBzaXplX3QgaGludCk7CitleHRlcm4gaW50IHN0cmJ1Zl9yZWFkbGluayhzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcGF0aCwgc2l6ZV90IGhpbnQpOwogCiBleHRlcm4gaW50IHN0cmJ1Zl9nZXRsaW5lKHN0cnVjdCBzdHJidWYgKiwgRklMRSAqLCBpbnQpOwogCmRpZmYgLS1naXQgYS90Ly5naXRpZ25vcmUgYi90Ly5naXRpZ25vcmUKaW5kZXggYjI3ZTI4MC4uN2RjYmIyMyAxMDA2NDQKLS0tIGEvdC8uZ2l0aWdub3JlCisrKyBiL3QvLmdpdGlnbm9yZQpAQCAtMSwyICsxLDIgQEAKLS90cmFzaCBkaXJlY3RvcnkKKy90cmFzaCBkaXJlY3RvcnkqCiAvdGVzdC1yZXN1bHRzCmRpZmYgLS1naXQgYS90L01ha2VmaWxlIGIvdC9NYWtlZmlsZQppbmRleCAwZDY1Y2VkLi5lZDQ5YzIwIDEwMDY0NAotLS0gYS90L01ha2VmaWxlCisrKyBiL3QvTWFrZWZpbGUKQEAgLTE0LDcgKzE0LDggQEAKIFQgPSAkKHdpbGRjYXJkIHRbMC05XVswLTldWzAtOV1bMC05XS0qLnNoKQogVFNWTiA9ICQod2lsZGNhcmQgdDkxWzAtOV1bMC05XS0qLnNoKQogCi1hbGw6IHByZS1jbGVhbiAkKFQpIGFnZ3JlZ2F0ZS1yZXN1bHRzIGNsZWFuCithbGw6IHByZS1jbGVhbgorCSQoTUFLRSkgYWdncmVnYXRlLXJlc3VsdHMtYW5kLWNsZWFudXAKIAogJChUKToKIAlAZWNobyAiKioqICRAICoqKiI7IEdJVF9DT05GSUc9LmdpdC9jb25maWcgJyQoU0hFTExfUEFUSF9TUSknICRAICQoR0lUX1RFU1RfT1BUUykKQEAgLTI1LDYgKzI2LDEwIEBACiBjbGVhbjoKIAkkKFJNKSAtciAndHJhc2ggZGlyZWN0b3J5JyB0ZXN0LXJlc3VsdHMKIAorYWdncmVnYXRlLXJlc3VsdHMtYW5kLWNsZWFudXA6ICQoVCkKKwkkKE1BS0UpIGFnZ3JlZ2F0ZS1yZXN1bHRzCisJJChNQUtFKSBjbGVhbgorCiBhZ2dyZWdhdGUtcmVzdWx0czoKIAknJChTSEVMTF9QQVRIX1NRKScgLi9hZ2dyZWdhdGUtcmVzdWx0cy5zaCB0ZXN0LXJlc3VsdHMvdCotKgogCkBAIC0zNCw0ICszOSwzIEBACiAJJChNQUtFKSAkKFRTVk4pIEdJVF9TVk5fTk9fT1BUSU1JWkVfQ09NTUlUUz0wIExDX0FMTD1lbl9VUy5VVEYtOAogCiAuUEhPTlk6IHByZS1jbGVhbiAkKFQpIGFnZ3JlZ2F0ZS1yZXN1bHRzIGNsZWFuCi0uTk9UUEFSQUxMRUw6CmRpZmYgLS1naXQgYS90L2xpYi1naXQtc3ZuLnNoIGIvdC9saWItZ2l0LXN2bi5zaAppbmRleCA1YjVmMjg4Li42N2M0MzFkIDEwMDY0NAotLS0gYS90L2xpYi1naXQtc3ZuLnNoCisrKyBiL3QvbGliLWdpdC1zdm4uc2gKQEAgLTEsOCArMSwxMSBAQAogLiAuL3Rlc3QtbGliLnNoCiAKK3JlbW90ZXNfZ2l0X3N2bj1yZW1vdGVzL2dpdCIiLXN2bgorZ2l0X3N2bl9pZD1naXQiIi1zdm4taWQKKwogaWYgdGVzdCAtbiAiJE5PX1NWTl9URVNUUyIKIHRoZW4KLQl0ZXN0X2V4cGVjdF9zdWNjZXNzICdza2lwcGluZyBnaXQtc3ZuIHRlc3RzLCBOT19TVk5fVEVTVFMgZGVmaW5lZCcgOgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NraXBwaW5nIGdpdCBzdm4gdGVzdHMsIE5PX1NWTl9URVNUUyBkZWZpbmVkJyA6CiAJdGVzdF9kb25lCiAJZXhpdAogZmkKQEAgLTE0LDcgKzE3LDcgQEAKIHN2biA+L2Rldi9udWxsIDI+JjEKIGlmIHRlc3QgJD8gLW5lIDEKIHRoZW4KLSAgICB0ZXN0X2V4cGVjdF9zdWNjZXNzICdza2lwcGluZyBnaXQtc3ZuIHRlc3RzLCBzdm4gbm90IGZvdW5kJyA6CisgICAgdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2tpcHBpbmcgZ2l0IHN2biB0ZXN0cywgc3ZuIG5vdCBmb3VuZCcgOgogICAgIHRlc3RfZG9uZQogICAgIGV4aXQKIGZpCkBAIC04OCw3ICs5MSw3IEBACiAJbWtkaXIgIiRHSVRfRElSIi9sb2dzCiAKIAljYXQgPiAiJEdJVF9ESVIvaHR0cGQuY29uZiIgPDxFT0YKLVNlcnZlck5hbWUgImdpdC1zdm4gdGVzdCIKK1NlcnZlck5hbWUgImdpdCBzdm4gdGVzdCIKIFNlcnZlclJvb3QgIiRHSVRfRElSIgogRG9jdW1lbnRSb290ICIkR0lUX0RJUiIKIFBpZEZpbGUgIiRHSVRfRElSL2h0dHBkLnBpZCIKZGlmZiAtLWdpdCBhL3QvbGliLWh0dHBkLnNoIGIvdC9saWItaHR0cGQuc2gKaW5kZXggZGM0NzNkZi4uNmFjMzEyYiAxMDA2NDQKLS0tIGEvdC9saWItaHR0cGQuc2gKKysrIGIvdC9saWItaHR0cGQuc2gKQEAgLTE0LDcgKzE0LDcgQEAKIExJQl9IVFRQRF9QQVRIPSR7TElCX0hUVFBEX1BBVEgtJy91c3Ivc2Jpbi9hcGFjaGUyJ30KIExJQl9IVFRQRF9QT1JUPSR7TElCX0hUVFBEX1BPUlQtJzgxMTEnfQogCi1URVNUX1BBVEg9IiRQV0QiLy4uL2xpYi1odHRwZAorVEVTVF9QQVRIPSIkVEVTVF9ESVJFQ1RPUlkiL2xpYi1odHRwZAogSFRUUERfUk9PVF9QQVRIPSIkUFdEIi9odHRwZAogSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIPSRIVFRQRF9ST09UX1BBVEgvd3d3CiAKZGlmZiAtLWdpdCBhL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mIGIvdC9saWItaHR0cGQvYXBhY2hlLmNvbmYKaW5kZXggNDcxN2MyZC4uZmRiMTlhNSAxMDA2NDQKLS0tIGEvdC9saWItaHR0cGQvYXBhY2hlLmNvbmYKKysrIGIvdC9saWItaHR0cGQvYXBhY2hlLmNvbmYKQEAgLTEsNiArMSw4IEBACiBTZXJ2ZXJOYW1lIGR1bW15CiBQaWRGaWxlIGh0dHBkLnBpZAogRG9jdW1lbnRSb290IHd3dworTG9nRm9ybWF0ICIlaCAlbCAldSAldCBcIiVyXCIgJT5zICViIiBjb21tb24KK0N1c3RvbUxvZyBhY2Nlc3MubG9nIGNvbW1vbgogRXJyb3JMb2cgZXJyb3IubG9nCiAKIDxJZkRlZmluZSBTU0w+CmRpZmYgLS1naXQgYS90L3QwMDAyLWdpdGZpbGUuc2ggYi90L3QwMDAyLWdpdGZpbGUuc2gKaW5kZXggNGRiNGFjNC4uY2IxNDQyNSAxMDA3NTUKLS0tIGEvdC90MDAwMi1naXRmaWxlLnNoCisrKyBiL3QvdDAwMDItZ2l0ZmlsZS5zaApAQCAtMzIsNyArMzIsNyBAQAogCQllY2hvICJnaXQgcmV2LXBhcnNlIGFjY2VwdGVkIGFuIGludmFsaWQgLmdpdCBmaWxlIgogCQlmYWxzZQogCWZpICYmCi0JaWYgISBncmVwIC1xZSAiSW52YWxpZCBnaXRmaWxlIGZvcm1hdCIgLmVycgorCWlmICEgZ3JlcCAiSW52YWxpZCBnaXRmaWxlIGZvcm1hdCIgLmVycgogCXRoZW4KIAkJZWNobyAiZ2l0IHJldi1wYXJzZSByZXR1cm5lZCB3cm9uZyBlcnJvciIKIAkJZmFsc2UKQEAgLTQ2LDcgKzQ2LDcgQEAKIAkJZWNobyAiZ2l0IHJldi1wYXJzZSBhY2NlcHRlZCBhbiBpbnZhbGlkIC5naXQgZmlsZSBwYXRoIgogCQlmYWxzZQogCWZpICYmCi0JaWYgISBncmVwIC1xZSAiTm90IGEgZ2l0IHJlcG9zaXRvcnkiIC5lcnIKKwlpZiAhIGdyZXAgIk5vdCBhIGdpdCByZXBvc2l0b3J5IiAuZXJyCiAJdGhlbgogCQllY2hvICJnaXQgcmV2LXBhcnNlIHJldHVybmVkIHdyb25nIGVycm9yIgogCQlmYWxzZQpkaWZmIC0tZ2l0IGEvdC90MDAwMy1hdHRyaWJ1dGVzLnNoIGIvdC90MDAwMy1hdHRyaWJ1dGVzLnNoCmluZGV4IDNkOGUwNmEuLjFjNzcxOTIgMTAwNzU1Ci0tLSBhL3QvdDAwMDMtYXR0cmlidXRlcy5zaAorKysgYi90L3QwMDAzLWF0dHJpYnV0ZXMuc2gKQEAgLTQ3LDYgKzQ3LDIzIEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXR0cmlidXRlIHRlc3Q6IHJlYWQgcGF0aHMgZnJvbSBzdGRpbicgJworCisJY2F0IDw8RU9GID4gZXhwZWN0CitmOiB0ZXN0OiBmCithL2Y6IHRlc3Q6IGYKK2EvYy9mOiB0ZXN0OiBmCithL2c6IHRlc3Q6IGEvZworYS9iL2c6IHRlc3Q6IGEvYi9nCitiL2c6IHRlc3Q6IHVuc3BlY2lmaWVkCithL2IvaDogdGVzdDogYS9iL2gKK2EvYi9kL2c6IHRlc3Q6IGEvYi9kLyoKK0VPRgorCisJc2VkIC1lICJzLzouKi8vIiA8IGV4cGVjdCB8IGdpdCBjaGVjay1hdHRyIC0tc3RkaW4gdGVzdCA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAncm9vdCBzdWJkaXIgYXR0cmlidXRlIHRlc3QnICcKIAogCWF0dHJfY2hlY2sgYS9pIGEvaSAmJgpkaWZmIC0tZ2l0IGEvdC90MDAyMi1jcmxmLXJlbmFtZS5zaCBiL3QvdDAwMjItY3JsZi1yZW5hbWUuc2gKaW5kZXggN2QxY2UyZC4uZjFlMWQ0OCAxMDA3NTUKLS0tIGEvdC90MDAyMi1jcmxmLXJlbmFtZS5zaAorKysgYi90L3QwMDIyLWNybGYtcmVuYW1lLnNoCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3QvdDAwNTUtYmV5b25kLXN5bWxpbmtzLnNoIGIvdC90MDA1NS1iZXlvbmQtc3ltbGlua3Muc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjI5YzM3YQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDAwNTUtYmV5b25kLXN5bWxpbmtzLnNoCkBAIC0wLDAgKzEsMjUgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSd1cGRhdGUtaW5kZXggYW5kIGFkZCByZWZ1c2UgdG8gYWRkIGJleW9uZCBzeW1saW5rcycKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJworCT5hICYmCisJbWtkaXIgYiAmJgorCWxuIC1zIGIgYyAmJgorCT5jL2QgJiYKKwlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGEgYi9kCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZS1pbmRleCAtLWFkZCBiZXlvbmQgc3ltbGlua3MnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGMvZCAmJgorCSEgKCBnaXQgbHMtZmlsZXMgfCBncmVwIGMvZCApCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBiZXlvbmQgc3ltbGlua3MnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgYWRkIGMvZCAmJgorCSEgKCBnaXQgbHMtZmlsZXMgfCBncmVwIGMvZCApCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MTAwMC1yZWFkLXRyZWUtbS0zd2F5LnNoIGIvdC90MTAwMC1yZWFkLXRyZWUtbS0zd2F5LnNoCmluZGV4IDgwN2ZiODMuLjIyYmE3YTUgMTAwNzU1Ci0tLSBhL3QvdDEwMDAtcmVhZC10cmVlLW0tM3dheS5zaAorKysgYi90L3QxMDAwLXJlYWQtdHJlZS1tLTN3YXkuc2gKQEAgLTcyLDcgKzcyLDcgQEAKIAogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2xpYi1yZWFkLXRyZWUtbS0zd2F5LnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2xpYi1yZWFkLXRyZWUtbS0zd2F5LnNoCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVHJpdmlhbCAibWFqb3JpdHkgd2hlbiAzIHN0YWdlcyBleGlzdCIgbWVyZ2UgcGx1cyAjMkFMVCwgIzNBTFQKZGlmZiAtLWdpdCBhL3QvdDEwMDEtcmVhZC10cmVlLW0tMndheS5zaCBiL3QvdDEwMDEtcmVhZC10cmVlLW0tMndheS5zaAppbmRleCA0YjQ0ZTEzLi4yNzFiYzRlIDEwMDc1NQotLS0gYS90L3QxMDAxLXJlYWQtdHJlZS1tLTJ3YXkuc2gKKysrIGIvdC90MTAwMS1yZWFkLXRyZWUtbS0yd2F5LnNoCkBAIC0zNDEsNCArMzQxLDU1IEBACiAgICAgIGNoZWNrX2NhY2hlX2F0IERGL0RGIGRpcnR5ICYmCiAgICAgIDonCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdhL2IgKHVudHJhY2tlZCkgdnMgYSBjYXNlIHNldHVwLicgXAorICAgICdybSAtZiAuZ2l0L2luZGV4ICYmCisgICAgIDogPmEgJiYKKyAgICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBhICYmCisgICAgIHRyZWVNPWBnaXQgd3JpdGUtdHJlZWAgJiYKKyAgICAgZWNobyB0cmVlTSAkdHJlZU0gJiYKKyAgICAgZ2l0IGxzLXRyZWUgJHRyZWVNICYmCisgICAgIGdpdCBscy1maWxlcyAtLXN0YWdlID50cmVlTS5vdXQgJiYKKworICAgICBybSAtZiBhICYmCisgICAgIGdpdCB1cGRhdGUtaW5kZXggLS1yZW1vdmUgYSAmJgorICAgICBta2RpciBhICYmCisgICAgIDogPmEvYiAmJgorICAgICB0cmVlSD1gZ2l0IHdyaXRlLXRyZWVgICYmCisgICAgIGVjaG8gdHJlZUggJHRyZWVIICYmCisgICAgIGdpdCBscy10cmVlICR0cmVlSCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2EvYiAodW50cmFja2VkKSB2cyBhLCBwbHVzIGMvZCBjYXNlIHRlc3QuJyBcCisgICAgJyEgZ2l0IHJlYWQtdHJlZSAtdSAtbSAiJHRyZWVIIiAiJHRyZWVNIiAmJgorICAgICBnaXQgbHMtZmlsZXMgLS1zdGFnZSAmJgorICAgICB0ZXN0IC1mIGEvYicKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2EvYiB2cyBhLCBwbHVzIGMvZCBjYXNlIHNldHVwLicgXAorICAgICdybSAtZiAuZ2l0L2luZGV4ICYmCisgICAgIHJtIC1mciBhICYmCisgICAgIDogPmEgJiYKKyAgICAgbWtkaXIgYyAmJgorICAgICA6ID5jL2QgJiYKKyAgICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBhIGMvZCAmJgorICAgICB0cmVlTT1gZ2l0IHdyaXRlLXRyZWVgICYmCisgICAgIGVjaG8gdHJlZU0gJHRyZWVNICYmCisgICAgIGdpdCBscy10cmVlICR0cmVlTSAmJgorICAgICBnaXQgbHMtZmlsZXMgLS1zdGFnZSA+dHJlZU0ub3V0ICYmCisKKyAgICAgcm0gLWYgYSAmJgorICAgICBta2RpciBhCisgICAgIDogPmEvYiAmJgorICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tcmVtb3ZlIGEgYS9iICYmCisgICAgIHRyZWVIPWBnaXQgd3JpdGUtdHJlZWAgJiYKKyAgICAgZWNobyB0cmVlSCAkdHJlZUggJiYKKyAgICAgZ2l0IGxzLXRyZWUgJHRyZWVIJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnYS9iIHZzIGEsIHBsdXMgYy9kIGNhc2UgdGVzdC4nIFwKKyAgICAnZ2l0IHJlYWQtdHJlZSAtdSAtbSAiJHRyZWVIIiAiJHRyZWVNIiAmJgorICAgICBnaXQgbHMtZmlsZXMgLS1zdGFnZSB8IHRlZSA+dHJlZU1jaGVjay5vdXQgJiYKKyAgICAgdGVzdF9jbXAgdHJlZU0ub3V0IHRyZWVNY2hlY2sub3V0JworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDEwMDctaGFzaC1vYmplY3Quc2ggYi90L3QxMDA3LWhhc2gtb2JqZWN0LnNoCmluZGV4IDA3NmIwODIuLmZkOThlNDQgMTAwNzU1Ci0tLSBhL3QvdDEwMDctaGFzaC1vYmplY3Quc2gKKysrIGIvdC90MTAwNy1oYXNoLW9iamVjdC5zaApAQCAtNDksMTYgKzQ5LDI4IEBACiAjIEFyZ3VtZW50IGNoZWNraW5nCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIm11bHRpcGxlICctLXN0ZGluJ3MgYXJlIHJlamVjdGVkIiAnCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4gLS1zdGRpbiA8IGV4YW1wbGUKKwllY2hvIGV4YW1wbGUgfCB0ZXN0X211c3RfZmFpbCBnaXQgaGFzaC1vYmplY3QgLS1zdGRpbiAtLXN0ZGluCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIkNhbid0IHVzZSAtLXN0ZGluIGFuZCAtLXN0ZGluLXBhdGhzIHRvZ2V0aGVyIiAnCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4gLS1zdGRpbi1wYXRocyAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluLXBhdGhzIC0tc3RkaW4KKwllY2hvIGV4YW1wbGUgfCB0ZXN0X211c3RfZmFpbCBnaXQgaGFzaC1vYmplY3QgLS1zdGRpbiAtLXN0ZGluLXBhdGhzICYmCisJZWNobyBleGFtcGxlIHwgdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4tcGF0aHMgLS1zdGRpbgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJDYW4ndCBwYXNzIGZpbGVuYW1lcyBhcyBhcmd1bWVudHMgd2l0aCAtLXN0ZGluLXBhdGhzIiAnCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4tcGF0aHMgaGVsbG8gPCBleGFtcGxlCisJZWNobyBleGFtcGxlIHwgdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4tcGF0aHMgaGVsbG8KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAiQ2FuJ3QgdXNlIC0tcGF0aCB3aXRoIC0tc3RkaW4tcGF0aHMiICcKKwllY2hvIGV4YW1wbGUgfCB0ZXN0X211c3RfZmFpbCBnaXQgaGFzaC1vYmplY3QgLS1zdGRpbi1wYXRocyAtLXBhdGg9Zm9vCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgIkNhbid0IHVzZSAtLXN0ZGluLXBhdGhzIHdpdGggLS1uby1maWx0ZXJzIiAnCisJZWNobyBleGFtcGxlIHwgdGVzdF9tdXN0X2ZhaWwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW4tcGF0aHMgLS1uby1maWx0ZXJzCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgIkNhbid0IHVzZSAtLXBhdGggd2l0aCAtLW5vLWZpbHRlcnMiICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgaGFzaC1vYmplY3QgLS1uby1maWx0ZXJzIC0tcGF0aD1mb28KICcKIAogIyBCZWhhdmlvcgpAQCAtOTMsNiArMTA1LDQyIEBACiAJdGVzdCAiJG9ibmFtZTEiID0gIiRvYm5hbWUxbmV3IgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayB0aGF0IGFwcHJvcHJpYXRlIGZpbHRlciBpcyBpbnZva2Ugd2hlbiAtLXBhdGggaXMgdXNlZCcgJworCWVjaG8gZm9vUSB8IHRyIFEgIlxcMDE1IiA+ZmlsZTAgJiYKKwljcCBmaWxlMCBmaWxlMSAmJgorCWVjaG8gImZpbGUwIC1jcmxmIiA+LmdpdGF0dHJpYnV0ZXMgJiYKKwllY2hvICJmaWxlMSBjcmxmIiA+Pi5naXRhdHRyaWJ1dGVzICYmCisJZ2l0IGNvbmZpZyBjb3JlLmF1dG9jcmxmIHRydWUgJiYKKwlmaWxlMF9zaGE9JChnaXQgaGFzaC1vYmplY3QgZmlsZTApICYmCisJZmlsZTFfc2hhPSQoZ2l0IGhhc2gtb2JqZWN0IGZpbGUxKSAmJgorCXRlc3QgIiRmaWxlMF9zaGEiICE9ICIkZmlsZTFfc2hhIiAmJgorCXBhdGgxX3NoYT0kKGdpdCBoYXNoLW9iamVjdCAtLXBhdGg9ZmlsZTEgZmlsZTApICYmCisJcGF0aDBfc2hhPSQoZ2l0IGhhc2gtb2JqZWN0IC0tcGF0aD1maWxlMCBmaWxlMSkgJiYKKwl0ZXN0ICIkZmlsZTBfc2hhIiA9ICIkcGF0aDBfc2hhIiAmJgorCXRlc3QgIiRmaWxlMV9zaGEiID0gIiRwYXRoMV9zaGEiICYmCisJcGF0aDFfc2hhPSQoY2F0IGZpbGUwIHwgZ2l0IGhhc2gtb2JqZWN0IC0tcGF0aD1maWxlMSAtLXN0ZGluKSAmJgorCXBhdGgwX3NoYT0kKGNhdCBmaWxlMSB8IGdpdCBoYXNoLW9iamVjdCAtLXBhdGg9ZmlsZTAgLS1zdGRpbikgJiYKKwl0ZXN0ICIkZmlsZTBfc2hhIiA9ICIkcGF0aDBfc2hhIiAmJgorCXRlc3QgIiRmaWxlMV9zaGEiID0gIiRwYXRoMV9zaGEiICYmCisJZ2l0IGNvbmZpZyAtLXVuc2V0IGNvcmUuYXV0b2NybGYKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgdGhhdCAtLW5vLWZpbHRlcnMgb3B0aW9uIHdvcmtzJyAnCisJZWNobyBmb29RIHwgdHIgUSAiXFwwMTUiID5maWxlMCAmJgorCWNwIGZpbGUwIGZpbGUxICYmCisJZWNobyAiZmlsZTAgLWNybGYiID4uZ2l0YXR0cmlidXRlcyAmJgorCWVjaG8gImZpbGUxIGNybGYiID4+LmdpdGF0dHJpYnV0ZXMgJiYKKwlnaXQgY29uZmlnIGNvcmUuYXV0b2NybGYgdHJ1ZSAmJgorCWZpbGUwX3NoYT0kKGdpdCBoYXNoLW9iamVjdCBmaWxlMCkgJiYKKwlmaWxlMV9zaGE9JChnaXQgaGFzaC1vYmplY3QgZmlsZTEpICYmCisJdGVzdCAiJGZpbGUwX3NoYSIgIT0gIiRmaWxlMV9zaGEiICYmCisJbm9maWx0ZXJzX2ZpbGUxPSQoZ2l0IGhhc2gtb2JqZWN0IC0tbm8tZmlsdGVycyBmaWxlMSkgJiYKKwl0ZXN0ICIkZmlsZTBfc2hhIiA9ICIkbm9maWx0ZXJzX2ZpbGUxIiAmJgorCW5vZmlsdGVyc19maWxlMT0kKGNhdCBmaWxlMSB8IGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluKSAmJgorCXRlc3QgIiRmaWxlMF9zaGEiID0gIiRub2ZpbHRlcnNfZmlsZTEiICYmCisJZ2l0IGNvbmZpZyAtLXVuc2V0IGNvcmUuYXV0b2NybGYKKycKKwogcG9wX3JlcG8KIAogZm9yIGFyZ3MgaW4gIi13IC0tc3RkaW4iICItLXN0ZGluIC13IjsgZG8KZGlmZiAtLWdpdCBhL3QvdDE1MDEtd29ya3RyZWUuc2ggYi90L3QxNTAxLXdvcmt0cmVlLnNoCmluZGV4IGMwMzllZTMuLjI3ZGM2YzUgMTAwNzU1Ci0tLSBhL3QvdDE1MDEtd29ya3RyZWUuc2gKKysrIGIvdC90MTUwMS13b3JrdHJlZS5zaApAQCAtOTIsNiArOTIsMTMgQEAKIHRlc3RfcmV2X3BhcnNlICdpbiByZXBvLmdpdC9zdWIvZGlyJyBmYWxzZSB0cnVlIHRydWUgc3ViL2Rpci8KIGNkIC4uLy4uLy4uLy4uIHx8IGV4aXQgMQogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZXRlY3RpbmcgZ2l0ZGlyIHdoZW4gY3dkIGlzIGluIGEgc3ViZGlyIG9mIGdpdGRpcicgJworCShleHBlY3RlZD0kKHB3ZCkvcmVwby5naXQgJiYKKwkgY2QgcmVwby5naXQvcmVmcyAmJgorCSB1bnNldCBHSVRfRElSICYmCisJIHRlc3QgIiRleHBlY3RlZCIgPSAiJChnaXQgcmV2LXBhcnNlIC0tZ2l0LWRpcikiKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXBvIGZpbmRzIGl0cyB3b3JrIHRyZWUnICcKIAkoY2QgcmVwby5naXQgJiYKIAkgOiA+IHdvcmsvc3ViL2Rpci91bnRyYWNrZWQgJiYKQEAgLTE3MSw3ICsxNzgsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZ3JlcCcgJwogCShjZCByZXBvLmdpdC93b3JrL3N1YiAmJgotCUdJVF9ESVI9Li4vLi4gR0lUX1dPUktfVFJFRT0uLiBnaXQgZ3JlcCAtbCBjaGFuZ2VkIHwgZ3JlcCAtcSBkaXIvdHJhY2tlZCkKKwlHSVRfRElSPS4uLy4uIEdJVF9XT1JLX1RSRUU9Li4gZ2l0IGdyZXAgLWwgY2hhbmdlZCB8IGdyZXAgZGlyL3RyYWNrZWQpCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MjAwNS1jaGVja291dC1pbmRleC1zeW1saW5rcy5zaCBiL3QvdDIwMDUtY2hlY2tvdXQtaW5kZXgtc3ltbGlua3Muc2gKaW5kZXggZWQxMmM0ZC4uOWZhNTYxMCAxMDA3NTUKLS0tIGEvdC90MjAwNS1jaGVja291dC1pbmRleC1zeW1saW5rcy5zaAorKysgYi90L3QyMDA1LWNoZWNrb3V0LWluZGV4LXN5bWxpbmtzLnNoCkBAIC0xMyw3ICsxMyw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICdwcmVwYXJhdGlvbicgJwogZ2l0IGNvbmZpZyBjb3JlLnN5bWxpbmtzIGZhbHNlICYmCi1sPSQoZWNobyAtbiBmaWxlIHwgZ2l0IGhhc2gtb2JqZWN0IC10IGJsb2IgLXcgLS1zdGRpbikgJiYKK2w9JChwcmludGYgZmlsZSB8IGdpdCBoYXNoLW9iamVjdCAtdCBibG9iIC13IC0tc3RkaW4pICYmCiBlY2hvICIxMjAwMDAgJGwJc3ltbGluayIgfCBnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCmRpZmYgLS1naXQgYS90L3QyMDExLWNoZWNrb3V0LWludmFsaWQtaGVhZC5zaCBiL3QvdDIwMTEtY2hlY2tvdXQtaW52YWxpZC1oZWFkLnNoCmluZGV4IDc2NGJiMGEuLjE1ZWJkYzIgMTAwNzU1Ci0tLSBhL3QvdDIwMTEtY2hlY2tvdXQtaW52YWxpZC1oZWFkLnNoCisrKyBiL3QvdDIwMTEtY2hlY2tvdXQtaW52YWxpZC1oZWFkLnNoCkBAIC0xMCw2ICsxMCwxMCBAQAogCWdpdCBjb21taXQgLW0gaW5pdGlhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCBzaG91bGQgbm90IHN0YXJ0IGJyYW5jaCBmcm9tIGEgdHJlZScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVja291dCAtYiBuZXdicmFuY2ggbWFzdGVyXnt0cmVlfQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCBtYXN0ZXIgZnJvbSBpbnZhbGlkIEhFQUQnICcKIAllY2hvIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgPi5naXQvSEVBRCAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgLS0KZGlmZiAtLWdpdCBhL3QvdDIxMDItdXBkYXRlLWluZGV4LXN5bWxpbmtzLnNoIGIvdC90MjEwMi11cGRhdGUtaW5kZXgtc3ltbGlua3Muc2gKaW5kZXggZjE5NWFlZi4uMWVkNDRlZSAxMDA3NTUKLS0tIGEvdC90MjEwMi11cGRhdGUtaW5kZXgtc3ltbGlua3Muc2gKKysrIGIvdC90MjEwMi11cGRhdGUtaW5kZXgtc3ltbGlua3Muc2gKQEAgLTEzLDEyICsxMywxMiBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAncHJlcGFyYXRpb24nICcKIGdpdCBjb25maWcgY29yZS5zeW1saW5rcyBmYWxzZSAmJgotbD0kKGVjaG8gLW4gZmlsZSB8IGdpdCBoYXNoLW9iamVjdCAtdCBibG9iIC13IC0tc3RkaW4pICYmCitsPSQocHJpbnRmIGZpbGUgfCBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyAtLXN0ZGluKSAmJgogZWNobyAiMTIwMDAwICRsCXN5bWxpbmsiIHwgZ2l0IHVwZGF0ZS1pbmRleCAtLWluZGV4LWluZm8nCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogJ21vZGlmeSB0aGUgc3ltYm9saWMgbGluaycgJwotZWNobyAtbiBuZXctZmlsZSA+IHN5bWxpbmsgJiYKK3ByaW50ZiBuZXctZmlsZSA+IHN5bWxpbmsgJiYKIGdpdCB1cGRhdGUtaW5kZXggc3ltbGluaycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCmRpZmYgLS1naXQgYS90L3QyMjAzLWFkZC1pbnRlbnQuc2ggYi90L3QyMjAzLWFkZC1pbnRlbnQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNThhMzI5OQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDIyMDMtYWRkLWludGVudC5zaApAQCAtMCwwICsxLDY0IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nSW50ZW50IHRvIGFkZCcKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludGVudCB0byBhZGQnICcKKwllY2hvIGhlbGxvID5maWxlICYmCisJZWNobyBoZWxsbyA+ZWxpZiAmJgorCWdpdCBhZGQgLU4gZmlsZSAmJgorCWdpdCBhZGQgZWxpZgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayByZXN1bHQgb2YgImFkZCAtTiInICcKKwlnaXQgbHMtZmlsZXMgLXMgZmlsZSA+YWN0dWFsICYmCisJZW1wdHk9JChnaXQgaGFzaC1vYmplY3QgLS1zdGRpbiA8L2Rldi9udWxsKSAmJgorCWVjaG8gIjEwMDY0NCAkZW1wdHkgMAlmaWxlIiA+ZXhwZWN0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnRlbnQgdG8gYWRkIGlzIGp1c3QgYW4gb3JkaW5hcnkgZW1wdHkgYmxvYicgJworCWdpdCBhZGQgLXUgJiYKKwlnaXQgbHMtZmlsZXMgLXMgZmlsZSA+YWN0dWFsICYmCisJZ2l0IGxzLWZpbGVzIC1zIGVsaWYgfCBzZWQgLWUgInMvZWxpZi9maWxlLyIgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW50ZW50IHRvIGFkZCBkb2VzIG5vdCBjbG9iYmVyIGV4aXN0aW5nIHBhdGhzJyAnCisJZ2l0IGFkZCAtTiBmaWxlIGVsaWYgJiYKKwllbXB0eT0kKGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluIDwvZGV2L251bGwpICYmCisJZ2l0IGxzLWZpbGVzIC1zID5hY3R1YWwgJiYKKwkhIGdyZXAgIiRlbXB0eSIgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nhbm5vdCBjb21taXQgd2l0aCBpLXQtYSBlbnRyeScgJworCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLWEgLW0gaW5pdGlhbCAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKworCWVjaG8geHl6enkgPnJlenJvdiAmJgorCWVjaG8gZnJvdHogPm5pdGZvbCAmJgorCWdpdCBhZGQgcmV6cm92ICYmCisJZ2l0IGFkZCAtTiBuaXRmb2wgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29tbWl0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NhbiBjb21taXQgd2l0aCBhbiB1bnJlbGF0ZWQgaS10LWEgZW50cnkgaW4gaW5kZXgnICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZWNobyB4eXp6eSA+cmV6cm92ICYmCisJZWNobyBmcm90eiA+bml0Zm9sICYmCisJZ2l0IGFkZCByZXpyb3YgJiYKKwlnaXQgYWRkIC1OIG5pdGZvbCAmJgorCWdpdCBjb21taXQgLW0gcGFydGlhbCByZXpyb3YKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2FuICJjb21taXQgLWEiIHdpdGggYW4gaS10LWEgZW50cnknICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJOiA+bml0Zm9sICYmCisJZ2l0IGFkZCAtTiBuaXRmb2wgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGFsbAorJworCit0ZXN0X2RvbmUKKwpkaWZmIC0tZ2l0IGEvdC90MjMwMC1jZC10by10b3BsZXZlbC5zaCBiL3QvdDIzMDAtY2QtdG8tdG9wbGV2ZWwuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTQyY2JmZQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDIzMDAtY2QtdG8tdG9wbGV2ZWwuc2gKQEAgLTAsMCArMSwzNyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2NkX3RvX3RvcGxldmVsJworCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9jZF90b190b3BsZXZlbCAoKSB7CisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJDIiICcKKwkJKAorCQkJY2QgJyInJDEnIicgJiYKKwkJCS4gZ2l0LXNoLXNldHVwICYmCisJCQljZF90b190b3BsZXZlbCAmJgorCQkJWyAiJCh1bnNldCBQV0Q7IC9iaW4vcHdkKSIgPSAiJFRPUExFVkVMIiBdCisJCSkKKwknCit9CisKK1RPUExFVkVMPSIkKHVuc2V0IFBXRDsgL2Jpbi9wd2QpL3JlcG8iCitta2RpciAtcCByZXBvL3N1Yi9kaXIKK212IC5naXQgcmVwby8KK1NVQkRJUkVDVE9SWV9PSz0xCisKK3Rlc3RfY2RfdG9fdG9wbGV2ZWwgcmVwbyAnYXQgcGh5c2ljYWwgcm9vdCcKKwordGVzdF9jZF90b190b3BsZXZlbCByZXBvL3N1Yi9kaXIgJ2F0IHBoeXNpY2FsIHN1YmRpcicKKworbG4gLXMgcmVwbyBzeW1yZXBvCit0ZXN0X2NkX3RvX3RvcGxldmVsIHN5bXJlcG8gJ2F0IHN5bWJvbGljIHJvb3QnCisKK2xuIC1zIHJlcG8vc3ViL2RpciBzdWJkaXItbGluawordGVzdF9jZF90b190b3BsZXZlbCBzdWJkaXItbGluayAnYXQgc3ltYm9saWMgc3ViZGlyJworCitjZCByZXBvCitsbiAtcyBzdWIvZGlyIGludGVybmFsLWxpbmsKK3Rlc3RfY2RfdG9fdG9wbGV2ZWwgaW50ZXJuYWwtbGluayAnYXQgaW50ZXJuYWwgc3ltYm9saWMgc3ViZGlyJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDMwMDEtbHMtZmlsZXMtb3RoZXJzLWV4Y2x1ZGUuc2ggYi90L3QzMDAxLWxzLWZpbGVzLW90aGVycy1leGNsdWRlLnNoCmluZGV4IDg2NjY5NDYuLjg1YWVmMTIgMTAwNzU1Ci0tLSBhL3QvdDMwMDEtbHMtZmlsZXMtb3RoZXJzLWV4Y2x1ZGUuc2gKKysrIGIvdC90MzAwMS1scy1maWxlcy1vdGhlcnMtZXhjbHVkZS5zaApAQCAtMTQwLDQgKzE0MCwxMCBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25lZ2F0ZWQgZXhjbHVkZSBtYXRjaGVzIGNhbiBvdmVycmlkZSBwcmV2aW91cyBvbmVzJyAnCisKKwlnaXQgbHMtZmlsZXMgLS1vdGhlcnMgLS1leGNsdWRlPSJhLioiIC0tZXhjbHVkZT0iIWEuMSIgPm91dHB1dCAmJgorCWdyZXAgIl5hLjEiIG91dHB1dAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDMyMDAtYnJhbmNoLnNoIGIvdC90MzIwMC1icmFuY2guc2gKaW5kZXggMjVlOTk3MS4uNjFhMjAxMCAxMDA3NTUKLS0tIGEvdC90MzIwMC1icmFuY2guc2gKKysrIGIvdC90MzIwMC1icmFuY2guc2gKQEAgLTE5NCw3ICsxOTQsOCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGRlbGV0aW5nIGJyYW5jaCB3aXRob3V0IGNvbmZpZycgXAogICAgICdnaXQgYnJhbmNoIG15NyBzICYmCi0gICAgIHRlc3QgIiQoZ2l0IGJyYW5jaCAtZCBteTcgMj4mMSkiID0gIkRlbGV0ZWQgYnJhbmNoIG15Ny4iJworICAgICBzaGExPSQoZ2l0IHJldi1wYXJzZSBteTcgfCBjdXQgLWMgMS03KSAmJgorICAgICB0ZXN0ICIkKGdpdCBicmFuY2ggLWQgbXk3IDI+JjEpIiA9ICJEZWxldGVkIGJyYW5jaCBteTcgKCRzaGExKS4iJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IC0tdHJhY2sgd2l0aG91dCAuZmV0Y2ggZW50cmllcycgXAogICAgICdnaXQgYnJhbmNoIC0tdHJhY2sgbXk4ICYmCmRpZmYgLS1naXQgYS90L3QzNDA5LXJlYmFzZS1ob29rLnNoIGIvdC90MzQwOS1yZWJhc2UtaG9vay5zaAppbmRleCBiYzkzZGRhLi4xZjFiODUwIDEwMDc1NQotLS0gYS90L3QzNDA5LXJlYmFzZS1ob29rLnNoCisrKyBiL3QvdDM0MDktcmViYXNlLWhvb2suc2gKQEAgLTEyMyw0ICsxMjMsMjAgQEAKIAl0ZXN0IDAgPSAkKGdpdCByZXYtbGlzdCBIRUFELi4uc2lkZSB8IHdjIC1sKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLS1uby12ZXJpZnkgb3ZlcnJpZGVzIHByZS1yZWJhc2UgKDEpJyAnCisJZ2l0IGNoZWNrb3V0IHRlc3QgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIHNpZGUgJiYKKwlnaXQgcmViYXNlIC0tbm8tdmVyaWZ5IG1hc3RlciAmJgorCXRlc3QgInokKGdpdCBzeW1ib2xpYy1yZWYgSEVBRCkiID0genJlZnMvaGVhZHMvdGVzdCAmJgorCXRlc3QgInokKGNhdCBnaXQpIiA9IHp3b3JsZAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLS1uby12ZXJpZnkgb3ZlcnJpZGVzIHByZS1yZWJhc2UgKDIpJyAnCisJZ2l0IGNoZWNrb3V0IHRlc3QgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIHNpZGUgJiYKKwlFRElUT1I9dHJ1ZSBnaXQgcmViYXNlIC0tbm8tdmVyaWZ5IC1pIG1hc3RlciAmJgorCXRlc3QgInokKGdpdCBzeW1ib2xpYy1yZWYgSEVBRCkiID0genJlZnMvaGVhZHMvdGVzdCAmJgorCXRlc3QgInokKGNhdCBnaXQpIiA9IHp3b3JsZAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MDktcmViYXNlLXByZXNlcnZlLW1lcmdlcy5zaCBiL3QvdDM0MDktcmViYXNlLXByZXNlcnZlLW1lcmdlcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNmM4MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvdC90MzQwOS1yZWJhc2UtcHJlc2VydmUtbWVyZ2VzLnNoCkBAIC0wLDAgKzEsOTUgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQoQykgMjAwOCBTdGVwaGVuIEhhYmVybWFubiAmIEFuZHJlYXMgRXJpY3Nzb24KKyMKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCByZWJhc2UgLXAgc2hvdWxkIHByZXNlcnZlIG1lcmdlcworCitSdW4gImdpdCByZWJhc2UgLXAiIGFuZCBjaGVjayB0aGF0IG1lcmdlcyBhcmUgcHJvcGVybHkgY2FycmllZCBhbG9uZworJworLiAuL3Rlc3QtbGliLnNoCisKK0dJVF9BVVRIT1JfRU1BSUw9Ym9ndXNfZW1haWxfYWRkcmVzcworZXhwb3J0IEdJVF9BVVRIT1JfRU1BSUwKKworIyBDbG9uZSAxICh0cml2aWFsIG1lcmdlKToKKyMKKyMgQTEtLUEyICA8LS0gb3JpZ2luL21hc3RlcgorIyAgXCAgIFwKKyMgICBCMS0tTSAgPC0tIHRvcGljCisjICAgIFwKKyMgICAgIEIyICA8LS0gb3JpZ2luL3RvcGljCisjCisjIENsb25lIDIgKGNvbmZsaWN0aW5nIG1lcmdlKToKKyMKKyMgQTEtLUEyLS1CMyAgIDwtLSBvcmlnaW4vbWFzdGVyCisjICBcICAgICAgIFwKKyMgICBCMS0tLS0tLU0gIDwtLSB0b3BpYworIyAgICBcCisjICAgICBCMiAgICAgICA8LS0gb3JpZ2luL3RvcGljCisjCisjIEluIGJvdGggY2FzZXMsICd0b3BpYycgaXMgcmViYXNlZCBvbnRvICdvcmlnaW4vdG9waWMnLgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBmb3IgbWVyZ2UtcHJlc2VydmluZyByZWJhc2UnIFwKKwknZWNobyBGaXJzdCA+IEEgJiYKKwlnaXQgYWRkIEEgJiYKKwlnaXQtY29tbWl0IC1tICJBZGQgQTEiICYmCisJZ2l0IGNoZWNrb3V0IC1iIHRvcGljICYmCisJZWNobyBTZWNvbmQgPiBCICYmCisJZ2l0IGFkZCBCICYmCisJZ2l0LWNvbW1pdCAtbSAiQWRkIEIxIiAmJgorCWdpdCBjaGVja291dCAtZiBtYXN0ZXIgJiYKKwllY2hvIFRoaXJkID4+IEEgJiYKKwlnaXQtY29tbWl0IC1hIC1tICJNb2RpZnkgQTIiICYmCisKKwlnaXQgY2xvbmUgLi8uIGNsb25lMSAmJgorCWNkIGNsb25lMSAmJgorCWdpdCBjaGVja291dCAtYiB0b3BpYyBvcmlnaW4vdG9waWMgJiYKKwlnaXQgbWVyZ2Ugb3JpZ2luL21hc3RlciAmJgorCWNkIC4uICYmCisKKwllY2hvIEZpZnRoID4gQiAmJgorCWdpdCBhZGQgQiAmJgorCWdpdCBjb21taXQgLW0gIkFkZCBkaWZmZXJlbnQgQiIgJiYKKworCWdpdCBjbG9uZSAuLy4gY2xvbmUyICYmCisJY2QgY2xvbmUyICYmCisJZ2l0IGNoZWNrb3V0IC1iIHRvcGljIG9yaWdpbi90b3BpYyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBvcmlnaW4vbWFzdGVyICYmCisJZWNobyBSZXNvbHZlZCA+IEIgJiYKKwlnaXQgYWRkIEIgJiYKKwlnaXQgY29tbWl0IC1tICJNZXJnZSBvcmlnaW4vbWFzdGVyIGludG8gdG9waWMiICYmCisJY2QgLi4gJiYKKworCWdpdCBjaGVja291dCB0b3BpYyAmJgorCWVjaG8gRm91cnRoID4+IEIgJiYKKwlnaXQgY29tbWl0IC1hIC1tICJNb2RpZnkgQjIiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtcCBmYWtlcyBpbnRlcmFjdGl2ZSByZWJhc2UnICcKKwkoCisJY2QgY2xvbmUxICYmCisJZ2l0IGZldGNoICYmCisJZ2l0IHJlYmFzZSAtcCBvcmlnaW4vdG9waWMgJiYKKwl0ZXN0IDEgPSAkKGdpdCByZXYtbGlzdCAtLWFsbCAtLXByZXR0eT1vbmVsaW5lIHwgZ3JlcCAiTW9kaWZ5IEEiIHwgd2MgLWwpICYmCisJdGVzdCAxID0gJChnaXQgcmV2LWxpc3QgLS1hbGwgLS1wcmV0dHk9b25lbGluZSB8IGdyZXAgIk1lcmdlIGNvbW1pdCIgfCB3YyAtbCkKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tY29udGludWUgd29ya3MgYWZ0ZXIgYSBjb25mbGljdCcgJworCSgKKwljZCBjbG9uZTIgJiYKKwlnaXQgZmV0Y2ggJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1wIG9yaWdpbi90b3BpYyAmJgorCXRlc3QgMiA9ICQoZ2l0IGxzLWZpbGVzIEIgfCB3YyAtbCkgJiYKKwllY2hvIFJlc29sdmVkIGFnYWluID4gQiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLS1jb250aW51ZSAmJgorCWdyZXAgIl5AQEAgIiAuZ2l0L3JlYmFzZS1tZXJnZS9wYXRjaCAmJgorCWdpdCBhZGQgQiAmJgorCWdpdCByZWJhc2UgLS1jb250aW51ZSAmJgorCXRlc3QgMSA9ICQoZ2l0IHJldi1saXN0IC0tYWxsIC0tcHJldHR5PW9uZWxpbmUgfCBncmVwICJNb2RpZnkgQSIgfCB3YyAtbCkgJiYKKwl0ZXN0IDEgPSAkKGdpdCByZXYtbGlzdCAtLWFsbCAtLXByZXR0eT1vbmVsaW5lIHwgZ3JlcCAiQWRkIGRpZmZlcmVudCIgfCB3YyAtbCkgJiYKKwl0ZXN0IDEgPSAkKGdpdCByZXYtbGlzdCAtLWFsbCAtLXByZXR0eT1vbmVsaW5lIHwgZ3JlcCAiTWVyZ2Ugb3JpZ2luIiB8IHdjIC1sKQorCSkKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzNDEwLXJlYmFzZS1wcmVzZXJ2ZS1kcm9wcGVkLW1lcmdlcy5zaCBiL3QvdDM0MTAtcmViYXNlLXByZXNlcnZlLWRyb3BwZWQtbWVyZ2VzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU4MTY0MTUKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzNDEwLXJlYmFzZS1wcmVzZXJ2ZS1kcm9wcGVkLW1lcmdlcy5zaApAQCAtMCwwICsxLDEzOSBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAwOCBTdGVwaGVuIEhhYmVybWFuCisjCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCByZWJhc2UgcHJlc2VydmUgbWVyZ2VzCisKK1RoaXMgdGVzdCBydW5zIGdpdCByZWJhc2Ugd2l0aCBwcmVzZXJ2ZSBtZXJnZXMgYW5kIGVuc3VyZXMgY29tbWl0cworZHJvcHBlZCBieSB0aGUgLS1jaGVycnktcGljayBmbGFnIGhhdmUgdGhlaXIgY2hpbGRyZW5zIHBhcmVudHMKK3Jld3JpdHRlbi4KKycKKy4gLi90ZXN0LWxpYi5zaAorCisjIHNldCB1cCB0d28gYnJhbmNoZXMgbGlrZSB0aGlzOgorIworIyBBIC0gQiAtIEMgLSBEIC0gRQorIyAgIFwKKyMgICAgIEYgLSBHIC0gSAorIyAgICAgICBcCisjICAgICAgICAgSQorIworIyB3aGVyZSBCLCBEIGFuZCBHIHRvdWNoIHRoZSBzYW1lIGZpbGUuCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJOiA+IGZpbGUxICYmCisJZ2l0IGFkZCBmaWxlMSAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gQSAmJgorCWdpdCB0YWcgQSAmJgorCWVjaG8gMSA+IGZpbGUxICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBCIGZpbGUxICYmCisJOiA+IGZpbGUyICYmCisJZ2l0IGFkZCBmaWxlMiAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gQyAmJgorCWVjaG8gMiA+IGZpbGUxICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBEIGZpbGUxICYmCisJOiA+IGZpbGUzICYmCisJZ2l0IGFkZCBmaWxlMyAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gRSAmJgorCWdpdCB0YWcgRSAmJgorCWdpdCBjaGVja291dCAtYiBicmFuY2gxIEEgJiYKKwk6ID4gZmlsZTQgJiYKKwlnaXQgYWRkIGZpbGU0ICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBGICYmCisJZ2l0IHRhZyBGICYmCisJZWNobyAzID4gZmlsZTEgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIEcgZmlsZTEgJiYKKwlnaXQgdGFnIEcgJiYKKwk6ID4gZmlsZTUgJiYKKwlnaXQgYWRkIGZpbGU1ICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBIICYmCisJZ2l0IHRhZyBIICYmCisJZ2l0IGNoZWNrb3V0IC1iIGJyYW5jaDIgRiAmJgorCTogPiBmaWxlNiAmJgorCWdpdCBhZGQgZmlsZTYgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIEkgJiYKKwlnaXQgdGFnIEkKKycKKworIyBBIC0gQiAtIEMgLSBEIC0gRQorIyAgIFwgICAgICAgICAgICAgXCBcCisjICAgICBGIC0gRyAtIEggLS0gTCBcICAgICAgICAtLT4gICBMCisjICAgICAgIFwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgXAorIyAgICAgICAgIEkgLS0gRzIgLS0gSiAtLSBLICAgICAgICAgICBJIC0tIEsKKyMgRzIgPSBzYW1lIGNoYW5nZXMgYXMgRwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2tpcCBzYW1lLXJlc29sdXRpb24gbWVyZ2VzIHdpdGggLXAnICcKKwlnaXQgY2hlY2tvdXQgYnJhbmNoMSAmJgorCSEgZ2l0IG1lcmdlIEUgJiYKKwllY2hvIDIzID4gZmlsZTEgJiYKKwlnaXQgYWRkIGZpbGUxICYmCisJZ2l0IGNvbW1pdCAtbSBMICYmCisJZ2l0IGNoZWNrb3V0IGJyYW5jaDIgJiYKKwllY2hvIDMgPiBmaWxlMSAmJgorCWdpdCBjb21taXQgLWEgLW0gRzIgJiYKKwkhIGdpdCBtZXJnZSBFICYmCisJZWNobyAyMyA+IGZpbGUxICYmCisJZ2l0IGFkZCBmaWxlMSAmJgorCWdpdCBjb21taXQgLW0gSiAmJgorCWVjaG8gZmlsZTcgPiBmaWxlNyAmJgorCWdpdCBhZGQgZmlsZTcgJiYKKwlnaXQgY29tbWl0IC1tIEsgJiYKKwlHSVRfRURJVE9SPTogZ2l0IHJlYmFzZSAtaSAtcCBicmFuY2gxICYmCisJdGVzdCAkKGdpdCByZXYtcGFyc2UgYnJhbmNoMl5eKSA9ICQoZ2l0IHJldi1wYXJzZSBicmFuY2gxKSAmJgorCXRlc3QgIjIzIiA9ICIkKGNhdCBmaWxlMSkiICYmCisJdGVzdCAiIiA9ICIkKGNhdCBmaWxlNikiICYmCisJdGVzdCAiZmlsZTciID0gIiQoY2F0IGZpbGU3KSIgJiYKKworCWdpdCBjaGVja291dCBicmFuY2gxICYmCisJZ2l0IHJlc2V0IC0taGFyZCBIICYmCisJZ2l0IGNoZWNrb3V0IGJyYW5jaDIgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIEkKKycKKworIyBBIC0gQiAtIEMgLSBEIC0gRQorIyAgIFwgICAgICAgICAgICAgXCBcCisjICAgICBGIC0gRyAtIEggLS0gTCBcICAgICAgICAtLT4gICBMCisjICAgICAgIFwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgXAorIyAgICAgICAgIEkgLS0gRzIgLS0gSiAtLSBLICAgICAgICAgICBJIC0tIEcyIC0tIEsKKyMgRzIgPSBkaWZmZXJlbnQgY2hhbmdlcyBhcyBHCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdrZWVwIGRpZmZlcmVudC1yZXNvbHV0aW9uIG1lcmdlcyB3aXRoIC1wJyAnCisJZ2l0IGNoZWNrb3V0IGJyYW5jaDEgJiYKKwkhIGdpdCBtZXJnZSBFICYmCisJZWNobyAyMyA+IGZpbGUxICYmCisJZ2l0IGFkZCBmaWxlMSAmJgorCWdpdCBjb21taXQgLW0gTCAmJgorCWdpdCBjaGVja291dCBicmFuY2gyICYmCisJZWNobyA0ID4gZmlsZTEgJiYKKwlnaXQgY29tbWl0IC1hIC1tIEcyICYmCisJISBnaXQgbWVyZ2UgRSAmJgorCWVjaG8gMjQgPiBmaWxlMSAmJgorCWdpdCBhZGQgZmlsZTEgJiYKKwlnaXQgY29tbWl0IC1tIEogJiYKKwllY2hvIGZpbGU3ID4gZmlsZTcgJiYKKwlnaXQgYWRkIGZpbGU3ICYmCisJZ2l0IGNvbW1pdCAtbSBLICYmCisJISBHSVRfRURJVE9SPTogZ2l0IHJlYmFzZSAtaSAtcCBicmFuY2gxICYmCisJZWNobyAyMzQgPiBmaWxlMSAmJgorCWdpdCBhZGQgZmlsZTEgJiYKKwlHSVRfRURJVE9SPTogZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJdGVzdCAkKGdpdCByZXYtcGFyc2UgYnJhbmNoMl5eXikgPSAkKGdpdCByZXYtcGFyc2UgYnJhbmNoMSkgJiYKKwl0ZXN0ICIyMzQiID0gIiQoY2F0IGZpbGUxKSIgJiYKKwl0ZXN0ICIiID0gIiQoY2F0IGZpbGU2KSIgJiYKKwl0ZXN0ICJmaWxlNyIgPSAiJChjYXQgZmlsZTcpIiAmJgorCisJZ2l0IGNoZWNrb3V0IGJyYW5jaDEgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIEggJiYKKwlnaXQgY2hlY2tvdXQgYnJhbmNoMiAmJgorCWdpdCByZXNldCAtLWhhcmQgSQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MTEtcmViYXNlLXByZXNlcnZlLWFyb3VuZC1tZXJnZXMuc2ggYi90L3QzNDExLXJlYmFzZS1wcmVzZXJ2ZS1hcm91bmQtbWVyZ2VzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFhY2ZhYWUKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzNDExLXJlYmFzZS1wcmVzZXJ2ZS1hcm91bmQtbWVyZ2VzLnNoCkBAIC0wLDAgKzEsMTM1IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXBoZW4gSGFiZXJtYW4KKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHJlYmFzZSBwcmVzZXJ2ZSBtZXJnZXMKKworVGhpcyB0ZXN0IHJ1bnMgZ2l0IHJlYmFzZSB3aXRoIGFuZCB0cmllcyB0byBzcXVhc2ggYSBjb21taXQgZnJvbSBhZnRlciBhIG1lcmdlCit0byBiZWZvcmUgdGhlIG1lcmdlLgorJworLiAuL3Rlc3QtbGliLnNoCisKKyMgQ29weS9wYXN0ZSBmcm9tIHQzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaAorZWNobyAiIyEkU0hFTExfUEFUSCIgPmZha2UtZWRpdG9yLnNoCitjYXQgPj4gZmFrZS1lZGl0b3Iuc2ggPDxcRU9GCitjYXNlICIkMSIgaW4KKyovQ09NTUlUX0VESVRNU0cpCisJdGVzdCAteiAiJEZBS0VfQ09NTUlUX01FU1NBR0UiIHx8IGVjaG8gIiRGQUtFX0NPTU1JVF9NRVNTQUdFIiA+ICIkMSIKKwl0ZXN0IC16ICIkRkFLRV9DT01NSVRfQU1FTkQiIHx8IGVjaG8gIiRGQUtFX0NPTU1JVF9BTUVORCIgPj4gIiQxIgorCWV4aXQKKwk7OworZXNhYwordGVzdCAteiAiJEVYUEVDVF9DT1VOVCIgfHwKKwl0ZXN0ICIkRVhQRUNUX0NPVU5UIiA9ICQoc2VkIC1lICcvXiMvZCcgLWUgJy9eJC9kJyA8ICIkMSIgfCB3YyAtbCkgfHwKKwlleGl0Cit0ZXN0IC16ICIkRkFLRV9MSU5FUyIgJiYgZXhpdAorZ3JlcCAtdiAnXiMnIDwgIiQxIiA+ICIkMSIudG1wCitybSAtZiAiJDEiCitjYXQgIiQxIi50bXAKK2FjdGlvbj1waWNrCitmb3IgbGluZSBpbiAkRkFLRV9MSU5FUzsgZG8KKwljYXNlICRsaW5lIGluCisJc3F1YXNofGVkaXQpCisJCWFjdGlvbj0iJGxpbmUiOzsKKwkqKQorCQllY2hvIHNlZCAtbiAiJHtsaW5lfXMvXnBpY2svJGFjdGlvbi9wIgorCQlzZWQgLW4gIiR7bGluZX1wIiA8ICIkMSIudG1wCisJCXNlZCAtbiAiJHtsaW5lfXMvXnBpY2svJGFjdGlvbi9wIiA8ICIkMSIudG1wID4+ICIkMSIKKwkJYWN0aW9uPXBpY2s7OworCWVzYWMKK2RvbmUKK0VPRgorCit0ZXN0X3NldF9lZGl0b3IgIiQocHdkKS9mYWtlLWVkaXRvci5zaCIKK2NobW9kIGEreCBmYWtlLWVkaXRvci5zaAorCisjIHNldCB1cCB0d28gYnJhbmNoZXMgbGlrZSB0aGlzOgorIworIyBBMSAtIEIxIC0gRDEgLSBFMSAtIEYxCisjICAgICAgIFwgICAgICAgIC8KKyMgICAgICAgIC0tIEMxIC0tCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJdG91Y2ggYSAmJgorCXRvdWNoIGIgJiYKKwlnaXQgYWRkIGEgJiYKKwlnaXQgY29tbWl0IC1tIEExICYmCisJZ2l0IHRhZyBBMQorCWdpdCBhZGQgYiAmJgorCWdpdCBjb21taXQgLW0gQjEgJiYKKwlnaXQgdGFnIEIxICYmCisJZ2l0IGNoZWNrb3V0IC1iIGJyYW5jaCAmJgorCXRvdWNoIGMgJiYKKwlnaXQgYWRkIGMgJiYKKwlnaXQgY29tbWl0IC1tIEMxICYmCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCXRvdWNoIGQgJiYKKwlnaXQgYWRkIGQgJiYKKwlnaXQgY29tbWl0IC1tIEQxICYmCisJZ2l0IG1lcmdlIGJyYW5jaCAmJgorCXRvdWNoIGYgJiYKKwlnaXQgYWRkIGYgJiYKKwlnaXQgY29tbWl0IC1tIEYxICYmCisJZ2l0IHRhZyBGMQorJworCisjIFNob3VsZCByZXN1bHQgaW46CisjCisjIEExIC0gQjEgLSBEMiAtIEUyCisjICAgICAgIFwgICAgICAgIC8KKyMgICAgICAgIC0tIEMxIC0tCisjCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzcXVhc2ggRjEgaW50byBEMScgJworCUZBS0VfTElORVM9IjEgc3F1YXNoIDMgMiIgZ2l0IHJlYmFzZSAtaSAtcCBCMSAmJgorCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBIRUFEXjIpIiA9ICIkKGdpdCByZXYtcGFyc2UgYnJhbmNoKSIgJiYKKwl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgSEVBRH4yKSIgPSAiJChnaXQgcmV2LXBhcnNlIEIxKSIgJiYKKwlnaXQgdGFnIEUyCisnCisKKyMgU3RhcnQgd2l0aDoKKyMKKyMgQTEgLSBCMSAtIEQyIC0gRTIKKyMgIFwKKyMgICBHMSAtLS0tIEwxIC0tLS0gTTEKKyMgICAgXCAgICAgICAgICAgICAvCisjICAgICBIMSAtLSBKMSAtLSBLMQorIyAgICAgIFwgICAgICAgICAvCisjICAgICAgICAtLSBJMSAtLQorIworIyBBbmQgcmViYXNlIEcxLi5NMSBvbnRvIEUyCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSB0d28gbGV2ZWxzIG9mIG1lcmdlJyAnCisJZ2l0IGNoZWNrb3V0IC1iIGJyYW5jaDIgQTEgJiYKKwl0b3VjaCBnICYmCisJZ2l0IGFkZCBnICYmCisJZ2l0IGNvbW1pdCAtbSBHMSAmJgorCWdpdCBjaGVja291dCAtYiBicmFuY2gzICYmCisJdG91Y2ggaAorCWdpdCBhZGQgaCAmJgorCWdpdCBjb21taXQgLW0gSDEgJiYKKwlnaXQgY2hlY2tvdXQgLWIgYnJhbmNoNCAmJgorCXRvdWNoIGkgJiYKKwlnaXQgYWRkIGkgJiYKKwlnaXQgY29tbWl0IC1tIEkxICYmCisJZ2l0IHRhZyBJMSAmJgorCWdpdCBjaGVja291dCBicmFuY2gzICYmCisJdG91Y2ggaiAmJgorCWdpdCBhZGQgaiAmJgorCWdpdCBjb21taXQgLW0gSjEgJiYKKwlnaXQgbWVyZ2UgSTEgLS1uby1jb21taXQgJiYKKwlnaXQgY29tbWl0IC1tIEsxICYmCisJZ2l0IHRhZyBLMSAmJgorCWdpdCBjaGVja291dCBicmFuY2gyICYmCisJdG91Y2ggbCAmJgorCWdpdCBhZGQgbCAmJgorCWdpdCBjb21taXQgLW0gTDEgJiYKKwlnaXQgbWVyZ2UgSzEgLS1uby1jb21taXQgJiYKKwlnaXQgY29tbWl0IC1tIE0xICYmCisJR0lUX0VESVRPUj06IGdpdCByZWJhc2UgLWkgLXAgRTIgJiYKKwl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgSEVBRH4zKSIgPSAiJChnaXQgcmV2LXBhcnNlIEUyKSIgJiYKKwl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgSEVBRH4yKSIgPSAiJChnaXQgcmV2LXBhcnNlIEhFQUReMl4yfjIpIiAmJgorCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBIRUFEXjJeMV4xKSIgPSAiJChnaXQgcmV2LXBhcnNlIEhFQUReMl4yXjEpIgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM1MDQtY2hlcnJ5LXBpY2stcmVyZXJlLnNoIGIvdC90MzUwNC1jaGVycnktcGljay1yZXJlcmUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjdiMzUxOAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDM1MDQtY2hlcnJ5LXBpY2stcmVyZXJlLnNoCkBAIC0wLDAgKzEsNDUgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdjaGVycnktcGljayBzaG91bGQgcmVyZXJlIGZvciBjb25mbGljdHMnCisKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwllY2hvIGZvbyA+Zm9vICYmCisJZ2l0IGFkZCBmb28gJiYgdGVzdF90aWNrICYmIGdpdCBjb21taXQgLXEgLW0gMSAmJgorCWVjaG8gZm9vLW1hc3RlciA+Zm9vICYmCisJZ2l0IGFkZCBmb28gJiYgdGVzdF90aWNrICYmIGdpdCBjb21taXQgLXEgLW0gMiAmJgorCisJZ2l0IGNoZWNrb3V0IC1iIGRldiBIRUFEXiAmJgorCWVjaG8gZm9vLWRldiA+Zm9vICYmCisJZ2l0IGFkZCBmb28gJiYgdGVzdF90aWNrICYmIGdpdCBjb21taXQgLXEgLW0gMyAmJgorCWdpdCBjb25maWcgcmVyZXJlLmVuYWJsZWQgdHJ1ZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb25mbGljdGluZyBtZXJnZScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZml4dXAnICcKKwllY2hvIGZvby1kZXYgPmZvbyAmJgorCWdpdCBhZGQgZm9vICYmIHRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1xIC1tIDQgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIEhFQUReCisJZWNobyBmb28tZGV2ID5leHBlY3QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgY29uZmxpY3QnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2hlcnJ5LXBpY2sgbWFzdGVyICYmCisJdGVzdF9jbXAgZXhwZWN0IGZvbworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWNvbmZpZ3VyZScgJworCWdpdCBjb25maWcgcmVyZXJlLmVuYWJsZWQgZmFsc2UKKwlnaXQgcmVzZXQgLS1oYXJkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIGNvbmZsaWN0IHdpdGhvdXQgcmVyZXJlJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZXJyeS1waWNrIG1hc3RlciAmJgorCXRlc3RfbXVzdF9mYWlsIHRlc3RfY21wIGV4cGVjdCBmb28KKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzNjAwLXJtLnNoIGIvdC90MzYwMC1ybS5zaAppbmRleCA2NmFjYTk5Li45NTU0MmU5IDEwMDc1NQotLS0gYS90L3QzNjAwLXJtLnNoCisrKyBiL3QvdDM2MDAtcm0uc2gKQEAgLTE4Nyw2ICsxODcsMTkgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgbHMtZmlsZXMgLS1lcnJvci11bm1hdGNoIGJhegogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWZ1c2UgdG8gcmVtb3ZlIGNhY2hlZCBlbXB0eSBmaWxlIHdpdGggbW9kaWZpY2F0aW9ucycgJworCT5lbXB0eSAmJgorCWdpdCBhZGQgZW1wdHkgJiYKKwllY2hvIGNvbnRlbnQgPmVtcHR5ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIC0tY2FjaGVkIGVtcHR5CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW92ZSBpbnRlbnQtdG8tYWRkIGZpbGUgd2l0aG91dCAtLWZvcmNlJyAnCisJZWNobyBjb250ZW50ID5pbnRlbnQtdG8tYWRkICYmCisJZ2l0IGFkZCAtTiBpbnRlbnQtdG8tYWRkCisJZ2l0IHJtIC0tY2FjaGVkIGludGVudC10by1hZGQKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnUmVjdXJzaXZlIHRlc3Qgc2V0dXAnICcKIAlta2RpciAtcCBmcm90eiAmJgogCWVjaG8gcWZ3ZnEgPmZyb3R6L25pdGZvbCAmJgpAQCAtMjM4LDQgKzI1MSwyMSBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nob2tpbmcgImdpdCBybSIgc2hvdWxkIG5vdCBsZXQgaXQgZGllIHdpdGggY3J1ZnQnICcKKwlnaXQgcmVzZXQgLXEgLS1oYXJkICYmCisJSD0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwICYmCisJaT0wICYmCisJd2hpbGUgdGVzdCAkaSAtbHQgMTIwMDAKKwlkbworCSAgICBlY2hvICIxMDA2NDQgJEggMAlzb21lLWZpbGUtJGkiCisJICAgIGk9JCgoICRpICsgMSApKQorCWRvbmUgfCBnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbyAmJgorCWdpdCBybSAtbiAic29tZS1maWxlLSoiIHwgOjsKKwl0ZXN0IC1mIC5naXQvaW5kZXgubG9jaworCXN0YXR1cz0kPworCXJtIC1mIC5naXQvaW5kZXgubG9jaworCWdpdCByZXNldCAtcSAtLWhhcmQKKwl0ZXN0ICIkc3RhdHVzIiAhPSAwCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzcwMC1hZGQuc2ggYi90L3QzNzAwLWFkZC5zaAppbmRleCAyYWM5M2EzLi45ZjY0NTRkIDEwMDc1NQotLS0gYS90L3QzNzAwLWFkZC5zaAorKysgYi90L3QzNzAwLWFkZC5zaApAQCAtMjI2LDcgKzIyNiw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCXRvdWNoIGZvXFtvdVxdYmFyIGZvb2JhciAmJgogCWdpdCBhZGQgJ1wnJ2ZvXFtvdVxdYmFyJ1wnJyAmJgotCWdpdCBscy1maWxlcyBmb1xbb3VcXWJhciB8IGdyZXAgLUYgZm9cW291XF1iYXIgJiYKKwlnaXQgbHMtZmlsZXMgZm9cW291XF1iYXIgfCBmZ3JlcCBmb1xbb3VcXWJhciAmJgogCSEgKCBnaXQgbHMtZmlsZXMgZm9vYmFyIHwgZ3JlcCBmb29iYXIgKQogJwogCmRpZmYgLS1naXQgYS90L3QzOTAwLWkxOG4tY29tbWl0LnNoIGIvdC90MzkwMC1pMThuLWNvbW1pdC5zaAppbmRleCBmMzEzNTMzLi43ODRjMzFhIDEwMDc1NQotLS0gYS90L3QzOTAwLWkxOG4tY29tbWl0LnNoCisrKyBiL3QvdDM5MDAtaTE4bi1jb21taXQuc2gKQEAgLTE2LDcgKzE2LDcgQEAKIAk6ID5GICYmCiAJZ2l0IGFkZCBGICYmCiAJVD0kKGdpdCB3cml0ZS10cmVlKSAmJgotCUM9JChnaXQgY29tbWl0LXRyZWUgJFQgPC4uL3QzOTAwLzEtVVRGLTgudHh0KSAmJgorCUM9JChnaXQgY29tbWl0LXRyZWUgJFQgPCIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLzEtVVRGLTgudHh0KSAmJgogCWdpdCB1cGRhdGUtcmVmIEhFQUQgJEMgJiYKIAlnaXQgdGFnIEMwCiAnCkBAIC0zMiw3ICszMiw3IEBACiAJCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyAkSCAmJgogCQlnaXQgY2hlY2tvdXQgLWIgJEggQzAgJiYKIAkJZWNobyAkSCA+RiAmJgotCQlnaXQgY29tbWl0IC1hIC1GIC4uL3QzOTAwLyRILnR4dAorCQlnaXQgY29tbWl0IC1hIC1GICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLyRILnR4dAogCScKIGRvbmUKIApAQCAtNTcsMTMgKzU3LDEzIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0lTTy04ODU5LTEgc2hvdWxkIGJlIHNob3duIGluIFVURi04IG5vdycgJwotCWNvbXBhcmVfd2l0aCBJU08tODg1OS0xIC4uL3QzOTAwLzEtVVRGLTgudHh0CisJY29tcGFyZV93aXRoIElTTy04ODU5LTEgIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvMS1VVEYtOC50eHQKICcKIAogZm9yIEggaW4gRVVDSlAgSVNPLTIwMjItSlAKIGRvCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJEggc2hvdWxkIGJlIHNob3duIGluIFVURi04IG5vdyIgJwotCQljb21wYXJlX3dpdGggJyRIJyAuLi90MzkwMC8yLVVURi04LnR4dAorCQljb21wYXJlX3dpdGggJyRIJyAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8yLVVURi04LnR4dAogCScKIGRvbmUKIApAQCAtODIsNyArODIsNyBAQAogZG8KIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkSCBzaG91bGQgYmUgc2hvd24gaW4gaXRzZWxmIG5vdyIgJwogCQlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgJyRIJyAmJgotCQljb21wYXJlX3dpdGggJyRIJyAuLi90MzkwMC8nJEgnLnR4dAorCQljb21wYXJlX3dpdGggJyRIJyAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8nJEgnLnR4dAogCScKIGRvbmUKIApAQCAtOTEsMTMgKzkxLDEzIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0lTTy04ODU5LTEgc2hvdWxkIGJlIHNob3duIGluIFVURi04IG5vdycgJwotCWNvbXBhcmVfd2l0aCBJU08tODg1OS0xIC4uL3QzOTAwLzEtVVRGLTgudHh0CisJY29tcGFyZV93aXRoIElTTy04ODU5LTEgIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvMS1VVEYtOC50eHQKICcKIAogZm9yIEggaW4gRVVDSlAgSVNPLTIwMjItSlAKIGRvCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJEggc2hvdWxkIGJlIHNob3duIGluIFVURi04IG5vdyIgJwotCQljb21wYXJlX3dpdGggJyRIJyAuLi90MzkwMC8yLVVURi04LnR4dAorCQljb21wYXJlX3dpdGggJyRIJyAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8yLVVURi04LnR4dAogCScKIGRvbmUKIApAQCAtMTA3LDcgKzEwNyw3IEBACiAJZm9yIEggaW4gRVVDSlAgSVNPLTIwMjItSlAKIAlkbwogCQl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkSCBzaG91bGQgYmUgc2hvd24gaW4gJEogbm93IiAnCi0JCQljb21wYXJlX3dpdGggJyRIJyAuLi90MzkwMC8nJEonLnR4dAorCQkJY29tcGFyZV93aXRoICckSCcgIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvJyRKJy50eHQKIAkJJwogCWRvbmUKIGRvbmUKQEAgLTExNSw3ICsxMTUsNyBAQAogZm9yIEggaW4gSVNPLTg4NTktMSBFVUNKUCBJU08tMjAyMi1KUAogZG8KIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICJObyBjb252ZXJzaW9uIHdpdGggJEgiICcKLQkJY29tcGFyZV93aXRoICItLWVuY29kaW5nPW5vbmUgJyRIJyIgLi4vdDM5MDAvJyRIJy50eHQKKwkJY29tcGFyZV93aXRoICItLWVuY29kaW5nPW5vbmUgJyRIJyIgIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvJyRIJy50eHQKIAknCiBkb25lCiAKZGlmZiAtLWdpdCBhL3QvdDM5MDEtaTE4bi1wYXRjaC5zaCBiL3QvdDM5MDEtaTE4bi1wYXRjaC5zaAppbmRleCA1Njc3NjBlLi43NjU1ZGEzIDEwMDc1NQotLS0gYS90L3QzOTAxLWkxOG4tcGF0Y2guc2gKKysrIGIvdC90MzkwMS1pMThuLXBhdGNoLnNoCkBAIC0zNSw3ICszNSw3IEBACiAKIAkjIHVzZSBVVEYtOCBpbiBhdXRob3IgYW5kIGNvbW1pdHRlciBuYW1lIHRvIG1hdGNoIHRoZQogCSMgaTE4bi5jb21taXRlbmNvZGluZyBzZXR0aW5ncwotCS4gLi4vdDM5MDEtdXRmOC50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLXV0ZjgudHh0ICYmCiAKIAl0ZXN0X3RpY2sgJiYKIAllY2hvICIkR0lUX0FVVEhPUl9OQU1FIiA+bWluZSAmJgpAQCAtNTcsNyArNTcsNyBAQAogCSMgdGhlIHNlY29uZCBvbmUgb24gdGhlIHNpZGUgYnJhbmNoIGlzIElTTy04ODU5LTEKIAlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgogCSMgdXNlIGF1dGhvciBhbmQgY29tbWl0dGVyIG5hbWUgaW4gSVNPLTg4NTktMSB0byBtYXRjaCBpdC4KLQkuIC4uL3QzOTAxLTg4NTktMS50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLTg4NTktMS50eHQgJiYKIAl0ZXN0X3RpY2sgJiYKIAllY2hvIFlldCBhbm90aGVyID50aGVpcnMgJiYKIAlnaXQgYWRkIHRoZWlycyAmJgpAQCAtMTAxLDcgKzEwMSw3IEBACiAKIAkjIFRoZSByZXN1bHQgd2lsbCBiZSBjb21taXR0ZWQgYnkgR0lUX0NPTU1JVFRFUl9OQU1FIC0tCiAJIyB3ZSB3YW50IFVURi04IGVuY29kZWQgbmFtZS4KLQkuIC4uL3QzOTAxLXV0ZjgudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS11dGY4LnR4dCAmJgogCWdpdCBjaGVja291dCAtYiB0ZXN0ICYmCiAJZ2l0IHJlYmFzZSBtYXN0ZXIgJiYKIApAQCAtMTExLDcgKzExMSw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgKFUvTCknICcKIAlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgVVRGLTggJiYKIAlnaXQgY29uZmlnIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgotCS4gLi4vdDM5MDEtdXRmOC50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLXV0ZjgudHh0ICYmCiAKIAlnaXQgcmVzZXQgLS1oYXJkIHNpZGUgJiYKIAlnaXQgcmViYXNlIG1hc3RlciAmJgpAQCAtMTIzLDcgKzEyMyw3IEBACiAJIyBJbiB0aGlzIHRlc3Qgd2Ugd2FudCBJU08tODg1OS0xIGVuY29kZWQgY29tbWl0cyBhcyB0aGUgcmVzdWx0CiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIElTTy04ODU5LTEgJiYKIAlnaXQgY29uZmlnIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgotCS4gLi4vdDM5MDEtODg1OS0xLnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtODg1OS0xLnR4dCAmJgogCiAJZ2l0IHJlc2V0IC0taGFyZCBzaWRlICYmCiAJZ2l0IHJlYmFzZSBtYXN0ZXIgJiYKQEAgLTEzNiw3ICsxMzYsNyBAQAogCSMgdG8gZ2V0IElTTy04ODU5LTEgcmVzdWx0cy4KIAlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgogCWdpdCBjb25maWcgaTE4bi5sb2dvdXRwdXRlbmNvZGluZyBVVEYtOCAmJgotCS4gLi4vdDM5MDEtODg1OS0xLnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtODg1OS0xLnR4dCAmJgogCiAJZ2l0IHJlc2V0IC0taGFyZCBzaWRlICYmCiAJZ2l0IHJlYmFzZSBtYXN0ZXIgJiYKQEAgLTE0OSw3ICsxNDksNyBAQAogCiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIFVURi04ICYmCiAJZ2l0IGNvbmZpZyBpMThuLmxvZ291dHB1dGVuY29kaW5nIFVURi04ICYmCi0JLiAuLi90MzkwMS11dGY4LnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtdXRmOC50eHQgJiYKIAogCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCiAJZ2l0IGNoZXJyeS1waWNrIHNpZGVeICYmCkBAIC0xNjQsNyArMTY0LDcgQEAKIAogCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBJU08tODg1OS0xICYmCiAJZ2l0IGNvbmZpZyBpMThuLmxvZ291dHB1dGVuY29kaW5nIElTTy04ODU5LTEgJiYKLQkuIC4uL3QzOTAxLTg4NTktMS50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLTg4NTktMS50eHQgJiYKIAogCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCiAJZ2l0IGNoZXJyeS1waWNrIHNpZGVeICYmCkBAIC0xNzksNyArMTc5LDcgQEAKIAogCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBVVEYtOCAmJgogCWdpdCBjb25maWcgaTE4bi5sb2dvdXRwdXRlbmNvZGluZyBJU08tODg1OS0xICYmCi0JLiAuLi90MzkwMS11dGY4LnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtdXRmOC50eHQgJiYKIAogCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCiAJZ2l0IGNoZXJyeS1waWNrIHNpZGVeICYmCkBAIC0xOTUsNyArMTk1LDcgQEAKIAogCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBJU08tODg1OS0xICYmCiAJZ2l0IGNvbmZpZyBpMThuLmxvZ291dHB1dGVuY29kaW5nIFVURi04ICYmCi0JLiAuLi90MzkwMS04ODU5LTEudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS04ODU5LTEudHh0ICYmCiAKIAlnaXQgcmVzZXQgLS1oYXJkIG1hc3RlciAmJgogCWdpdCBjaGVycnktcGljayBzaWRlXiAmJgpAQCAtMjA4LDcgKzIwOCw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLS1tZXJnZSAoVS9VKScgJwogCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBVVEYtOCAmJgogCWdpdCBjb25maWcgaTE4bi5sb2dvdXRwdXRlbmNvZGluZyBVVEYtOCAmJgotCS4gLi4vdDM5MDEtdXRmOC50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLXV0ZjgudHh0ICYmCiAKIAlnaXQgcmVzZXQgLS1oYXJkIHNpZGUgJiYKIAlnaXQgcmViYXNlIC0tbWVyZ2UgbWFzdGVyICYmCkBAIC0yMTksNyArMjE5LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLW1lcmdlIChVL0wpJyAnCiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIFVURi04ICYmCiAJZ2l0IGNvbmZpZyBpMThuLmxvZ291dHB1dGVuY29kaW5nIElTTy04ODU5LTEgJiYKLQkuIC4uL3QzOTAxLXV0ZjgudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS11dGY4LnR4dCAmJgogCiAJZ2l0IHJlc2V0IC0taGFyZCBzaWRlICYmCiAJZ2l0IHJlYmFzZSAtLW1lcmdlIG1hc3RlciAmJgpAQCAtMjMxLDcgKzIzMSw3IEBACiAJIyBJbiB0aGlzIHRlc3Qgd2Ugd2FudCBJU08tODg1OS0xIGVuY29kZWQgY29tbWl0cyBhcyB0aGUgcmVzdWx0CiAJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIElTTy04ODU5LTEgJiYKIAlnaXQgY29uZmlnIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgotCS4gLi4vdDM5MDEtODg1OS0xLnR4dCAmJgorCS4gIiRURVNUX0RJUkVDVE9SWSIvdDM5MDEtODg1OS0xLnR4dCAmJgogCiAJZ2l0IHJlc2V0IC0taGFyZCBzaWRlICYmCiAJZ2l0IHJlYmFzZSAtLW1lcmdlIG1hc3RlciAmJgpAQCAtMjQ0LDcgKzI0NCw3IEBACiAJIyB0byBnZXQgSVNPLTg4NTktMSByZXN1bHRzLgogCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBJU08tODg1OS0xICYmCiAJZ2l0IGNvbmZpZyBpMThuLmxvZ291dHB1dGVuY29kaW5nIFVURi04ICYmCi0JLiAuLi90MzkwMS04ODU5LTEudHh0ICYmCisJLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS04ODU5LTEudHh0ICYmCiAKIAlnaXQgcmVzZXQgLS1oYXJkIHNpZGUgJiYKIAlnaXQgcmViYXNlIC0tbWVyZ2UgbWFzdGVyICYmCmRpZmYgLS1naXQgYS90L3Q0MDAwLWRpZmYtZm9ybWF0LnNoIGIvdC90NDAwMC1kaWZmLWZvcm1hdC5zaAppbmRleCBjNDRiMjdhLi42ZGRkNDY5IDEwMDc1NQotLS0gYS90L3Q0MDAwLWRpZmYtZm9ybWF0LnNoCisrKyBiL3QvdDQwMDAtZGlmZi1mb3JtYXQuc2gKQEAgLTcsNyArNyw3IEBACiAKICcKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9kaWZmLWxpYi5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaAogCiBlY2hvID5wYXRoMCAnTGluZSAxCiBMaW5lIDIKZGlmZiAtLWdpdCBhL3QvdDQwMDEtZGlmZi1yZW5hbWUuc2ggYi90L3Q0MDAxLWRpZmYtcmVuYW1lLnNoCmluZGV4IGEzMjY5MjQuLjcxYmFjODMgMTAwNzU1Ci0tLSBhL3QvdDQwMDEtZGlmZi1yZW5hbWUuc2gKKysrIGIvdC90NDAwMS1kaWZmLXJlbmFtZS5zaApAQCAtNyw3ICs3LDcgQEAKIAogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2RpZmYtbGliLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoCiAKIGVjaG8gPnBhdGgwICdMaW5lIDEKIExpbmUgMgpkaWZmIC0tZ2l0IGEvdC90NDAwMi1kaWZmLWJhc2ljLnNoIGIvdC90NDAwMi1kaWZmLWJhc2ljLnNoCmluZGV4IGE0Y2ZkZTYuLmNjMzY4MWYgMTAwNzU1Ci0tLSBhL3QvdDQwMDItZGlmZi1iYXNpYy5zaAorKysgYi90L3Q0MDAyLWRpZmYtYmFzaWMuc2gKQEAgLTcsNyArNyw3IEBACiAKICcKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9saWItcmVhZC10cmVlLW0tM3dheS5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9saWItcmVhZC10cmVlLW0tM3dheS5zaAogCiBjYXQgPi50ZXN0LXBsYWluLU9BIDw8XEVPRgogOjAwMDAwMCAxMDA2NDQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBjY2JhNzJhZDM4ODhhMzUyMGIzOWVmY2Y3ODBiOWVlNjQxNjc1MzVkIEEJQUEKQEAgLTE2OSw2ICsxNjksMjAgQEAKICAgICAgY21wIC1zIC50ZXN0LWEgLnRlc3QtcmVjdXJzaXZlLUFCJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnZGlmZi10cmVlIC0tc3RkaW4gb2Yga25vd24gdHJlZXMuJyBcCisgICAgJ2VjaG8gJHRyZWVfQSAkdHJlZV9CIHwgZ2l0IGRpZmYtdHJlZSAtLXN0ZGluID4gLnRlc3QtYSAmJgorICAgICBlY2hvICR0cmVlX0EgJHRyZWVfQiA+IC50ZXN0LXBsYWluLUFCeCAmJgorICAgICBjYXQgLnRlc3QtcGxhaW4tQUIgPj4gLnRlc3QtcGxhaW4tQUJ4ICYmCisgICAgIGNtcCAtcyAudGVzdC1hIC50ZXN0LXBsYWluLUFCeCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2RpZmYtdHJlZSAtLXN0ZGluIG9mIGtub3duIHRyZWVzLicgXAorICAgICdlY2hvICR0cmVlX0EgJHRyZWVfQiB8IGdpdCBkaWZmLXRyZWUgLXIgLS1zdGRpbiA+IC50ZXN0LWEgJiYKKyAgICAgZWNobyAkdHJlZV9BICR0cmVlX0IgPiAudGVzdC1yZWN1cnNpdmUtQUJ4ICYmCisgICAgIGNhdCAudGVzdC1yZWN1cnNpdmUtQUIgPj4gLnRlc3QtcmVjdXJzaXZlLUFCeCAmJgorICAgICBjbXAgLXMgLnRlc3QtYSAudGVzdC1yZWN1cnNpdmUtQUJ4JworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnZGlmZi1jYWNoZSBPIHdpdGggQSBpbiBjYWNoZScgXAogICAgICdnaXQgcmVhZC10cmVlICR0cmVlX0EgJiYKICAgICAgZ2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgJHRyZWVfTyA+LnRlc3QtYSAmJgpkaWZmIC0tZ2l0IGEvdC90NDAwMy1kaWZmLXJlbmFtZS0xLnNoIGIvdC90NDAwMy1kaWZmLXJlbmFtZS0xLnNoCmluZGV4IDhiMWY4NzUuLmM2MTMwYzQgMTAwNzU1Ci0tLSBhL3QvdDQwMDMtZGlmZi1yZW5hbWUtMS5zaAorKysgYi90L3Q0MDAzLWRpZmYtcmVuYW1lLTEuc2gKQEAgLTcsMTEgKzcsMTEgQEAKIAogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2RpZmYtbGliLnNoIDsjIHRlc3QtbGliIGNoZGlyJ3MgaW50byB0cmFzaAorLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaCA7IyB0ZXN0LWxpYiBjaGRpcidzIGludG8gdHJhc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ3ByZXBhcmUgcmVmZXJlbmNlIHRyZWUnIFwKLSAgICAnY2F0IC4uLy4uL0NPUFlJTkcgPkNPUFlJTkcgJiYKKyAgICAnY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPkNPUFlJTkcgJiYKICAgICAgZWNobyBmcm90eiA+cmV6cm92ICYmCiAgICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBDT1BZSU5HIHJlenJvdiAmJgogICAgIHRyZWU9JChnaXQgd3JpdGUtdHJlZSkgJiYKQEAgLTk5LDcgKzk5LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ3ByZXBhcmUgd29yayB0cmVlIG9uY2UgYWdhaW4nIFwKLSAgICAnY2F0IC4uLy4uL0NPUFlJTkcgPkNPUFlJTkcgJiYKKyAgICAnY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPkNPUFlJTkcgJiYKICAgICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAtLXJlbW92ZSBDT1BZSU5HIENPUFlJTkcuMScKIAogIyB0cmVlIGhhcyBDT1BZSU5HIGFuZCByZXpyb3YuICB3b3JrIHRyZWUgaGFzIENPUFlJTkcgYW5kIENPUFlJTkcuMSwKZGlmZiAtLWdpdCBhL3QvdDQwMDQtZGlmZi1yZW5hbWUtc3ltbGluay5zaCBiL3QvdDQwMDQtZGlmZi1yZW5hbWUtc3ltbGluay5zaAppbmRleCAzZDI1YmU3Li5iMzVhZjliIDEwMDc1NQotLS0gYS90L3Q0MDA0LWRpZmYtcmVuYW1lLXN5bWxpbmsuc2gKKysrIGIvdC90NDAwNC1kaWZmLXJlbmFtZS1zeW1saW5rLnNoCkBAIC0xMCw3ICsxMCw3IEBACiBieSBhbiBlZGl0IGZvciB0aGVtLgogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2RpZmYtbGliLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdwcmVwYXJlIHJlZmVyZW5jZSB0cmVlJyBcCmRpZmYgLS1naXQgYS90L3Q0MDA1LWRpZmYtcmVuYW1lLTIuc2ggYi90L3Q0MDA1LWRpZmYtcmVuYW1lLTIuc2gKaW5kZXggNjYzMDAxNy4uMWJhMzU5ZCAxMDA3NTUKLS0tIGEvdC90NDAwNS1kaWZmLXJlbmFtZS0yLnNoCisrKyBiL3QvdDQwMDUtZGlmZi1yZW5hbWUtMi5zaApAQCAtNywxMSArNywxMSBAQAogCiAnCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoIDsjIHRlc3QtbGliIGNoZGlyJ3MgaW50byB0cmFzaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAncHJlcGFyZSByZWZlcmVuY2UgdHJlZScgXAotICAgICdjYXQgLi4vLi4vQ09QWUlORyA+Q09QWUlORyAmJgorICAgICdjYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+Q09QWUlORyAmJgogICAgICBlY2hvIGZyb3R6ID5yZXpyb3YgJiYKICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIENPUFlJTkcgcmV6cm92ICYmCiAgICAgdHJlZT0kKGdpdCB3cml0ZS10cmVlKSAmJgpAQCAtNzEsNyArNzEsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAncHJlcGFyZSB3b3JrIHRyZWUgb25jZSBhZ2FpbicgXAotICAgICdjYXQgLi4vLi4vQ09QWUlORyA+Q09QWUlORyAmJgorICAgICdjYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+Q09QWUlORyAmJgogICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tcmVtb3ZlIENPUFlJTkcgQ09QWUlORy4xJwogCiBnaXQgZGlmZi1pbmRleCAtQyAtLWZpbmQtY29waWVzLWhhcmRlciAkdHJlZSA+Y3VycmVudApkaWZmIC0tZ2l0IGEvdC90NDAwNy1yZW5hbWUtMy5zaCBiL3QvdDQwMDctcmVuYW1lLTMuc2gKaW5kZXggMTA0YTRlMS4uNDIwNzJkNyAxMDA3NTUKLS0tIGEvdC90NDAwNy1yZW5hbWUtMy5zaAorKysgYi90L3Q0MDA3LXJlbmFtZS0zLnNoCkBAIC03LDEyICs3LDEyIEBACiAKICcKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9kaWZmLWxpYi5zaCA7IyB0ZXN0LWxpYiBjaGRpcidzIGludG8gdHJhc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdwcmVwYXJlIHJlZmVyZW5jZSB0cmVlJyBcCiAgICAgJ21rZGlyIHBhdGgwIHBhdGgxICYmCi0gICAgIGNwIC4uLy4uL0NPUFlJTkcgcGF0aDAvQ09QWUlORyAmJgorICAgICBjcCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HIHBhdGgwL0NPUFlJTkcgJiYKICAgICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBwYXRoMC9DT1BZSU5HICYmCiAgICAgdHJlZT0kKGdpdCB3cml0ZS10cmVlKSAmJgogICAgIGVjaG8gJHRyZWUnCmRpZmYgLS1naXQgYS90L3Q0MDA4LWRpZmYtYnJlYWstcmV3cml0ZS5zaCBiL3QvdDQwMDgtZGlmZi1icmVhay1yZXdyaXRlLnNoCmluZGV4IDI2YzJlNGEuLjdlMzQzYTkgMTAwNzU1Ci0tLSBhL3QvdDQwMDgtZGlmZi1icmVhay1yZXdyaXRlLnNoCisrKyBiL3QvdDQwMDgtZGlmZi1icmVhay1yZXdyaXRlLnNoCkBAIC0yMiwxMiArMjIsMTIgQEAKIEZ1cnRoZXIsIHdpdGggLUIgYW5kIC1NIHRvZ2V0aGVyLCB0aGVzZSBzaG91bGQgdHVybiBpbnRvIHR3byByZW5hbWVzLgogJwogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL2RpZmYtbGliLnNoIDsjIHRlc3QtbGliIGNoZGlyJ3MgaW50byB0cmFzaAorLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaCA7IyB0ZXN0LWxpYiBjaGRpcidzIGludG8gdHJhc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgc2V0dXAgXAotICAgICdjYXQgLi4vLi4vUkVBRE1FID5maWxlMCAmJgotICAgICBjYXQgLi4vLi4vQ09QWUlORyA+ZmlsZTEgJiYKKyAgICAnY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL1JFQURNRSA+ZmlsZTAgJiYKKyAgICAgY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPmZpbGUxICYmCiAgICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBmaWxlMCBmaWxlMSAmJgogICAgIHRyZWU9JChnaXQgd3JpdGUtdHJlZSkgJiYKICAgICBlY2hvICIkdHJlZSInCmRpZmYgLS1naXQgYS90L3Q0MDA5LWRpZmYtcmVuYW1lLTQuc2ggYi90L3Q0MDA5LWRpZmYtcmVuYW1lLTQuc2gKaW5kZXggZDJiNDVlNy4uZGUzZjE3NCAxMDA3NTUKLS0tIGEvdC90NDAwOS1kaWZmLXJlbmFtZS00LnNoCisrKyBiL3QvdDQwMDktZGlmZi1yZW5hbWUtNC5zaApAQCAtNywxMSArNywxMSBAQAogCiAnCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2RpZmYtbGliLnNoIDsjIHRlc3QtbGliIGNoZGlyJ3MgaW50byB0cmFzaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAncHJlcGFyZSByZWZlcmVuY2UgdHJlZScgXAotICAgICdjYXQgLi4vLi4vQ09QWUlORyA+Q09QWUlORyAmJgorICAgICdjYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+Q09QWUlORyAmJgogICAgICBlY2hvIGZyb3R6ID5yZXpyb3YgJiYKICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIENPUFlJTkcgcmV6cm92ICYmCiAgICAgdHJlZT0kKGdpdCB3cml0ZS10cmVlKSAmJgpAQCAtNzgsNyArNzgsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAncHJlcGFyZSB3b3JrIHRyZWUgb25jZSBhZ2FpbicgXAotICAgICdjYXQgLi4vLi4vQ09QWUlORyA+Q09QWUlORyAmJgorICAgICdjYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+Q09QWUlORyAmJgogICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tcmVtb3ZlIENPUFlJTkcgQ09QWUlORy4xJwogCiBnaXQgZGlmZi1pbmRleCAteiAtQyAtLWZpbmQtY29waWVzLWhhcmRlciAkdHJlZSA+Y3VycmVudApkaWZmIC0tZ2l0IGEvdC90NDAxMC1kaWZmLXBhdGhzcGVjLnNoIGIvdC90NDAxMC1kaWZmLXBhdGhzcGVjLnNoCmluZGV4IGFkM2Q5ZTQuLjkzMjIyOTggMTAwNzU1Ci0tLSBhL3QvdDQwMTAtZGlmZi1wYXRoc3BlYy5zaAorKysgYi90L3Q0MDEwLWRpZmYtcGF0aHNwZWMuc2gKQEAgLTEwLDcgKzEwLDcgQEAKICAgICAgICAgcGF0aDEvZmlsZTEKICcKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9kaWZmLWxpYi5zaCA7IyB0ZXN0LWxpYiBjaGRpcidzIGludG8gdHJhc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgIHNldHVwIFwKZGlmZiAtLWdpdCBhL3QvdDQwMTEtZGlmZi1zeW1saW5rLnNoIGIvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2gKaW5kZXggYzZkMTM2OS4uMDJlZmVjYSAxMDA3NTUKLS0tIGEvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2gKKysrIGIvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2gKQEAgLTcsNyArNyw3IEBACiAKICcKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9kaWZmLWxpYi5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaAogCiBjYXQgPiBleHBlY3RlZCA8PCBFT0YKIGRpZmYgLS1naXQgYS9mcm90eiBiL2Zyb3R6CmRpZmYgLS1naXQgYS90L3Q0MDEyLWRpZmYtYmluYXJ5LnNoIGIvdC90NDAxMi1kaWZmLWJpbmFyeS5zaAppbmRleCBlYWMxMjcxLi4zY2Y1YjVjIDEwMDc1NQotLS0gYS90L3Q0MDEyLWRpZmYtYmluYXJ5LnNoCisrKyBiL3QvdDQwMTItZGlmZi1iaW5hcnkuc2gKQEAgLTEyLDcgKzEyLDcgQEAKIAknZWNobyBBSVQgPmEgJiYgZWNobyBCSVQgPmIgJiYgZWNobyBDSVQgPmMgJiYgZWNobyBESVQgPmQgJiYKIAkgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBhIGIgYyBkICYmCiAJIGVjaG8gZ2l0ID5hICYmCi0JIGNhdCAuLi90ZXN0NDAxMi5wbmcgPmIgJiYKKwkgY2F0ICIkVEVTVF9ESVJFQ1RPUlkiL3Rlc3Q0MDEyLnBuZyA+YiAmJgogCSBlY2hvIGdpdCA+YyAmJgogCSBjYXQgYiBiID5kJwogCkBAIC0yNSwxMSArMjUsMTEgQEAKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiB3aXRob3V0IC0tYmluYXJ5JyBcCiAJJ2dpdCBkaWZmIHwgZ2l0IGFwcGx5IC0tc3RhdCAtLXN1bW1hcnkgPmN1cnJlbnQgJiYKLQkgY21wIGN1cnJlbnQgZXhwZWN0ZWQnCisJIHRlc3RfY21wIGV4cGVjdGVkIGN1cnJlbnQnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgd2l0aCAtLWJpbmFyeScgXAogCSdnaXQgZGlmZiAtLWJpbmFyeSB8IGdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5ID5jdXJyZW50ICYmCi0JIGNtcCBjdXJyZW50IGV4cGVjdGVkJworCSB0ZXN0X2NtcCBleHBlY3RlZCBjdXJyZW50JwogCiAjIGFwcGx5IG5lZWRzIHRvIGJlIGFibGUgdG8gc2tpcCB0aGUgYmluYXJ5IG1hdGVyaWFsIGNvcnJlY3RseQogIyBpbiBvcmRlciB0byByZXBvcnQgdGhlIGxpbmUgbnVtYmVyIG9mIGEgY29ycnVwdCBwYXRjaC4KZGlmZiAtLWdpdCBhL3QvdDQwMTMtZGlmZi12YXJpb3VzLnNoIGIvdC90NDAxMy1kaWZmLXZhcmlvdXMuc2gKaW5kZXggOTlkOWUwYi4uYWJhNTMyMCAxMDA3NTUKLS0tIGEvdC90NDAxMy1kaWZmLXZhcmlvdXMuc2gKKysrIGIvdC90NDAxMy1kaWZmLXZhcmlvdXMuc2gKQEAgLTk5LDcgKzk5LDcgQEAKIAl0ZXN0PWBlY2hvICIkY21kIiB8IHNlZCAtZSAnc3xbLyBdWy8gXSp8X3xnJ2AKIAljbnQ9YGV4cHIgJHRlc3RfY291bnQgKyAxYAogCXBmeD1gcHJpbnRmICIlMDRkIiAkY250YAotCWV4cGVjdD0iLi4vdDQwMTMvZGlmZi4kdGVzdCIKKwlleHBlY3Q9IiRURVNUX0RJUkVDVE9SWS90NDAxMy9kaWZmLiR0ZXN0IgogCWFjdHVhbD0iJHBmeC1kaWZmLiR0ZXN0IgogCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAiZ2l0ICRjbWQiICcKQEAgLTIzNiwxMiArMjM2LDE1IEBACiBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgaW5pdGlhbC4uc2lkZQogZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IGluaXRpYWwuLm1hc3Rlcl4KIGZvcm1hdC1wYXRjaCAtLXN0ZG91dCBpbml0aWFsLi5tYXN0ZXIKK2Zvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLW5vLW51bWJlcmVkIGluaXRpYWwuLm1hc3RlcgorZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tbnVtYmVyZWQgaW5pdGlhbC4ubWFzdGVyCiBmb3JtYXQtcGF0Y2ggLS1hdHRhY2ggLS1zdGRvdXQgaW5pdGlhbC4uc2lkZQogZm9ybWF0LXBhdGNoIC0tYXR0YWNoIC0tc3Rkb3V0IGluaXRpYWwuLm1hc3Rlcl4KIGZvcm1hdC1wYXRjaCAtLWF0dGFjaCAtLXN0ZG91dCBpbml0aWFsLi5tYXN0ZXIKIGZvcm1hdC1wYXRjaCAtLWlubGluZSAtLXN0ZG91dCBpbml0aWFsLi5zaWRlCiBmb3JtYXQtcGF0Y2ggLS1pbmxpbmUgLS1zdGRvdXQgaW5pdGlhbC4ubWFzdGVyXgogZm9ybWF0LXBhdGNoIC0taW5saW5lIC0tc3Rkb3V0IGluaXRpYWwuLm1hc3RlcgorZm9ybWF0LXBhdGNoIC0taW5saW5lIC0tc3Rkb3V0IGluaXRpYWwuLm1hc3RlcgogZm9ybWF0LXBhdGNoIC0taW5saW5lIC0tc3Rkb3V0IC0tc3ViamVjdC1wcmVmaXg9VEVTVENBU0UgaW5pdGlhbC4ubWFzdGVyCiBjb25maWcgZm9ybWF0LnN1YmplY3RwcmVmaXggRElGRkVSRU5UX1BSRUZJWAogZm9ybWF0LXBhdGNoIC0taW5saW5lIC0tc3Rkb3V0IGluaXRpYWwuLm1hc3Rlcl5eCkBAIC0yNTgsNiArMjYxLDcgQEAKIGRpZmYgLS1wYXRjaC13aXRoLXJhdyAtciBpbml0aWFsLi5zaWRlCiBkaWZmIC0tbmFtZS1zdGF0dXMgZGlyMiBkaXIKIGRpZmYgLS1uby1pbmRleCAtLW5hbWUtc3RhdHVzIGRpcjIgZGlyCitkaWZmIC0tbm8taW5kZXggLS1uYW1lLXN0YXR1cyAtLSBkaXIyIGRpcgogZGlmZiBtYXN0ZXIgbWFzdGVyXiBzaWRlCiBFT0YKIApkaWZmIC0tZ2l0IGEvdC90NDAxMy9kaWZmLmRpZmZfLS1uby1pbmRleF8tLW5hbWUtc3RhdHVzXy0tX2RpcjJfZGlyIGIvdC90NDAxMy9kaWZmLmRpZmZfLS1uby1pbmRleF8tLW5hbWUtc3RhdHVzXy0tX2RpcjJfZGlyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NTZmOGQKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MDEzL2RpZmYuZGlmZl8tLW5vLWluZGV4Xy0tbmFtZS1zdGF0dXNfLS1fZGlyMl9kaXIKQEAgLTAsMCArMSwzIEBACiskIGdpdCBkaWZmIC0tbm8taW5kZXggLS1uYW1lLXN0YXR1cyAtLSBkaXIyIGRpcgorQQlkaXIvc3ViCiskCmRpZmYgLS1naXQgYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tYXR0YWNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3RlciBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1hdHRhY2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyCmluZGV4IDQzMzQ2YjkuLmU1YWI3NDQgMTAwNjQ0Ci0tLSBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1hdHRhY2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyCisrKyBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1hdHRhY2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyCkBAIC0yLDcgKzIsNyBAQAogRnJvbSAxYmRlNGFlNWYzNmM4ZDlhYmUzYTBmY2UwYzZhYWIzYzRhMTJmZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDE6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gU2Vjb25kCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBTZWNvbmQKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLWctaS10LS12LWUtci1zLWktby1uIgogCkBAIC02Myw3ICs2Myw3IEBACiBGcm9tIDlhNmQ0OTQ5YjZiNzY5NTZkOWQ1ZTI2ZjI3OTFlYzJjZWZmNWZkYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMjowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBUaGlyZAorU3ViamVjdDogW1BBVENIIDIvM10gVGhpcmQKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLWctaS10LS12LWUtci1zLWktby1uIgogCkBAIC0xMTEsNyArMTExLDcgQEAKIEZyb20gYzdhMmFiOWU4ZWFjN2IxMTc0NDJhNjA3ZDVhOWIzOTUwYWUzNGQ1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAzOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNpZGUKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIFNpZGUKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLWctaS10LS12LWUtci1zLWktby1uIgogCmRpZmYgLS1naXQgYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tYXR0YWNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3Rlcl4gYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tYXR0YWNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3Rlcl4KaW5kZXggZDc0OTBhOS4uMmM3MWQyMCAxMDA2NDQKLS0tIGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWF0dGFjaF8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXJeCisrKyBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1hdHRhY2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyXgpAQCAtMiw3ICsyLDcgQEAKIEZyb20gMWJkZTRhZTVmMzZjOGQ5YWJlM2EwZmNlMGM2YWFiM2M0YTEyZmU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAxOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNlY29uZAorU3ViamVjdDogW1BBVENIIDEvMl0gU2Vjb25kCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApAQCAtNjMsNyArNjMsNyBAQAogRnJvbSA5YTZkNDk0OWI2Yjc2OTU2ZDlkNWUyNmYyNzkxZWMyY2VmZjVmZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDI6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVGhpcmQKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIFRoaXJkCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApkaWZmIC0tZ2l0IGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWlubGluZV8tLXN0ZG91dF8tLXN1YmplY3QtcHJlZml4PVRFU1RDQVNFX2luaXRpYWwuLm1hc3RlciBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1pbmxpbmVfLS1zdGRvdXRfLS1zdWJqZWN0LXByZWZpeD1URVNUQ0FTRV9pbml0aWFsLi5tYXN0ZXIKaW5kZXggZmNhNWNjZS4uNThmOGE3YiAxMDA2NDQKLS0tIGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWlubGluZV8tLXN0ZG91dF8tLXN1YmplY3QtcHJlZml4PVRFU1RDQVNFX2luaXRpYWwuLm1hc3RlcgorKysgYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0taW5saW5lXy0tc3Rkb3V0Xy0tc3ViamVjdC1wcmVmaXg9VEVTVENBU0VfaW5pdGlhbC4ubWFzdGVyCkBAIC0yLDcgKzIsNyBAQAogRnJvbSAxYmRlNGFlNWYzNmM4ZDlhYmUzYTBmY2UwYzZhYWIzYzRhMTJmZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDE6MDAgKzAwMDAKLVN1YmplY3Q6IFtURVNUQ0FTRV0gU2Vjb25kCitTdWJqZWN0OiBbVEVTVENBU0UgMS8zXSBTZWNvbmQKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLWctaS10LS12LWUtci1zLWktby1uIgogCkBAIC02Myw3ICs2Myw3IEBACiBGcm9tIDlhNmQ0OTQ5YjZiNzY5NTZkOWQ1ZTI2ZjI3OTFlYzJjZWZmNWZkYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMjowMCArMDAwMAotU3ViamVjdDogW1RFU1RDQVNFXSBUaGlyZAorU3ViamVjdDogW1RFU1RDQVNFIDIvM10gVGhpcmQKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLWctaS10LS12LWUtci1zLWktby1uIgogCkBAIC0xMTEsNyArMTExLDcgQEAKIEZyb20gYzdhMmFiOWU4ZWFjN2IxMTc0NDJhNjA3ZDVhOWIzOTUwYWUzNGQ1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAzOjAwICswMDAwCi1TdWJqZWN0OiBbVEVTVENBU0VdIFNpZGUKK1N1YmplY3Q6IFtURVNUQ0FTRSAzLzNdIFNpZGUKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLWctaS10LS12LWUtci1zLWktby1uIgogCmRpZmYgLS1naXQgYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0taW5saW5lXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3RlciBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1pbmxpbmVfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyCmluZGV4IDZkNmZhYzMuLjllN2JiZGYgMTAwNjQ0Ci0tLSBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1pbmxpbmVfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyCisrKyBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1pbmxpbmVfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyCkBAIC0yLDcgKzIsNyBAQAogRnJvbSAxYmRlNGFlNWYzNmM4ZDlhYmUzYTBmY2UwYzZhYWIzYzRhMTJmZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDE6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gU2Vjb25kCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBTZWNvbmQKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLWctaS10LS12LWUtci1zLWktby1uIgogCkBAIC02Myw3ICs2Myw3IEBACiBGcm9tIDlhNmQ0OTQ5YjZiNzY5NTZkOWQ1ZTI2ZjI3OTFlYzJjZWZmNWZkYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMjowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBUaGlyZAorU3ViamVjdDogW1BBVENIIDIvM10gVGhpcmQKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLWctaS10LS12LWUtci1zLWktby1uIgogCkBAIC0xMTEsNyArMTExLDcgQEAKIEZyb20gYzdhMmFiOWU4ZWFjN2IxMTc0NDJhNjA3ZDVhOWIzOTUwYWUzNGQ1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAzOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNpZGUKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIFNpZGUKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLWctaS10LS12LWUtci1zLWktby1uIgogCmRpZmYgLS1naXQgYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0taW5saW5lXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3Rlcl4gYi90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0taW5saW5lXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3Rlcl4KaW5kZXggMThhMTExMC4uZjg4MWY2NCAxMDA2NDQKLS0tIGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLWlubGluZV8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXJeCisrKyBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1pbmxpbmVfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyXgpAQCAtMiw3ICsyLDcgQEAKIEZyb20gMWJkZTRhZTVmMzZjOGQ5YWJlM2EwZmNlMGM2YWFiM2M0YTEyZmU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAxOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNlY29uZAorU3ViamVjdDogW1BBVENIIDEvMl0gU2Vjb25kCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApAQCAtNjMsNyArNjMsNyBAQAogRnJvbSA5YTZkNDk0OWI2Yjc2OTU2ZDlkNWUyNmYyNzkxZWMyY2VmZjVmZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDI6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVGhpcmQKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIFRoaXJkCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLS0tLS0tLS0tLS1nLWktdC0tdi1lLXItcy1pLW8tbiIKIApkaWZmIC0tZ2l0IGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLXN0ZG91dF8tLW5vLW51bWJlcmVkX2luaXRpYWwuLm1hc3RlciBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfLS1uby1udW1iZXJlZF9pbml0aWFsLi5tYXN0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc3NTJlYgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfLS1uby1udW1iZXJlZF9pbml0aWFsLi5tYXN0ZXIKQEAgLTAsMCArMSwxMjcgQEAKKyQgZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLW5vLW51bWJlcmVkIGluaXRpYWwuLm1hc3RlcgorRnJvbSAxYmRlNGFlNWYzNmM4ZDlhYmUzYTBmY2UwYzZhYWIzYzRhMTJmZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDE6MDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gU2Vjb25kCisKK1RoaXMgaXMgdGhlIHNlY29uZCBjb21taXQuCistLS0KKyBkaXIvc3ViIHwgICAgMiArKworIGZpbGUwICAgfCAgICAzICsrKworIGZpbGUyICAgfCAgICAzIC0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBmaWxlMgorCitkaWZmIC0tZ2l0IGEvZGlyL3N1YiBiL2Rpci9zdWIKK2luZGV4IDM1ZDI0MmIuLjg0MjJkNDAgMTAwNjQ0CistLS0gYS9kaXIvc3ViCisrKysgYi9kaXIvc3ViCitAQCAtMSwyICsxLDQgQEAKKyBBCisgQgorK0MKKytECitkaWZmIC0tZ2l0IGEvZmlsZTAgYi9maWxlMAoraW5kZXggMDFlNzljMy4uYjQxNDEwOCAxMDA2NDQKKy0tLSBhL2ZpbGUwCisrKysgYi9maWxlMAorQEAgLTEsMyArMSw2IEBACisgMQorIDIKKyAzCisrNAorKzUKKys2CitkaWZmIC0tZ2l0IGEvZmlsZTIgYi9maWxlMgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMWU3OWMzLi4wMDAwMDAwCistLS0gYS9maWxlMgorKysrIC9kZXYvbnVsbAorQEAgLTEsMyArMCwwIEBACistMQorLTIKKy0zCistLSAKK2ctaS10LS12LWUtci1zLWktby1uCisKKworRnJvbSA5YTZkNDk0OWI2Yjc2OTU2ZDlkNWUyNmYyNzkxZWMyY2VmZjVmZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDI6MDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gVGhpcmQKKworLS0tCisgZGlyL3N1YiB8ICAgIDIgKysKKyBmaWxlMSAgIHwgICAgMyArKysKKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZmlsZTEKKworZGlmZiAtLWdpdCBhL2Rpci9zdWIgYi9kaXIvc3ViCitpbmRleCA4NDIyZDQwLi5jZWFkMzJlIDEwMDY0NAorLS0tIGEvZGlyL3N1YgorKysrIGIvZGlyL3N1YgorQEAgLTIsMyArMiw1IEBAIEEKKyBCCisgQworIEQKKytFCisrRgorZGlmZiAtLWdpdCBhL2ZpbGUxIGIvZmlsZTEKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iMWU2NzIyCistLS0gL2Rldi9udWxsCisrKysgYi9maWxlMQorQEAgLTAsMCArMSwzIEBACisrQQorK0IKKytDCistLSAKK2ctaS10LS12LWUtci1zLWktby1uCisKKworRnJvbSBjN2EyYWI5ZThlYWM3YjExNzQ0MmE2MDdkNWE5YjM5NTBhZTM0ZDVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDM6MDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gU2lkZQorCistLS0KKyBkaXIvc3ViIHwgICAgMiArKworIGZpbGUwICAgfCAgICAzICsrKworIGZpbGUzICAgfCAgICA0ICsrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZmlsZTMKKworZGlmZiAtLWdpdCBhL2Rpci9zdWIgYi9kaXIvc3ViCitpbmRleCAzNWQyNDJiLi43Mjg5ZTM1IDEwMDY0NAorLS0tIGEvZGlyL3N1YgorKysrIGIvZGlyL3N1YgorQEAgLTEsMiArMSw0IEBACisgQQorIEIKKysxCisrMgorZGlmZiAtLWdpdCBhL2ZpbGUwIGIvZmlsZTAKK2luZGV4IDAxZTc5YzMuLmY0NjE1ZGEgMTAwNjQ0CistLS0gYS9maWxlMAorKysrIGIvZmlsZTAKK0BAIC0xLDMgKzEsNiBAQAorIDEKKyAyCisgMworK0EKKytCCisrQworZGlmZiAtLWdpdCBhL2ZpbGUzIGIvZmlsZTMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43Mjg5ZTM1CistLS0gL2Rldi9udWxsCisrKysgYi9maWxlMworQEAgLTAsMCArMSw0IEBACisrQQorK0IKKysxCisrMgorLS0gCitnLWktdC0tdi1lLXItcy1pLW8tbgorCiskCmRpZmYgLS1naXQgYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tc3Rkb3V0Xy0tbnVtYmVyZWRfaW5pdGlhbC4ubWFzdGVyIGIvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLXN0ZG91dF8tLW51bWJlcmVkX2luaXRpYWwuLm1hc3RlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTY3ZGJmCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLXN0ZG91dF8tLW51bWJlcmVkX2luaXRpYWwuLm1hc3RlcgpAQCAtMCwwICsxLDEyNyBAQAorJCBnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tbnVtYmVyZWQgaW5pdGlhbC4ubWFzdGVyCitGcm9tIDFiZGU0YWU1ZjM2YzhkOWFiZTNhMGZjZTBjNmFhYjNjNGExMmZlNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMTowMCArMDAwMAorU3ViamVjdDogW1BBVENIIDEvM10gU2Vjb25kCisKK1RoaXMgaXMgdGhlIHNlY29uZCBjb21taXQuCistLS0KKyBkaXIvc3ViIHwgICAgMiArKworIGZpbGUwICAgfCAgICAzICsrKworIGZpbGUyICAgfCAgICAzIC0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBmaWxlMgorCitkaWZmIC0tZ2l0IGEvZGlyL3N1YiBiL2Rpci9zdWIKK2luZGV4IDM1ZDI0MmIuLjg0MjJkNDAgMTAwNjQ0CistLS0gYS9kaXIvc3ViCisrKysgYi9kaXIvc3ViCitAQCAtMSwyICsxLDQgQEAKKyBBCisgQgorK0MKKytECitkaWZmIC0tZ2l0IGEvZmlsZTAgYi9maWxlMAoraW5kZXggMDFlNzljMy4uYjQxNDEwOCAxMDA2NDQKKy0tLSBhL2ZpbGUwCisrKysgYi9maWxlMAorQEAgLTEsMyArMSw2IEBACisgMQorIDIKKyAzCisrNAorKzUKKys2CitkaWZmIC0tZ2l0IGEvZmlsZTIgYi9maWxlMgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMWU3OWMzLi4wMDAwMDAwCistLS0gYS9maWxlMgorKysrIC9kZXYvbnVsbAorQEAgLTEsMyArMCwwIEBACistMQorLTIKKy0zCistLSAKK2ctaS10LS12LWUtci1zLWktby1uCisKKworRnJvbSA5YTZkNDk0OWI2Yjc2OTU2ZDlkNWUyNmYyNzkxZWMyY2VmZjVmZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDI6MDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIFRoaXJkCisKKy0tLQorIGRpci9zdWIgfCAgICAyICsrCisgZmlsZTEgICB8ICAgIDMgKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGZpbGUxCisKK2RpZmYgLS1naXQgYS9kaXIvc3ViIGIvZGlyL3N1YgoraW5kZXggODQyMmQ0MC4uY2VhZDMyZSAxMDA2NDQKKy0tLSBhL2Rpci9zdWIKKysrKyBiL2Rpci9zdWIKK0BAIC0yLDMgKzIsNSBAQCBBCisgQgorIEMKKyBECisrRQorK0YKK2RpZmYgLS1naXQgYS9maWxlMSBiL2ZpbGUxCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYjFlNjcyMgorLS0tIC9kZXYvbnVsbAorKysrIGIvZmlsZTEKK0BAIC0wLDAgKzEsMyBAQAorK0EKKytCCisrQworLS0gCitnLWktdC0tdi1lLXItcy1pLW8tbgorCisKK0Zyb20gYzdhMmFiOWU4ZWFjN2IxMTc0NDJhNjA3ZDVhOWIzOTUwYWUzNGQ1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAzOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBTaWRlCisKKy0tLQorIGRpci9zdWIgfCAgICAyICsrCisgZmlsZTAgICB8ICAgIDMgKysrCisgZmlsZTMgICB8ICAgIDQgKysrKworIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBmaWxlMworCitkaWZmIC0tZ2l0IGEvZGlyL3N1YiBiL2Rpci9zdWIKK2luZGV4IDM1ZDI0MmIuLjcyODllMzUgMTAwNjQ0CistLS0gYS9kaXIvc3ViCisrKysgYi9kaXIvc3ViCitAQCAtMSwyICsxLDQgQEAKKyBBCisgQgorKzEKKysyCitkaWZmIC0tZ2l0IGEvZmlsZTAgYi9maWxlMAoraW5kZXggMDFlNzljMy4uZjQ2MTVkYSAxMDA2NDQKKy0tLSBhL2ZpbGUwCisrKysgYi9maWxlMAorQEAgLTEsMyArMSw2IEBACisgMQorIDIKKyAzCisrQQorK0IKKytDCitkaWZmIC0tZ2l0IGEvZmlsZTMgYi9maWxlMworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjcyODllMzUKKy0tLSAvZGV2L251bGwKKysrKyBiL2ZpbGUzCitAQCAtMCwwICsxLDQgQEAKKytBCisrQgorKzEKKysyCistLSAKK2ctaS10LS12LWUtci1zLWktby1uCisKKyQKZGlmZiAtLWdpdCBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyIGIvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXIKaW5kZXggOGI4OGNhNC4uN2I4OTk3OCAxMDA2NDQKLS0tIGEvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXIKKysrIGIvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXIKQEAgLTIsNyArMiw3IEBACiBGcm9tIDFiZGU0YWU1ZjM2YzhkOWFiZTNhMGZjZTBjNmFhYjNjNGExMmZlNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMTowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBTZWNvbmQKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIFNlY29uZAogCiBUaGlzIGlzIHRoZSBzZWNvbmQgY29tbWl0LgogLS0tCkBAIC00OCw3ICs0OCw3IEBACiBGcm9tIDlhNmQ0OTQ5YjZiNzY5NTZkOWQ1ZTI2ZjI3OTFlYzJjZWZmNWZkYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgogRGF0ZTogTW9uLCAyNiBKdW4gMjAwNiAwMDowMjowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBUaGlyZAorU3ViamVjdDogW1BBVENIIDIvM10gVGhpcmQKIAogLS0tCiAgZGlyL3N1YiB8ICAgIDIgKysKQEAgLTgyLDcgKzgyLDcgQEAKIEZyb20gYzdhMmFiOWU4ZWFjN2IxMTc0NDJhNjA3ZDVhOWIzOTUwYWUzNGQ1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CiBEYXRlOiBNb24sIDI2IEp1biAyMDA2IDAwOjAzOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNpZGUKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIFNpZGUKIAogLS0tCiAgZGlyL3N1YiB8ICAgIDIgKysKZGlmZiAtLWdpdCBhL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyXiBiL3QvdDQwMTMvZGlmZi5mb3JtYXQtcGF0Y2hfLS1zdGRvdXRfaW5pdGlhbC4ubWFzdGVyXgppbmRleCA0N2E0Yjg4Li5iN2Y5NzI1IDEwMDY0NAotLS0gYS90L3Q0MDEzL2RpZmYuZm9ybWF0LXBhdGNoXy0tc3Rkb3V0X2luaXRpYWwuLm1hc3Rlcl4KKysrIGIvdC90NDAxMy9kaWZmLmZvcm1hdC1wYXRjaF8tLXN0ZG91dF9pbml0aWFsLi5tYXN0ZXJeCkBAIC0yLDcgKzIsNyBAQAogRnJvbSAxYmRlNGFlNWYzNmM4ZDlhYmUzYTBmY2UwYzZhYWIzYzRhMTJmZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDE6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gU2Vjb25kCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBTZWNvbmQKIAogVGhpcyBpcyB0aGUgc2Vjb25kIGNvbW1pdC4KIC0tLQpAQCAtNDgsNyArNDgsNyBAQAogRnJvbSA5YTZkNDk0OWI2Yjc2OTU2ZDlkNWUyNmYyNzkxZWMyY2VmZjVmZGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KIERhdGU6IE1vbiwgMjYgSnVuIDIwMDYgMDA6MDI6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVGhpcmQKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIFRoaXJkCiAKIC0tLQogIGRpci9zdWIgfCAgICAyICsrCmRpZmYgLS1naXQgYS90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaCBiL3QvdDQwMTQtZm9ybWF0LXBhdGNoLnNoCmluZGV4IDdmZTg1M2MuLmYwNDU4OTggMTAwNzU1Ci0tLSBhL3QvdDQwMTQtZm9ybWF0LXBhdGNoLnNoCisrKyBiL3QvdDQwMTQtZm9ybWF0LXBhdGNoLnNoCkBAIC0zLDcgKzMsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDYgSnVuaW8gQyBIYW1hbm8KICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nRm9ybWF0LXBhdGNoIHNraXBwaW5nIGFscmVhZHkgaW5jb3Jwb3JhdGVkIHBhdGNoZXMnCit0ZXN0X2Rlc2NyaXB0aW9uPSd2YXJpb3VzIGZvcm1hdC1wYXRjaCB0ZXN0cycKIAogLiAuL3Rlc3QtbGliLnNoCiAKQEAgLTIzMCw0ICsyMzAsNzkgQEAKIAogJwogCitjYXQgPiBleHBlY3QgPDwgRU9GCistLS0KKyBmaWxlIHwgICAxNiArKysrKysrKysrKysrKysrCisgMSBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZmlsZSBiL2ZpbGUKK2luZGV4IDQwZjM2YzYuLjJkYzVjMjMgMTAwNjQ0CistLS0gYS9maWxlCisrKysgYi9maWxlCitAQCAtMTMsNCArMTMsMjAgQEAgQworIDEwCisgRAorIEUKKyBGCisrNQorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCByZXNwZWN0cyAtVScgJworCisJZ2l0IGZvcm1hdC1wYXRjaCAtVTQgLTIgJiYKKwlzZWQgLWUgIjEsL14kL2QiIC1lICIvXis1L3EiIDwgMDAwMS1UaGlzLWlzLWFuLWV4Y2Vzc2l2ZWx5LWxvbmctc3ViamVjdC1saW5lLWZvci1hLW1lc3NhLnBhdGNoID4gb3V0cHV0ICYmCisJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCBmcm9tIGEgc3ViZGlyZWN0b3J5ICgxKScgJworCWZpbGVuYW1lPSQoCisJCXJtIC1yZiBzdWIgJiYKKwkJbWtkaXIgLXAgc3ViL2RpciAmJgorCQljZCBzdWIvZGlyICYmCisJCWdpdCBmb3JtYXQtcGF0Y2ggLTEKKwkpICYmCisJY2FzZSAiJGZpbGVuYW1lIiBpbgorCTAqKQorCQk7OyAjIG9rCisJKikKKwkJZWNobyAiT29wcz8gJGZpbGVuYW1lIgorCQlmYWxzZQorCQk7OworCWVzYWMgJiYKKwl0ZXN0IC1mICIkZmlsZW5hbWUiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCBmcm9tIGEgc3ViZGlyZWN0b3J5ICgyKScgJworCWZpbGVuYW1lPSQoCisJCXJtIC1yZiBzdWIgJiYKKwkJbWtkaXIgLXAgc3ViL2RpciAmJgorCQljZCBzdWIvZGlyICYmCisJCWdpdCBmb3JtYXQtcGF0Y2ggLTEgLW8gLi4KKwkpICYmCisJY2FzZSAiJGZpbGVuYW1lIiBpbgorCS4uLzAqKQorCQk7OyAjIG9rCisJKikKKwkJZWNobyAiT29wcz8gJGZpbGVuYW1lIgorCQlmYWxzZQorCQk7OworCWVzYWMgJiYKKwliYXNlbmFtZT0kKGV4cHIgIiRmaWxlbmFtZSIgOiAiLiovXCguKlwpIikgJiYKKwl0ZXN0IC1mICJzdWIvJGJhc2VuYW1lIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggZnJvbSBhIHN1YmRpcmVjdG9yeSAoMyknICcKKwloZXJlPSIkVEVTVF9ESVJFQ1RPUlkvJHRlc3QiICYmCisJcm0gLWYgMCogJiYKKwlmaWxlbmFtZT0kKAorCQlybSAtcmYgc3ViICYmCisJCW1rZGlyIC1wIHN1Yi9kaXIgJiYKKwkJY2Qgc3ViL2RpciAmJgorCQlnaXQgZm9ybWF0LXBhdGNoIC0xIC1vICIkaGVyZSIKKwkpICYmCisJYmFzZW5hbWU9JChleHByICIkZmlsZW5hbWUiIDogIi4qL1woLipcKSIpICYmCisJdGVzdCAtZiAiJGJhc2VuYW1lIgorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQwMTUtZGlmZi13aGl0ZXNwYWNlLnNoIGIvdC90NDAxNS1kaWZmLXdoaXRlc3BhY2Uuc2gKaW5kZXggYjFjYmQzNi4uNmQxM2RhMyAxMDA3NTUKLS0tIGEvdC90NDAxNS1kaWZmLXdoaXRlc3BhY2Uuc2gKKysrIGIvdC90NDAxNS1kaWZmLXdoaXRlc3BhY2Uuc2gKQEAgLTcsNyArNyw3IEBACiAKICcKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9kaWZmLWxpYi5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaAogCiAjIFJheSBMZWh0aW5pZW1pJ3MgZXhhbXBsZQogCkBAIC05OCw2ICs5OCwxMiBAQAogRU9GCiBnaXQgZGlmZiAtdyA+IG91dAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYW5vdGhlciB0ZXN0LCB3aXRoIC13JyAndGVzdF9jbXAgZXhwZWN0IG91dCcKK2dpdCBkaWZmIC13IC1iID4gb3V0Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbm90aGVyIHRlc3QsIHdpdGggLXcgLWInICd0ZXN0X2NtcCBleHBlY3Qgb3V0JworZ2l0IGRpZmYgLXcgLS1pZ25vcmUtc3BhY2UtYXQtZW9sID4gb3V0Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbm90aGVyIHRlc3QsIHdpdGggLXcgLS1pZ25vcmUtc3BhY2UtYXQtZW9sJyAndGVzdF9jbXAgZXhwZWN0IG91dCcKK2dpdCBkaWZmIC13IC1iIC0taWdub3JlLXNwYWNlLWF0LWVvbCA+IG91dAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYW5vdGhlciB0ZXN0LCB3aXRoIC13IC1iIC0taWdub3JlLXNwYWNlLWF0LWVvbCcgJ3Rlc3RfY21wIGV4cGVjdCBvdXQnCiAKIHRyICdRJyAnXDAxNScgPDwgRU9GID4gZXhwZWN0CiBkaWZmIC0tZ2l0IGEveCBiL3gKQEAgLTExNiw2ICsxMjIsMjcgQEAKIEVPRgogZ2l0IGRpZmYgLWIgPiBvdXQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Fub3RoZXIgdGVzdCwgd2l0aCAtYicgJ3Rlc3RfY21wIGV4cGVjdCBvdXQnCitnaXQgZGlmZiAtYiAtLWlnbm9yZS1zcGFjZS1hdC1lb2wgPiBvdXQKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Fub3RoZXIgdGVzdCwgd2l0aCAtYiAtLWlnbm9yZS1zcGFjZS1hdC1lb2wnICd0ZXN0X2NtcCBleHBlY3Qgb3V0JworCit0ciAnUScgJ1wwMTUnIDw8IEVPRiA+IGV4cGVjdAorZGlmZiAtLWdpdCBhL3ggYi94CitpbmRleCBkOTlhZjIzLi44YjMyZmI1IDEwMDY0NAorLS0tIGEveAorKysrIGIveAorQEAgLTEsNiArMSw2IEBACistd2hpdGVzcGFjZSBhdCBiZWdpbm5pbmcKKy13aGl0ZXNwYWNlIGNoYW5nZQorLXdoaXRlc3BhY2UgaW4gdGhlIG1pZGRsZQorKwl3aGl0ZXNwYWNlIGF0IGJlZ2lubmluZworK3doaXRlc3BhY2UgCSBjaGFuZ2UKKyt3aGl0ZSBzcGFjZSBpbiB0aGUgbWlkZGxlCisgd2hpdGVzcGFjZSBhdCBlbmQKKyB1bmNoYW5nZWQgbGluZQorIENSIGF0IGVuZFEKK0VPRgorZ2l0IGRpZmYgLS1pZ25vcmUtc3BhY2UtYXQtZW9sID4gb3V0Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbm90aGVyIHRlc3QsIHdpdGggLS1pZ25vcmUtc3BhY2UtYXQtZW9sJyAndGVzdF9jbXAgZXhwZWN0IG91dCcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgbWl4ZWQgc3BhY2VzIGFuZCB0YWJzIGluIGluZGVudCcgJwogCmRpZmYgLS1naXQgYS90L3Q0MDE4LWRpZmYtZnVuY25hbWUuc2ggYi90L3Q0MDE4LWRpZmYtZnVuY25hbWUuc2gKaW5kZXggMzk4YmY0Yi4uYmU1NDEzNCAxMDA3NTUKLS0tIGEvdC90NDAxOC1kaWZmLWZ1bmNuYW1lLnNoCisrKyBiL3QvdDQwMTgtZGlmZi1mdW5jbmFtZS5zaApAQCAtMzIsNyArMzIsNyBAQAogCiBzZWQgJ3MvYmVlclxcL2JlZXIsXFwvJyA8IEJlZXIuamF2YSA+IEJlZXItY29ycmVjdC5qYXZhCiAKLWJ1aWx0aW5fcGF0dGVybnM9ImJpYnRleCBqYXZhIHBhc2NhbCBydWJ5IHRleCIKK2J1aWx0aW5fcGF0dGVybnM9ImJpYnRleCBodG1sIGphdmEgb2JqYyBwYXNjYWwgcGhwIHB5dGhvbiBydWJ5IHRleCIKIGZvciBwIGluICRidWlsdGluX3BhdHRlcm5zCiBkbwogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImJ1aWx0aW4gJHAgcGF0dGVybiBjb21waWxlcyIgJwpkaWZmIC0tZ2l0IGEvdC90NDAyMC1kaWZmLWV4dGVybmFsLnNoIGIvdC90NDAyMC1kaWZmLWV4dGVybmFsLnNoCmluZGV4IDIyZWY3ZDQuLmNhZWEyOTIgMTAwNzU1Ci0tLSBhL3QvdDQwMjAtZGlmZi1leHRlcm5hbC5zaAorKysgYi90L3Q0MDIwLWRpZmYtZXh0ZXJuYWwuc2gKQEAgLTEyNSw3ICsxMjUsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9yY2UgZGlmZiB3aXRoICJkaWZmIicgJwogCWVjaG8gPi5naXRhdHRyaWJ1dGVzICJmaWxlIGRpZmYiICYmCiAJZ2l0IGRpZmYgPmFjdHVhbCAmJgotCXRlc3RfY21wIC4uL3Q0MDIwL2RpZmYuTlVMIGFjdHVhbAorCXRlc3RfY21wICIkVEVTVF9ESVJFQ1RPUlkiL3Q0MDIwL2RpZmYuTlVMIGFjdHVhbAogJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQwMjEtZm9ybWF0LXBhdGNoLW51bWJlcmVkLnNoIGIvdC90NDAyMS1mb3JtYXQtcGF0Y2gtbnVtYmVyZWQuc2gKaW5kZXggNDNkNjRiYi4uMzkwYWYyMyAxMDA3NTUKLS0tIGEvdC90NDAyMS1mb3JtYXQtcGF0Y2gtbnVtYmVyZWQuc2gKKysrIGIvdC90NDAyMS1mb3JtYXQtcGF0Y2gtbnVtYmVyZWQuc2gKQEAgLTQ1LDE3ICs0NSwyMiBAQAogCWdyZXAgIl5TdWJqZWN0OiBcW1BBVENIIDIvMlxdIiAkMQogfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdEZWZhdWx0OiBubyBudW1iZXJlZCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2luZ2xlIHBhdGNoIGRlZmF1bHRzIHRvIG5vIG51bWJlcnMnICcKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IEhFQUR+MSA+cGF0Y2gwLnNpbmdsZSAmJgorCXRlc3Rfc2luZ2xlX25vX251bWJlcmVkIHBhdGNoMC5zaW5nbGUKKycKIAotCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgSEVBRH4yID5wYXRjaDAgJiYKLQl0ZXN0X25vX251bWJlcmVkIHBhdGNoMAordGVzdF9leHBlY3Rfc3VjY2VzcyAnbXVsdGlwbGUgcGF0Y2ggZGVmYXVsdHMgdG8gbnVtYmVyZWQnICcKKworCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgSEVBRH4yID5wYXRjaDAubXVsdGlwbGUgJiYKKwl0ZXN0X251bWJlcmVkIHBhdGNoMC5tdWx0aXBsZQogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1VzZSAtLW51bWJlcmVkJyAnCiAKLQlnaXQgZm9ybWF0LXBhdGNoIC0tbnVtYmVyZWQgLS1zdGRvdXQgSEVBRH4yID5wYXRjaDEgJiYKLQl0ZXN0X251bWJlcmVkIHBhdGNoMQorCWdpdCBmb3JtYXQtcGF0Y2ggLS1udW1iZXJlZCAtLXN0ZG91dCBIRUFEfjEgPnBhdGNoMSAmJgorCXRlc3Rfc2luZ2xlX251bWJlcmVkIHBhdGNoMQogCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDQwMjItZGlmZi1yZXdyaXRlLnNoIGIvdC90NDAyMi1kaWZmLXJld3JpdGUuc2gKaW5kZXggYmY5OTZmYy4uMmE1MzdhMiAxMDA3NTUKLS0tIGEvdC90NDAyMi1kaWZmLXJld3JpdGUuc2gKKysrIGIvdC90NDAyMi1kaWZmLXJld3JpdGUuc2gKQEAgLTYsMTIgKzYsMTIgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAKLQljYXQgLi4vLi4vQ09QWUlORyA+dGVzdCAmJgorCWNhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID50ZXN0ICYmCiAJZ2l0IGFkZCB0ZXN0ICYmCiAJdHIgXAogCSAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiIFwKIAkgICJub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbU5PUFFSU1RVVldYWVpBQkNERUZHSElKS0xNIiBcCi0JICA8Li4vLi4vQ09QWUlORyA+dGVzdAorCSAgPCIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPnRlc3QKIAogJwogCmRpZmYgLS1naXQgYS90L3Q0MDIzLWRpZmYtcmVuYW1lLXR5cGVjaGFuZ2Uuc2ggYi90L3Q0MDIzLWRpZmYtcmVuYW1lLXR5cGVjaGFuZ2Uuc2gKaW5kZXggNGRiZmM2ZS4uMjk3ZGRiNSAxMDA3NTUKLS0tIGEvdC90NDAyMy1kaWZmLXJlbmFtZS10eXBlY2hhbmdlLnNoCisrKyBiL3QvdDQwMjMtZGlmZi1yZW5hbWUtdHlwZWNoYW5nZS5zaApAQCAtNywyMSArNywyMSBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAKIAlybSAtZiBmb28gYmFyICYmCi0JY2F0IC4uLy4uL0NPUFlJTkcgPmZvbyAmJgorCWNhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID5mb28gJiYKIAlsbiAtcyBsaW5rbGluayBiYXIgJiYKIAlnaXQgYWRkIGZvbyBiYXIgJiYKIAlnaXQgY29tbWl0IC1hIC1tIEluaXRpYWwgJiYKIAlnaXQgdGFnIG9uZSAmJgogCiAJcm0gLWYgZm9vIGJhciAmJgotCWNhdCAuLi8uLi9DT1BZSU5HID5iYXIgJiYKKwljYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+YmFyICYmCiAJbG4gLXMgbGlua2xpbmsgZm9vICYmCiAJZ2l0IGFkZCBmb28gYmFyICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBTZWNvbmQgJiYKIAlnaXQgdGFnIHR3byAmJgogCiAJcm0gLWYgZm9vIGJhciAmJgotCWNhdCAuLi8uLi9DT1BZSU5HID5mb28gJiYKKwljYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+Zm9vICYmCiAJZ2l0IGFkZCBmb28gJiYKIAlnaXQgY29tbWl0IC1hIC1tIFRoaXJkICYmCiAJZ2l0IHRhZyB0aHJlZSAmJgpAQCAtMzUsMTUgKzM1LDE1IEBACiAJIyBUaGlzIGlzIHB1cmVseSBmb3Igc2FuaXR5IGNoZWNrCiAKIAlybSAtZiBmb28gYmFyICYmCi0JY2F0IC4uLy4uL0NPUFlJTkcgPmZvbyAmJgotCWNhdCAuLi8uLi9NYWtlZmlsZSA+YmFyICYmCisJY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPmZvbyAmJgorCWNhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9NYWtlZmlsZSA+YmFyICYmCiAJZ2l0IGFkZCBmb28gYmFyICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBGaWZ0aCAmJgogCWdpdCB0YWcgZml2ZSAmJgogCiAJcm0gLWYgZm9vIGJhciAmJgotCWNhdCAuLi8uLi9NYWtlZmlsZSA+Zm9vICYmCi0JY2F0IC4uLy4uL0NPUFlJTkcgPmJhciAmJgorCWNhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9NYWtlZmlsZSA+Zm9vICYmCisJY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPmJhciAmJgogCWdpdCBhZGQgZm9vIGJhciAmJgogCWdpdCBjb21taXQgLWEgLW0gU2l4dGggJiYKIAlnaXQgdGFnIHNpeApkaWZmIC0tZ2l0IGEvdC90NDAyNy1kaWZmLXN1Ym1vZHVsZS5zaCBiL3QvdDQwMjctZGlmZi1zdWJtb2R1bGUuc2gKaW5kZXggYmE2Njc5Yy4uMWMyZWRlYiAxMDA3NTUKLS0tIGEvdC90NDAyNy1kaWZmLXN1Ym1vZHVsZS5zaAorKysgYi90L3Q0MDI3LWRpZmYtc3VibW9kdWxlLnNoCkBAIC0zLDcgKzMsNyBAQAogdGVzdF9kZXNjcmlwdGlvbj0nZGlmZmVyZW5jZSBpbiBzdWJtb2R1bGVzJwogCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vZGlmZi1saWIuc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2gKIAogX3o0MD0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKZGlmZiAtLWdpdCBhL3QvdDQwMjktZGlmZi10cmFpbGluZy1zcGFjZS5zaCBiL3QvdDQwMjktZGlmZi10cmFpbGluZy1zcGFjZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45ZGRiYmNkCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDAyOS1kaWZmLXRyYWlsaW5nLXNwYWNlLnNoCkBAIC0wLDAgKzEsMzkgQEAKKyMhL2Jpbi9iYXNoCisjCisjIENvcHlyaWdodCAoYykgSmltIE1leWVyaW5nCisjCit0ZXN0X2Rlc2NyaXB0aW9uPSdkaWZmIGhvbm9ycyBjb25maWcgb3B0aW9uLCBkaWZmLnN1cHByZXNzQmxhbmtFbXB0eScKKworLiAuL3Rlc3QtbGliLnNoCisKK2NhdCA8PFxFT0YgPiBleHAgfHwKK2RpZmYgLS1naXQgYS9mIGIvZgoraW5kZXggNWY2YTI2My4uOGNiOGJhZSAxMDA2NDQKKy0tLSBhL2YKKysrKyBiL2YKK0BAIC0xLDIgKzEsMiBAQAorCisteAorK3kKK0VPRgorZXhpdCAxCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICIkdGVzdF9kZXNjcmlwdGlvbiIgXAorICAgICdwcmludGYgIlxueFxuIiA+IGYgJiYKKyAgICAgZ2l0IGFkZCBmICYmCisgICAgIGdpdCBjb21taXQgLXEgLW0uIGYgJiYKKyAgICAgcHJpbnRmICJcbnlcbiIgPiBmICYmCisgICAgIGdpdCBjb25maWcgLS1ib29sIGRpZmYuc3VwcHJlc3NCbGFua0VtcHR5IHRydWUgJiYKKyAgICAgZ2l0IGRpZmYgZiA+IGFjdHVhbCAmJgorICAgICB0ZXN0X2NtcCBleHAgYWN0dWFsICYmCisgICAgIHBlcmwgLWkuYmFrIC1wIC1lICJzL15cJC8gLyIgZXhwICYmCisgICAgIGdpdCBjb25maWcgLS1ib29sIGRpZmYuc3VwcHJlc3NCbGFua0VtcHR5IGZhbHNlICYmCisgICAgIGdpdCBkaWZmIGYgPiBhY3R1YWwgJiYKKyAgICAgdGVzdF9jbXAgZXhwIGFjdHVhbCAmJgorICAgICBnaXQgY29uZmlnIC0tYm9vbCAtLXVuc2V0IGRpZmYuc3VwcHJlc3NCbGFua0VtcHR5ICYmCisgICAgIGdpdCBkaWZmIGYgPiBhY3R1YWwgJiYKKyAgICAgdGVzdF9jbXAgZXhwIGFjdHVhbAorICAgICAnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDAzMC1kaWZmLXRleHRjb252LnNoIGIvdC90NDAzMC1kaWZmLXRleHRjb252LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmEzZjA4OTcKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MDMwLWRpZmYtdGV4dGNvbnYuc2gKQEAgLTAsMCArMSwxMjYgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdkaWZmLioudGV4dGNvbnYgdGVzdHMnCisuIC4vdGVzdC1saWIuc2gKKworZmluZF9kaWZmKCkgeworCXNlZCAnMSwvXmluZGV4IC9kJyB8IHNlZCAnL14tLSAkLywkZCcKK30KKworY2F0ID5leHBlY3QuYmluYXJ5IDw8J0VPRicKK0JpbmFyeSBmaWxlcyBhL2ZpbGUgYW5kIGIvZmlsZSBkaWZmZXIKK0VPRgorCitjYXQgPmV4cGVjdC50ZXh0IDw8J0VPRicKKy0tLSBhL2ZpbGUKKysrKyBiL2ZpbGUKK0BAIC0xICsxLDIgQEAKKyAwCisrMQorRU9GCisKK2NhdCA+aGV4ZHVtcCA8PCdFT0YnCisjIS9iaW4vc2gKK3BlcmwgLWUgJyQvID0gdW5kZWY7ICRfID0gPD47IHMvLi9vcmQoJCYpL2dlOyBwcmludCAkXycgPCAiJDEiCitFT0YKK2NobW9kICt4IGhleGR1bXAKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgYmluYXJ5IGZpbGUgd2l0aCBoaXN0b3J5JyAnCisJcHJpbnRmICJcXDBcXG4iID5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJZ2l0IGNvbW1pdCAtbSBvbmUgJiYKKwlwcmludGYgIlxcMDFcXG4iID4+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCBjb21taXQgLW0gdHdvCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgaXMgY29uc2lkZXJlZCBiaW5hcnkgYnkgcG9yY2VsYWluJyAnCisJZ2l0IGRpZmYgSEVBRF4gSEVBRCA+ZGlmZiAmJgorCWZpbmRfZGlmZiA8ZGlmZiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0LmJpbmFyeSBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmlsZSBpcyBjb25zaWRlcmVkIGJpbmFyeSBieSBwbHVtYmluZycgJworCWdpdCBkaWZmLXRyZWUgLXAgSEVBRF4gSEVBRCA+ZGlmZiAmJgorCWZpbmRfZGlmZiA8ZGlmZiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0LmJpbmFyeSBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdGV4dGNvbnYgZmlsdGVycycgJworCWVjaG8gZmlsZSBkaWZmPWZvbyA+LmdpdGF0dHJpYnV0ZXMgJiYKKwlnaXQgY29uZmlnIGRpZmYuZm9vLnRleHRjb252ICIkUFdEIi9oZXhkdW1wICYmCisJZ2l0IGNvbmZpZyBkaWZmLmZhaWwudGV4dGNvbnYgZmFsc2UKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiBwcm9kdWNlcyB0ZXh0JyAnCisJZ2l0IGRpZmYgSEVBRF4gSEVBRCA+ZGlmZiAmJgorCWZpbmRfZGlmZiA8ZGlmZiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0LnRleHQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYtdHJlZSBwcm9kdWNlcyBiaW5hcnknICcKKwlnaXQgZGlmZi10cmVlIC1wIEhFQUReIEhFQUQgPmRpZmYgJiYKKwlmaW5kX2RpZmYgPGRpZmYgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdC5iaW5hcnkgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyBwcm9kdWNlcyB0ZXh0JyAnCisJZ2l0IGxvZyAtMSAtcCA+bG9nICYmCisJZmluZF9kaWZmIDxsb2cgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdC50ZXh0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggcHJvZHVjZXMgYmluYXJ5JyAnCisJZ2l0IGZvcm1hdC1wYXRjaCAtLW5vLWJpbmFyeSAtLXN0ZG91dCBIRUFEXiA+cGF0Y2ggJiYKKwlmaW5kX2RpZmYgPHBhdGNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QuYmluYXJ5IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgLXYgcHJvZHVjZXMgdGV4dCcgJworCWdpdCByZXNldCAtLXNvZnQgSEVBRF4gJiYKKwlnaXQgc3RhdHVzIC12ID5kaWZmICYmCisJZmluZF9kaWZmIDxkaWZmID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QudGV4dCBhY3R1YWwgJiYKKwlnaXQgcmVzZXQgLS1zb2Z0IEhFQURAezF9CisnCisKK2NhdCA+ZXhwZWN0LnN0YXQgPDwnRU9GJworIGZpbGUgfCAgQmluIDIgLT4gNCBieXRlcworIDEgZmlsZXMgY2hhbmdlZCwgMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorRU9GCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaWZmc3RhdCBkb2VzIG5vdCBydW4gdGV4dGNvbnYnICcKKwllY2hvIGZpbGUgZGlmZj1mYWlsID4uZ2l0YXR0cmlidXRlcyAmJgorCWdpdCBkaWZmIC0tc3RhdCBIRUFEXiBIRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3Quc3RhdCBhY3R1YWwKKycKKyMgcmVzdG9yZSB3b3JraW5nIHNldHVwCitlY2hvIGZpbGUgZGlmZj1mb28gPi5naXRhdHRyaWJ1dGVzCisKK2NhdCA+ZXhwZWN0LnR5cGVjaGFuZ2UgPDwnRU9GJworLS0tIGEvZmlsZQorKysrIC9kZXYvbnVsbAorQEAgLTEsMiArMCwwIEBACistMAorLTEKK2RpZmYgLS1naXQgYS9maWxlIGIvZmlsZQorbmV3IGZpbGUgbW9kZSAxMjAwMDAKK2luZGV4IDAwMDAwMDAuLjY3YmU0MjEKKy0tLSAvZGV2L251bGwKKysrKyBiL2ZpbGUKK0BAIC0wLDAgKzEgQEAKKytmcm90egorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitFT0YKKyMgbWFrZSBhIHN5bWxpbmsgdGhlIGhhcmQgd2F5IHRoYXQgd29ya3Mgb24gc3ltbGluay1jaGFsbGVuZ2VkIGZpbGUgc3lzdGVtcwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGV4dGNvbnYgZG9lcyBub3QgYWN0IG9uIHN5bWxpbmtzJyAnCisJcHJpbnRmIGZyb3R6ID4gZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCBscy1maWxlcyAtcyB8IHNlZCAtZSBzLzEwMDY0NC8xMjAwMDAvIHwKKwkJZ2l0IHVwZGF0ZS1pbmRleCAtLWluZGV4LWluZm8gJiYKKwlnaXQgY29tbWl0IC1tIHR5cGVjaGFuZ2UgJiYKKwlnaXQgc2hvdyA+ZGlmZiAmJgorCWZpbmRfZGlmZiA8ZGlmZiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0LnR5cGVjaGFuZ2UgYWN0dWFsCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDAzMS1kaWZmLXJld3JpdGUtYmluYXJ5LnNoIGIvdC90NDAzMS1kaWZmLXJld3JpdGUtYmluYXJ5LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE4OTRjNjAKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MDMxLWRpZmYtcmV3cml0ZS1iaW5hcnkuc2gKQEAgLTAsMCArMSw2NyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3Jld3JpdGUgZGlmZiBvbiBiaW5hcnkgZmlsZScKKworLiAuL3Rlc3QtbGliLnNoCisKKyMgV2UgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gbWVldCB0aGUgTUlOSU1VTV9CUkVBS19TSVpFCisjIHJlcXVpcmVtZW50LgorbWFrZV9maWxlKCkgeworCSMgY29tbW9uIGZpcnN0IGxpbmUgdG8gaGVscCBpZGVudGlmeSByZXdyaXRlIHZlcnN1cyByZWd1bGFyIGRpZmYKKwlwcmludGYgIj1cbiIgPmZpbGUKKwlmb3IgaSBpbiAxIDIgMyA0IDUgNiA3IDggOSAxMAorCWRvCisJCWZvciBqIGluIDEgMiAzIDQgNSA2IDcgOCA5CisJCWRvCisJCQlmb3IgayBpbiAxIDIgMyA0IDUKKwkJCWRvCisJCQkJcHJpbnRmICIkMVxuIgorCQkJZG9uZQorCQlkb25lCisJZG9uZSA+PmZpbGUKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGJpbmFyeSBmaWxlIHdpdGggY2hhbmdlcycgJworCW1ha2VfZmlsZSAiXFwwIiAmJgorCWdpdCBhZGQgZmlsZSAmJgorCW1ha2VfZmlsZSAiXFwwMSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndmFuaWxsYSBkaWZmIGlzIGJpbmFyeScgJworCWdpdCBkaWZmID5kaWZmICYmCisJZ3JlcCAiQmluYXJ5IGZpbGVzIGEvZmlsZSBhbmQgYi9maWxlIGRpZmZlciIgZGlmZgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXdyaXRlIGRpZmYgaXMgYmluYXJ5JyAnCisJZ2l0IGRpZmYgLUIgPmRpZmYgJiYKKwlncmVwICJkaXNzaW1pbGFyaXR5IGluZGV4IiBkaWZmICYmCisJZ3JlcCAiQmluYXJ5IGZpbGVzIGEvZmlsZSBhbmQgYi9maWxlIGRpZmZlciIgZGlmZgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXdyaXRlIGRpZmYgY2FuIHNob3cgYmluYXJ5IHBhdGNoJyAnCisJZ2l0IGRpZmYgLUIgLS1iaW5hcnkgPmRpZmYgJiYKKwlncmVwICJkaXNzaW1pbGFyaXR5IGluZGV4IiBkaWZmICYmCisJZ3JlcCAiR0lUIGJpbmFyeSBwYXRjaCIgZGlmZgorJworCit7CisJZWNobyAiIyEkU0hFTExfUEFUSCIKKwljYXQgPDwnRU9GJworcGVybCAtZSAnJC8gPSB1bmRlZjsgJF8gPSA8Pjsgcy8uL29yZCgkJikvZ2U7IHByaW50ICRfJyA8ICIkMSIKK0VPRgorfSA+ZHVtcAorY2htb2QgK3ggZHVtcAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCB0ZXh0Y29udicgJworCWVjaG8gZmlsZSBkaWZmPWZvbyA+LmdpdGF0dHJpYnV0ZXMgJiYKKwlnaXQgY29uZmlnIGRpZmYuZm9vLnRleHRjb252ICIkUFdEIi9kdW1wCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jld3JpdGUgZGlmZiByZXNwZWN0cyB0ZXh0Y29udicgJworCWdpdCBkaWZmIC1CID5kaWZmICYmCisJZ3JlcCAiZGlzc2ltaWxhcml0eSBpbmRleCIgZGlmZiAmJgorCWdyZXAgIl4tNjEiIGRpZmYgJiYKKwlncmVwICJeLTAiIGRpZmYKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MTAwLWFwcGx5LXN0YXQuc2ggYi90L3Q0MTAwLWFwcGx5LXN0YXQuc2gKaW5kZXggZTBjNjc3NC4uOWI0MzNkZSAxMDA3NTUKLS0tIGEvdC90NDEwMC1hcHBseS1zdGF0LnNoCisrKyBiL3QvdDQxMDAtYXBwbHktc3RhdC5zaApAQCAtMTcsMTMgKzE3LDEzIEBACiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJHRpdGxlIiAnCiAJCWdpdCBhcHBseSAtLXN0YXQgLS1zdW1tYXJ5IFwKIAkJCTwiJFRFU1RfRElSRUNUT1JZL3Q0MTAwL3QtYXBwbHktJG51bS5wYXRjaCIgPmN1cnJlbnQgJiYKLQkJdGVzdF9jbXAgLi4vdDQxMDAvdC1hcHBseS0kbnVtLmV4cGVjdCBjdXJyZW50CisJCXRlc3RfY21wICIkVEVTVF9ESVJFQ1RPUlkiL3Q0MTAwL3QtYXBwbHktJG51bS5leHBlY3QgY3VycmVudAogCScKIAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiR0aXRsZSB3aXRoIHJlY291bnQiICcKIAkJc2VkIC1lICIkVU5DIiA8IiRURVNUX0RJUkVDVE9SWS90NDEwMC90LWFwcGx5LSRudW0ucGF0Y2giIHwKIAkJZ2l0IGFwcGx5IC0tcmVjb3VudCAtLXN0YXQgLS1zdW1tYXJ5ID5jdXJyZW50ICYmCi0JCXRlc3RfY21wIC4uL3Q0MTAwL3QtYXBwbHktJG51bS5leHBlY3QgY3VycmVudAorCQl0ZXN0X2NtcCAiJFRFU1RfRElSRUNUT1JZIi90NDEwMC90LWFwcGx5LSRudW0uZXhwZWN0IGN1cnJlbnQKIAknCiBkb25lIDw8XEVPRgogcmVuYW1lCmRpZmYgLS1naXQgYS90L3Q0MTAxLWFwcGx5LW5vbmwuc2ggYi90L3Q0MTAxLWFwcGx5LW5vbmwuc2gKaW5kZXggZGE4YWJjZi4uZTM0NDNkMCAxMDA3NTUKLS0tIGEvdC90NDEwMS1hcHBseS1ub25sLnNoCisrKyBiL3QvdDQxMDEtYXBwbHktbm9ubC5zaApAQCAtMjEsOSArMjEsMTAgQEAKICAgZG8KICAgICB0ZXN0ICRpIC1lcSAkaiAmJiBjb250aW51ZQogICAgIGNhdCBmcm90ei4kaSA+ZnJvdHoKLSAgICB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAgICAgImFwcGx5IGRpZmYgYmV0d2VlbiAkaSBhbmQgJGoiIFwKLQkiZ2l0IGFwcGx5IDwuLi90NDEwMS9kaWZmLiRpLSRqICYmIGRpZmYgZnJvdHouJGogZnJvdHoiCisgICAgdGVzdF9leHBlY3Rfc3VjY2VzcyAiYXBwbHkgZGlmZiBiZXR3ZWVuICRpIGFuZCAkaiIgJworCWdpdCBhcHBseSA8IiRURVNUX0RJUkVDVE9SWSIvdDQxMDEvZGlmZi4kaS0kaiAmJgorCXRlc3RfY21wIGZyb3R6LiRqIGZyb3R6CisgICAgJwogICBkb25lCiBkb25lCiAKZGlmZiAtLWdpdCBhL3QvdDQxMTQtYXBwbHktdHlwZWNoYW5nZS5zaCBiL3QvdDQxMTQtYXBwbHktdHlwZWNoYW5nZS5zaAppbmRleCA1NTMzNDkyLi4wZjE4NWNhIDEwMDc1NQotLS0gYS90L3Q0MTE0LWFwcGx5LXR5cGVjaGFuZ2Uuc2gKKysrIGIvdC90NDExNC1hcHBseS10eXBlY2hhbmdlLnNoCkBAIC0yNSw2ICsyNSwxMCBAQAogCWdpdCB1cGRhdGUtaW5kZXggZm9vICYmCiAJZ2l0IGNvbW1pdCAtbSAiZm9vIGJhY2sgdG8gZmlsZSIgJiYKIAlnaXQgYnJhbmNoIGZvby1iYWNrLXRvLWZpbGUgJiYKKwlwcmludGYgIlwwIiA+IGZvbyAmJgorCWdpdCB1cGRhdGUtaW5kZXggZm9vICYmCisJZ2l0IGNvbW1pdCAtbSAiZm9vIGJlY29tZXMgYmluYXJ5IiAmJgorCWdpdCBicmFuY2ggZm9vLWJlY29tZXMtYmluYXJ5ICYmCiAJcm0gLWYgZm9vICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlbW92ZSBmb28gJiYKIAlta2RpciBmb28gJiYKQEAgLTg1LDYgKzg5LDIwIEBACiAJJwogdGVzdF9kZWJ1ZyAnY2F0IHBhdGNoJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaW5hcnkgZmlsZSBiZWNvbWVzIHN5bWxpbmsnICcKKwlnaXQgY2hlY2tvdXQgLWYgZm9vLWJlY29tZXMtYmluYXJ5ICYmCisJZ2l0IGRpZmYtdHJlZSAtcCAtLWJpbmFyeSBIRUFEIGZvby1zeW1saW5rZWQtdG8tYmFyID4gcGF0Y2ggJiYKKwlnaXQgYXBwbHkgLS1pbmRleCA8IHBhdGNoCisJJwordGVzdF9kZWJ1ZyAnY2F0IHBhdGNoJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzeW1saW5rIGJlY29tZXMgYmluYXJ5IGZpbGUnICcKKwlnaXQgY2hlY2tvdXQgLWYgZm9vLXN5bWxpbmtlZC10by1iYXIgJiYKKwlnaXQgZGlmZi10cmVlIC1wIC0tYmluYXJ5IEhFQUQgZm9vLWJlY29tZXMtYmluYXJ5ID4gcGF0Y2ggJiYKKwlnaXQgYXBwbHkgLS1pbmRleCA8IHBhdGNoCisJJwordGVzdF9kZWJ1ZyAnY2F0IHBhdGNoJworCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bWxpbmsgYmVjb21lcyBkaXJlY3RvcnknICcKIAlnaXQgY2hlY2tvdXQgLWYgZm9vLXN5bWxpbmtlZC10by1iYXIgJiYKZGlmZiAtLWdpdCBhL3QvdDQxMjktYXBwbHktc2FtZW1vZGUuc2ggYi90L3Q0MTI5LWFwcGx5LXNhbWVtb2RlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFkZmNiYjUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MTI5LWFwcGx5LXNhbWVtb2RlLnNoCkBAIC0wLDAgKzEsNjIgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdhcHBseWluZyBwYXRjaCB3aXRoIG1vZGUgYml0cycKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJworCWVjaG8gb3JpZ2luYWwgPmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIGluaXRpYWwgJiYKKwlnaXQgdGFnIGluaXRpYWwgJiYKKwllY2hvIG1vZGlmaWVkID5maWxlICYmCisJZ2l0IGRpZmYgLS1zdGF0IC1wID5wYXRjaC0wLnR4dCAmJgorCWNobW9kICt4IGZpbGUgJiYKKwlnaXQgZGlmZiAtLXN0YXQgLXAgPnBhdGNoLTEudHh0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NhbWUgbW9kZSAobm8gaW5kZXgpJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWNobW9kICt4IGZpbGUgJiYKKwlnaXQgYXBwbHkgcGF0Y2gtMC50eHQgJiYKKwl0ZXN0IC14IGZpbGUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2FtZSBtb2RlICh3aXRoIGluZGV4KScgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwljaG1vZCAreCBmaWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJZ2l0IGFwcGx5IC0taW5kZXggcGF0Y2gtMC50eHQgJiYKKwl0ZXN0IC14IGZpbGUgJiYKKwlnaXQgZGlmZiAtLWV4aXQtY29kZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzYW1lIG1vZGUgKGluZGV4IG9ubHkpJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWNobW9kICt4IGZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwlnaXQgYXBwbHkgLS1jYWNoZWQgcGF0Y2gtMC50eHQgJiYKKwlnaXQgbHMtZmlsZXMgLXMgZmlsZSB8IGdyZXAgIl4xMDA3NTUiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGUgdXBkYXRlIChubyBpbmRleCknICcKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGFwcGx5IHBhdGNoLTEudHh0ICYmCisJdGVzdCAteCBmaWxlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGUgdXBkYXRlICh3aXRoIGluZGV4KScgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgYXBwbHkgLS1pbmRleCBwYXRjaC0xLnR4dCAmJgorCXRlc3QgLXggZmlsZSAmJgorCWdpdCBkaWZmIC0tZXhpdC1jb2RlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGUgdXBkYXRlIChpbmRleCBvbmx5KScgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgYXBwbHkgLS1jYWNoZWQgcGF0Y2gtMS50eHQgJiYKKwlnaXQgbHMtZmlsZXMgLXMgZmlsZSB8IGdyZXAgIl4xMDA3NTUiCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDE1MC1hbS5zaCBiL3QvdDQxNTAtYW0uc2gKaW5kZXggMWJlNWZiMy4uNzk2Zjc5NSAxMDA3NTUKLS0tIGEvdC90NDE1MC1hbS5zaAorKysgYi90L3Q0MTUwLWFtLnNoCkBAIC0xNjUsNyArMTY1LDcgQEAKIAlnaXQgYW0gLS1rZWVwIHBhdGNoNCAmJgogCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8Ci0JCWdyZXAgLXEgLUYgIlJlOiBSZTogUmU6IFtQQVRDSCAxLzUgdjJdIHRoaXJkIgorCQlmZ3JlcCAiUmU6IFJlOiBSZTogW1BBVENIIDEvNSB2Ml0gdGhpcmQiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIC0zIGZhbGxzIGJhY2sgdG8gMy13YXkgbWVyZ2UnICcKZGlmZiAtLWdpdCBhL3QvdDQxNTEtYW0tYWJvcnQuc2ggYi90L3Q0MTUxLWFtLWFib3J0LnNoCmluZGV4IDQ0NDhhYmEuLjJiOTEyZDcgMTAwNzU1Ci0tLSBhL3QvdDQxNTEtYW0tYWJvcnQuc2gKKysrIGIvdC90NDE1MS1hbS1hYm9ydC5zaApAQCAtMjIsNyArMjIsNyBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtYSAtbSAkaSB8fCBicmVhawogCWRvbmUgJiYKLQlnaXQgZm9ybWF0LXBhdGNoIGluaXRpYWwgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tbm8tbnVtYmVyZWQgaW5pdGlhbCAmJgogCWdpdCBjaGVja291dCAtYiBzaWRlIGluaXRpYWwgJiYKIAllY2hvIGxvY2FsIGNoYW5nZSA+ZmlsZS0yLWV4cGVjdAogJwpkaWZmIC0tZ2l0IGEvdC90NDI1Mi1hbS1vcHRpb25zLnNoIGIvdC90NDI1Mi1hbS1vcHRpb25zLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNhYjllOGUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjUyLWFtLW9wdGlvbnMuc2gKQEAgLTAsMCArMSw1MyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBhbSBub3QgbG9zaW5nIG9wdGlvbnMnCisuIC4vdGVzdC1saWIuc2gKKwordG09IiRURVNUX0RJUkVDVE9SWS90NDI1MiIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJY3AgIiR0bS9maWxlLTEtMCIgZmlsZS0xICYmCisJY3AgIiR0bS9maWxlLTItMCIgZmlsZS0yICYmCisJZ2l0IGFkZCBmaWxlLTEgZmlsZS0yICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCisJZ2l0IHRhZyBpbml0aWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludGVycnVwdGVkIGFtIC0td2hpdGVzcGFjZT1maXgnICcKKwlybSAtcmYgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYW0gLS13aGl0ZXNwYWNlPWZpeCAiJHRtIi9hbS10ZXN0LTEtPyAmJgorCWdpdCBhbSAtLXNraXAgJiYKKwlncmVwIDMgZmlsZS0xICYmCisJZ3JlcCAiXlNpeCQiIGZpbGUtMgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnRlcnJ1cHRlZCBhbSAtQzEnICcKKwlybSAtcmYgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYW0gLUMxICIkdG0iL2FtLXRlc3QtMi0/ICYmCisJZ2l0IGFtIC0tc2tpcCAmJgorCWdyZXAgMyBmaWxlLTEgJiYKKwlncmVwICJeVGhyZWUkIiBmaWxlLTIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW50ZXJydXB0ZWQgYW0gLXAyJyAnCisJcm0gLXJmIC5naXQvcmViYXNlLWFwcGx5ICYmCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFtIC1wMiAiJHRtIi9hbS10ZXN0LTMtPyAmJgorCWdpdCBhbSAtLXNraXAgJiYKKwlncmVwIDMgZmlsZS0xICYmCisJZ3JlcCAiXlRocmVlJCIgZmlsZS0yCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludGVycnVwdGVkIGFtIC1DMSAtcDInICcKKwlybSAtcmYgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYW0gLXAyIC1DMSAiJHRtIi9hbS10ZXN0LTQtPyAmJgorCWdpdCBhbSAtLXNraXAgJiYKKwlncmVwIDMgZmlsZS0xICYmCisJZ3JlcCAiXlRocmVlJCIgZmlsZS0yCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDI1Mi9hbS10ZXN0LTEtMSBiL3QvdDQyNTIvYW0tdGVzdC0xLTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBjMDlkYwotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyNTIvYW0tdGVzdC0xLTEKQEAgLTAsMCArMSwxOSBAQAorRnJvbTogQSBVIFRob3IgPGF1LnRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBUaHUgRGVjIDQgMTY6MDA6MDAgMjAwOCAtMDgwMAorU3ViamVjdDogVGhyZWUKKworQXBwbGljYXRpb24gb2YgdGhpcyBzaG91bGQgYmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgZmlyc3QgbGluZSBpbiB0aGUKK2NvbnRleHQgZG9lcyBub3QgbWF0Y2guCisKK2RpZmYgLS1naXQgaS9maWxlLTEgdy9maWxlLTEKK2luZGV4IDA2ZTU2N2IuLjEwZjgzNDIgMTAwNjQ0CistLS0gaS9maWxlLTEKKysrKyB3L2ZpbGUtMQorQEAgLTEsNiArMSw2IEBACisgT25lCisgMgorLTMKKytUaHJlZSAKKyA0CisgNQorIDYKZGlmZiAtLWdpdCBhL3QvdDQyNTIvYW0tdGVzdC0xLTIgYi90L3Q0MjUyL2FtLXRlc3QtMS0yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiODc0YWUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjUyL2FtLXRlc3QtMS0yCkBAIC0wLDAgKzEsMjEgQEAKK0Zyb206IEEgVSBUaG9yIDxhdS50aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogVGh1IERlYyA0IDE2OjAwOjAwIDIwMDggLTA4MDAKK1N1YmplY3Q6IFNpeAorCitBcHBseWluZyB0aGlzIHBhdGNoIHdpdGggLS13aGl0ZXNwYWNlPWZpeCBzaG91bGQgbG9zZSAKK3RoZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFmdGVyICJTaXgiLgorCitkaWZmIC0tZ2l0IGkvZmlsZS0yIHcvZmlsZS0yCitpbmRleCAwNmU1NjdiLi5iNmYzYTE2IDEwMDY0NAorLS0tIGkvZmlsZS0yCisrKysgdy9maWxlLTIKK0BAIC0xLDcgKzEsNyBAQAorIDEKKyAyCistMworK1RocmVlCisgNAorIDUKKy02CisrU2l4IAorIDcKZGlmZiAtLWdpdCBhL3QvdDQyNTIvYW0tdGVzdC0yLTEgYi90L3Q0MjUyL2FtLXRlc3QtMi0xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZGE5NGEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjUyL2FtLXRlc3QtMi0xCkBAIC0wLDAgKzEsMTkgQEAKK0Zyb206IEEgVSBUaG9yIDxhdS50aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogVGh1IERlYyA0IDE2OjAwOjAwIDIwMDggLTA4MDAKK1N1YmplY3Q6IFRocmVlCisKK0FwcGxpY2F0aW9uIG9mIHRoaXMgc2hvdWxkIGJlIHJlamVjdGVkIGV2ZW4gd2l0aCAtQzEgYmVjYXVzZSB0aGUKK3ByZWltYWdlIGxpbmUgaW4gdGhlIGNvbnRleHQgZG9lcyBub3QgbWF0Y2guCisKK2RpZmYgLS1naXQgaS9maWxlLTEgdy9maWxlLTEKK2luZGV4IDA2ZTU2N2IuLjEwZjgzNDIgMTAwNjQ0CistLS0gaS9maWxlLTEKKysrKyB3L2ZpbGUtMQorQEAgLTEsNiArMSw2IEBACisgMQorIDIKKy1UcmVzCisrVGhyZWUgCisgNAorIDUKKyA2CmRpZmYgLS1naXQgYS90L3Q0MjUyL2FtLXRlc3QtMi0yIGIvdC90NDI1Mi9hbS10ZXN0LTItMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWM2NjAwCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDI1Mi9hbS10ZXN0LTItMgpAQCAtMCwwICsxLDIxIEBACitGcm9tOiBBIFUgVGhvciA8YXUudGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IFRodSBEZWMgNCAxNjowMDowMCAyMDA4IC0wODAwCitTdWJqZWN0OiBTaXgKKworQXBwbHlpbmcgdGhpcyBwYXRjaCB3aXRoIC1DMSBzaG91bGQgYmUgc3VjY2Vzc2Z1bCBldmVuIHRob3VnaCAKK3RoZSBmaXJzdCBsaW5lIGluIHRoZSBjb250ZXh0IGRvZXMgbm90IG1hdGNoLgorCitkaWZmIC0tZ2l0IGkvZmlsZS0yIHcvZmlsZS0yCitpbmRleCAwNmU1NjdiLi5iNmYzYTE2IDEwMDY0NAorLS0tIGkvZmlsZS0yCisrKysgdy9maWxlLTIKK0BAIC0xLDcgKzEsNyBAQAorIE9uZQorIDIKKy0zCisrVGhyZWUKKyA0CisgNQorLTYKKytTaXgKKyA3CmRpZmYgLS1naXQgYS90L3Q0MjUyL2FtLXRlc3QtMy0xIGIvdC90NDI1Mi9hbS10ZXN0LTMtMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDhlNWFiCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDI1Mi9hbS10ZXN0LTMtMQpAQCAtMCwwICsxLDE5IEBACitGcm9tOiBBIFUgVGhvciA8YXUudGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IFRodSBEZWMgNCAxNjowMDowMCAyMDA4IC0wODAwCitTdWJqZWN0OiBUaHJlZQorCitBcHBsaWNhdGlvbiBvZiB0aGlzIHNob3VsZCBiZSByZWplY3RlZCBldmVuIHdpdGggLXAyIGJlY2F1c2UgdGhlCitwcmVpbWFnZSBsaW5lIGluIHRoZSBjb250ZXh0IGRvZXMgbm90IG1hdGNoLgorCitkaWZmIC0tZ2l0IGkvanVuay9maWxlLTEgdy9qdW5rL2ZpbGUtMQoraW5kZXggMDZlNTY3Yi4uMTBmODM0MiAxMDA2NDQKKy0tLSBpL2p1bmsvZmlsZS0xCisrKysgdy9qdW5rL2ZpbGUtMQorQEAgLTEsNiArMSw2IEBACisgMQorIDIKKy1UcmVzCisrVGhyZWUgCisgNAorIDUKKyA2CmRpZmYgLS1naXQgYS90L3Q0MjUyL2FtLXRlc3QtMy0yIGIvdC90NDI1Mi9hbS10ZXN0LTMtMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDgxYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NDI1Mi9hbS10ZXN0LTMtMgpAQCAtMCwwICsxLDIxIEBACitGcm9tOiBBIFUgVGhvciA8YXUudGhvckBleGFtcGxlLmNvbT4KK0RhdGU6IFRodSBEZWMgNCAxNjowMDowMCAyMDA4IC0wODAwCitTdWJqZWN0OiBTaXgKKworQXBwbHlpbmcgdGhpcyBwYXRjaCB3aXRoIC1wMiBzaG91bGQgYmUgc3VjY2Vzc2Z1bCBldmVuIHRob3VnaAordGhlIHBhdGNoIGlzIGFnYWluc3QgYSB3cm9uZyBsZXZlbC4KKworZGlmZiAtLWdpdCBpL2p1bmsvZmlsZS0yIHcvanVuay9maWxlLTIKK2luZGV4IDA2ZTU2N2IuLmI2ZjNhMTYgMTAwNjQ0CistLS0gaS9qdW5rL2ZpbGUtMgorKysrIHcvanVuay9maWxlLTIKK0BAIC0xLDcgKzEsNyBAQAorIDEKKyAyCistMworK1RocmVlCisgNAorIDUKKy02CisrU2l4CisgNwpkaWZmIC0tZ2l0IGEvdC90NDI1Mi9hbS10ZXN0LTQtMSBiL3QvdDQyNTIvYW0tdGVzdC00LTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ4Y2Q2YwotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyNTIvYW0tdGVzdC00LTEKQEAgLTAsMCArMSwxOSBAQAorRnJvbTogQSBVIFRob3IgPGF1LnRob3JAZXhhbXBsZS5jb20+CitEYXRlOiBUaHUgRGVjIDQgMTY6MDA6MDAgMjAwOCAtMDgwMAorU3ViamVjdDogVGhyZWUKKworQXBwbGljYXRpb24gb2YgdGhpcyBzaG91bGQgYmUgcmVqZWN0ZWQgZXZlbiB3aXRoIC1DMSAtcDIgYmVjYXVzZQordGhlIHByZWltYWdlIGxpbmUgaW4gdGhlIGNvbnRleHQgZG9lcyBub3QgbWF0Y2guCisKK2RpZmYgLS1naXQgaS9qdW5rL2ZpbGUtMSB3L2p1bmsvZmlsZS0xCitpbmRleCAwNmU1NjdiLi4xMGY4MzQyIDEwMDY0NAorLS0tIGkvanVuay9maWxlLTEKKysrKyB3L2p1bmsvZmlsZS0xCitAQCAtMSw2ICsxLDYgQEAKKyAxCisgMgorLVRyZXMKKytUaHJlZSAKKyA0CisgNQorIDYKZGlmZiAtLWdpdCBhL3QvdDQyNTIvYW0tdGVzdC00LTIgYi90L3Q0MjUyL2FtLXRlc3QtNC0yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNjliZmEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjUyL2FtLXRlc3QtNC0yCkBAIC0wLDAgKzEsMjIgQEAKK0Zyb206IEEgVSBUaG9yIDxhdS50aG9yQGV4YW1wbGUuY29tPgorRGF0ZTogVGh1IERlYyA0IDE2OjAwOjAwIDIwMDggLTA4MDAKK1N1YmplY3Q6IFNpeAorCitBcHBseWluZyB0aGlzIHBhdGNoIHdpdGggLUMxIC1wMiBzaG91bGQgYmUgc3VjY2Vzc2Z1bCBldmVuIHRob3VnaAordGhlIHBhdGNoIGlzIGFnYWluc3QgYSB3cm9uZyBsZXZlbCBhbmQgdGhlIGZpcnN0IGNvbnRleHQgbGluZSBkb2VzCitub3QgbWF0Y2guCisKK2RpZmYgLS1naXQgaS9qdW5rL2ZpbGUtMiB3L2p1bmsvZmlsZS0yCitpbmRleCAwNmU1NjdiLi5iNmYzYTE2IDEwMDY0NAorLS0tIGkvanVuay9maWxlLTIKKysrKyB3L2p1bmsvZmlsZS0yCitAQCAtMSw3ICsxLDcgQEAKKyBPbmUKKyAyCistMworK1RocmVlCisgNAorIDUKKy02CisrU2l4CisgNwpkaWZmIC0tZ2l0IGEvdC90NDI1Mi9maWxlLTEtMCBiL3QvdDQyNTIvZmlsZS0xLTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZlNTY3YgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyNTIvZmlsZS0xLTAKQEAgLTAsMCArMSw3IEBACisxCisyCiszCis0Cis1Cis2Cis3CmRpZmYgLS1naXQgYS90L3Q0MjUyL2ZpbGUtMi0wIGIvdC90NDI1Mi9maWxlLTItMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmU1NjdiCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDI1Mi9maWxlLTItMApAQCAtMCwwICsxLDcgQEAKKzEKKzIKKzMKKzQKKzUKKzYKKzcKZGlmZiAtLWdpdCBhL3QvdDUxMDAtbWFpbGluZm8uc2ggYi90L3Q1MTAwLW1haWxpbmZvLnNoCmluZGV4IDE5OGUzNTAuLmZlMTQ1ODkgMTAwNzU1Ci0tLSBhL3QvdDUxMDAtbWFpbGluZm8uc2gKKysrIGIvdC90NTEwMC1tYWlsaW5mby5zaApAQCAtOCwyNyArOCwyOCBAQAogLiAuL3Rlc3QtbGliLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NwbGl0IHNhbXBsZSBib3gnIFwKLQknZ2l0IG1haWxzcGxpdCAtby4gLi4vdDUxMDAvc2FtcGxlLm1ib3ggPmxhc3QgJiYKKwknZ2l0IG1haWxzcGxpdCAtby4gIiRURVNUX0RJUkVDVE9SWSIvdDUxMDAvc2FtcGxlLm1ib3ggPmxhc3QgJiYKIAlsYXN0PWBjYXQgbGFzdGAgJiYKIAllY2hvIHRvdGFsIGlzICRsYXN0ICYmCiAJdGVzdCBgY2F0IGxhc3RgID0gMTEnCiAKIGZvciBtYWlsIGluIGBlY2hvIDAwKmAKIGRvCi0JdGVzdF9leHBlY3Rfc3VjY2VzcyAibWFpbGluZm8gJG1haWwiIFwKLQkJImdpdCBtYWlsaW5mbyAtdSBtc2ckbWFpbCBwYXRjaCRtYWlsIDwkbWFpbCA+aW5mbyRtYWlsICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAibWFpbGluZm8gJG1haWwiICcKKwkJZ2l0IG1haWxpbmZvIC11IG1zZyRtYWlsIHBhdGNoJG1haWwgPCRtYWlsID5pbmZvJG1haWwgJiYKIAkJZWNobyBtc2cgJiYKLQkJZGlmZiAuLi90NTEwMC9tc2ckbWFpbCBtc2ckbWFpbCAmJgorCQl0ZXN0X2NtcCAiJFRFU1RfRElSRUNUT1JZIi90NTEwMC9tc2ckbWFpbCBtc2ckbWFpbCAmJgogCQllY2hvIHBhdGNoICYmCi0JCWRpZmYgLi4vdDUxMDAvcGF0Y2gkbWFpbCBwYXRjaCRtYWlsICYmCisJCXRlc3RfY21wICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MTAwL3BhdGNoJG1haWwgcGF0Y2gkbWFpbCAmJgogCQllY2hvIGluZm8gJiYKLQkJZGlmZiAuLi90NTEwMC9pbmZvJG1haWwgaW5mbyRtYWlsIgorCQl0ZXN0X2NtcCAiJFRFU1RfRElSRUNUT1JZIi90NTEwMC9pbmZvJG1haWwgaW5mbyRtYWlsCisJJwogZG9uZQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXNwZWN0IE5VTHMnICcKIAotCWdpdCBtYWlsc3BsaXQgLWQzIC1vLiAuLi90NTEwMC9udWwtcGxhaW4gJiYKLQljbXAgLi4vdDUxMDAvbnVsLXBsYWluIDAwMSAmJgorCWdpdCBtYWlsc3BsaXQgLWQzIC1vLiAiJFRFU1RfRElSRUNUT1JZIi90NTEwMC9udWwtcGxhaW4gJiYKKwl0ZXN0X2NtcCAiJFRFU1RfRElSRUNUT1JZIi90NTEwMC9udWwtcGxhaW4gMDAxICYmCiAJKGNhdCAwMDEgfCBnaXQgbWFpbGluZm8gbXNnIHBhdGNoKSAmJgogCXRlc3QgNCA9ICQod2MgLWwgPCBwYXRjaCkKIApAQCAtMzYsMTAgKzM3LDEwIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1ByZXNlcnZlIE5VTHMgb3V0IG9mIE1JTUUgZW5jb2RlZCBtZXNzYWdlJyAnCiAKLQlnaXQgbWFpbHNwbGl0IC1kNSAtby4gLi4vdDUxMDAvbnVsLWI2NC5pbiAmJgotCWNtcCAuLi90NTEwMC9udWwtYjY0LmluIDAwMDAxICYmCisJZ2l0IG1haWxzcGxpdCAtZDUgLW8uICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MTAwL251bC1iNjQuaW4gJiYKKwl0ZXN0X2NtcCAiJFRFU1RfRElSRUNUT1JZIi90NTEwMC9udWwtYjY0LmluIDAwMDAxICYmCiAJZ2l0IG1haWxpbmZvIG1zZyBwYXRjaCA8MDAwMDEgJiYKLQljbXAgLi4vdDUxMDAvbnVsLWI2NC5leHBlY3QgcGF0Y2gKKwl0ZXN0X2NtcCAiJFRFU1RfRElSRUNUT1JZIi90NTEwMC9udWwtYjY0LmV4cGVjdCBwYXRjaAogCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDUzMDAtcGFjay1vYmplY3Quc2ggYi90L3Q1MzAwLXBhY2stb2JqZWN0LnNoCmluZGV4IDI4NTJhMDMuLjA0NTIyODUgMTAwNzU1Ci0tLSBhL3QvdDUzMDAtcGFjay1vYmplY3Quc2gKKysrIGIvdC90NTMwMC1wYWNrLW9iamVjdC5zaApAQCAtMjcyLDcgKzI3Miw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdtYWtlIHN1cmUgaW5kZXgtcGFjayBkZXRlY3RzIHRoZSBTSEExIGNvbGxpc2lvbicgXAotICAgICd0ZXN0X211c3RfZmFpbCBnaXQgaW5kZXgtcGFjayAtbyBiYWQuaWR4IHRlc3QtMy5wYWNrJworICAgICd0ZXN0X211c3RfZmFpbCBnaXQgaW5kZXgtcGFjayAtbyBiYWQuaWR4IHRlc3QtMy5wYWNrIDI+bXNnICYmCisgICAgIGdyZXAgIlNIQTEgQ09MTElTSU9OIEZPVU5EIiBtc2cnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdob25vciBwYWNrLnBhY2tTaXplTGltaXQnIFwKZGlmZiAtLWdpdCBhL3QvdDUzMDItcGFjay1pbmRleC5zaCBiL3QvdDUzMDItcGFjay1pbmRleC5zaAppbmRleCAzNDRhYjI1Li44ODRlMjQyIDEwMDc1NQotLS0gYS90L3Q1MzAyLXBhY2staW5kZXguc2gKKysrIGIvdC90NTMwMi1wYWNrLWluZGV4LnNoCkBAIC0xMSwxMyArMTEsMTggQEAKICAgICAncm0gLXJmIC5naXQKICAgICAgZ2l0IGluaXQgJiYKICAgICAgaT0xICYmCi0JIHdoaWxlIHRlc3QgJGkgLWxlIDEwMAorICAgICB3aGlsZSB0ZXN0ICRpIC1sZSAxMDAKICAgICAgZG8KLQkJIGk9YHByaW50ZiAnJTAzaScgJGlgCi0gICAgICAgICBlY2hvICRpID5maWxlXyRpICYmCi0gICAgICAgICB0ZXN0LWdlbnJhbmRvbSAiJGkiIDgxOTIgPj5maWxlXyRpICYmCi0gICAgICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGZpbGVfJGkgJiYKLQkJIGk9YGV4cHIgJGkgKyAxYCB8fCByZXR1cm4gMQorICAgICAgICAgaWlpPWBwcmludGYgJyUwM2knICRpYAorICAgICAgICAgdGVzdC1nZW5yYW5kb20gImJhciIgMjAwID4gd2lkZV9kZWx0YV8kaWlpICYmCisgICAgICAgICB0ZXN0LWdlbnJhbmRvbSAiYmF6ICRpaWkiIDUwID4+IHdpZGVfZGVsdGFfJGlpaSAmJgorICAgICAgICAgdGVzdC1nZW5yYW5kb20gImZvbyIkaSAxMDAgPiBkZWVwX2RlbHRhXyRpaWkgJiYKKyAgICAgICAgIHRlc3QtZ2VucmFuZG9tICJmb28iYGV4cHIgJGkgKyAxYCAxMDAgPj4gZGVlcF9kZWx0YV8kaWlpICYmCisgICAgICAgICB0ZXN0LWdlbnJhbmRvbSAiZm9vImBleHByICRpICsgMmAgMTAwID4+IGRlZXBfZGVsdGFfJGlpaSAmJgorICAgICAgICAgZWNobyAkaWlpID5maWxlXyRpaWkgJiYKKyAgICAgICAgIHRlc3QtZ2VucmFuZG9tICIkaWlpIiA4MTkyID4+ZmlsZV8kaWlpICYmCisgICAgICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGZpbGVfJGlpaSBkZWVwX2RlbHRhXyRpaWkgd2lkZV9kZWx0YV8kaWlpICYmCisgICAgICAgICBpPWBleHByICRpICsgMWAgfHwgcmV0dXJuIDEKICAgICAgZG9uZSAmJgogICAgICB7IGVjaG8gMTAxICYmIHRlc3QtZ2VucmFuZG9tIDEwMCA4MTkyOyB9ID5maWxlXzEwMSAmJgogICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGZpbGVfMTAxICYmCkBAIC05Miw2ICs5NywzMSBAQAogICAgICc2NC1iaXQgb2Zmc2V0czogaW5kZXgtcGFjayByZXN1bHQgc2hvdWxkIG1hdGNoIHBhY2stb2JqZWN0cyBvbmUnIFwKICAgICAnY21wICJ0ZXN0LTMtJHtwYWNrM30uaWR4IiAiMy5pZHgiJwogCisjIHJldHVybnMgdGhlIG9iamVjdCBudW1iZXIgZm9yIGdpdmVuIG9iamVjdCBpbiBnaXZlbiBwYWNrIGluZGV4CitpbmRleF9vYmpfbnIoKQoreworICAgIGlkeF9maWxlPSQxCisgICAgb2JqZWN0X3NoYTE9JDIKKyAgICBucj0wCisgICAgZ2l0IHNob3ctaW5kZXggPCAkaWR4X2ZpbGUgfAorICAgIHdoaWxlIHJlYWQgb2ZmcyBzaGExIGV4dHJhCisgICAgZG8KKyAgICAgIG5yPSQoKCRuciArIDEpKQorICAgICAgdGVzdCAiJHNoYTEiID0gIiRvYmplY3Rfc2hhMSIgfHwgY29udGludWUKKyAgICAgIGVjaG8gIiQoKCRuciAtIDEpKSIKKyAgICAgIGJyZWFrCisgICAgZG9uZQorfQorCisjIHJldHVybnMgdGhlIHBhY2sgb2Zmc2V0IGZvciBnaXZlbiBvYmplY3QgYXMgZm91bmQgaW4gZ2l2ZW4gcGFjayBpbmRleAoraW5kZXhfb2JqX29mZnNldCgpCit7CisgICAgaWR4X2ZpbGU9JDEKKyAgICBvYmplY3Rfc2hhMT0kMgorICAgIGdpdCBzaG93LWluZGV4IDwgJGlkeF9maWxlIHwgZ3JlcCAkb2JqZWN0X3NoYTEgfAorICAgICggcmVhZCBvZmZzIGV4dHJhICYmIGVjaG8gIiRvZmZzIiApCit9CisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdbaW5kZXggdjFdIDEpIHN0cmVhbSBwYWNrIHRvIHJlcG9zaXRvcnknIFwKICAgICAnZ2l0IGluZGV4LXBhY2sgLS1pbmRleC12ZXJzaW9uPTEgLS1zdGRpbiA8ICJ0ZXN0LTEtJHtwYWNrMX0ucGFjayIgJiYKQEAgLTEwMiwxOSArMTMyLDIyIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdbaW5kZXggdjFdIDIpIGNyZWF0ZSBhIHN0ZWFsdGggY29ycnVwdGlvbiBpbiBhIGRlbHRhIGJhc2UgcmVmZXJlbmNlJyBcCi0gICAgJyMgdGhpcyB0ZXN0IGFzc3VtZXMgYSBkZWx0YSBzbWFsbGVyIHRoYW4gMTYgYnl0ZXMgYXQgdGhlIGVuZCBvZiB0aGUgcGFjawotICAgICBnaXQgc2hvdy1pbmRleCA8MS5pZHggfCBzb3J0IC1uIHwgc2VkIC1uZSBcJHAgfCAoCi0gICAgICAgcmVhZCBkZWx0YV9vZmZzIGRlbHRhX3NoYTEgJiYKLSAgICAgICBnaXQgY2F0LWZpbGUgYmxvYiAiJGRlbHRhX3NoYTEiID4gYmxvYl8xICYmCi0gICAgICAgY2htb2QgK3cgIi5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0ucGFjayIgJiYKLSAgICAgICBkZCBvZj0iLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5wYWNrIiBzZWVrPSQoKCRkZWx0YV9vZmZzICsgMSkpIFwKLQkgIGlmPSIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LmlkeCIgc2tpcD0kKCgyNTYgKiA0ICsgNCkpIFwKLQkgIGJzPTEgY291bnQ9MjAgY29udj1ub3RydW5jICYmCi0gICAgICAgZ2l0IGNhdC1maWxlIGJsb2IgIiRkZWx0YV9zaGExIiA+IGJsb2JfMiApJworICAgICcjIFRoaXMgdGVzdCBhc3N1bWVzIGZpbGVfMTAxIGlzIGEgZGVsdGEgc21hbGxlciB0aGFuIDE2IGJ5dGVzLgorICAgICAjIEl0IHNob3VsZCBiZSBhZ2FpbnN0IGZpbGVfMTAwIGJ1dCB3ZSBzdWJzdGl0dXRlIGl0cyBiYXNlIGZvciBmaWxlXzA5OQorICAgICBzaGExXzEwMT1gZ2l0IGhhc2gtb2JqZWN0IGZpbGVfMTAxYCAmJgorICAgICBzaGExXzA5OT1gZ2l0IGhhc2gtb2JqZWN0IGZpbGVfMDk5YCAmJgorICAgICBvZmZzXzEwMT1gaW5kZXhfb2JqX29mZnNldCAxLmlkeCAkc2hhMV8xMDFgICYmCisgICAgIG5yXzA5OT1gaW5kZXhfb2JqX25yIDEuaWR4ICRzaGExXzA5OWAgJiYKKyAgICAgY2htb2QgK3cgIi5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0ucGFjayIgJiYKKyAgICAgZGQgb2Y9Ii5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0ucGFjayIgc2Vlaz0kKCgkb2Zmc18xMDEgKyAxKSkgXAorICAgICAgICBpZj0iLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5pZHgiIFwKKyAgICAgICAgc2tpcD0kKCg0ICsgMjU2ICogNCArICRucl8wOTkgKiAyNCkpIFwKKyAgICAgICAgYnM9MSBjb3VudD0yMCBjb252PW5vdHJ1bmMgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJHNoYTFfMTAxID4gZmlsZV8xMDFfZm9vMScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ1tpbmRleCB2MV0gMykgY29ycnVwdGVkIGRlbHRhIGhhcHBpbHkgcmV0dXJuZWQgd3JvbmcgZGF0YScgXAotICAgICchIGNtcCBibG9iXzEgYmxvYl8yJworICAgICd0ZXN0IC1mIGZpbGVfMTAxX2ZvbzEgJiYgISBjbXAgZmlsZV8xMDEgZmlsZV8xMDFfZm9vMScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ1tpbmRleCB2MV0gNCkgY29uZmlybSB0aGF0IHRoZSBwYWNrIGlzIGFjdHVhbGx5IGNvcnJ1cHRlZCcgXApAQCAtMTQwLDE5ICsxNzMsMjIgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ1tpbmRleCB2Ml0gMikgY3JlYXRlIGEgc3RlYWx0aCBjb3JydXB0aW9uIGluIGEgZGVsdGEgYmFzZSByZWZlcmVuY2UnIFwKLSAgICAnIyB0aGlzIHRlc3QgYXNzdW1lcyBhIGRlbHRhIHNtYWxsZXIgdGhhbiAxNiBieXRlcyBhdCB0aGUgZW5kIG9mIHRoZSBwYWNrCi0gICAgIGdpdCBzaG93LWluZGV4IDwxLmlkeCB8IHNvcnQgLW4gfCBzZWQgLW5lIFwkcCB8ICgKLSAgICAgICByZWFkIGRlbHRhX29mZnMgZGVsdGFfc2hhMSBkZWx0YV9jcmMgJiYKLSAgICAgICBnaXQgY2F0LWZpbGUgYmxvYiAiJGRlbHRhX3NoYTEiID4gYmxvYl8zICYmCi0gICAgICAgY2htb2QgK3cgIi5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0ucGFjayIgJiYKLSAgICAgICBkZCBvZj0iLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5wYWNrIiBzZWVrPSQoKCRkZWx0YV9vZmZzICsgMSkpIFwKLQkgIGlmPSIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LmlkeCIgc2tpcD0kKCg4ICsgMjU2ICogNCkpIFwKLQkgIGJzPTEgY291bnQ9MjAgY29udj1ub3RydW5jICYmCi0gICAgICAgZ2l0IGNhdC1maWxlIGJsb2IgIiRkZWx0YV9zaGExIiA+IGJsb2JfNCApJworICAgICcjIFRoaXMgdGVzdCBhc3N1bWVzIGZpbGVfMTAxIGlzIGEgZGVsdGEgc21hbGxlciB0aGFuIDE2IGJ5dGVzLgorICAgICAjIEl0IHNob3VsZCBiZSBhZ2FpbnN0IGZpbGVfMTAwIGJ1dCB3ZSBzdWJzdGl0dXRlIGl0cyBiYXNlIGZvciBmaWxlXzA5OQorICAgICBzaGExXzEwMT1gZ2l0IGhhc2gtb2JqZWN0IGZpbGVfMTAxYCAmJgorICAgICBzaGExXzA5OT1gZ2l0IGhhc2gtb2JqZWN0IGZpbGVfMDk5YCAmJgorICAgICBvZmZzXzEwMT1gaW5kZXhfb2JqX29mZnNldCAxLmlkeCAkc2hhMV8xMDFgICYmCisgICAgIG5yXzA5OT1gaW5kZXhfb2JqX25yIDEuaWR4ICRzaGExXzA5OWAgJiYKKyAgICAgY2htb2QgK3cgIi5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0ucGFjayIgJiYKKyAgICAgZGQgb2Y9Ii5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrMX0ucGFjayIgc2Vlaz0kKCgkb2Zmc18xMDEgKyAxKSkgXAorICAgICAgICBpZj0iLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5pZHgiIFwKKyAgICAgICAgc2tpcD0kKCg4ICsgMjU2ICogNCArICRucl8wOTkgKiAyMCkpIFwKKyAgICAgICAgYnM9MSBjb3VudD0yMCBjb252PW5vdHJ1bmMgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJHNoYTFfMTAxID4gZmlsZV8xMDFfZm9vMicKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ1tpbmRleCB2Ml0gMykgY29ycnVwdGVkIGRlbHRhIGhhcHBpbHkgcmV0dXJuZWQgd3JvbmcgZGF0YScgXAotICAgICchIGNtcCBibG9iXzMgYmxvYl80JworICAgICd0ZXN0IC1mIGZpbGVfMTAxX2ZvbzIgJiYgISBjbXAgZmlsZV8xMDEgZmlsZV8xMDFfZm9vMicKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ1tpbmRleCB2Ml0gNCkgY29uZmlybSB0aGF0IHRoZSBwYWNrIGlzIGFjdHVhbGx5IGNvcnJ1cHRlZCcgXApAQCAtMTYwLDE2ICsxOTYsMTkgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ1tpbmRleCB2Ml0gNSkgcGFjay1vYmplY3RzIHJlZnVzZXMgdG8gcmV1c2UgY29ycnVwdGVkIGRhdGEnIFwKLSAgICAndGVzdF9tdXN0X2ZhaWwgZ2l0IHBhY2stb2JqZWN0cyB0ZXN0LTUgPG9iai1saXN0JworICAgICd0ZXN0X211c3RfZmFpbCBnaXQgcGFjay1vYmplY3RzIHRlc3QtNSA8b2JqLWxpc3QgJiYKKyAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IHBhY2stb2JqZWN0cyAtLW5vLXJldXNlLW9iamVjdCB0ZXN0LTYgPG9iai1saXN0JwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnW2luZGV4IHYyXSA2KSB2ZXJpZnktcGFjayBkZXRlY3RzIENSQyBtaXNtYXRjaCcgXAogICAgICdybSAtZiAuZ2l0L29iamVjdHMvcGFjay8qICYmCiAgICAgIGdpdCBpbmRleC1wYWNrIC0taW5kZXgtdmVyc2lvbj0yIC0tc3RkaW4gPCAidGVzdC0xLSR7cGFjazF9LnBhY2siICYmCiAgICAgIGdpdCB2ZXJpZnktcGFjayAiLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5wYWNrIiAmJgorICAgICBvYmo9YGdpdCBoYXNoLW9iamVjdCBmaWxlXzAwMWAgJiYKKyAgICAgbnI9YGluZGV4X29ial9uciAiLmdpdC9vYmplY3RzL3BhY2svcGFjay0ke3BhY2sxfS5pZHgiICRvYmpgICYmCiAgICAgIGNobW9kICt3ICIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LmlkeCIgJiYKICAgICAgZGQgaWY9L2Rldi96ZXJvIG9mPSIuZ2l0L29iamVjdHMvcGFjay9wYWNrLSR7cGFjazF9LmlkeCIgY29udj1ub3RydW5jIFwKLSAgICAgICAgYnM9MSBjb3VudD00IHNlZWs9JCgoOCArIDI1NiAqIDQgKyBgd2MgLWwgPG9iai1saXN0YCAqIDIwICsgMCkpICYmCisgICAgICAgIGJzPTEgY291bnQ9NCBzZWVrPSQoKDggKyAyNTYgKiA0ICsgYHdjIC1sIDxvYmotbGlzdGAgKiAyMCArICRuciAqIDQpKSAmJgogICAgICAoIHdoaWxlIHJlYWQgb2JqCiAgICAgICAgZG8gZ2l0IGNhdC1maWxlIC1wICRvYmogPi9kZXYvbnVsbCB8fCBleGl0IDEKICAgICAgICBkb25lIDxvYmotbGlzdCApICYmCmRpZmYgLS1naXQgYS90L3Q1MzAzLXBhY2stY29ycnVwdGlvbi1yZXNpbGllbmNlLnNoIGIvdC90NTMwMy1wYWNrLWNvcnJ1cHRpb24tcmVzaWxpZW5jZS5zaAppbmRleCAzMWIyMGIyLi5kNGUzMGZjIDEwMDc1NQotLS0gYS90L3Q1MzAzLXBhY2stY29ycnVwdGlvbi1yZXNpbGllbmNlLnNoCisrKyBiL3QvdDUzMDMtcGFjay1jb3JydXB0aW9uLXJlc2lsaWVuY2Uuc2gKQEAgLTQxLDExICs0MSwxNyBAQAogICAgIGdpdCB2ZXJpZnktcGFjayAtdiAke3BhY2t9LnBhY2sKIH0KIAorZG9fcmVwYWNrKCkgeworICAgIHBhY2s9YHByaW50ZiAiJGJsb2JfMVxuJGJsb2JfMlxuJGJsb2JfM1xuIiB8CisgICAgICAgICAgZ2l0IHBhY2stb2JqZWN0cyAkQCAuZ2l0L29iamVjdHMvcGFjay9wYWNrYCAmJgorICAgIHBhY2s9Ii5naXQvb2JqZWN0cy9wYWNrL3BhY2stJHtwYWNrfSIKK30KKwogZG9fY29ycnVwdF9vYmplY3QoKSB7CiAgICAgb2ZzPWBnaXQgc2hvdy1pbmRleCA8ICR7cGFja30uaWR4IHwgZ3JlcCAkMSB8IGN1dCAtZjEgLWQiICJgICYmCiAgICAgb2ZzPSQoKCRvZnMgKyAkMikpICYmCiAgICAgY2htb2QgK3cgJHtwYWNrfS5wYWNrICYmCi0gICAgZGQgaWY9L2Rldi96ZXJvIG9mPSR7cGFja30ucGFjayBjb3VudD0xIGJzPTEgY29udj1ub3RydW5jIHNlZWs9JG9mcyAmJgorICAgIGRkIG9mPSR7cGFja30ucGFjayBjb3VudD0xIGJzPTEgY29udj1ub3RydW5jIHNlZWs9JG9mcyAmJgogICAgIHRlc3RfbXVzdF9mYWlsIGdpdCB2ZXJpZnktcGFjayAke3BhY2t9LnBhY2sKIH0KIApAQCAtNjAsNyArNjYsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnY3JlYXRlIGNvcnJ1cHRpb24gaW4gaGVhZGVyIG9mIGZpcnN0IG9iamVjdCcgXAotICAgICdkb19jb3JydXB0X29iamVjdCAkYmxvYl8xIDAgJiYKKyAgICAnZG9fY29ycnVwdF9vYmplY3QgJGJsb2JfMSAwIDwgL2Rldi96ZXJvICYmCiAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgogICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJwpAQCAtMTE5LDcgKzEyNSw3IEBACiAgICAgJ2NyZWF0ZSBjb3JydXB0aW9uIGluIGhlYWRlciBvZiBmaXJzdCBkZWx0YScgXAogICAgICdjcmVhdGVfbmV3X3BhY2sgJiYKICAgICAgZ2l0IHBydW5lLXBhY2tlZCAmJgotICAgICBkb19jb3JydXB0X29iamVjdCAkYmxvYl8yIDAgJiYKKyAgICAgZG9fY29ycnVwdF9vYmplY3QgJGJsb2JfMiAwIDwgL2Rldi96ZXJvICYmCiAgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgogICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJwpAQCAtMTM0LDYgKzE0MCwxNSBAQAogICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnLi4uIGFuZCB0aGVuIGEgcmVwYWNrICJjbGVhcnMiIHRoZSBjb3JydXB0aW9uJyBcCisgICAgJ2RvX3JlcGFjayAmJgorICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCisgICAgIGdpdCB2ZXJpZnktcGFjayAke3BhY2t9LnBhY2sgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdjcmVhdGUgY29ycnVwdGlvbiBpbiBkYXRhIG9mIGZpcnN0IGRlbHRhJyBcCiAgICAgJ2NyZWF0ZV9uZXdfcGFjayAmJgogICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCkBAIC0xNTMsMTAgKzE2OCwxOSBAQAogICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnLi4uIGFuZCB0aGVuIGEgcmVwYWNrICJjbGVhcnMiIHRoZSBjb3JydXB0aW9uJyBcCisgICAgJ2RvX3JlcGFjayAmJgorICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCisgICAgIGdpdCB2ZXJpZnktcGFjayAke3BhY2t9LnBhY2sgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdjb3JydXB0aW9uIGluIGRlbHRhIGJhc2UgcmVmZXJlbmNlIG9mIGZpcnN0IGRlbHRhIChPQkpfUkVGX0RFTFRBKScgXAogICAgICdjcmVhdGVfbmV3X3BhY2sgJiYKICAgICAgZ2l0IHBydW5lLXBhY2tlZCAmJgotICAgICBkb19jb3JydXB0X29iamVjdCAkYmxvYl8yIDIgJiYKKyAgICAgZG9fY29ycnVwdF9vYmplY3QgJGJsb2JfMiAyIDwgL2Rldi96ZXJvICYmCiAgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgogICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJwpAQCAtMTcxLDE3ICsxOTUsNzUgQEAKICAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2NvcnJ1cHRpb24gaW4gZGVsdGEgYmFzZSByZWZlcmVuY2Ugb2YgZmlyc3QgZGVsdGEgKE9CSl9PRlNfREVMVEEpJyBcCisgICAgJy4uLiBhbmQgdGhlbiBhIHJlcGFjayAiY2xlYXJzIiB0aGUgY29ycnVwdGlvbicgXAorICAgICdkb19yZXBhY2sgJiYKKyAgICAgZ2l0IHBydW5lLXBhY2tlZCAmJgorICAgICBnaXQgdmVyaWZ5LXBhY2sgJHtwYWNrfS5wYWNrICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnY29ycnVwdGlvbiAjMCBpbiBkZWx0YSBiYXNlIHJlZmVyZW5jZSBvZiBmaXJzdCBkZWx0YSAoT0JKX09GU19ERUxUQSknIFwKICAgICAnY3JlYXRlX25ld19wYWNrIC0tZGVsdGEtYmFzZS1vZmZzZXQgJiYKICAgICAgZ2l0IHBydW5lLXBhY2tlZCAmJgotICAgICBkb19jb3JydXB0X29iamVjdCAkYmxvYl8yIDIgJiYKKyAgICAgZG9fY29ycnVwdF9vYmplY3QgJGJsb2JfMiAyIDwgL2Rldi96ZXJvICYmCiAgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgogICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnLi4uIGFuZCBhIHJlZHVuZGFudCBwYWNrIGFsbG93cyBmb3IgZnVsbCByZWNvdmVyeSB0b28nIFwKKyAgICAnLi4uIGJ1dCBoYXZpbmcgYSBsb29zZSBjb3B5IGFsbG93cyBmb3IgZnVsbCByZWNvdmVyeScgXAogICAgICdtdiAke3BhY2t9LmlkeCB0bXAgJiYKKyAgICAgZ2l0IGhhc2gtb2JqZWN0IC10IGJsb2IgLXcgZmlsZV8yICYmCisgICAgIG12IHRtcCAke3BhY2t9LmlkeCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8xID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzIgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJy4uLiBhbmQgdGhlbiBhIHJlcGFjayAiY2xlYXJzIiB0aGUgY29ycnVwdGlvbicgXAorICAgICdkb19yZXBhY2sgLS1kZWx0YS1iYXNlLW9mZnNldCAmJgorICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCisgICAgIGdpdCB2ZXJpZnktcGFjayAke3BhY2t9LnBhY2sgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICdjb3JydXB0aW9uICMxIGluIGRlbHRhIGJhc2UgcmVmZXJlbmNlIG9mIGZpcnN0IGRlbHRhIChPQkpfT0ZTX0RFTFRBKScgXAorICAgICdjcmVhdGVfbmV3X3BhY2sgLS1kZWx0YS1iYXNlLW9mZnNldCAmJgorICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCisgICAgIHByaW50ZiAiXDAwMSIgfCBkb19jb3JydXB0X29iamVjdCAkYmxvYl8yIDIgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgorICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCisgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICcuLi4gYnV0IGhhdmluZyBhIGxvb3NlIGNvcHkgYWxsb3dzIGZvciBmdWxsIHJlY292ZXJ5JyBcCisgICAgJ212ICR7cGFja30uaWR4IHRtcCAmJgorICAgICBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyBmaWxlXzIgJiYKKyAgICAgbXYgdG1wICR7cGFja30uaWR4ICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnLi4uIGFuZCB0aGVuIGEgcmVwYWNrICJjbGVhcnMiIHRoZSBjb3JydXB0aW9uJyBcCisgICAgJ2RvX3JlcGFjayAtLWRlbHRhLWJhc2Utb2Zmc2V0ICYmCisgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKKyAgICAgZ2l0IHZlcmlmeS1wYWNrICR7cGFja30ucGFjayAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8xID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzIgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJy4uLiBhbmQgYSByZWR1bmRhbnQgcGFjayBhbGxvd3MgZm9yIGZ1bGwgcmVjb3ZlcnkgdG9vJyBcCisgICAgJ2RvX2NvcnJ1cHRfb2JqZWN0ICRibG9iXzIgMiA8IC9kZXYvemVybyAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8xID4gL2Rldi9udWxsICYmCisgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzIgPiAvZGV2L251bGwgJiYKKyAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCAmJgorICAgICBtdiAke3BhY2t9LmlkeCB0bXAgJiYKICAgICAgZ2l0IGhhc2gtb2JqZWN0IC10IGJsb2IgLXcgZmlsZV8xICYmCiAgICAgIGdpdCBoYXNoLW9iamVjdCAtdCBibG9iIC13IGZpbGVfMiAmJgogICAgICBwcmludGYgIiRibG9iXzFcbiRibG9iXzJcbiIgfCBnaXQgcGFjay1vYmplY3RzIC5naXQvb2JqZWN0cy9wYWNrL3BhY2sgJiYKZGlmZiAtLWdpdCBhL3QvdDU0MDAtc2VuZC1wYWNrLnNoIGIvdC90NTQwMC1zZW5kLXBhY2suc2gKaW5kZXggNTQ0NzcxZC4uYjIxMzE3ZCAxMDA3NTUKLS0tIGEvdC90NTQwMC1zZW5kLXBhY2suc2gKKysrIGIvdC90NTQwMC1zZW5kLXBhY2suc2gKQEAgLTk5LDExICs5OSwyMiBAQAogCSEgdGVzdCAtZiB2aWN0aW0vLmdpdC9yZWZzL2hlYWRzL2V4dHJhCiAnCiAKLXVuc2V0IEdJVF9DT05GSUcgR0lUX0NPTkZJR19MT0NBTAordW5zZXQgR0lUX0NPTkZJRwogSE9NRT1gcHdkYC9uby1zdWNoLWRpcmVjdG9yeQogZXhwb3J0IEhPTUUgOyMgdGhpcyB3YXkgd2UgZm9yY2UgdGhlIHZpY3RpbS8uZ2l0L2NvbmZpZyB0byBiZSB1c2VkLgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKwkncHVzaGluZyBhIGRlbGV0ZSBzaG91bGQgYmUgZGVuaWVkIHdpdGggZGVueURlbGV0ZXMnICcKKwljZCB2aWN0aW0gJiYKKwlnaXQgY29uZmlnIHJlY2VpdmUuZGVueURlbGV0ZXMgdHJ1ZSAmJgorCWdpdCBicmFuY2ggZXh0cmEgbWFzdGVyICYmCisJY2QgLi4gJiYKKwl0ZXN0IC1mIHZpY3RpbS8uZ2l0L3JlZnMvaGVhZHMvZXh0cmEgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc2VuZC1wYWNrIC4vdmljdGltLy5naXQvIDpleHRyYSBtYXN0ZXIKKycKK3JtIC1mIHZpY3RpbS8uZ2l0L3JlZnMvaGVhZHMvZXh0cmEKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgICAgICdwdXNoaW5nIHdpdGggLS1mb3JjZSBzaG91bGQgYmUgZGVuaWVkIHdpdGggZGVueU5vbkZhc3Rmb3J3YXJkcycgJwogCWNkIHZpY3RpbSAmJgogCWdpdCBjb25maWcgcmVjZWl2ZS5kZW55Tm9uRmFzdGZvcndhcmRzIHRydWUgJiYKZGlmZiAtLWdpdCBhL3QvdDU1MDAtZmV0Y2gtcGFjay5zaCBiL3QvdDU1MDAtZmV0Y2gtcGFjay5zaAppbmRleCA0NDhlYzcxLi5jNDUwZjMzIDEwMDc1NQotLS0gYS90L3Q1NTAwLWZldGNoLXBhY2suc2gKKysrIGIvdC90NTUwMC1mZXRjaC1wYWNrLnNoCkBAIC0xMzcsNyArMTM3LDcgQEAKIAkidGVzdCBcImluLXBhY2s6IDE4XCIgPSBcIiQoZ3JlcCBpbi1wYWNrIGNvdW50LnNoYWxsb3cpXCIiCiAKIGNvdW50X291dHB1dCAoKSB7Ci0Jc2VkIC1lICcvXmluLXBhY2s6L2QnIC1lICcvXnBhY2tzOi9kJyAtZSAnLzogMCQvZCcgIiQxIgorCXNlZCAtZSAnL15pbi1wYWNrOi9kJyAtZSAnL15wYWNrczovZCcgLWUgJy9ec2l6ZS1wYWNrOi9kJyAtZSAnLzogMCQvZCcgIiQxIgogfQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJjbG9uZSBzaGFsbG93IG9iamVjdCBjb3VudCAocGFydCAyKSIgJwpkaWZmIC0tZ2l0IGEvdC90NTUwNS1yZW1vdGUuc2ggYi90L3Q1NTA1LXJlbW90ZS5zaAppbmRleCAwMTAzZTFhLi4xZjU5OTYwIDEwMDc1NQotLS0gYS90L3Q1NTA1LXJlbW90ZS5zaAorKysgYi90L3Q1NTA1LXJlbW90ZS5zaApAQCAtMjgsNyArMjgsNyBAQAogfQogCiBjaGVja19yZW1vdGVfdHJhY2sgKCkgewotCWFjdHVhbD0kKGdpdCByZW1vdGUgc2hvdyAiJDEiIHwgc2VkIC1uIC1lICckcCcpICYmCisJYWN0dWFsPSQoZ2l0IHJlbW90ZSBzaG93ICIkMSIgfCBzZWQgLWUgJzEsL1RyYWNrZWQvZCcpICYmCiAJc2hpZnQgJiYKIAl0b2tlbnNfbWF0Y2ggIiQqIiAiJGFjdHVhbCIKIH0KQEAgLTExNSw5ICsxMTUsMTEgQEAKICAgTmV3IHJlbW90ZSBicmFuY2ggKG5leHQgZmV0Y2ggd2lsbCBzdG9yZSBpbiByZW1vdGVzL29yaWdpbikKICAgICBtYXN0ZXIKICAgVHJhY2tlZCByZW1vdGUgYnJhbmNoZXMKLSAgICBzaWRlIG1hc3RlcgorICAgIHNpZGUKKyAgICBtYXN0ZXIKICAgTG9jYWwgYnJhbmNoZXMgcHVzaGVkIHdpdGggJ2dpdCBwdXNoJwotICAgIG1hc3Rlcjp1cHN0cmVhbSArcmVmcy90YWdzL2xhc3RiYWNrdXAKKyAgICBtYXN0ZXI6dXBzdHJlYW0KKyAgICArcmVmcy90YWdzL2xhc3RiYWNrdXAKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG93JyAnCkBAIC0xNDQsOSArMTQ2LDExIEBACiAgIFJlbW90ZSBicmFuY2ggbWVyZ2VkIHdpdGggJ2dpdCBwdWxsJyB3aGlsZSBvbiBicmFuY2ggbWFzdGVyCiAgICAgbWFzdGVyCiAgIFRyYWNrZWQgcmVtb3RlIGJyYW5jaGVzCi0gICAgbWFzdGVyIHNpZGUKKyAgICBtYXN0ZXIKKyAgICBzaWRlCiAgIExvY2FsIGJyYW5jaGVzIHB1c2hlZCB3aXRoICdnaXQgcHVzaCcKLSAgICBtYXN0ZXI6dXBzdHJlYW0gK3JlZnMvdGFncy9sYXN0YmFja3VwCisgICAgbWFzdGVyOnVwc3RyZWFtCisgICAgK3JlZnMvdGFncy9sYXN0YmFja3VwCiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvdyAtbicgJwpAQCAtMzI0LDQgKzMyOCw1MiBAQAogCiAnCiAKKyMgVGhlIGZpcnN0IHRocmVlIHRlc3QgaWYgdGhlIHRyYWNraW5nIGJyYW5jaGVzIGFyZSBwcm9wZXJseSByZW5hbWVkLAorIyB0aGUgbGFzdCB0d28gb25lcyBjaGVjayBpZiB0aGUgY29uZmlnIGlzIHVwZGF0ZWQuCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSBhIHJlbW90ZScgJworCisJZ2l0IGNsb25lIG9uZSBmb3VyICYmCisJKGNkIGZvdXIgJiYKKwkgZ2l0IHJlbW90ZSByZW5hbWUgb3JpZ2luIHVwc3RyZWFtICYmCisJIHJtZGlyIC5naXQvcmVmcy9yZW1vdGVzL29yaWdpbiAmJgorCSB0ZXN0ICIkKGdpdCBzeW1ib2xpYy1yZWYgcmVmcy9yZW1vdGVzL3Vwc3RyZWFtL0hFQUQpIiA9ICJyZWZzL3JlbW90ZXMvdXBzdHJlYW0vbWFzdGVyIiAmJgorCSB0ZXN0ICIkKGdpdCByZXYtcGFyc2UgdXBzdHJlYW0vbWFzdGVyKSIgPSAiJChnaXQgcmV2LXBhcnNlIG1hc3RlcikiICYmCisJIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUudXBzdHJlYW0uZmV0Y2gpIiA9ICIrcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy91cHN0cmVhbS8qIiAmJgorCSB0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5yZW1vdGUpIiA9ICJ1cHN0cmVhbSIpCisKKycKKworY2F0ID4gcmVtb3Rlc19vcmlnaW4gPDwgRU9GCitVUkw6ICQocHdkKS9vbmUKK1B1c2g6IHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvdXBzdHJlYW0KK1B1bGw6IHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvb3JpZ2luCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWlncmF0ZSBhIHJlbW90ZSBmcm9tIG5hbWVkIGZpbGUgaW4gJEdJVF9ESVIvcmVtb3RlcycgJworCWdpdCBjbG9uZSBvbmUgZml2ZSAmJgorCW9yaWdpbl91cmw9JChwd2QpL29uZSAmJgorCShjZCBmaXZlICYmCisJIGdpdCByZW1vdGUgcm0gb3JpZ2luICYmCisJIG1rZGlyIC1wIC5naXQvcmVtb3RlcyAmJgorCSBjYXQgLi4vcmVtb3Rlc19vcmlnaW4gPiAuZ2l0L3JlbW90ZXMvb3JpZ2luICYmCisJIGdpdCByZW1vdGUgcmVuYW1lIG9yaWdpbiBvcmlnaW4gJiYKKwkgISB0ZXN0IC1mIC5naXQvcmVtb3Rlcy9vcmlnaW4gJiYKKwkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiJG9yaWdpbl91cmwiICYmCisJIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnB1c2gpIiA9ICJyZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL3Vwc3RyZWFtIiAmJgorCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi5mZXRjaCkiID0gInJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvb3JpZ2luIikKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWlncmF0ZSBhIHJlbW90ZSBmcm9tIG5hbWVkIGZpbGUgaW4gJEdJVF9ESVIvYnJhbmNoZXMnICcKKwlnaXQgY2xvbmUgb25lIHNpeCAmJgorCW9yaWdpbl91cmw9JChwd2QpL29uZSAmJgorCShjZCBzaXggJiYKKwkgZ2l0IHJlbW90ZSBybSBvcmlnaW4gJiYKKwkgZWNobyAiJG9yaWdpbl91cmwiID4gLmdpdC9icmFuY2hlcy9vcmlnaW4gJiYKKwkgZ2l0IHJlbW90ZSByZW5hbWUgb3JpZ2luIG9yaWdpbiAmJgorCSAhIHRlc3QgLWYgLmdpdC9icmFuY2hlcy9vcmlnaW4gJiYKKwkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiJG9yaWdpbl91cmwiICYmCisJIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLmZldGNoKSIgPSAicmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9oZWFkcy9vcmlnaW4iKQorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU1MTAtZmV0Y2guc2ggYi90L3Q1NTEwLWZldGNoLnNoCmluZGV4IDUyMDk0ZTcuLjllNjc5YjQgMTAwNzU1Ci0tLSBhL3QvdDU1MTAtZmV0Y2guc2gKKysrIGIvdC90NTUxMC1mZXRjaC5zaApAQCAtMzAzLDYgKzMwMywyNiBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2F1dG8gdGFnIGZvbGxvd2luZyBmZXRjaGVzIG1pbmltdW0nICcKKworCWNkICIkRCIgJiYKKwlnaXQgY2xvbmUgLmdpdCBmb2xsb3cgJiYKKwlnaXQgY2hlY2tvdXQgSEVBRF4wICYmCisJKAorCQlmb3IgaSBpbiAxIDIgMyA0IDUgNiA3CisJCWRvCisJCQllY2hvICRpID4+ZmlsZSAmJgorCQkJZ2l0IGNvbW1pdCAtbSAkaSAtYSAmJgorCQkJZ2l0IHRhZyAtYSAtbSAkaSBleGNlc3MtJGkgfHwgZXhpdCAxCisJCWRvbmUKKwkpICYmCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCSgKKwkJY2QgZm9sbG93ICYmCisJCWdpdCBmZXRjaAorCSkKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVmdXNlIHRvIGZldGNoIGludG8gdGhlIGN1cnJlbnQgYnJhbmNoJyAnCiAKIAl0ZXN0X211c3RfZmFpbCBnaXQgZmV0Y2ggLiBzaWRlOm1hc3RlcgpkaWZmIC0tZ2l0IGEvdC90NTUxNS1mZXRjaC1tZXJnZS1sb2dpYy5zaCBiL3QvdDU1MTUtZmV0Y2gtbWVyZ2UtbG9naWMuc2gKaW5kZXggOGJlY2JjMy4uMWY0NjA4ZCAxMDA3NTUKLS0tIGEvdC90NTUxNS1mZXRjaC1tZXJnZS1sb2dpYy5zaAorKysgYi90L3Q1NTE1LWZldGNoLW1lcmdlLWxvZ2ljLnNoCkBAIC0xMzEsOSArMTMxLDkgQEAKIAl0ZXN0PWBlY2hvICIkY21kIiB8IHNlZCAtZSAnc3xbLyBdWy8gXSp8X3xnJ2AKIAljbnQ9YGV4cHIgJHRlc3RfY291bnQgKyAxYAogCXBmeD1gcHJpbnRmICIlMDRkIiAkY250YAotCWV4cGVjdF9mPSIuLi8uLi90NTUxNS9mZXRjaC4kdGVzdCIKKwlleHBlY3RfZj0iJFRFU1RfRElSRUNUT1JZL3Q1NTE1L2ZldGNoLiR0ZXN0IgogCWFjdHVhbF9mPSIkcGZ4LWZldGNoLiR0ZXN0IgotCWV4cGVjdF9yPSIuLi8uLi90NTUxNS9yZWZzLiR0ZXN0IgorCWV4cGVjdF9yPSIkVEVTVF9ESVJFQ1RPUlkvdDU1MTUvcmVmcy4kdGVzdCIKIAlhY3R1YWxfcj0iJHBmeC1yZWZzLiR0ZXN0IgogCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJGNtZCIgJwpkaWZmIC0tZ2l0IGEvdC90NTUxNi1mZXRjaC1wdXNoLnNoIGIvdC90NTUxNi1mZXRjaC1wdXNoLnNoCmluZGV4IGY5ZTg3ODAuLjQ0MjZkZjkgMTAwNzU1Ci0tLSBhL3QvdDU1MTYtZmV0Y2gtcHVzaC5zaAorKysgYi90L3Q1NTE2LWZldGNoLXB1c2guc2gKQEAgLTM5LDYgKzM5LDExIEBACiAJKQogfQogCitta19jaGlsZCgpIHsKKwlybSAtcmYgIiQxIiAmJgorCWdpdCBjbG9uZSB0ZXN0cmVwbyAiJDEiCit9CisKIGNoZWNrX3B1c2hfcmVzdWx0ICgpIHsKIAkoCiAJCWNkIHRlc3RyZXBvICYmCkBAIC00MjUsMTMgKzQzMCwxMCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHVwZGF0ZXMgbG9jYWwgcmVmcycgJwogCi0Jcm0gLXJmIHBhcmVudCBjaGlsZCAmJgotCW1rZGlyIHBhcmVudCAmJgotCShjZCBwYXJlbnQgJiYgZ2l0IGluaXQgJiYKLQkJZWNobyBvbmUgPmZvbyAmJiBnaXQgYWRkIGZvbyAmJiBnaXQgY29tbWl0IC1tIG9uZSkgJiYKLQlnaXQgY2xvbmUgcGFyZW50IGNoaWxkICYmCisJbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta19jaGlsZCBjaGlsZCAmJgogCShjZCBjaGlsZCAmJgotCQllY2hvIHR3byA+Zm9vICYmIGdpdCBjb21taXQgLWEgLW0gdHdvICYmCisJCWdpdCBwdWxsIC4uIG1hc3RlciAmJgogCQlnaXQgcHVzaCAmJgogCXRlc3QgJChnaXQgcmV2LXBhcnNlIG1hc3RlcikgPSAkKGdpdCByZXYtcGFyc2UgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSkKIApAQCAtNDM5LDE1ICs0NDEsMTAgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB1cGRhdGVzIHVwLXRvLWRhdGUgbG9jYWwgcmVmcycgJwogCi0Jcm0gLXJmIHBhcmVudCBjaGlsZCAmJgotCW1rZGlyIHBhcmVudCAmJgotCShjZCBwYXJlbnQgJiYgZ2l0IGluaXQgJiYKLQkJZWNobyBvbmUgPmZvbyAmJiBnaXQgYWRkIGZvbyAmJiBnaXQgY29tbWl0IC1tIG9uZSkgJiYKLQlnaXQgY2xvbmUgcGFyZW50IGNoaWxkMSAmJgotCWdpdCBjbG9uZSBwYXJlbnQgY2hpbGQyICYmCi0JKGNkIGNoaWxkMSAmJgotCQllY2hvIHR3byA+Zm9vICYmIGdpdCBjb21taXQgLWEgLW0gdHdvICYmCi0JCWdpdCBwdXNoKSAmJgorCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfY2hpbGQgY2hpbGQxICYmCisJbWtfY2hpbGQgY2hpbGQyICYmCisJKGNkIGNoaWxkMSAmJiBnaXQgcHVsbCAuLiBtYXN0ZXIgJiYgZ2l0IHB1c2gpICYmCiAJKGNkIGNoaWxkMiAmJgogCQlnaXQgcHVsbCAuLi9jaGlsZDEgbWFzdGVyICYmCiAJCWdpdCBwdXNoICYmCkBAIC00NTcsMTEgKzQ1NCw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggcHJlc2VydmVzIHVwLXRvLWRhdGUgcGFja2VkIHJlZnMnICcKIAotCXJtIC1yZiBwYXJlbnQgY2hpbGQgJiYKLQlta2RpciBwYXJlbnQgJiYKLQkoY2QgcGFyZW50ICYmIGdpdCBpbml0ICYmCi0JCWVjaG8gb25lID5mb28gJiYgZ2l0IGFkZCBmb28gJiYgZ2l0IGNvbW1pdCAtbSBvbmUpICYmCi0JZ2l0IGNsb25lIHBhcmVudCBjaGlsZCAmJgorCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfY2hpbGQgY2hpbGQgJiYKIAkoY2QgY2hpbGQgJiYKIAkJZ2l0IHB1c2ggJiYKIAkhIHRlc3QgLWYgLmdpdC9yZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikKQEAgLTQ3MCwxNSArNDY0LDEzIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggZG9lcyBub3QgdXBkYXRlIGxvY2FsIHJlZnMgb24gZmFpbHVyZScgJwogCi0Jcm0gLXJmIHBhcmVudCBjaGlsZCAmJgotCW1rZGlyIHBhcmVudCAmJgotCShjZCBwYXJlbnQgJiYgZ2l0IGluaXQgJiYKLQkJZWNobyBvbmUgPmZvbyAmJiBnaXQgYWRkIGZvbyAmJiBnaXQgY29tbWl0IC1tIG9uZSAmJgotCQllY2hvIGV4aXQgMSA+LmdpdC9ob29rcy9wcmUtcmVjZWl2ZSAmJgotCQljaG1vZCAreCAuZ2l0L2hvb2tzL3ByZS1yZWNlaXZlKSAmJgotCWdpdCBjbG9uZSBwYXJlbnQgY2hpbGQgJiYKKwlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX2NoaWxkIGNoaWxkICYmCisJbWtkaXIgdGVzdHJlcG8vLmdpdC9ob29rcyAmJgorCWVjaG8gZXhpdCAxID50ZXN0cmVwby8uZ2l0L2hvb2tzL3ByZS1yZWNlaXZlICYmCisJY2htb2QgK3ggdGVzdHJlcG8vLmdpdC9ob29rcy9wcmUtcmVjZWl2ZSAmJgogCShjZCBjaGlsZCAmJgotCQllY2hvIHR3byA+Zm9vICYmIGdpdCBjb21taXQgLWEgLW0gdHdvICYmCisJCWdpdCBwdWxsIC4uIG1hc3RlcgogCQl0ZXN0X211c3RfZmFpbCBnaXQgcHVzaCAmJgogCQl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBtYXN0ZXIpICE9IFwKIAkJCSQoZ2l0IHJldi1wYXJzZSByZW1vdGVzL29yaWdpbi9tYXN0ZXIpKQpAQCAtNDg3LDEzICs0NzksNTAgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWxsb3cgZGVsZXRpbmcgYW4gaW52YWxpZCByZW1vdGUgcmVmJyAnCiAKLQlwd2QgJiYKKwlta190ZXN0IGhlYWRzL21hc3RlciAmJgogCXJtIC1mIHRlc3RyZXBvLy5naXQvb2JqZWN0cy8/Py8qICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gOnJlZnMvaGVhZHMvbWFzdGVyICYmCiAJKGNkIHRlc3RyZXBvICYmIHRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIpCiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2FybiBvbiBwdXNoIHRvIEhFQUQgb2Ygbm9uLWJhcmUgcmVwb3NpdG9yeScgJworCW1rX3Rlc3QgaGVhZHMvbWFzdGVyCisJKGNkIHRlc3RyZXBvICYmCisJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkJZ2l0IGNvbmZpZyByZWNlaXZlLmRlbnlDdXJyZW50QnJhbmNoIHdhcm4pICYmCisJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyIDI+c3RkZXJyICYmCisJZ3JlcCAid2FybmluZy4qdGhpcyBtYXkgY2F1c2UgY29uZnVzaW9uIiBzdGRlcnIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVueSBwdXNoIHRvIEhFQUQgb2Ygbm9uLWJhcmUgcmVwb3NpdG9yeScgJworCW1rX3Rlc3QgaGVhZHMvbWFzdGVyCisJKGNkIHRlc3RyZXBvICYmCisJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkJZ2l0IGNvbmZpZyByZWNlaXZlLmRlbnlDdXJyZW50QnJhbmNoIHRydWUpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsbG93IHB1c2ggdG8gSEVBRCBvZiBiYXJlIHJlcG9zaXRvcnkgKGJhcmUpJyAnCisJbWtfdGVzdCBoZWFkcy9tYXN0ZXIKKwkoY2QgdGVzdHJlcG8gJiYKKwkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCQlnaXQgY29uZmlnIHJlY2VpdmUuZGVueUN1cnJlbnRCcmFuY2ggdHJ1ZSAmJgorCQlnaXQgY29uZmlnIGNvcmUuYmFyZSB0cnVlKSAmJgorCWdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlciAyPnN0ZGVyciAmJgorCSEgZ3JlcCAid2FybmluZy4qdGhpcyBtYXkgY2F1c2UgY29uZnVzaW9uIiBzdGRlcnIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYWxsb3cgcHVzaCB0byBIRUFEIG9mIG5vbi1iYXJlIHJlcG9zaXRvcnkgKGNvbmZpZyknICcKKwlta190ZXN0IGhlYWRzL21hc3RlcgorCShjZCB0ZXN0cmVwbyAmJgorCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJCWdpdCBjb25maWcgcmVjZWl2ZS5kZW55Q3VycmVudEJyYW5jaCBmYWxzZQorCSkgJiYKKwlnaXQgcHVzaCB0ZXN0cmVwbyBtYXN0ZXIgMj5zdGRlcnIgJiYKKwkhIGdyZXAgIndhcm5pbmcuKnRoaXMgbWF5IGNhdXNlIGNvbmZ1c2lvbiIgc3RkZXJyCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIHdpdGggYnJhbmNoZXMnICcKIAlta19lbXB0eSAmJgogCWdpdCBicmFuY2ggc2Vjb25kICR0aGVfZmlyc3RfY29tbWl0ICYmCmRpZmYgLS1naXQgYS90L3Q1NTE5LXB1c2gtYWx0ZXJuYXRlcy5zaCBiL3QvdDU1MTktcHVzaC1hbHRlcm5hdGVzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZkZmM1NWEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1NTE5LXB1c2gtYWx0ZXJuYXRlcy5zaApAQCAtMCwwICsxLDEwNiBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3B1c2ggdG8gYSByZXBvc2l0b3J5IHRoYXQgYm9ycm93cyBmcm9tIGVsc2V3aGVyZScKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJworCW1rZGlyIGFsaWNlLXB1YiAmJgorCSgKKwkJY2QgYWxpY2UtcHViICYmCisJCUdJVF9ESVI9LiBnaXQgaW5pdAorCSkgJiYKKwlta2RpciBhbGljZS13b3JrICYmCisJKAorCQljZCBhbGljZS13b3JrICYmCisJCWdpdCBpbml0ICYmCisJCT5maWxlICYmCisJCWdpdCBhZGQgLiAmJgorCQlnaXQgY29tbWl0IC1tIGluaXRpYWwgJiYKKwkJZ2l0IHB1c2ggLi4vYWxpY2UtcHViIG1hc3RlcgorCSkgJiYKKworCSMgUHJvamVjdCBCb2IgaXMgYSBmb3JrIG9mIHByb2plY3QgQWxpY2UKKwlta2RpciBib2ItcHViICYmCisJKAorCQljZCBib2ItcHViICYmCisJCUdJVF9ESVI9LiBnaXQgaW5pdCAmJgorCQlta2RpciAtcCBvYmplY3RzL2luZm8gJiYKKwkJZWNobyAuLi8uLi9hbGljZS1wdWIvb2JqZWN0cyA+b2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMKKwkpICYmCisJZ2l0IGNsb25lIGFsaWNlLXB1YiBib2Itd29yayAmJgorCSgKKwkJY2QgYm9iLXdvcmsgJiYKKwkJZ2l0IHB1c2ggLi4vYm9iLXB1YiBtYXN0ZXIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsaWNlIHdvcmtzIGFuZCBwdXNoZXMnICcKKwkoCisJCWNkIGFsaWNlLXdvcmsgJiYKKwkJZWNobyBtb3JlID5maWxlICYmCisJCWdpdCBjb21taXQgLWEgLW0gc2Vjb25kICYmCisJCWdpdCBwdXNoIC4uL2FsaWNlLXB1YgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYm9iIGZldGNoZXMgZnJvbSBhbGljZSwgd29ya3MgYW5kIHB1c2hlcycgJworCSgKKwkJIyBCb2IgYWNxdWlyZXMgd2hhdCBBbGljZSBkaWQgaW4gaGlzIHdvcmsgdHJlZSBmaXJzdC4KKwkJIyBFdmVuIHRob3VnaCB0aGVzZSBvYmplY3RzIGFyZSBub3QgZGlyZWN0bHkgaW4KKwkJIyB0aGUgcHVibGljIHJlcG9zaXRvcnkgb2YgQm9iLCB0aGlzIHB1c2ggZG9lcyBub3QKKwkJIyBuZWVkIHRvIHNlbmQgdGhlIGNvbW1pdCBCb2IgcmVjZWl2ZWQgZnJvbSBBbGljZQorCQkjIHRvIGhpcyBwdWJsaWMgcmVwb3NpdG9yeSwgYXMgYWxsIHRoZSBvYmplY3QgQWxpY2UKKwkJIyBoYXMgYXQgaGVyIHB1YmxpYyByZXBvc2l0b3J5IGFyZSBhdmFpbGFibGUgdG8gaXQKKwkJIyB2aWEgaXRzIGFsdGVybmF0ZXMuCisJCWNkIGJvYi13b3JrICYmCisJCWdpdCBwdWxsIC4uL2FsaWNlLXB1YiBtYXN0ZXIgJiYKKwkJZWNobyBtb3JlIGJvYiA+ZmlsZSAmJgorCQlnaXQgY29tbWl0IC1hIC1tIHRoaXJkICYmCisJCWdpdCBwdXNoIC4uL2JvYi1wdWIKKwkpICYmCisKKwkjIENoZWNrIHRoYXQgdGhlIHNlY29uZCBjb21taXQgYnkgQWxpY2UgaXMgbm90IHNlbnQKKwkjIHRvIC4uL2JvYi1wdWIKKwkoCisJCWNkIGJvYi1wdWIgJiYKKwkJc2Vjb25kPSQoZ2l0IHJldi1wYXJzZSBIRUFEXikgJiYKKwkJcm0gLWYgb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIC10ICRzZWNvbmQgJiYKKwkJZWNobyAuLi8uLi9hbGljZS1wdWIvb2JqZWN0cyA+b2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFuLXVwIGluIGNhc2UgdGhlIHByZXZpb3VzIGZhaWxlZCcgJworCSgKKwkJY2QgYm9iLXB1YiAmJgorCQllY2hvIC4uLy4uL2FsaWNlLXB1Yi9vYmplY3RzID5vYmplY3RzL2luZm8vYWx0ZXJuYXRlcworCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYWxpY2Ugd29ya3MgYW5kIHB1c2hlcyBhZ2FpbicgJworCSgKKwkJIyBBbGljZSBkb2VzIG5vdCBjYXJlIHdoYXQgQm9iIGRvZXMuICBTaGUgZG9lcyBub3QKKwkJIyBldmVuIGhhdmUgdG8gYmUgYXdhcmUgb2YgaGlzIGV4aXN0ZW5jZS4gIFNoZSBqdXN0CisJCSMga2VlcHMgd29ya2luZyBhbmQgcHVzaGluZworCQljZCBhbGljZS13b3JrICYmCisJCWVjaG8gbW9yZSBhbGljZSA+ZmlsZSAmJgorCQlnaXQgY29tbWl0IC1hIC1tIGZvdXJ0aCAmJgorCQlnaXQgcHVzaCAuLi9hbGljZS1wdWIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JvYiB3b3JrcyBhbmQgcHVzaGVzJyAnCisJKAorCQkjIFRoaXMgdGltZSBCb2IgZG9lcyBub3QgcHVsbCBmcm9tIEFsaWNlLCBhbmQKKwkJIyB0aGUgbWFzdGVyIGJyYW5jaCBhdCBoZXIgcHVibGljIHJlcG9zaXRvcnkgcG9pbnRzCisJCSMgYXQgYSBjb21taXQgQm9iIGRvZXMgbm90IGtub3cgYWJvdXQuICBUaGlzIHNob3VsZAorCQkjIG5vdCBwcmV2ZW50IHRoZSBwdXNoIGJ5IEJvYiBmcm9tIHN1Y2NlZWRpbmcuCisJCWNkIGJvYi13b3JrICYmCisJCWVjaG8geWV0IG1vcmUgYm9iID5maWxlICYmCisJCWdpdCBjb21taXQgLWEgLW0gZmlmdGggJiYKKwkJZ2l0IHB1c2ggLi4vYm9iLXB1YgorCSkKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NTIxLXB1bGwtb3B0aW9ucy5zaCBiL3QvdDU1MjEtcHVsbC1vcHRpb25zLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgzZTJlOGEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1NTIxLXB1bGwtb3B0aW9ucy5zaApAQCAtMCwwICsxLDYwIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0ncHVsbCBvcHRpb25zJworCisuIC4vdGVzdC1saWIuc2gKKworRD1gcHdkYAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCW1rZGlyIHBhcmVudCAmJgorCShjZCBwYXJlbnQgJiYgZ2l0IGluaXQgJiYKKwkgZWNobyBvbmUgPmZpbGUgJiYgZ2l0IGFkZCBmaWxlICYmCisJIGdpdCBjb21taXQgLW0gb25lKQorJworCitjZCAiJEQiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC1xJyAnCisJbWtkaXIgY2xvbmVkcSAmJgorCWNkIGNsb25lZHEgJiYKKwlnaXQgcHVsbCAtcSAiJEQvcGFyZW50IiA+b3V0IDI+ZXJyICYmCisJdGVzdCAhIC1zIG91dAorJworCitjZCAiJEQiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsJyAnCisJbWtkaXIgY2xvbmVkICYmCisJY2QgY2xvbmVkICYmCisJZ2l0IHB1bGwgIiREL3BhcmVudCIgPm91dCAyPmVyciAmJgorCXRlc3QgLXMgb3V0CisnCitjZCAiJEQiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC12JyAnCisJbWtkaXIgY2xvbmVkdiAmJgorCWNkIGNsb25lZHYgJiYKKwlnaXQgcHVsbCAtdiAiJEQvcGFyZW50IiA+b3V0IDI+ZXJyICYmCisJdGVzdCAtcyBvdXQKKycKKworY2QgIiREIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgcHVsbCAtdiAtcScgJworCW1rZGlyIGNsb25lZHZxICYmCisJY2QgY2xvbmVkdnEgJiYKKwlnaXQgcHVsbCAtdiAtcSAiJEQvcGFyZW50IiA+b3V0IDI+ZXJyICYmCisJdGVzdCAhIC1zIG91dAorJworCitjZCAiJEQiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC1xIC12JyAnCisJbWtkaXIgY2xvbmVkcXYgJiYKKwljZCBjbG9uZWRxdiAmJgorCWdpdCBwdWxsIC1xIC12ICIkRC9wYXJlbnQiID5vdXQgMj5lcnIgJiYKKwl0ZXN0IC1zIG91dAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU1MjEtcHVsbC1zeW1saW5rLnNoIGIvdC90NTUyMS1wdWxsLXN5bWxpbmsuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTY3MmI1MQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDU1MjEtcHVsbC1zeW1saW5rLnNoCkBAIC0wLDAgKzEsNzggQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdwdWxsaW5nIGZyb20gc3ltbGlua2VkIHN1YmRpcicKKworLiAuL3Rlc3QtbGliLnNoCisKKyMgVGhlIHNjZW5hcmlvIHdlIGFyZSBidWlsZGluZzoKKyMKKyMgICB0cmFzaFwgZGlyZWN0b3J5LworIyAgICAgY2xvbmUtcmVwby8KKyMgICAgICAgc3ViZGlyLworIyAgICAgICAgIGJhcgorIyAgICAgc3ViZGlyLWxpbmsgLT4gY2xvbmUtcmVwby9zdWJkaXIvCisjCisjIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBpcyBzdWJkaXItbGluay4KKworbWtkaXIgc3ViZGlyCitlY2hvIGZpbGUgPnN1YmRpci9maWxlCitnaXQgYWRkIHN1YmRpci9maWxlCitnaXQgY29tbWl0IC1xIC1tIGZpbGUKK2dpdCBjbG9uZSAtcSAuIGNsb25lLXJlcG8KK2xuIC1zIGNsb25lLXJlcG8vc3ViZGlyLyBzdWJkaXItbGluaworCisKKyMgRGVtb25zdHJhdGUgdGhhdCB0aGluZ3Mgd29yayBpZiB3ZSBqdXN0IGF2b2lkIHRoZSBzeW1saW5rCisjCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdWxsaW5nIGZyb20gcmVhbCBzdWJkaXInICcKKwkoCisJCWVjaG8gcmVhbCA+c3ViZGlyL2ZpbGUgJiYKKwkJZ2l0IGNvbW1pdCAtbSByZWFsIHN1YmRpci9maWxlICYmCisJCWNkIGNsb25lLXJlcG8vc3ViZGlyLyAmJgorCQlnaXQgcHVsbCAmJgorCQl0ZXN0IHJlYWwgPSAkKGNhdCBmaWxlKQorCSkKKycKKworIyBGcm9tIHN1YmRpci1saW5rLCBwdWxsaW5nIHNob3VsZCB3b3JrIGFzIGl0IGRvZXMgZnJvbQorIyBjbG9uZS1yZXBvL3N1YmRpci8uCisjCisjIEluc3RlYWQsIHRoZSBlcnJvciBwdWxsIGdhdmUgd2FzOgorIworIyAgIGZhdGFsOiAnb3JpZ2luJzogdW5hYmxlIHRvIGNoZGlyIG9yIG5vdCBhIGdpdCBhcmNoaXZlCisjICAgZmF0YWw6IFRoZSByZW1vdGUgZW5kIGh1bmcgdXAgdW5leHBlY3RlZGx5CisjCisjIGJlY2F1c2UgZ2l0IHdvdWxkIGZpbmQgdGhlIC5naXQvY29uZmlnIGZvciB0aGUgInRyYXNoIGRpcmVjdG9yeSIKKyMgcmVwbywgbm90IGZvciB0aGUgY2xvbmUtcmVwbyByZXBvLiAgVGhlICJ0cmFzaCBkaXJlY3RvcnkiIHJlcG8KKyMgaGFkIG5vIGVudHJ5IGZvciBvcmlnaW4uICBHaXQgZm91bmQgdGhlIHdyb25nIC5naXQgYmVjYXVzZQorIyBnaXQgcmV2LXBhcnNlIC0tc2hvdy1jZHVwIHByaW50ZWQgYSBwYXRoIHJlbGF0aXZlIHRvCisjIGNsb25lLXJlcG8vc3ViZGlyLywgbm90IHN1YmRpci1saW5rLy4gIEdpdCByZXYtcGFyc2UgLS1zaG93LWNkdXAKKyMgdXNlZCB0aGUgY29ycmVjdCAuZ2l0LCBidXQgd2hlbiB0aGUgZ2l0IHB1bGwgc2hlbGwgc2NyaXB0IGRpZAorIyAiY2QgYGdpdCByZXYtcGFyc2UgLS1zaG93LWNkdXBgIiwgaXQgZW5kZWQgdXAgaW4gdGhlIHdyb25nCisjIGRpcmVjdG9yeS4gIEEgUE9TSVggc2hlbGwncyAiY2QiIHdvcmtzIGEgbGl0dGxlIGRpZmZlcmVudGx5CisjIHRoYW4gY2hkaXIoKSBpbiBDOyAiY2QgLVAiIGlzIG11Y2ggY2xvc2VyIHRvIGNoZGlyKCkuCisjCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdWxsaW5nIGZyb20gc3ltbGlua2VkIHN1YmRpcicgJworCSgKKwkJZWNobyBsaW5rID5zdWJkaXIvZmlsZSAmJgorCQlnaXQgY29tbWl0IC1tIGxpbmsgc3ViZGlyL2ZpbGUgJiYKKwkJY2Qgc3ViZGlyLWxpbmsvICYmCisJCWdpdCBwdWxsICYmCisJCXRlc3QgbGluayA9ICQoY2F0IGZpbGUpCisJKQorJworCisjIFByb3ZlIHRoYXQgdGhlIHJlbW90ZSBlbmQgcmVhbGx5IGlzIGEgcmVwbywgYW5kIG90aGVyIGNvbW1hbmRzCisjIHdvcmsgZmluZSBpbiB0aGlzIGNvbnRleHQuICBJdCdzIGp1c3QgdGhhdCAiZ2l0IHB1bGwiIGJyZWFrcy4KKyMKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2hpbmcgZnJvbSBzeW1saW5rZWQgc3ViZGlyJyAnCisJKAorCQljZCBzdWJkaXItbGluay8gJiYKKwkJZWNobyBwdXNoID5maWxlICYmCisJCWdpdCBjb21taXQgLW0gcHVzaCAuL2ZpbGUgJiYKKwkJZ2l0IHB1c2gKKwkpICYmCisJdGVzdCBwdXNoID0gJChnaXQgc2hvdyBIRUFEOnN1YmRpci9maWxlKQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU1NDAtaHR0cC1wdXNoLnNoIGIvdC90NTU0MC1odHRwLXB1c2guc2gKaW5kZXggYjBkMjQyZS4uYzIzNmI1ZSAxMDA3NTUKLS0tIGEvdC90NTU0MC1odHRwLXB1c2guc2gKKysrIGIvdC90NTU0MC1odHRwLXB1c2guc2gKQEAgLTE5LDcgKzE5LDcgQEAKIAlleGl0CiBmaQogCi0uIC4uL2xpYi1odHRwZC5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9saWItaHR0cGQuc2gKIAogaWYgISBzdGFydF9odHRwZCA+JjMgMj4mNAogdGhlbgpAQCAtNTEsMTcgKzUxLDI5IEBACiAJZ2l0IGNsb25lICRIVFRQRF9VUkwvdGVzdF9yZXBvLmdpdCB0ZXN0X3JlcG9fY2xvbmUKICcKIAotdGVzdF9leHBlY3RfZmFpbHVyZSAncHVzaCB0byByZW1vdGUgcmVwb3NpdG9yeScgJwordGVzdF9leHBlY3RfZmFpbHVyZSAncHVzaCB0byByZW1vdGUgcmVwb3NpdG9yeSB3aXRoIHBhY2tlZCByZWZzJyAnCiAJY2QgIiRST09UX1BBVEgiL3Rlc3RfcmVwb19jbG9uZSAmJgogCTogPnBhdGgyICYmCiAJZ2l0IGFkZCBwYXRoMiAmJgogCXRlc3RfdGljayAmJgogCWdpdCBjb21taXQgLW0gcGF0aDIgJiYKKwlIRUFEPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSAmJgogCWdpdCBwdXNoICYmCi0JWyAtZiAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC90ZXN0X3JlcG8uZ2l0L3JlZnMvaGVhZHMvbWFzdGVyIiBdCisJKGNkICIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIIi90ZXN0X3JlcG8uZ2l0ICYmCisJIHRlc3QgJEhFQUQgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkpCiAnCiAKLXRlc3RfZXhwZWN0X2ZhaWx1cmUgJ2NyZWF0ZSBhbmQgZGVsZXRlIHJlbW90ZSBicmFuY2gnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyBwdXNoIHRvIHJlbW90ZSByZXBvc2l0b3J5IHdpdGggdW5wYWNrZWQgcmVmcycgJworCShjZCAiJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSCIvdGVzdF9yZXBvLmdpdCAmJgorCSBybSBwYWNrZWQtcmVmcyAmJgorCSBnaXQgdXBkYXRlLXJlZiByZWZzL2hlYWRzL21hc3RlciBcCisJCTBjOTczYWU5YmQ1MTkwMmEyODQ2NmYzODUwYjU0M2ZhNjZhNmFhZjQpICYmCisJZ2l0IHB1c2ggJiYKKwkoY2QgIiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgiL3Rlc3RfcmVwby5naXQgJiYKKwkgdGVzdCAkSEVBRCA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGFuZCBkZWxldGUgcmVtb3RlIGJyYW5jaCcgJwogCWNkICIkUk9PVF9QQVRIIi90ZXN0X3JlcG9fY2xvbmUgJiYKIAlnaXQgY2hlY2tvdXQgLWIgZGV2ICYmCiAJOiA+cGF0aDMgJiYKQEAgLTc2LDYgKzg4LDEyIEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNob3ctcmVmIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vZGV2CiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ01LQ09MIHNlbmRzIGRpcmVjdG9yeSBuYW1lcyB3aXRoIHRyYWlsaW5nIHNsYXNoZXMnICcKKworCSEgZ3JlcCAiXCJNS0NPTC4qW14vXSBIVFRQL1teIF0qXCIiIDwgIiRIVFRQRF9ST09UX1BBVEgiL2FjY2Vzcy5sb2cKKworJworCiBzdG9wX2h0dHBkCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTcwMS1jbG9uZS1sb2NhbC5zaCBiL3QvdDU3MDEtY2xvbmUtbG9jYWwuc2gKaW5kZXggOGRmYWFhNC4uZmUwZmRhMiAxMDA3NTUKLS0tIGEvdC90NTcwMS1jbG9uZS1sb2NhbC5zaAorKysgYi90L3Q1NzAxLWNsb25lLWxvY2FsLnNoCkBAIC0xMSw4ICsxMSw4IEBACiAJZ2l0IGNsb25lIC0tYmFyZSAuIHggJiYKIAl0ZXN0ICIkKEdJVF9DT05GSUc9YS5naXQvY29uZmlnIGdpdCBjb25maWcgLS1ib29sIGNvcmUuYmFyZSkiID0gdHJ1ZSAmJgogCXRlc3QgIiQoR0lUX0NPTkZJRz14L2NvbmZpZyBnaXQgY29uZmlnIC0tYm9vbCBjb3JlLmJhcmUpIiA9IHRydWUKLQlnaXQgYnVuZGxlIGNyZWF0ZSBiMS5idW5kbGUgLS1hbGwgSEVBRCAmJgotCWdpdCBidW5kbGUgY3JlYXRlIGIyLmJ1bmRsZSAtLWFsbCAmJgorCWdpdCBidW5kbGUgY3JlYXRlIGIxLmJ1bmRsZSAtLWFsbCAmJgorCWdpdCBidW5kbGUgY3JlYXRlIGIyLmJ1bmRsZSBtYXN0ZXIgJiYKIAlta2RpciBkaXIgJiYKIAljcCBiMS5idW5kbGUgZGlyL2IzCiAJY3AgYjEuYnVuZGxlIGI0CmRpZmYgLS1naXQgYS90L3Q1NzAyLWNsb25lLW9wdGlvbnMuc2ggYi90L3Q1NzAyLWNsb25lLW9wdGlvbnMuc2gKaW5kZXggMzI4ZTRkOS4uMjc4MjVmNSAxMDA3NTUKLS0tIGEvdC90NTcwMi1jbG9uZS1vcHRpb25zLnNoCisrKyBiL3QvdDU3MDItY2xvbmUtb3B0aW9ucy5zaApAQCAtMTksNCArMTksMTcgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWRpcmVjdGVkIGNsb25lJyAnCisKKwlnaXQgY2xvbmUgImZpbGU6Ly8kKHB3ZCkvcGFyZW50IiBjbG9uZS1yZWRpcmVjdGVkID5vdXQgMj5lcnIgJiYKKwl0ZXN0ICEgLXMgZXJyCisKKycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZGlyZWN0ZWQgY2xvbmUgLXYnICcKKworCWdpdCBjbG9uZSAtdiAiZmlsZTovLyQocHdkKS9wYXJlbnQiIGNsb25lLXJlZGlyZWN0ZWQtdiA+b3V0IDI+ZXJyICYmCisJdGVzdCAtcyBlcnIKKworJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYwMDItcmV2LWxpc3QtYmlzZWN0LnNoIGIvdC90NjAwMi1yZXYtbGlzdC1iaXNlY3Quc2gKaW5kZXggOGY1ZGUwOS4uYjRlOGZiYSAxMDA3NTUKLS0tIGEvdC90NjAwMi1yZXYtbGlzdC1iaXNlY3Quc2gKKysrIGIvdC90NjAwMi1yZXYtbGlzdC1iaXNlY3Quc2gKQEAgLTUsNyArNSw3IEBACiB0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0cyBnaXQgcmV2LWxpc3QgLS1iaXNlY3QgZnVuY3Rpb25hbGl0eScKIAogLiAuL3Rlc3QtbGliLnNoCi0uIC4uL3Q2MDAwbGliLnNoICMgdDZ4eHggc3BlY2lmaWMgZnVuY3Rpb25zCisuICIkVEVTVF9ESVJFQ1RPUlkiL3Q2MDAwbGliLnNoICMgdDZ4eHggc3BlY2lmaWMgZnVuY3Rpb25zCiAKICMgdXNhZ2U6IHRlc3RfYmlzZWN0aW9uIG1heC1kaWZmIGJpc2VjdC1vcHRpb24gaGVhZCBecHJ1bmUuLi4KICMKZGlmZiAtLWdpdCBhL3QvdDYwMDMtcmV2LWxpc3QtdG9wby1vcmRlci5zaCBiL3QvdDYwMDMtcmV2LWxpc3QtdG9wby1vcmRlci5zaAppbmRleCA1ZGFhMGJlLi4yYzczZjJkIDEwMDc1NQotLS0gYS90L3Q2MDAzLXJldi1saXN0LXRvcG8tb3JkZXIuc2gKKysrIGIvdC90NjAwMy1yZXYtbGlzdC10b3BvLW9yZGVyLnNoCkBAIC02LDcgKzYsNyBAQAogdGVzdF9kZXNjcmlwdGlvbj0nVGVzdHMgZ2l0IHJldi1saXN0IC0tdG9wby1vcmRlciBmdW5jdGlvbmFsaXR5JwogCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vdDYwMDBsaWIuc2ggIyB0Nnh4eCBzcGVjaWZpYyBmdW5jdGlvbnMKKy4gIiRURVNUX0RJUkVDVE9SWSIvdDYwMDBsaWIuc2ggIyB0Nnh4eCBzcGVjaWZpYyBmdW5jdGlvbnMKIAogbGlzdF9kdXBsaWNhdGVzKCkKIHsKZGlmZiAtLWdpdCBhL3QvdDYwMTAtbWVyZ2UtYmFzZS5zaCBiL3QvdDYwMTAtbWVyZ2UtYmFzZS5zaAppbmRleCBiNmU1N2IyLi4wNGU0YjdjIDEwMDc1NQotLS0gYS90L3Q2MDEwLW1lcmdlLWJhc2Uuc2gKKysrIGIvdC90NjAxMC1tZXJnZS1iYXNlLnNoCkBAIC0xMDgsNCArMTA4LDUyIEBACiAgICAgJ01CPSQoZ2l0IG1lcmdlLWJhc2UgLS1hbGwgUEwgUFIpICYmCiAgICAgIGV4cHIgIiQoZ2l0IG5hbWUtcmV2ICIkTUIiKSIgOiAiWzAtOWEtZl0qIHRhZ3MvQzIiJwogCisjIEFub3RoZXIgc2V0IHRvIGRlbW9uc3RyYXRlIGJhc2UgYmV0d2VlbiBvbmUgY29tbWl0IGFuZCBhIG1lcmdlCisjIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZS1iYXNlIGZvciBvY3RvcHVzLXN0ZXAgKHNldHVwKScgJworCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gcm9vdCAmJiBnaXQgdGFnIE1NUiAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gMSAmJiBnaXQgdGFnIE1NMSAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gbyAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gbyAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gbyAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gQSAmJiBnaXQgdGFnIE1NQSAmJgorCWdpdCBjaGVja291dCBNTTEgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG8gJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG8gJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG8gJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIEIgJiYgZ2l0IHRhZyBNTUIgJiYKKwlnaXQgY2hlY2tvdXQgTU1SICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBDICYmIGdpdCB0YWcgTU1DCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlLWJhc2UgQSBCIEMnICcKKwlNQj0kKGdpdCBtZXJnZS1iYXNlIC0tYWxsIE1NQSBNTUIgTU1DKSAmJgorCU1NMT0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgTU0xKSAmJgorCXRlc3QgIiRNTTEiID0gIiRNQiIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3Jpc3MtY3Jvc3MgbWVyZ2UtYmFzZSBmb3Igb2N0b3B1cy1zdGVwIChzZXR1cCknICcKKwlnaXQgcmVzZXQgLS1oYXJkIE1NUiAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gMSAmJiBnaXQgdGFnIENDMSAmJgorCWdpdCByZXNldCAtLWhhcmQgRSAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gMiAmJiBnaXQgdGFnIENDMiAmJgorCXRlc3RfdGljayAmJiBnaXQgbWVyZ2UgLXMgb3VycyBDQzEgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG8gJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIEIgJiYgZ2l0IHRhZyBDQ0IgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIENDMSAmJgorCXRlc3RfdGljayAmJiBnaXQgbWVyZ2UgLXMgb3VycyBDQzIgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIEEgJiYgZ2l0IHRhZyBDQ0EKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UtYmFzZSBCIEFeXiBBXl4yJyAnCisJTUIwPSQoZ2l0IG1lcmdlLWJhc2UgLS1hbGwgQ0NCIENDQV5eIENDQV5eMiB8IHNvcnQpICYmCisJTUIxPSQoZ2l0IHJldi1wYXJzZSBDQzEgQ0MyIHwgc29ydCkgJiYKKwl0ZXN0ICIkTUIwIiA9ICIkTUIxIgorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYwMTItcmV2LWxpc3Qtc2ltcGxpZnkuc2ggYi90L3Q2MDEyLXJldi1saXN0LXNpbXBsaWZ5LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjUxMGJiOTYKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q2MDEyLXJldi1saXN0LXNpbXBsaWZ5LnNoCkBAIC0wLDAgKzEsOTMgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdtZXJnZSBzaW1wbGlmaWNhdGlvbicKKworLiAuL3Rlc3QtbGliLnNoCisKK25vdGUgKCkgeworCWdpdCB0YWcgIiQxIgorfQorCitfeDQwPSdbMC05YS1mXVswLTlhLWZdWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdJworX3g0MD0iJF94NDAkX3g0MCRfeDQwJF94NDAkX3g0MCRfeDQwJF94NDAkX3g0MCIKKwordW5ub3RlICgpIHsKKwlnaXQgbmFtZS1yZXYgLS10YWdzIC0tc3RkaW4gfCBzZWQgLWUgInN8JF94NDAgKHRhZ3MvXChbXildKlwpKSB8XDEgfGciCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJworCWVjaG8gIkhpIHRoZXJlIiA+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1tICJJbml0aWFsIGZpbGUiICYmCisJbm90ZSBBICYmCisKKwlnaXQgYnJhbmNoIG90aGVyLWJyYW5jaCAmJgorCisJZWNobyAiSGVsbG8iID5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIk1vZGlmaWVkIGZpbGUiICYmCisJbm90ZSBCICYmCisKKwlnaXQgY2hlY2tvdXQgb3RoZXItYnJhbmNoICYmCisKKwllY2hvICJIZWxsbyIgPmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiTW9kaWZpZWQgdGhlIGZpbGUgaWRlbnRpY2FsbHkiICYmCisJbm90ZSBDICYmCisKKwllY2hvICJUaGlzIGlzIGEgc3R1cGlkIGV4YW1wbGUiID5hbm90aGVyLWZpbGUgJiYKKwlnaXQgYWRkIGFub3RoZXItZmlsZSAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1tICJBZGQgYW5vdGhlciBmaWxlIiAmJgorCW5vdGUgRCAmJgorCisJdGVzdF90aWNrICYmIGdpdCBtZXJnZSAtbSAibWVyZ2UiIG1hc3RlciAmJgorCW5vdGUgRSAmJgorCisJZWNobyAiWWV0IGFub3RoZXIiID5lbGlmICYmCisJZ2l0IGFkZCBlbGlmICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIklycmVsZXZhbnQgY2hhbmdlIiAmJgorCW5vdGUgRiAmJgorCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCWVjaG8gIllldCBhbm90aGVyIiA+ZWxpZiAmJgorCWdpdCBhZGQgZWxpZiAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1tICJBbm90aGVyIGlycmVsZXZhbnQgY2hhbmdlIiAmJgorCW5vdGUgRyAmJgorCisJdGVzdF90aWNrICYmIGdpdCBtZXJnZSAtbSAibWVyZ2UiIG90aGVyLWJyYW5jaCAmJgorCW5vdGUgSCAmJgorCisJZWNobyAiRmluYWwgY2hhbmdlIiA+ZmlsZSAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1hIC1tICJGaW5hbCBjaGFuZ2UiICYmCisJbm90ZSBJCisnCisKK0ZNVD0ndGZvcm1hdDolUCAJJUggfCAlcycKKworY2hlY2tfcmVzdWx0ICgpIHsKKwlmb3IgYyBpbiAkMQorCWRvCisJCWVjaG8gIiRjIgorCWRvbmUgPmV4cGVjdCAmJgorCXNoaWZ0ICYmCisJcGFyYW09IiQqIiAmJgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImxvZyAkcGFyYW0iICcKKwkJZ2l0IGxvZyAtLXByZXR0eT0iJEZNVCIgLS1wYXJlbnRzICRwYXJhbSB8CisJCXVubm90ZSA+YWN0dWFsICYmCisJCXNlZCAtZSAicy9eLioJXChbXiBdKlwpIC4qL1wxLyIgPmNoZWNrIDxhY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGNoZWNrIHx8IHsKKwkJCWNhdCBhY3R1YWwKKwkJCWZhbHNlCisJCX0KKwknCit9CisKK2NoZWNrX3Jlc3VsdCAnSSBIIEcgRiBFIEQgQyBCIEEnIC0tZnVsbC1oaXN0b3J5CitjaGVja19yZXN1bHQgJ0kgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0kgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLXRvcG8tb3JkZXIgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdJIEggRSBDIEIgQScgLS1mdWxsLWhpc3RvcnkgLS1kYXRlLW9yZGVyIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnSSBFIEMgQiBBJyAtLXNpbXBsaWZ5LW1lcmdlcyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0kgQiBBJyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0kgQiBBJyAtLXRvcG8tb3JkZXIgLS0gZmlsZQorCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYwMTMtcmV2LWxpc3QtcmV2ZXJzZS1wYXJlbnRzLnNoIGIvdC90NjAxMy1yZXYtbGlzdC1yZXZlcnNlLXBhcmVudHMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTlmYzJmMAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDYwMTMtcmV2LWxpc3QtcmV2ZXJzZS1wYXJlbnRzLnNoCkBAIC0wLDAgKzEsNDIgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSctLXJldmVyc2UgY29tYmluZXMgd2l0aCAtLXBhcmVudHMnCisKKy4gLi90ZXN0LWxpYi5zaAorCisKK2NvbW1pdCAoKSB7CisJdGVzdF90aWNrICYmCisJZWNobyAkMSA+IGZvbyAmJgorCWdpdCBhZGQgZm9vICYmCisJZ2l0IGNvbW1pdCAtbSAiJDEiCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldCB1cCAtLXJldmVyc2UgZXhhbXBsZScgJworCWNvbW1pdCBvbmUgJiYKKwlnaXQgdGFnIHJvb3QgJiYKKwljb21taXQgdHdvICYmCisJZ2l0IGNoZWNrb3V0IC1iIHNpZGUgSEVBRF4gJiYKKwljb21taXQgdGhyZWUgJiYKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IG1lcmdlIC1zIG91cnMgc2lkZSAmJgorCWNvbW1pdCBmaXZlCisJJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXJldmVyc2UgLS1wYXJlbnRzIC0tZnVsbC1oaXN0b3J5IGNvbWJpbmVzIGNvcnJlY3RseScgJworCWdpdCByZXYtbGlzdCAtLXBhcmVudHMgLS1mdWxsLWhpc3RvcnkgbWFzdGVyIC0tIGZvbyB8CisJCXBlcmwgLWUgInByaW50IHJldmVyc2UgPD4iID4gZXhwZWN0ZWQgJiYKKwlnaXQgcmV2LWxpc3QgLS1yZXZlcnNlIC0tcGFyZW50cyAtLWZ1bGwtaGlzdG9yeSBtYXN0ZXIgLS0gZm9vIFwKKwkJPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBhY3R1YWwgZXhwZWN0ZWQKKwknCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tYm91bmRhcnkgZG9lcyB0b28nICcKKwlnaXQgcmV2LWxpc3QgLS1ib3VuZGFyeSAtLXBhcmVudHMgLS1mdWxsLWhpc3RvcnkgbWFzdGVyIF5yb290IC0tIGZvbyB8CisJCXBlcmwgLWUgInByaW50IHJldmVyc2UgPD4iID4gZXhwZWN0ZWQgJiYKKwlnaXQgcmV2LWxpc3QgLS1ib3VuZGFyeSAtLXJldmVyc2UgLS1wYXJlbnRzIC0tZnVsbC1oaXN0b3J5IFwKKwkJbWFzdGVyIF5yb290IC0tIGZvbyA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGFjdHVhbCBleHBlY3RlZAorCScKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q2MDE0LXJldi1saXN0LWFsbC5zaCBiL3QvdDYwMTQtcmV2LWxpc3QtYWxsLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk5MWFiNGEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q2MDE0LXJldi1saXN0LWFsbC5zaApAQCAtMCwwICsxLDM4IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nLS1hbGwgaW5jbHVkZXMgZGV0YWNoZWQgSEVBRHMnCisKKy4gLi90ZXN0LWxpYi5zaAorCisKK2NvbW1pdCAoKSB7CisJdGVzdF90aWNrICYmCisJZWNobyAkMSA+IGZvbyAmJgorCWdpdCBhZGQgZm9vICYmCisJZ2l0IGNvbW1pdCAtbSAiJDEiCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisKKwljb21taXQgb25lICYmCisJY29tbWl0IHR3byAmJgorCWdpdCBjaGVja291dCBIRUFEXiAmJgorCWNvbW1pdCBkZXRhY2hlZAorCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1saXN0IC0tYWxsIGxpc3RzIGRldGFjaGVkIEhFQUQnICcKKworCXRlc3QgMyA9ICQoZ2l0IHJldi1saXN0IC0tYWxsIHwgd2MgLWwpCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVwYWNrIGRvZXMgbm90IGxvc2UgZGV0YWNoZWQgSEVBRCcgJworCisJZ2l0IGdjICYmCisJZ2l0IHBydW5lIC0tZXhwaXJlPW5vdyAmJgorCWdpdCBzaG93IEhFQUQKKworJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYwMjMtbWVyZ2UtZmlsZS5zaCBiL3QvdDYwMjMtbWVyZ2UtZmlsZS5zaAppbmRleCBmNjc0YzQ4Li5mODk0MmJjIDEwMDc1NQotLS0gYS90L3Q2MDIzLW1lcmdlLWZpbGUuc2gKKysrIGIvdC90NjAyMy1tZXJnZS1maWxlLnNoCkBAIC0xMzYsNyArMTM2LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYmluYXJ5IGZpbGVzIGNhbm5vdCBiZSBtZXJnZWQnICcKIAl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UtZmlsZSAtcCBcCi0JCW9yaWcudHh0IC4uL3Rlc3Q0MDEyLnBuZyBuZXcxLnR4dCAyPiBtZXJnZS5lcnIgJiYKKwkJb3JpZy50eHQgIiRURVNUX0RJUkVDVE9SWSIvdGVzdDQwMTIucG5nIG5ldzEudHh0IDI+IG1lcmdlLmVyciAmJgogCWdyZXAgIkNhbm5vdCBtZXJnZSBiaW5hcnkgZmlsZXMiIG1lcmdlLmVycgogJwogCkBAIC0xNTAsOCArMTUwLDggQEAKIAogJwogCi1zZWQgLWUgJ3MvZGVlcml0Li8mXG5cblxuXG4vJyAtZSAicy9sb2Nhdml0LC9sb2Nhdml0Oy8iIDwgbmV3Ni50eHQgPiBuZXc4LnR4dAotc2VkIC1lICdzL2RlZXJpdC4vJlxuXG5cblxuLycgLWUgInMvbG9jYXZpdCwvbG9jYXZpdCAtLS8iIDwgbmV3Ny50eHQgPiBuZXc5LnR4dAorc2VkIC1lICdzL2RlZXJpdC4vJiUlJSUvJyAtZSAicy9sb2Nhdml0LC9sb2Nhdml0Oy8iPCBuZXc2LnR4dCB8IHRyICclJyAnXDAxMicgPiBuZXc4LnR4dAorc2VkIC1lICdzL2RlZXJpdC4vJiUlJSUvJyAtZSAicy9sb2Nhdml0LC9sb2Nhdml0IC0tLyIgPCBuZXc3LnR4dCB8IHRyICclJyAnXDAxMicgPiBuZXc5LnR4dAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdaRUFMT1VTX0FMTlVNJyAnCiAKQEAgLTE2MSw0ICsxNjEsNDggQEAKIAogJwogCitjYXQgPmV4cGVjdCA8PFxFT0YKK0RvbWludXMgcmVnaXQgbWUsCis8PDw8PDw8IG5ldzgudHh0CitldCBuaWhpbCBtaWhpIGRlZXJpdDsKKworCisKKworSW4gbG9jbyBwYXNjdWFlIGliaSBtZSBjb2xsb2Nhdml0Oworc3VwZXIgYXF1YW0gcmVmZWN0aW9uaXMgZWR1Y2F2aXQgbWUuCit8fHx8fHx8CitldCBuaWhpbCBtaWhpIGRlZXJpdC4KK0luIGxvY28gcGFzY3VhZSBpYmkgbWUgY29sbG9jYXZpdCwKK3N1cGVyIGFxdWFtIHJlZmVjdGlvbmlzIGVkdWNhdml0IG1lOworPT09PT09PQorZXQgbmloaWwgbWloaSBkZWVyaXQsCisKKworCisKK0luIGxvY28gcGFzY3VhZSBpYmkgbWUgY29sbG9jYXZpdCAtLQorc3VwZXIgYXF1YW0gcmVmZWN0aW9uaXMgZWR1Y2F2aXQgbWUsCis+Pj4+Pj4+IG5ldzkudHh0CithbmltYW0gbWVhbSBjb252ZXJ0aXQsCitkZWR1eGl0IG1lIHN1cGVyIHNlbWl0YXMganVzaXRpYWUsCitwcm9wdGVyIG5vbWVuIHN1dW0uCitOYW0gZXQgc2kgYW1idWxhdmVybyBpbiBtZWRpbyB1bWJyYWUgbW9ydGlzLAorbm9uIHRpbWVibyBtYWxhLCBxdW9uaWFtIFRVIG1lY3VtIGVzOgordmlyZ2EgdHVhIGV0IGJhY3VsdXMgdHV1cyBpcHNhIG1lIGNvbnNvbGF0YSBzdW50LgorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJkaWZmMyAtbSIgc3R5bGUgb3V0cHV0ICgxKScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZS1maWxlIC1wIC0tZGlmZjMgXAorCQluZXc4LnR4dCBuZXc1LnR4dCBuZXc5LnR4dCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciZGlmZjMgLW0iIHN0eWxlIG91dHB1dCAoMiknICcKKwlnaXQgY29uZmlnIG1lcmdlLmNvbmZsaWN0c3R5bGUgZGlmZjMgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UtZmlsZSAtcCBcCisJCW5ldzgudHh0IG5ldzUudHh0IG5ldzkudHh0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAyNC1yZWN1cnNpdmUtbWVyZ2Uuc2ggYi90L3Q2MDI0LXJlY3Vyc2l2ZS1tZXJnZS5zaAppbmRleCA4MDJkMGQwLi4xMjlmYTMwIDEwMDc1NQotLS0gYS90L3Q2MDI0LXJlY3Vyc2l2ZS1tZXJnZS5zaAorKysgYi90L3Q2MDI0LXJlY3Vyc2l2ZS1tZXJnZS5zaApAQCAtOTcsNCArOTcsMjcgQEAKIAkJbWVyZ2UuZXJyCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21hcmsgcmVuYW1lL2RlbGV0ZSBhcyB1bm1lcmdlZCcgJworCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjaGVja291dCAtYiBkZWxldGUgJiYKKwlnaXQgcm0gYTEgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIGRlbGV0ZSAmJgorCWdpdCBjaGVja291dCAtYiByZW5hbWUgSEVBRF4gJiYKKwlnaXQgbXYgYTEgYTIKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tIHJlbmFtZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBkZWxldGUgJiYKKwl0ZXN0IDEgPSAkKGdpdCBscy1maWxlcyAtLXVubWVyZ2VkIHwgd2MgLWwpICYmCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSA6MjphMiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgOjM6YTIgJiYKKwlnaXQgY2hlY2tvdXQgLWYgZGVsZXRlICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIHJlbmFtZSAmJgorCXRlc3QgMSA9ICQoZ2l0IGxzLWZpbGVzIC0tdW5tZXJnZWQgfCB3YyAtbCkgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IDoyOmEyICYmCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSA6MzphMgorCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAyNS1tZXJnZS1zeW1saW5rcy5zaCBiL3QvdDYwMjUtbWVyZ2Utc3ltbGlua3Muc2gKaW5kZXggNTM4OTJhNS4uNDMzYzRkZSAxMDA3NTUKLS0tIGEvdC90NjAyNS1tZXJnZS1zeW1saW5rcy5zaAorKysgYi90L3Q2MDI1LW1lcmdlLXN5bWxpbmtzLnNoCkBAIC0xOCwxMSArMTgsMTEgQEAKIGdpdCBjb21taXQgLW0gaW5pdGlhbCAmJgogZ2l0IGJyYW5jaCBiLXN5bWxpbmsgJiYKIGdpdCBicmFuY2ggYi1maWxlICYmCi1sPSQoZWNobyAtbiBmaWxlIHwgZ2l0IGhhc2gtb2JqZWN0IC10IGJsb2IgLXcgLS1zdGRpbikgJiYKK2w9JChwcmludGYgZmlsZSB8IGdpdCBoYXNoLW9iamVjdCAtdCBibG9iIC13IC0tc3RkaW4pICYmCiBlY2hvICIxMjAwMDAgJGwJc3ltbGluayIgfCBnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbyAmJgogZ2l0IGNvbW1pdCAtbSBtYXN0ZXIgJiYKIGdpdCBjaGVja291dCBiLXN5bWxpbmsgJiYKLWw9JChlY2hvIC1uIGZpbGUtZGlmZmVyZW50IHwgZ2l0IGhhc2gtb2JqZWN0IC10IGJsb2IgLXcgLS1zdGRpbikgJiYKK2w9JChwcmludGYgZmlsZS1kaWZmZXJlbnQgfCBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyAtLXN0ZGluKSAmJgogZWNobyAiMTIwMDAwICRsCXN5bWxpbmsiIHwgZ2l0IHVwZGF0ZS1pbmRleCAtLWluZGV4LWluZm8gJiYKIGdpdCBjb21taXQgLW0gYi1zeW1saW5rICYmCiBnaXQgY2hlY2tvdXQgYi1maWxlICYmCmRpZmYgLS1naXQgYS90L3Q2MDI2LW1lcmdlLWF0dHIuc2ggYi90L3Q2MDI2LW1lcmdlLWF0dHIuc2gKaW5kZXggNGI0MjNlOS4uMWJhMGEyNSAxMDA3NTUKLS0tIGEvdC90NjAyNi1tZXJnZS1hdHRyLnNoCisrKyBiL3QvdDYwMjYtbWVyZ2UtYXR0ci5zaApAQCAtMTQyLDQgKzE0MiwyNiBAQAogCXJtIC1mICRvICRhICRiCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwLXRvLWRhdGUgbWVyZ2Ugd2l0aG91dCBjb21tb24gYW5jZXN0b3InICcKKwl0ZXN0X2NyZWF0ZV9yZXBvIHJlcG8xICYmCisJdGVzdF9jcmVhdGVfcmVwbyByZXBvMiAmJgorCXRlc3RfdGljayAmJgorCSgKKwkJY2QgcmVwbzEgJiYKKwkJPmEgJiYKKwkJZ2l0IGFkZCBhICYmCisJCWdpdCBjb21taXQgLW0gaW5pdGlhbAorCSkgJiYKKwl0ZXN0X3RpY2sgJiYKKwkoCisJCWNkIHJlcG8yICYmCisJCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBpbml0aWFsCisJKSAmJgorCXRlc3RfdGljayAmJgorCSgKKwkJY2QgcmVwbzEgJiYKKwkJZ2l0IHB1bGwgLi4vcmVwbzIgbWFzdGVyCisJKQorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYwMjctbWVyZ2UtYmluYXJ5LnNoIGIvdC90NjAyNy1tZXJnZS1iaW5hcnkuc2gKaW5kZXggOTJjYTFmMC4uYjUxOTYyNiAxMDA3NTUKLS0tIGEvdC90NjAyNy1tZXJnZS1iaW5hcnkuc2gKKysrIGIvdC90NjAyNy1tZXJnZS1iaW5hcnkuc2gKQEAgLTYsNyArNiw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwogCi0JY2F0IC4uL3Rlc3Q0MDEyLnBuZyA+bSAmJgorCWNhdCAiJFRFU1RfRElSRUNUT1JZIi90ZXN0NDAxMi5wbmcgPm0gJiYKIAlnaXQgYWRkIG0gJiYKIAlnaXQgbHMtZmlsZXMgLXMgfCBzZWQgLWUgInMvIDAJLyAxCS8iID5FMSAmJgogCXRlc3RfdGljayAmJgpkaWZmIC0tZ2l0IGEvdC90NjAzMC1iaXNlY3QtcG9yY2VsYWluLnNoIGIvdC90NjAzMC1iaXNlY3QtcG9yY2VsYWluLnNoCmluZGV4IDM2YzlhNjkuLmRkN2VhYzggMTAwNzU1Ci0tLSBhL3QvdDYwMzAtYmlzZWN0LXBvcmNlbGFpbi5zaAorKysgYi90L3Q2MDMwLWJpc2VjdC1wb3JjZWxhaW4uc2gKQEAgLTMxMyw4ICszMTMsMjUgQEAKIAlncmVwICIkSEFTSDYgaXMgZmlyc3QgYmFkIGNvbW1pdCIgbXlfYmlzZWN0X2xvZy50eHQKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnYmlzZWN0IHN0YXJ0aW5nIHdpdGggYSBkZXRhY2hlZCBIRUFEJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaXNlY3Qgc2tpcCBvbmx5IG9uZSByYW5nZScgJworCWdpdCBiaXNlY3QgcmVzZXQgJiYKKwlnaXQgYmlzZWN0IHN0YXJ0ICRIQVNINyAkSEFTSDEgJiYKKwlnaXQgYmlzZWN0IHNraXAgJEhBU0gxLi4kSEFTSDUgJiYKKwl0ZXN0ICIkSEFTSDYiID0gIiQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYmlzZWN0IGJhZCA+IG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ3JlcCAiZmlyc3QgYmFkIGNvbW1pdCBjb3VsZCBiZSBhbnkgb2YiIG15X2Jpc2VjdF9sb2cudHh0CisnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Jpc2VjdCBza2lwIG1hbnkgcmFuZ2VzJyAnCisJZ2l0IGJpc2VjdCBzdGFydCAkSEFTSDcgJEhBU0gxICYmCisJdGVzdCAiJEhBU0g0IiA9ICIkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkiICYmCisJZ2l0IGJpc2VjdCBza2lwICRIQVNIMiAkSEFTSDIuLiAuLiRIQVNINSAmJgorCXRlc3QgIiRIQVNINiIgPSAiJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpIiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBiaXNlY3QgYmFkID4gbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICJmaXJzdCBiYWQgY29tbWl0IGNvdWxkIGJlIGFueSBvZiIgbXlfYmlzZWN0X2xvZy50eHQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmlzZWN0IHN0YXJ0aW5nIHdpdGggYSBkZXRhY2hlZCBIRUFEJyAnCiAJZ2l0IGJpc2VjdCByZXNldCAmJgogCWdpdCBjaGVja291dCBtYXN0ZXJeICYmCiAJSEVBRD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgJiYKQEAgLTM1MCw2ICszNjcsMTIwIEBACiAJZ2l0IGJyYW5jaCAtRCBiaXNlY3QKICcKIAorIyBUaGlzIGNyZWF0ZXMgYSAic2lkZSIgYnJhbmNoIHRvIHRlc3QgInNpYmxpbmdzIiBjYXNlcy4KKyMKKyMgSDEtSDItSDMtSDQtSDUtSDYtSDcgIDwtLW90aGVyCisjICAgICAgICAgICAgXAorIyAgICAgICAgICAgICBTNS1TNi1TNyAgPC0tc2lkZQorIwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lkZSBicmFuY2ggY3JlYXRpb24nICcKKwlnaXQgYmlzZWN0IHJlc2V0ICYmCisJZ2l0IGNoZWNrb3V0IC1iIHNpZGUgJEhBU0g0ICYmCisJYWRkX2xpbmVfaW50b19maWxlICI1KHNpZGUpOiBmaXJzdCBsaW5lIG9uIGEgc2lkZSBicmFuY2giIGhlbGxvMiAmJgorCVNJREVfSEFTSDU9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCisJYWRkX2xpbmVfaW50b19maWxlICI2KHNpZGUpOiBzZWNvbmQgbGluZSBvbiBhIHNpZGUgYnJhbmNoIiBoZWxsbzIgJiYKKwlTSURFX0hBU0g2PSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSAmJgorCWFkZF9saW5lX2ludG9fZmlsZSAiNyhzaWRlKTogdGhpcmQgbGluZSBvbiBhIHNpZGUgYnJhbmNoIiBoZWxsbzIgJiYKKwlTSURFX0hBU0g3PSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnb29kIG1lcmdlIGJhc2Ugd2hlbiBnb29kIGFuZCBiYWQgYXJlIHNpYmxpbmdzJyAnCisJZ2l0IGJpc2VjdCBzdGFydCAiJEhBU0g3IiAiJFNJREVfSEFTSDciID4gbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICJtZXJnZSBiYXNlIG11c3QgYmUgdGVzdGVkIiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgJEhBU0g0IG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ2l0IGJpc2VjdCBnb29kID4gbXlfYmlzZWN0X2xvZy50eHQgJiYKKwl0ZXN0X211c3RfZmFpbCBncmVwICJtZXJnZSBiYXNlIG11c3QgYmUgdGVzdGVkIiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgJEhBU0g2IG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ2l0IGJpc2VjdCByZXNldAorJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2tpcHBlZCBtZXJnZSBiYXNlIHdoZW4gZ29vZCBhbmQgYmFkIGFyZSBzaWJsaW5ncycgJworCWdpdCBiaXNlY3Qgc3RhcnQgIiRTSURFX0hBU0g3IiAiJEhBU0g3IiA+IG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ3JlcCAibWVyZ2UgYmFzZSBtdXN0IGJlIHRlc3RlZCIgbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICRIQVNINCBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdpdCBiaXNlY3Qgc2tpcCA+IG15X2Jpc2VjdF9sb2cudHh0IDI+JjEgJiYKKwlncmVwICJXYXJuaW5nIiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgJFNJREVfSEFTSDYgbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlnaXQgYmlzZWN0IHJlc2V0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JhZCBtZXJnZSBiYXNlIHdoZW4gZ29vZCBhbmQgYmFkIGFyZSBzaWJsaW5ncycgJworCWdpdCBiaXNlY3Qgc3RhcnQgIiRIQVNINyIgSEVBRCA+IG15X2Jpc2VjdF9sb2cudHh0ICYmCisJZ3JlcCAibWVyZ2UgYmFzZSBtdXN0IGJlIHRlc3RlZCIgbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICRIQVNINCBteV9iaXNlY3RfbG9nLnR4dCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBiaXNlY3QgYmFkID4gbXlfYmlzZWN0X2xvZy50eHQgMj4mMSAmJgorCWdyZXAgIm1lcmdlIGJhc2UgJEhBU0g0IGlzIGJhZCIgbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICJmaXhlZCBiZXR3ZWVuICRIQVNINCBhbmQgXFskU0lERV9IQVNIN1xdIiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdpdCBiaXNlY3QgcmVzZXQKKycKKworIyBUaGlzIGNyZWF0ZXMgYSBmZXcgbW9yZSBjb21taXRzIChBIGFuZCBCKSB0byB0ZXN0ICJzaWJsaW5ncyIgY2FzZXMKKyMgd2hlbiBhIGdvb2QgYW5kIGEgYmFkIHJldiBoYXZlIG1hbnkgbWVyZ2UgYmFzZXMuCisjCisjIFdlIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmc6CisjCisjIEgxLUgyLUgzLUg0LUg1LUg2LUg3CisjICAgICAgICAgICAgXCAgXCAgICAgXAorIyAgICAgICAgICAgICBTNS1BICAgICBcCisjICAgICAgICAgICAgICBcICAgICAgICBcCisjICAgICAgICAgICAgICAgUzYtUzctLS0tQgorIworIyBBbmQgdGhlcmUgQSBhbmQgQiBoYXZlIDIgbWVyZ2UgYmFzZXMgKFM1IGFuZCBINSkgdGhhdCBzaG91bGQgYmUKKyMgcmVwb3J0ZWQgYnkgImdpdCBtZXJnZS1iYXNlIC0tYWxsIEEgQiIuCisjCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYW55IG1lcmdlIGJhc2VzIGNyZWF0aW9uJyAnCisJZ2l0IGNoZWNrb3V0ICIkU0lERV9IQVNINSIgJiYKKwlnaXQgbWVyZ2UgLW0gIm1lcmdlIEhBU0g1IGFuZCBTSURFX0hBU0g1IiAiJEhBU0g1IiAmJgorCUFfSEFTSD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgJiYKKwlnaXQgY2hlY2tvdXQgc2lkZSAmJgorCWdpdCBtZXJnZSAtbSAibWVyZ2UgSEFTSDcgYW5kIFNJREVfSEFTSDciICIkSEFTSDciICYmCisJQl9IQVNIPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSAmJgorCWdpdCBtZXJnZS1iYXNlIC0tYWxsICIkQV9IQVNIIiAiJEJfSEFTSCIgPiBtZXJnZV9iYXNlcy50eHQgJiYKKwl0ZXN0ICQod2MgLWwgPCBtZXJnZV9iYXNlcy50eHQpID0gIjIiICYmCisJZ3JlcCAiJEhBU0g1IiBtZXJnZV9iYXNlcy50eHQgJiYKKwlncmVwICIkU0lERV9IQVNINSIgbWVyZ2VfYmFzZXMudHh0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dvb2QgbWVyZ2UgYmFzZXMgd2hlbiBnb29kIGFuZCBiYWQgYXJlIHNpYmxpbmdzJyAnCisJZ2l0IGJpc2VjdCBzdGFydCAiJEJfSEFTSCIgIiRBX0hBU0giID4gbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICJtZXJnZSBiYXNlIG11c3QgYmUgdGVzdGVkIiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdpdCBiaXNlY3QgZ29vZCA+IG15X2Jpc2VjdF9sb2cyLnR4dCAmJgorCWdyZXAgIm1lcmdlIGJhc2UgbXVzdCBiZSB0ZXN0ZWQiIG15X2Jpc2VjdF9sb2cyLnR4dCAmJgorCXsKKwkJeworCQkJZ3JlcCAiJFNJREVfSEFTSDUiIG15X2Jpc2VjdF9sb2cudHh0ICYmCisJCQlncmVwICIkSEFTSDUiIG15X2Jpc2VjdF9sb2cyLnR4dAorCQl9IHx8IHsKKwkJCWdyZXAgIiRTSURFX0hBU0g1IiBteV9iaXNlY3RfbG9nMi50eHQgJiYKKwkJCWdyZXAgIiRIQVNINSIgbXlfYmlzZWN0X2xvZy50eHQKKwkJfQorCX0gJiYKKwlnaXQgYmlzZWN0IHJlc2V0CisnCisKK2NoZWNrX3RyYWNlKCkgeworCWdyZXAgIiQxIiAiJEdJVF9UUkFDRSIgfCBncmVwICJcXiQyIiB8IGdyZXAgIiQzIiA+L2Rldi9udWxsCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ29wdGltaXplZCBtZXJnZSBiYXNlIGNoZWNrcycgJworCUdJVF9UUkFDRT0iJChwd2QpL3RyYWNlLmxvZyIgJiYKKwlleHBvcnQgR0lUX1RSQUNFICYmCisJZ2l0IGJpc2VjdCBzdGFydCAiJEhBU0g3IiAiJFNJREVfSEFTSDciID4gbXlfYmlzZWN0X2xvZy50eHQgJiYKKwlncmVwICJtZXJnZSBiYXNlIG11c3QgYmUgdGVzdGVkIiBteV9iaXNlY3RfbG9nLnR4dCAmJgorCWdyZXAgIiRIQVNINCIgbXlfYmlzZWN0X2xvZy50eHQgJiYKKwljaGVja190cmFjZSAicmV2LWxpc3QiICIkSEFTSDciICIkU0lERV9IQVNINyIgJiYKKwlnaXQgYmlzZWN0IGdvb2QgPiBteV9iaXNlY3RfbG9nMi50eHQgJiYKKwl0ZXN0IC1mICIuZ2l0L0JJU0VDVF9BTkNFU1RPUlNfT0siICYmCisJdGVzdCAiJEhBU0g2IiA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSAmJgorCTogPiAiJEdJVF9UUkFDRSIgJiYKKwlnaXQgYmlzZWN0IGJhZCA+IG15X2Jpc2VjdF9sb2czLnR4dCAmJgorCXRlc3RfbXVzdF9mYWlsIGNoZWNrX3RyYWNlICJyZXYtbGlzdCIgIiRIQVNINiIgIiRTSURFX0hBU0g3IiAmJgorCWdpdCBiaXNlY3QgZ29vZCAiJEFfSEFTSCIgPiBteV9iaXNlY3RfbG9nNC50eHQgJiYKKwlncmVwICJtZXJnZSBiYXNlIG11c3QgYmUgdGVzdGVkIiBteV9iaXNlY3RfbG9nNC50eHQgJiYKKwl0ZXN0X211c3RfZmFpbCB0ZXN0IC1mICIuZ2l0L0JJU0VDVF9BTkNFU1RPUlNfT0siICYmCisJY2hlY2tfdHJhY2UgInJldi1saXN0IiAiJEhBU0g2IiAiJEFfSEFTSCIgJiYKKwl1bnNldCBHSVRfVFJBQ0UKKycKKwogIwogIwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q2MDQwLXRyYWNraW5nLWluZm8uc2ggYi90L3Q2MDQwLXRyYWNraW5nLWluZm8uc2gKaW5kZXggYWFjMjEyZS4uYmE5MDYwMSAxMDA3NTUKLS0tIGEvdC90NjA0MC10cmFja2luZy1pbmZvLnNoCisrKyBiL3QvdDYwNDAtdHJhY2tpbmctaW5mby5zaApAQCAtNTMsNyArNTMsNyBAQAogCSgKIAkJY2QgdGVzdCAmJiBnaXQgY2hlY2tvdXQgYjEKIAkpID5hY3R1YWwgJiYKLQlncmVwIC1lICJoYXZlIDEgYW5kIDEgZGlmZmVyZW50IiBhY3R1YWwKKwlncmVwICJoYXZlIDEgYW5kIDEgZGlmZmVyZW50IiBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzJyAnCkBAIC02Myw3ICs2Myw3IEBACiAJCSMgcmVwb3J0cyBub3RoaW5nIHRvIGNvbW1pdAogCQl0ZXN0X211c3RfZmFpbCBnaXQgc3RhdHVzCiAJKSA+YWN0dWFsICYmCi0JZ3JlcCAtZSAiaGF2ZSAxIGFuZCAxIGRpZmZlcmVudCIgYWN0dWFsCisJZ3JlcCAiaGF2ZSAxIGFuZCAxIGRpZmZlcmVudCIgYWN0dWFsCiAnCiAKIApkaWZmIC0tZ2l0IGEvdC90NjEwMS1yZXYtcGFyc2UtcGFyZW50cy5zaCBiL3QvdDYxMDEtcmV2LXBhcnNlLXBhcmVudHMuc2gKaW5kZXggOTE5NTUyYS4uZjEwNWZhYiAxMDA3NTUKLS0tIGEvdC90NjEwMS1yZXYtcGFyc2UtcGFyZW50cy5zaAorKysgYi90L3Q2MTAxLXJldi1wYXJzZS1wYXJlbnRzLnNoCkBAIC02LDcgKzYsNyBAQAogdGVzdF9kZXNjcmlwdGlvbj0nVGVzdCBnaXQgcmV2LXBhcnNlIHdpdGggZGlmZmVyZW50IHBhcmVudCBvcHRpb25zJwogCiAuIC4vdGVzdC1saWIuc2gKLS4gLi4vdDYwMDBsaWIuc2ggIyB0Nnh4eCBzcGVjaWZpYyBmdW5jdGlvbnMKKy4gIiRURVNUX0RJUkVDVE9SWSIvdDYwMDBsaWIuc2ggIyB0Nnh4eCBzcGVjaWZpYyBmdW5jdGlvbnMKIAogZGF0ZSA+cGF0aDAKIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgcGF0aDAKZGlmZiAtLWdpdCBhL3QvdDYxMjAtZGVzY3JpYmUuc2ggYi90L3Q2MTIwLWRlc2NyaWJlLnNoCmluZGV4IDE2Y2M2MzUuLjhjN2UwODEgMTAwNzU1Ci0tLSBhL3QvdDYxMjAtZGVzY3JpYmUuc2gKKysrIGIvdC90NjEyMC1kZXNjcmliZS5zaApAQCAtOTEsMTUgKzkxLDIxIEBACiBjaGVja19kZXNjcmliZSBBLSogSEVBRF5eMgogY2hlY2tfZGVzY3JpYmUgQiBIRUFEXl4yXgogCi1jaGVja19kZXNjcmliZSBBLSogLS10YWdzIEhFQUQKLWNoZWNrX2Rlc2NyaWJlIEEtKiAtLXRhZ3MgSEVBRF4KLWNoZWNrX2Rlc2NyaWJlIEQtKiAtLXRhZ3MgSEVBRF5eCi1jaGVja19kZXNjcmliZSBBLSogLS10YWdzIEhFQUReXjIKK2NoZWNrX2Rlc2NyaWJlIGMtKiAtLXRhZ3MgSEVBRAorY2hlY2tfZGVzY3JpYmUgYy0qIC0tdGFncyBIRUFEXgorY2hlY2tfZGVzY3JpYmUgZS0qIC0tdGFncyBIRUFEXl4KK2NoZWNrX2Rlc2NyaWJlIGMtKiAtLXRhZ3MgSEVBRF5eMgogY2hlY2tfZGVzY3JpYmUgQiAtLXRhZ3MgSEVBRF5eMl4KIAogY2hlY2tfZGVzY3JpYmUgQi0wLSogLS1sb25nIEhFQUReXjJeCiBjaGVja19kZXNjcmliZSBBLTMtKiAtLWxvbmcgSEVBRF5eMgogCis6ID5lcnIuZXhwZWN0CitjaGVja19kZXNjcmliZSBBIC0tYWxsIEFeMAordGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8gd2FybmluZyB3YXMgZGlzcGxheWVkIGZvciBBJyAnCisJdGVzdF9jbXAgZXJyLmV4cGVjdCBlcnIuYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSB0YWcgQSB0byBRIGxvY2FsbHknICcKIAltdiAuZ2l0L3JlZnMvdGFncy9BIC5naXQvcmVmcy90YWdzL1EKICcKZGlmZiAtLWdpdCBhL3QvdDYyMDAtZm10LW1lcmdlLW1zZy5zaCBiL3QvdDYyMDAtZm10LW1lcmdlLW1zZy5zaAppbmRleCBiYzc0MzQ5Li44ZjVhMDZmIDEwMDc1NQotLS0gYS90L3Q2MjAwLWZtdC1tZXJnZS1tc2cuc2gKKysrIGIvdC90NjIwMC1mbXQtbWVyZ2UtbXNnLnNoCkBAIC04MywxMyArODMsMTMgQEAKICcKIAogY2F0ID5leHBlY3RlZCA8PEVPRgotTWVyZ2UgYnJhbmNoICdsZWZ0JyBvZiAuLi8kdGVzdAorTWVyZ2UgYnJhbmNoICdsZWZ0JyBvZiAkVEVTVF9ESVJFQ1RPUlkvJHRlc3QKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZS1tc2cgdGVzdCAjMicgJwogCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgotCWdpdCBmZXRjaCAuLi8iJHRlc3QiIGxlZnQgJiYKKwlnaXQgZmV0Y2ggIiRURVNUX0RJUkVDVE9SWS8kdGVzdCIgbGVmdCAmJgogCiAJZ2l0IGZtdC1tZXJnZS1tc2cgPC5naXQvRkVUQ0hfSEVBRCA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCmRpZmYgLS1naXQgYS90L3Q2MzAwLWZvci1lYWNoLXJlZi5zaCBiL3QvdDYzMDAtZm9yLWVhY2gtcmVmLnNoCmluZGV4IDI2OTk1YjMuLjhiZmFlNDQgMTAwNzU1Ci0tLSBhL3QvdDYzMDAtZm9yLWVhY2gtcmVmLnNoCisrKyBiL3QvdDYzMDAtZm9yLWVhY2gtcmVmLnNoCkBAIC0yNjIsNiArMjYyLDUwIEBACiAJIgogZG9uZQogCitjYXQgPmV4cGVjdGVkIDw8XEVPRgorbWFzdGVyCit0ZXN0dGFnCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnQ2hlY2sgc2hvcnQgcmVmbmFtZSBmb3JtYXQnICcKKwkoZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0iJShyZWZuYW1lOnNob3J0KSIgcmVmcy9oZWFkcyAmJgorCWdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9IiUocmVmbmFtZTpzaG9ydCkiIHJlZnMvdGFncykgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdDaGVjayBmb3IgaW52YWxpZCByZWZuYW1lIGZvcm1hdCcgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9IiUocmVmbmFtZTpJTlZBTElEKSIKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKK2hlYWRzL21hc3RlcgorbWFzdGVyCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnQ2hlY2sgYW1iaWd1b3VzIGhlYWQgYW5kIHRhZyByZWZzJyAnCisJZ2l0IGNoZWNrb3V0IC1iIG5ld3RhZyAmJgorCWVjaG8gIlVzaW5nICRkYXRlc3RhbXAiID4gb25lICYmCisJZ2l0IGFkZCBvbmUgJiYKKwlnaXQgY29tbWl0IC1tICJCcmFuY2giICYmCisJc2V0ZGF0ZV9hbmRfaW5jcmVtZW50ICYmCisJZ2l0IHRhZyAtbSAiVGFnZ2luZyBhdCAkZGF0ZXN0YW1wIiBtYXN0ZXIgJiYKKwlnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0ICIlKHJlZm5hbWU6c2hvcnQpIiByZWZzL2hlYWRzL21hc3RlciByZWZzL3RhZ3MvbWFzdGVyID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKK2hlYWRzL2FtYmlndW91cworYW1iaWd1b3VzCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnQ2hlY2sgYW1iaWd1b3VzIGhlYWQgYW5kIHRhZyByZWZzIElJJyAnCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCWdpdCB0YWcgYW1iaWd1b3VzIHRlc3R0YWdeMCAmJgorCWdpdCBicmFuY2ggYW1iaWd1b3VzIHRlc3R0YWdeMCAmJgorCWdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQgIiUocmVmbmFtZTpzaG9ydCkiIHJlZnMvaGVhZHMvYW1iaWd1b3VzIHJlZnMvdGFncy9hbWJpZ3VvdXMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbiB1bnVzdWFsIHRhZyB3aXRoIGFuIGluY29tcGxldGUgbGluZScgJwogCiAJZ2l0IHRhZyAtbSAiYm9nbyIgYm9nbyAmJgpkaWZmIC0tZ2l0IGEvdC90NzAwMS1tdi5zaCBiL3QvdDcwMDEtbXYuc2gKaW5kZXggZDJlYzU1MC4uOGZiM2E1NiAxMDA3NTUKLS0tIGEvdC90NzAwMS1tdi5zaAorKysgYi90L3Q3MDAxLW12LnNoCkBAIC02LDcgKzYsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ3ByZXBhcmUgcmVmZXJlbmNlIHRyZWUnIFwKICAgICAnbWtkaXIgcGF0aDAgcGF0aDEgJiYKLSAgICAgY3AgLi4vLi4vQ09QWUlORyBwYXRoMC9DT1BZSU5HICYmCisgICAgIGNwICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgcGF0aDAvQ09QWUlORyAmJgogICAgICBnaXQgYWRkIHBhdGgwL0NPUFlJTkcgJiYKICAgICAgZ2l0IGNvbW1pdCAtbSBhZGQgLWEnCiAKQEAgLTczLDcgKzczLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2FkZGluZyBhbm90aGVyIGZpbGUnIFwKLSAgICAnY3AgLi4vLi4vUkVBRE1FIHBhdGgwL1JFQURNRSAmJgorICAgICdjcCAiJFRFU1RfRElSRUNUT1JZIi8uLi9SRUFETUUgcGF0aDAvUkVBRE1FICYmCiAgICAgIGdpdCBhZGQgcGF0aDAvUkVBRE1FICYmCiAgICAgIGdpdCBjb21taXQgLW0gYWRkMiAtYScKIApkaWZmIC0tZ2l0IGEvdC90NzAwMi1ncmVwLnNoIGIvdC90NzAwMi1ncmVwLnNoCmluZGV4IDVlMzU5Y2IuLmM0OTM4NTQgMTAwNzU1Ci0tLSBhL3QvdDcwMDItZ3JlcC5zaAorKysgYi90L3Q3MDAyLWdyZXAuc2gKQEAgLTEwOSw3ICsxMDksNyBAQAogCScKIAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImdyZXAgLWMgJEwgKG5vIC9kZXYvbnVsbCkiICcKLQkJISBnaXQgZ3JlcCAtYyB0ZXN0ICRIIHwgZ3JlcCAtcSAvZGV2L251bGwKKwkJISBnaXQgZ3JlcCAtYyB0ZXN0ICRIIHwgZ3JlcCAvZGV2L251bGwKICAgICAgICAgJwogCiBkb25lCkBAIC0xNjEsNyArMTYxLDE0IEBACiAJZ2l0IGxvZyAtLWF1dGhvcj0tMDcwMCAgLS1wcmV0dHk9dGZvcm1hdDolcyA+YWN0dWFsICYmCiAJPmV4cGVjdCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JlcCB3aXRoIENFX1ZBTElEIGZpbGUnICcKKwlnaXQgdXBkYXRlLWluZGV4IC0tYXNzdW1lLXVuY2hhbmdlZCB0L3QgJiYKKwlybSB0L3QgJiYKKwl0ZXN0ICIkKGdpdCBncmVwIC0tbm8tZXh0LWdyZXAgdCkiID0gInQvdDp0ZXN0IiAmJgorCWdpdCB1cGRhdGUtaW5kZXggLS1uby1hc3N1bWUtdW5jaGFuZ2VkIHQvdCAmJgorCWdpdCBjaGVja291dCB0L3QKICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3MDAzLWZpbHRlci1icmFuY2guc2ggYi90L3Q3MDAzLWZpbHRlci1icmFuY2guc2gKaW5kZXggMTgyYWVhNC4uYjBhOWQ3ZCAxMDA3NTUKLS0tIGEvdC90NzAwMy1maWx0ZXItYnJhbmNoLnNoCisrKyBiL3QvdDcwMDMtZmlsdGVyLWJyYW5jaC5zaApAQCAtOTYsMTMgKzk2LDE3IEBACiAJdGVzdF90aWNrICYmCiAJZ2l0IGNvbW1pdCAtbSAiYWdhaW4gbm90IHN1YmRpciIgJiYKIAlnaXQgYnJhbmNoIHN1YiAmJgotCWdpdCBmaWx0ZXItYnJhbmNoIC1mIC0tc3ViZGlyZWN0b3J5LWZpbHRlciBzdWJkaXIgcmVmcy9oZWFkcy9zdWIKKwlnaXQgYnJhbmNoIHN1Yi1lYXJsaWVyIEhFQUR+MiAmJgorCWdpdCBmaWx0ZXItYnJhbmNoIC1mIC0tc3ViZGlyZWN0b3J5LWZpbHRlciBzdWJkaXIgXAorCQlyZWZzL2hlYWRzL3N1YiByZWZzL2hlYWRzL3N1Yi1lYXJsaWVyCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1YmRpcmVjdG9yeSBmaWx0ZXIgcmVzdWx0IGxvb2tzIG9rYXknICcKIAl0ZXN0IDIgPSAkKGdpdCByZXYtbGlzdCBzdWIgfCB3YyAtbCkgJiYKIAlnaXQgc2hvdyBzdWI6bmV3ICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IHNob3cgc3ViOnN1YmRpcgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzaG93IHN1YjpzdWJkaXIgJiYKKwlnaXQgc2hvdyBzdWItZWFybGllcjpuZXcgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc2hvdyBzdWItZWFybGllcjpzdWJkaXIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbW9yZSBzZXR1cCcgJwpAQCAtMjUwLDQgKzI1NCwxMiBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnVGFnIG5hbWUgZmlsdGVyaW5nIGFsbG93cyBzbGFzaGVzIGluIHRhZyBuYW1lcycgJworCWdpdCB0YWcgLW0gdGFnLXdpdGgtc2xhc2ggWC8xICYmCisJZ2l0IGNhdC1maWxlIHRhZyBYLzEgfCBzZWQgLWUgcyxYLzEsWC8yLCA+IGV4cGVjdCAmJgorCWdpdCBmaWx0ZXItYnJhbmNoIC1mIC0tdGFnLW5hbWUtZmlsdGVyICJlY2hvIFgvMiIgJiYKKwlnaXQgY2F0LWZpbGUgdGFnIFgvMiA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3MDA0LXRhZy5zaCBiL3QvdDcwMDQtdGFnLnNoCmluZGV4IGM2MTZkZWIuLmYzNzdmZWEgMTAwNzU1Ci0tLSBhL3QvdDcwMDQtdGFnLnNoCisrKyBiL3QvdDcwMDQtdGFnLnNoCkBAIC02MjUsNyArNjI1LDcgQEAKICMgTmFtZSBhbmQgZW1haWw6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KICMgTm8gcGFzc3dvcmQgZ2l2ZW4sIHRvIGVuYWJsZSBub24taW50ZXJhY3RpdmUgb3BlcmF0aW9uLgogCi1jcCAtUiAuLi90NzAwNCAuL2dwZ2hvbWUKK2NwIC1SICIkVEVTVF9ESVJFQ1RPUlkiL3Q3MDA0IC4vZ3BnaG9tZQogY2htb2QgMDcwMCBncGdob21lCiBHTlVQR0hPTUU9IiQocHdkKS9ncGdob21lIgogZXhwb3J0IEdOVVBHSE9NRQpkaWZmIC0tZ2l0IGEvdC90NzEwMS1yZXNldC5zaCBiL3QvdDcxMDEtcmVzZXQuc2gKaW5kZXggYzRlZjE5ZS4uOTZlMTYzZiAxMDA3NTUKLS0tIGEvdC90NzEwMS1yZXNldC5zaAorKysgYi90L3Q3MTAxLXJlc2V0LnNoCkBAIC05LDcgKzksNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2NyZWF0aW5nIGluaXRpYWwgZmlsZXMnIFwKICAgICAnbWtkaXIgcGF0aDAgJiYKLSAgICAgY3AgLi4vLi4vQ09QWUlORyBwYXRoMC9DT1BZSU5HICYmCisgICAgIGNwICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgcGF0aDAvQ09QWUlORyAmJgogICAgICBnaXQgYWRkIHBhdGgwL0NPUFlJTkcgJiYKICAgICAgZ2l0IGNvbW1pdCAtbSBhZGQgLWEnCiAKQEAgLTE3LDEwICsxNywxMCBAQAogICAgICdjcmVhdGluZyBzZWNvbmQgZmlsZXMnIFwKICAgICAnbWtkaXIgcGF0aDEgJiYKICAgICAgbWtkaXIgcGF0aDEvcGF0aDIgJiYKLSAgICAgY3AgLi4vLi4vQ09QWUlORyBwYXRoMS9wYXRoMi9DT1BZSU5HICYmCi0gICAgIGNwIC4uLy4uL0NPUFlJTkcgcGF0aDEvQ09QWUlORyAmJgotICAgICBjcCAuLi8uLi9DT1BZSU5HIENPUFlJTkcgJiYKLSAgICAgY3AgLi4vLi4vQ09QWUlORyBwYXRoMC9DT1BZSU5HLVRPTyAmJgorICAgICBjcCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HIHBhdGgxL3BhdGgyL0NPUFlJTkcgJiYKKyAgICAgY3AgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyBwYXRoMS9DT1BZSU5HICYmCisgICAgIGNwICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgQ09QWUlORyAmJgorICAgICBjcCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HIHBhdGgwL0NPUFlJTkctVE9PICYmCiAgICAgIGdpdCBhZGQgcGF0aDEvcGF0aDIvQ09QWUlORyAmJgogICAgICBnaXQgYWRkIHBhdGgxL0NPUFlJTkcgJiYKICAgICAgZ2l0IGFkZCBDT1BZSU5HICYmCmRpZmYgLS1naXQgYS90L3Q3MjAxLWNvLnNoIGIvdC90NzIwMS1jby5zaAppbmRleCBjOWFiZWQ2Li4wZTIxNjMyIDEwMDc1NQotLS0gYS90L3Q3MjAxLWNvLnNoCisrKyBiL3QvdDcyMDEtY28uc2gKQEAgLTM1MSw3ICszNTEsMzkgQEAKICAgICB0ZXN0ICJ6JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKSIgPSAieiRoZXJlIgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCBhbiB1bm1lcmdlZCBwYXRoIHNob3VsZCBmYWlsJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnY2hlY2tvdXQgd2l0aCAtLXRyYWNrIGZha2VzIGEgc2Vuc2libGUgLWIgPG5hbWU+JyAnCisgICAgZ2l0IHVwZGF0ZS1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9rb2FsYS9iZWFyIHJlbmFtZXIgJiYKKyAgICBnaXQgdXBkYXRlLXJlZiByZWZzL25ldy9rb2FsYS9iZWFyIHJlbmFtZXIgJiYKKworICAgIGdpdCBjaGVja291dCAtLXRyYWNrIG9yaWdpbi9rb2FsYS9iZWFyICYmCisgICAgdGVzdCAicmVmcy9oZWFkcy9rb2FsYS9iZWFyIiA9ICIkKGdpdCBzeW1ib2xpYy1yZWYgSEVBRCkiICYmCisgICAgdGVzdCAiJChnaXQgcmV2LXBhcnNlIEhFQUQpIiA9ICIkKGdpdCByZXYtcGFyc2UgcmVuYW1lcikiICYmCisKKyAgICBnaXQgY2hlY2tvdXQgbWFzdGVyICYmIGdpdCBicmFuY2ggLUQga29hbGEvYmVhciAmJgorCisgICAgZ2l0IGNoZWNrb3V0IC0tdHJhY2sgcmVmcy9yZW1vdGVzL29yaWdpbi9rb2FsYS9iZWFyICYmCisgICAgdGVzdCAicmVmcy9oZWFkcy9rb2FsYS9iZWFyIiA9ICIkKGdpdCBzeW1ib2xpYy1yZWYgSEVBRCkiICYmCisgICAgdGVzdCAiJChnaXQgcmV2LXBhcnNlIEhFQUQpIiA9ICIkKGdpdCByZXYtcGFyc2UgcmVuYW1lcikiICYmCisKKyAgICBnaXQgY2hlY2tvdXQgbWFzdGVyICYmIGdpdCBicmFuY2ggLUQga29hbGEvYmVhciAmJgorCisgICAgZ2l0IGNoZWNrb3V0IC0tdHJhY2sgcmVtb3Rlcy9vcmlnaW4va29hbGEvYmVhciAmJgorICAgIHRlc3QgInJlZnMvaGVhZHMva29hbGEvYmVhciIgPSAiJChnaXQgc3ltYm9saWMtcmVmIEhFQUQpIiAmJgorICAgIHRlc3QgIiQoZ2l0IHJldi1wYXJzZSBIRUFEKSIgPSAiJChnaXQgcmV2LXBhcnNlIHJlbmFtZXIpIiAmJgorCisgICAgZ2l0IGNoZWNrb3V0IG1hc3RlciAmJiBnaXQgYnJhbmNoIC1EIGtvYWxhL2JlYXIgJiYKKworICAgIGdpdCBjaGVja291dCAtLXRyYWNrIHJlZnMvbmV3L2tvYWxhL2JlYXIgJiYKKyAgICB0ZXN0ICJyZWZzL2hlYWRzL2tvYWxhL2JlYXIiID0gIiQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEKSIgJiYKKyAgICB0ZXN0ICIkKGdpdCByZXYtcGFyc2UgSEVBRCkiID0gIiQoZ2l0IHJldi1wYXJzZSByZW5hbWVyKSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2NoZWNrb3V0IHdpdGggLS10cmFjaywgYnV0IHdpdGhvdXQgLWIsIGZhaWxzIHdpdGggdG9vIHNob3J0IHRyYWNrZWQgbmFtZScgJworICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjaGVja291dCAtLXRyYWNrIHJlbmFtZXInCisKK3NldHVwX2NvbmZsaWN0aW5nX2luZGV4ICgpIHsKIAlybSAtZiAuZ2l0L2luZGV4ICYmCiAJTz0kKGVjaG8gb3JpZ2luYWwgfCBnaXQgaGFzaC1vYmplY3QgLXcgLS1zdGRpbikgJiYKIAlBPSQoZWNobyBvdXJzaWRlIHwgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4pICYmCkBAIC0zNjIsNyArMzk0LDExIEBACiAJCWVjaG8gIjEwMDY0NCAkQSAyCWZpbGUiICYmCiAJCWVjaG8gIjEwMDY0NCAkQiAzCWZpbGUiICYmCiAJCWVjaG8gIjEwMDY0NCAkQSAwCWZpbGYiCi0JKSB8IGdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvICYmCisJKSB8IGdpdCB1cGRhdGUtaW5kZXggLS1pbmRleC1pbmZvCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IGFuIHVubWVyZ2VkIHBhdGggc2hvdWxkIGZhaWwnICcKKwlzZXR1cF9jb25mbGljdGluZ19pbmRleCAmJgogCWVjaG8gIm5vbmUgb2YgdGhlIGFib3ZlIiA+c2FtcGxlICYmCiAJY2F0IHNhbXBsZSA+ZmlsZCAmJgogCWNhdCBzYW1wbGUgPmZpbGUgJiYKQEAgLTM3Myw2ICs0MDksMTIxIEBACiAJdGVzdF9jbXAgc2FtcGxlIGZpbGUKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgd2l0aCBhbiB1bm1lcmdlZCBwYXRoIGNhbiBiZSBpZ25vcmVkJyAnCisJc2V0dXBfY29uZmxpY3RpbmdfaW5kZXggJiYKKwllY2hvICJub25lIG9mIHRoZSBhYm92ZSIgPnNhbXBsZSAmJgorCWVjaG8gb3Vyc2lkZSA+ZXhwZWN0ICYmCisJY2F0IHNhbXBsZSA+ZmlsZCAmJgorCWNhdCBzYW1wbGUgPmZpbGUgJiYKKwljYXQgc2FtcGxlID5maWxmICYmCisJZ2l0IGNoZWNrb3V0IC1mIGZpbGQgZmlsZSBmaWxmICYmCisJdGVzdF9jbXAgZXhwZWN0IGZpbGQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZiAmJgorCXRlc3RfY21wIHNhbXBsZSBmaWxlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IHVubWVyZ2VkIHN0YWdlJyAnCisJc2V0dXBfY29uZmxpY3RpbmdfaW5kZXggJiYKKwllY2hvICJub25lIG9mIHRoZSBhYm92ZSIgPnNhbXBsZSAmJgorCWVjaG8gb3Vyc2lkZSA+ZXhwZWN0ICYmCisJY2F0IHNhbXBsZSA+ZmlsZCAmJgorCWNhdCBzYW1wbGUgPmZpbGUgJiYKKwljYXQgc2FtcGxlID5maWxmICYmCisJZ2l0IGNoZWNrb3V0IC0tb3VycyAuICYmCisJdGVzdF9jbXAgZXhwZWN0IGZpbGQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZiAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxlICYmCisJZ2l0IGNoZWNrb3V0IC0tdGhlaXJzIGZpbGUgJiYKKwl0ZXN0IHp0aGVpcnNpZGUgPSAieiQoY2F0IGZpbGUpIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCB3aXRoIC0tbWVyZ2UnICcKKwlzZXR1cF9jb25mbGljdGluZ19pbmRleCAmJgorCWVjaG8gIm5vbmUgb2YgdGhlIGFib3ZlIiA+c2FtcGxlICYmCisJZWNobyBvdXJzaWRlID5leHBlY3QgJiYKKwljYXQgc2FtcGxlID5maWxkICYmCisJY2F0IHNhbXBsZSA+ZmlsZSAmJgorCWNhdCBzYW1wbGUgPmZpbGYgJiYKKwlnaXQgY2hlY2tvdXQgLW0gLS0gZmlsZCBmaWxlIGZpbGYgJiYKKwkoCisJCWVjaG8gIjw8PDw8PDwgb3VycyIKKwkJZWNobyBvdXJzaWRlCisJCWVjaG8gIj09PT09PT0iCisJCWVjaG8gdGhlaXJzaWRlCisJCWVjaG8gIj4+Pj4+Pj4gdGhlaXJzIgorCSkgPm1lcmdlZCAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxkICYmCisJdGVzdF9jbXAgZXhwZWN0IGZpbGYgJiYKKwl0ZXN0X2NtcCBtZXJnZWQgZmlsZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCB3aXRoIC0tbWVyZ2UsIGluIGRpZmYzIC1tIHN0eWxlJyAnCisJZ2l0IGNvbmZpZyBtZXJnZS5jb25mbGljdHN0eWxlIGRpZmYzICYmCisJc2V0dXBfY29uZmxpY3RpbmdfaW5kZXggJiYKKwllY2hvICJub25lIG9mIHRoZSBhYm92ZSIgPnNhbXBsZSAmJgorCWVjaG8gb3Vyc2lkZSA+ZXhwZWN0ICYmCisJY2F0IHNhbXBsZSA+ZmlsZCAmJgorCWNhdCBzYW1wbGUgPmZpbGUgJiYKKwljYXQgc2FtcGxlID5maWxmICYmCisJZ2l0IGNoZWNrb3V0IC1tIC0tIGZpbGQgZmlsZSBmaWxmICYmCisJKAorCQllY2hvICI8PDw8PDw8IG91cnMiCisJCWVjaG8gb3Vyc2lkZQorCQllY2hvICJ8fHx8fHx8IgorCQllY2hvIG9yaWdpbmFsCisJCWVjaG8gIj09PT09PT0iCisJCWVjaG8gdGhlaXJzaWRlCisJCWVjaG8gIj4+Pj4+Pj4gdGhlaXJzIgorCSkgPm1lcmdlZCAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxkICYmCisJdGVzdF9jbXAgZXhwZWN0IGZpbGYgJiYKKwl0ZXN0X2NtcCBtZXJnZWQgZmlsZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCAtLWNvbmZsaWN0PW1lcmdlLCBvdmVycmlkaW5nIGNvbmZpZycgJworCWdpdCBjb25maWcgbWVyZ2UuY29uZmxpY3RzdHlsZSBkaWZmMyAmJgorCXNldHVwX2NvbmZsaWN0aW5nX2luZGV4ICYmCisJZWNobyAibm9uZSBvZiB0aGUgYWJvdmUiID5zYW1wbGUgJiYKKwllY2hvIG91cnNpZGUgPmV4cGVjdCAmJgorCWNhdCBzYW1wbGUgPmZpbGQgJiYKKwljYXQgc2FtcGxlID5maWxlICYmCisJY2F0IHNhbXBsZSA+ZmlsZiAmJgorCWdpdCBjaGVja291dCAtLWNvbmZsaWN0PW1lcmdlIC0tIGZpbGQgZmlsZSBmaWxmICYmCisJKAorCQllY2hvICI8PDw8PDw8IG91cnMiCisJCWVjaG8gb3Vyc2lkZQorCQllY2hvICI9PT09PT09IgorCQllY2hvIHRoZWlyc2lkZQorCQllY2hvICI+Pj4+Pj4+IHRoZWlycyIKKwkpID5tZXJnZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZCAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxmICYmCisJdGVzdF9jbXAgbWVyZ2VkIGZpbGUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgLS1jb25mbGljdD1kaWZmMycgJworCWdpdCBjb25maWcgLS11bnNldCBtZXJnZS5jb25mbGljdHN0eWxlCisJc2V0dXBfY29uZmxpY3RpbmdfaW5kZXggJiYKKwllY2hvICJub25lIG9mIHRoZSBhYm92ZSIgPnNhbXBsZSAmJgorCWVjaG8gb3Vyc2lkZSA+ZXhwZWN0ICYmCisJY2F0IHNhbXBsZSA+ZmlsZCAmJgorCWNhdCBzYW1wbGUgPmZpbGUgJiYKKwljYXQgc2FtcGxlID5maWxmICYmCisJZ2l0IGNoZWNrb3V0IC0tY29uZmxpY3Q9ZGlmZjMgLS0gZmlsZCBmaWxlIGZpbGYgJiYKKwkoCisJCWVjaG8gIjw8PDw8PDwgb3VycyIKKwkJZWNobyBvdXJzaWRlCisJCWVjaG8gInx8fHx8fHwiCisJCWVjaG8gb3JpZ2luYWwKKwkJZWNobyAiPT09PT09PSIKKwkJZWNobyB0aGVpcnNpZGUKKwkJZWNobyAiPj4+Pj4+PiB0aGVpcnMiCisJKSA+bWVyZ2VkICYmCisJdGVzdF9jbXAgZXhwZWN0IGZpbGQgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZiAmJgorCXRlc3RfY21wIG1lcmdlZCBmaWxlCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZhaWxpbmcgY2hlY2tvdXQgLWIgc2hvdWxkIG5vdCBicmVhayB3b3JraW5nIHRyZWUnICcKIAlnaXQgcmVzZXQgLS1oYXJkIG1hc3RlciAmJgogCWdpdCBzeW1ib2xpYy1yZWYgSEVBRCByZWZzL2hlYWRzL21hc3RlciAmJgpkaWZmIC0tZ2l0IGEvdC90NzQwMC1zdWJtb2R1bGUtYmFzaWMuc2ggYi90L3Q3NDAwLXN1Ym1vZHVsZS1iYXNpYy5zaAppbmRleCBiZTczZjdiLi4yZWM3YWM2IDEwMDc1NQotLS0gYS90L3Q3NDAwLXN1Ym1vZHVsZS1iYXNpYy5zaAorKysgYi90L3Q3NDAwLXN1Ym1vZHVsZS1iYXNpYy5zaApAQCAtMjA5LDQgKzIwOSwyOSBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvIG5vdCBhZGQgZmlsZXMgZnJvbSBhIHN1Ym1vZHVsZScgJworCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBhZGQgaW5pdC9hCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ3JhY2VmdWxseSBhZGQgc3VibW9kdWxlIHdpdGggYSB0cmFpbGluZyBzbGFzaCcgJworCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjb21taXQgLW0gImNvbW1pdCBzdWJwcm9qZWN0IiBpbml0ICYmCisJKGNkIGluaXQgJiYKKwkgZWNobyBiID4gYSkgJiYKKwlnaXQgYWRkIGluaXQvICYmCisJZ2l0IGRpZmYgLS1leGl0LWNvZGUgLS1jYWNoZWQgaW5pdCAmJgorCWNvbW1pdD0kKGNkIGluaXQgJiYKKwkgZ2l0IGNvbW1pdCAtbSB1cGRhdGUgYSA+L2Rldi9udWxsICYmCisJIGdpdCByZXYtcGFyc2UgSEVBRCkgJiYKKwlnaXQgYWRkIGluaXQvICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGRpZmYgLS1leGl0LWNvZGUgLS1jYWNoZWQgaW5pdCAmJgorCXRlc3QgJGNvbW1pdCA9ICQoZ2l0IGxzLWZpbGVzIC0tc3RhZ2UgfAorCQlzZWQgLW4gInMvXjE2MDAwMCBcKFteIF0qXCkuKi9cMS9wIikKKworJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc0MDMtc3VibW9kdWxlLXN5bmMuc2ggYi90L3Q3NDAzLXN1Ym1vZHVsZS1zeW5jLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjc1Mzg3NTYKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q3NDAzLXN1Ym1vZHVsZS1zeW5jLnNoCkBAIC0wLDAgKzEsNjQgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMDggRGF2aWQgQWd1aWxhcgorIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3VibW9kdWxlIHN5bmMKKworVGhlc2UgdGVzdHMgZXhlcmNpc2UgdGhlICJnaXQgc3VibW9kdWxlIHN5bmMiIHN1YmNvbW1hbmQuCisnCisKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwllY2hvIGZpbGUgPiBmaWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSB1cHN0cmVhbQorCWdpdCBjbG9uZSAuIHN1cGVyICYmCisJZ2l0IGNsb25lIHN1cGVyIHN1Ym1vZHVsZSAmJgorCShjZCBzdXBlciAmJgorCSBnaXQgc3VibW9kdWxlIGFkZCAuLi9zdWJtb2R1bGUgc3VibW9kdWxlICYmCisJIHRlc3RfdGljayAmJgorCSBnaXQgY29tbWl0IC1tICJzdWJtb2R1bGUiCisJKSAmJgorCWdpdCBjbG9uZSBzdXBlciBzdXBlci1jbG9uZSAmJgorCShjZCBzdXBlci1jbG9uZSAmJiBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoYW5nZSBzdWJtb2R1bGUnICcKKwkoY2Qgc3VibW9kdWxlICYmCisJIGVjaG8gc2Vjb25kIGxpbmUgPj4gZmlsZSAmJgorCSB0ZXN0X3RpY2sgJiYKKwkgZ2l0IGNvbW1pdCAtYSAtbSAiY2hhbmdlIHN1Ym1vZHVsZSIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoYW5nZSBzdWJtb2R1bGUgdXJsJyAnCisJKGNkIHN1cGVyICYmCisJIGNkIHN1Ym1vZHVsZSAmJgorCSBnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJIGdpdCBwdWxsCisJKSAmJgorCW12IHN1Ym1vZHVsZSBtb3ZlZC1zdWJtb2R1bGUgJiYKKwkoY2Qgc3VwZXIgJiYKKwkgZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuc3VibW9kdWxlLnVybCAuLi9tb3ZlZC1zdWJtb2R1bGUKKwkgdGVzdF90aWNrICYmCisJIGdpdCBjb21taXQgLWEgLW0gbW92ZWQtc3VibW9kdWxlCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciZ2l0IHN1Ym1vZHVsZSBzeW5jIiBzaG91bGQgdXBkYXRlIHN1Ym1vZHVsZSBVUkxzJyAnCisJKGNkIHN1cGVyLWNsb25lICYmCisJIGdpdCBwdWxsICYmCisJIGdpdCBzdWJtb2R1bGUgc3luYworCSkgJiYKKwl0ZXN0IC1kICIkKGdpdCBjb25maWcgLWYgc3VwZXItY2xvbmUvc3VibW9kdWxlLy5naXQvY29uZmlnIFwKKwkgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGUub3JpZ2luLnVybCkiICYmCisJKGNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZSAmJgorCSBnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJIGdpdCBwdWxsCisJKQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc1MDAtY29tbWl0LnNoIGIvdC90NzUwMC1jb21taXQuc2gKaW5kZXggMGZlNzQ1ZS4uNmUxOGE5NiAxMDA3NTUKLS0tIGEvdC90NzUwMC1jb21taXQuc2gKKysrIGIvdC90NzUwMC1jb21taXQuc2gKQEAgLTQ2LDE1ICs0NiwyNCBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhIFNpZ25lZC1vZmYtYnkgbGluZSBieSBpdHNlbGYgc2hvdWxkIG5vdCBjb21taXQnICcKLQkhIEdJVF9FRElUT1I9Li4vdDc1MDAvYWRkLXNpZ25lZC1vZmYgZ2l0IGNvbW1pdCAtLXRlbXBsYXRlICIkVEVNUExBVEUiCisJKAorCQl0ZXN0X3NldF9lZGl0b3IgIiRURVNUX0RJUkVDVE9SWSIvdDc1MDAvYWRkLXNpZ25lZC1vZmYgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbW1pdCAtLXRlbXBsYXRlICIkVEVNUExBVEUiCisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGRpbmcgY29tbWVudHMgdG8gYSB0ZW1wbGF0ZSBzaG91bGQgbm90IGNvbW1pdCcgJwotCSEgR0lUX0VESVRPUj0uLi90NzUwMC9hZGQtY29tbWVudHMgZ2l0IGNvbW1pdCAtLXRlbXBsYXRlICIkVEVNUExBVEUiCisJKAorCQl0ZXN0X3NldF9lZGl0b3IgIiRURVNUX0RJUkVDVE9SWSIvdDc1MDAvYWRkLWNvbW1lbnRzICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBjb21taXQgLS10ZW1wbGF0ZSAiJFRFTVBMQVRFIgorCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkaW5nIHJlYWwgY29udGVudCB0byBhIHRlbXBsYXRlIHNob3VsZCBjb21taXQnICcKLQlHSVRfRURJVE9SPS4uL3Q3NTAwL2FkZC1jb250ZW50IGdpdCBjb21taXQgLS10ZW1wbGF0ZSAiJFRFTVBMQVRFIiAmJgorCSgKKwkJdGVzdF9zZXRfZWRpdG9yICIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1jb250ZW50ICYmCisJCWdpdCBjb21taXQgLS10ZW1wbGF0ZSAiJFRFTVBMQVRFIgorCSkgJiYKIAljb21taXRfbXNnX2lzICJ0ZW1wbGF0ZSBsaW5lY29tbWl0IG1lc3NhZ2UiCiAnCiAKQEAgLTYyLDcgKzcxLDEwIEBACiAJZWNobyAic2hvcnQgdGVtcGxhdGUiID4gIiRURU1QTEFURSIgJiYKIAllY2hvICJuZXcgY29udGVudCIgPj4gZm9vICYmCiAJZ2l0IGFkZCBmb28gJiYKLQlHSVRfRURJVE9SPS4uL3Q3NTAwL2FkZC1jb250ZW50IGdpdCBjb21taXQgLXQgIiRURU1QTEFURSIgJiYKKwkoCisJCXRlc3Rfc2V0X2VkaXRvciAiJFRFU1RfRElSRUNUT1JZIi90NzUwMC9hZGQtY29udGVudCAmJgorCQlnaXQgY29tbWl0IC10ICIkVEVNUExBVEUiCisJKSAmJgogCWNvbW1pdF9tc2dfaXMgInNob3J0IHRlbXBsYXRlY29tbWl0IG1lc3NhZ2UiCiAnCiAKQEAgLTcxLDcgKzgzLDEwIEBACiAJZ2l0IGNvbmZpZyBjb21taXQudGVtcGxhdGUgIiRURU1QTEFURSIgJiYKIAllY2hvICJtb3JlIGNvbnRlbnQiID4+IGZvbyAmJgogCWdpdCBhZGQgZm9vICYmCi0JR0lUX0VESVRPUj0uLi90NzUwMC9hZGQtY29udGVudCBnaXQgY29tbWl0ICYmCisJKAorCQl0ZXN0X3NldF9lZGl0b3IgIiRURVNUX0RJUkVDVE9SWSIvdDc1MDAvYWRkLWNvbnRlbnQgJiYKKwkJZ2l0IGNvbW1pdAorCSkgJiYKIAlnaXQgY29uZmlnIC0tdW5zZXQgY29tbWl0LnRlbXBsYXRlICYmCiAJY29tbWl0X21zZ19pcyAibmV3IHRlbXBsYXRlY29tbWl0IG1lc3NhZ2UiCiAnCkBAIC03OSw3ICs5NCw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdleHBsaWNpdCBjb21taXQgbWVzc2FnZSBzaG91bGQgb3ZlcnJpZGUgdGVtcGxhdGUnICcKIAllY2hvICJzdGlsbCBtb3JlIGNvbnRlbnQiID4+IGZvbyAmJgogCWdpdCBhZGQgZm9vICYmCi0JR0lUX0VESVRPUj0uLi90NzUwMC9hZGQtY29udGVudCBnaXQgY29tbWl0IC0tdGVtcGxhdGUgIiRURU1QTEFURSIgXAorCUdJVF9FRElUT1I9IiRURVNUX0RJUkVDVE9SWSIvdDc1MDAvYWRkLWNvbnRlbnQgZ2l0IGNvbW1pdCAtLXRlbXBsYXRlICIkVEVNUExBVEUiIFwKIAkJLW0gImNvbW1hbmQgbGluZSBtc2ciICYmCiAJY29tbWl0X21zZ19pcyAiY29tbWFuZCBsaW5lIG1zZyIKICcKQEAgLTg4LDggKzEwMywxMCBAQAogCWVjaG8gImNvbnRlbnQgZ2Fsb3JlIiA+PiBmb28gJiYKIAlnaXQgYWRkIGZvbyAmJgogCWVjaG8gInN0YW5kYXJkIGlucHV0IG1zZyIgfAotCQlHSVRfRURJVE9SPS4uL3Q3NTAwL2FkZC1jb250ZW50IGdpdCBjb21taXQgXAotCQkJLS10ZW1wbGF0ZSAiJFRFTVBMQVRFIiAtLWZpbGUgLSAmJgorCSgKKwkJdGVzdF9zZXRfZWRpdG9yICIkVEVTVF9ESVJFQ1RPUlkiL3Q3NTAwL2FkZC1jb250ZW50ICYmCisJCWdpdCBjb21taXQgLS10ZW1wbGF0ZSAiJFRFTVBMQVRFIiAtLWZpbGUgLQorCSkgJiYKIAljb21taXRfbXNnX2lzICJzdGFuZGFyZCBpbnB1dCBtc2ciCiAnCiAKQEAgLTEzMiwxMCArMTQ5LDEyIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2lnbm9mZicgJwogCWVjaG8gInlldCBhbm90aGVyIGNvbnRlbnQgKm5hcmYqIiA+PiBmb28gJiYKLQllY2hvICJ6b3J0IiB8Ci0JCUdJVF9FRElUT1I9Li4vdDc1MDAvYWRkLWNvbnRlbnQgZ2l0IGNvbW1pdCAtcyAtRiAtIGZvbyAmJgorCWVjaG8gInpvcnQiIHwgKAorCQl0ZXN0X3NldF9lZGl0b3IgIiRURVNUX0RJUkVDVE9SWSIvdDc1MDAvYWRkLWNvbnRlbnQgJiYKKwkJZ2l0IGNvbW1pdCAtcyAtRiAtIGZvbworCSkgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBzZWQgIjEsL14kL2QiID4gb3V0cHV0ICYmCi0JZGlmZiBleHBlY3Qgb3V0cHV0CisJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgbWVzc2FnZSBmcm9tIGZpbGUgKDEpJyAnCmRpZmYgLS1naXQgYS90L3Q3NTAyLWNvbW1pdC5zaCBiL3QvdDc1MDItY29tbWl0LnNoCmluZGV4IDNlYjlmYWUuLmFkNDJjNzggMTAwNzU1Ci0tLSBhL3QvdDc1MDItY29tbWl0LnNoCisrKyBiL3QvdDc1MDItY29tbWl0LnNoCkBAIC04OSw2ICs4OSwxNCBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmJvc2UgcmVzcGVjdHMgZGlmZiBjb25maWcnICcKKworCWdpdCBjb25maWcgY29sb3IuZGlmZiBhbHdheXMgJiYKKwlnaXQgc3RhdHVzIC12ID5hY3R1YWwgJiYKKwlncmVwICJcWzFtZGlmZiAtLWdpdCIgYWN0dWFsICYmCisJZ2l0IGNvbmZpZyAtLXVuc2V0IGNvbG9yLmRpZmYKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHZlcmJhdGltLC10KScgJwogCiAJZWNobyA+Pm5lZ2F0aXZlICYmCmRpZmYgLS1naXQgYS90L3Q3NTAyLXN0YXR1cy5zaCBiL3QvdDc1MDItc3RhdHVzLnNoCmluZGV4IDE4N2ExM2UuLjkzZjg3NWYgMTAwNzU1Ci0tLSBhL3QvdDc1MDItc3RhdHVzLnNoCisrKyBiL3QvdDc1MDItc3RhdHVzLnNoCkBAIC00Niw2ICs0Niw3IEBACiAjCiAjIENoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOgogIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKyMgICAodXNlICJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpCiAjCiAjCW1vZGlmaWVkOiAgIGRpcjEvbW9kaWZpZWQKICMKQEAgLTc2LDYgKzc3LDcgQEAKICMKICMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6CiAjICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKQorIyAgICh1c2UgImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi4iIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkKICMKICMJbW9kaWZpZWQ6ICAgZGlyMS9tb2RpZmllZAogIwpAQCAtMTA0LDYgKzEwNiw3IEBACiAjCiAjIENoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOgogIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKyMgICAodXNlICJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpCiAjCiAjCW1vZGlmaWVkOiAgIGRpcjEvbW9kaWZpZWQKICMKQEAgLTEzOCw2ICsxNDEsNyBAQAogIwogIyBDaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoKICMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpCisjICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQogIwogIwltb2RpZmllZDogICBkaXIxL21vZGlmaWVkCiAjCkBAIC0xNzQsNiArMTc4LDcgQEAKICMKICMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6CiAjICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKQorIyAgICh1c2UgImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi4iIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkKICMKICMJbW9kaWZpZWQ6ICAgbW9kaWZpZWQKICMKQEAgLTIwNCw2ICsyMDksNyBAQAogIwogIyBDaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoKICMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpCisjICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQogIwogIwltb2RpZmllZDogICBkaXIxL21vZGlmaWVkCiAjCkBAIC0yNjcsNiArMjczLDcgQEAKICMKICMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6CiAjICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKQorIyAgICh1c2UgImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi4iIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkKICMKICMJbW9kaWZpZWQ6ICAgZGlyMS9tb2RpZmllZAogIwpAQCAtMzAzLDYgKzMxMCw3IEBACiAjCiAjIENoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOgogIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKyMgICAodXNlICJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpCiAjCiAjCW1vZGlmaWVkOiAgIGRpcjEvbW9kaWZpZWQKICMKQEAgLTMzMiw2ICszNDAsNyBAQAogIyBPbiBicmFuY2ggbWFzdGVyCiAjIENoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOgogIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKyMgICAodXNlICJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpCiAjCiAjCW1vZGlmaWVkOiAgIGRpcjEvbW9kaWZpZWQKICMKQEAgLTM2Myw2ICszNzIsNyBAQAogIwogIyBDaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoKICMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpCisjICAgKHVzZSAiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLiIgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHdvcmtpbmcgZGlyZWN0b3J5KQogIwogIwltb2RpZmllZDogICBkaXIxL21vZGlmaWVkCiAjCmRpZmYgLS1naXQgYS90L3Q3NTA3LWNvbW1pdC12ZXJib3NlLnNoIGIvdC90NzUwNy1jb21taXQtdmVyYm9zZS5zaAppbmRleCA1MTlhZGJhLi5kYTViZDNiIDEwMDc1NQotLS0gYS90L3Q3NTA3LWNvbW1pdC12ZXJib3NlLnNoCisrKyBiL3QvdDc1MDctY29tbWl0LXZlcmJvc2Uuc2gKQEAgLTIyLDcgKzIyLDcgQEAKIAlnaXQgY29tbWl0IC1GIG1lc3NhZ2UKICcKIAotdGVzdF9leHBlY3RfZmFpbHVyZSAnaW5pdGlhbCBjb21taXQgc2hvd3MgdmVyYm9zZSBkaWZmJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsIGNvbW1pdCBzaG93cyB2ZXJib3NlIGRpZmYnICcKIAlnaXQgY29tbWl0IC0tYW1lbmQgLXYKICcKIApkaWZmIC0tZ2l0IGEvdC90NzYwMC1tZXJnZS5zaCBiL3QvdDc2MDAtbWVyZ2Uuc2gKaW5kZXggNWFiY2UzMS4uZTViMjEwYiAxMDA3NTUKLS0tIGEvdC90NzYwMC1tZXJnZS5zaAorKysgYi90L3Q3NjAwLW1lcmdlLnNoCkBAIC0yMzAsNiArMjMwLDEwIEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlamVjdCBub24tc3RyYXRlZ3kgd2l0aCBhIGdpdC1tZXJnZS1mb28gbmFtZScgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSAtcyBpbmRleCBjMQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMCB3aXRoIGMxJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBjMCAmJgogCWdpdCBtZXJnZSBjMSAmJgpAQCAtNTA3LDYgKzUxMSwxMyBAQAogCiB0ZXN0X2RlYnVnICdnaXRrIC0tYWxsJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWZyZXNoIHRoZSBpbmRleCBiZWZvcmUgbWVyZ2luZycgJworCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKKwlzbGVlcCAxICYmCisJdG91Y2ggZmlsZSAmJgorCWdpdCBtZXJnZSBjMworJworCiBjYXQgPmV4cGVjdGVkIDw8RU9GCiBNZXJnZSBicmFuY2ggJ2M1JyAoZWFybHkgcGFydCkKIEVPRgpAQCAtNTMzLDQgKzU0NCwyMCBAQAogCiB0ZXN0X2RlYnVnICdnaXRrIC0tYWxsJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSAtLW5vLWZmIC0tbm8tY29tbWl0ICYmIGNvbW1pdCcgJworCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKKwlnaXQgbWVyZ2UgLS1uby1mZiAtLW5vLWNvbW1pdCBjMSAmJgorCUVESVRPUj06IGdpdCBjb21taXQgJiYKKwl2ZXJpZnlfcGFyZW50cyAkYzAgJGMxCisnCisKK3Rlc3RfZGVidWcgJ2dpdGsgLS1hbGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtZW5kaW5nIG5vLWZmIG1lcmdlIGNvbW1pdCcgJworCUVESVRPUj06IGdpdCBjb21taXQgLS1hbWVuZCAmJgorCXZlcmlmeV9wYXJlbnRzICRjMCAkYzEKKycKKwordGVzdF9kZWJ1ZyAnZ2l0ayAtLWFsbCcKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NjAzLW1lcmdlLXJlZHVjZS1oZWFkcy5zaCBiL3QvdDc2MDMtbWVyZ2UtcmVkdWNlLWhlYWRzLnNoCmluZGV4IGI0N2I3YjkuLjdlMTdlYjQgMTAwNzU1Ci0tLSBhL3QvdDc2MDMtbWVyZ2UtcmVkdWNlLWhlYWRzLnNoCisrKyBiL3QvdDc2MDMtbWVyZ2UtcmVkdWNlLWhlYWRzLnNoCkBAIC02MCw0ICs2MCw1NyBAQAogCXRlc3QgLWYgYzUuYwogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCWZvciBpIGluIEEgQiBDIEQgRQorCWRvCisJCWVjaG8gJGkgPiAkaS5jICYmCisJCWdpdCBhZGQgJGkuYyAmJgorCQlnaXQgY29tbWl0IC1tICRpICYmCisJCWdpdCB0YWcgJGkKKwlkb25lICYmCisJZ2l0IHJlc2V0IC0taGFyZCBBICYmCisJZm9yIGkgaW4gRiBHIEggSQorCWRvCisJCWVjaG8gJGkgPiAkaS5jICYmCisJCWdpdCBhZGQgJGkuYyAmJgorCQlnaXQgY29tbWl0IC1tICRpICYmCisJCWdpdCB0YWcgJGkKKwlkb25lCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIEUgYW5kIEknICcKKwlnaXQgcmVzZXQgLS1oYXJkIEEgJiYKKwlnaXQgbWVyZ2UgRSBJCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmlmeSBtZXJnZSByZXN1bHQnICcKKwl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBIRUFEXjEpID0gJChnaXQgcmV2LXBhcnNlIEUpICYmCisJdGVzdCAkKGdpdCByZXYtcGFyc2UgSEVBRF4yKSA9ICQoZ2l0IHJldi1wYXJzZSBJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgY29uZmxpY3RzJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBFICYmCisJZWNobyBmb28gPiBmaWxlLmMgJiYKKwlnaXQgYWRkIGZpbGUuYyAmJgorCWdpdCBjb21taXQgLW0gRTIgJiYKKwlnaXQgdGFnIEUyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBJICYmCisJZWNobyBiYXIgPmZpbGUuYyAmJgorCWdpdCBhZGQgZmlsZS5jICYmCisJZ2l0IGNvbW1pdCAtbSBJMiAmJgorCWdpdCB0YWcgSTIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgRTIgYW5kIEkyLCBjYXVzaW5nIGEgY29uZmxpY3QgYW5kIHJlc29sdmUgaXQnICcKKwlnaXQgcmVzZXQgLS1oYXJkIEEgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgRTIgSTIgJiYKKwllY2hvIGJheiA+IGZpbGUuYyAmJgorCWdpdCBhZGQgZmlsZS5jICYmCisJZ2l0IGNvbW1pdCAtbSAicmVzb2x2ZSBjb25mbGljdCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndmVyaWZ5IG1lcmdlIHJlc3VsdCcgJworCXRlc3QgJChnaXQgcmV2LXBhcnNlIEhFQUReMSkgPSAkKGdpdCByZXYtcGFyc2UgRTIpICYmCisJdGVzdCAkKGdpdCByZXYtcGFyc2UgSEVBRF4yKSA9ICQoZ2l0IHJldi1wYXJzZSBJMikKKycKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzYwNi1tZXJnZS1jdXN0b20uc2ggYi90L3Q3NjA2LW1lcmdlLWN1c3RvbS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MmE0NTFkZAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDc2MDYtbWVyZ2UtY3VzdG9tLnNoCkBAIC0wLDAgKzEsNDkgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgbWVyZ2UKKworVGVzdGluZyBhIGN1c3RvbSBzdHJhdGVneS4nCisKKy4gLi90ZXN0LWxpYi5zaAorCitjYXQgPmdpdC1tZXJnZS10aGVpcnMgPDxFT0YKKyMhJFNIRUxMX1BBVEgKK2V2YWwgZ2l0IHJlYWQtdHJlZSAtLXJlc2V0IC11IFxcXCRcJCMKK0VPRgorY2htb2QgK3ggZ2l0LW1lcmdlLXRoZWlycworUEFUSD0uOiRQQVRICitleHBvcnQgUEFUSAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCWVjaG8gYzAgPmMwLmMgJiYKKwlnaXQgYWRkIGMwLmMgJiYKKwlnaXQgY29tbWl0IC1tIGMwICYmCisJZ2l0IHRhZyBjMCAmJgorCWVjaG8gYzEgPmMxLmMgJiYKKwlnaXQgYWRkIGMxLmMgJiYKKwlnaXQgY29tbWl0IC1tIGMxICYmCisJZ2l0IHRhZyBjMSAmJgorCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKKwllY2hvIGMxYzEgPmMxLmMgJiYKKwllY2hvIGMyID5jMi5jICYmCisJZ2l0IGFkZCBjMS5jIGMyLmMgJiYKKwlnaXQgY29tbWl0IC1tIGMyICYmCisJZ2l0IHRhZyBjMgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMiB3aXRoIGEgY3VzdG9tIHN0cmF0ZWd5JyAnCisJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgorCWdpdCBtZXJnZSAtcyB0aGVpcnMgYzIgJiYKKwl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgYzEpIiAhPSAiJChnaXQgcmV2LXBhcnNlIEhFQUQpIiAmJgorCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBjMSkiID0gIiQoZ2l0IHJldi1wYXJzZSBIRUFEXjEpIiAmJgorCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBjMikiID0gIiQoZ2l0IHJldi1wYXJzZSBIRUFEXjIpIiAmJgorCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBjMl57dHJlZX0pIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF57dHJlZX0pIiAmJgorCWdpdCBkaWZmIC0tZXhpdC1jb2RlICYmCisJZ2l0IGRpZmYgLS1leGl0LWNvZGUgYzIgSEVBRCAmJgorCWdpdCBkaWZmIC0tZXhpdC1jb2RlIGMyICYmCisJdGVzdCAtZiBjMC5jICYmCisJZ3JlcCBjMWMxIGMxLmMgJiYKKwl0ZXN0IC1mIGMyLmMKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NjA3LW1lcmdlLW92ZXJ3cml0ZS5zaCBiL3QvdDc2MDctbWVyZ2Utb3ZlcndyaXRlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ5ZjRlMTUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q3NjA3LW1lcmdlLW92ZXJ3cml0ZS5zaApAQCAtMCwwICsxLDg3IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0LW1lcmdlCisKK0RvIG5vdCBvdmVyd3JpdGUgY2hhbmdlcy4nCisKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCWVjaG8gYzAgPiBjMC5jICYmCisJZ2l0IGFkZCBjMC5jICYmCisJZ2l0IGNvbW1pdCAtbSBjMCAmJgorCWdpdCB0YWcgYzAgJiYKKwllY2hvIGMxID4gYzEuYyAmJgorCWdpdCBhZGQgYzEuYyAmJgorCWdpdCBjb21taXQgLW0gYzEgJiYKKwlnaXQgdGFnIGMxICYmCisJZ2l0IHJlc2V0IC0taGFyZCBjMCAmJgorCWVjaG8gYzIgPiBjMi5jICYmCisJZ2l0IGFkZCBjMi5jICYmCisJZ2l0IGNvbW1pdCAtbSBjMiAmJgorCWdpdCB0YWcgYzIgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCisJZWNobyAiYzEgYSIgPiBjMS5jICYmCisJZ2l0IGFkZCBjMS5jICYmCisJZ2l0IGNvbW1pdCAtbSAiYzEgYSIgJiYKKwlnaXQgdGFnIGMxYSAmJgorCWVjaG8gIlZFUlkgSU1QT1JUQU5UIENIQU5HRVMiID4gaW1wb3J0YW50CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpbGwgbm90IG92ZXJ3cml0ZSB1bnRyYWNrZWQgZmlsZScgJworCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKKwljYXQgaW1wb3J0YW50ID4gYzIuYyAmJgorCSEgZ2l0IG1lcmdlIGMyICYmCisJdGVzdF9jbXAgaW1wb3J0YW50IGMyLmMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsbCBub3Qgb3ZlcndyaXRlIG5ldyBmaWxlJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgorCWNhdCBpbXBvcnRhbnQgPiBjMi5jICYmCisJZ2l0IGFkZCBjMi5jICYmCisJISBnaXQgbWVyZ2UgYzIgJiYKKwl0ZXN0X2NtcCBpbXBvcnRhbnQgYzIuYworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd3aWxsIG5vdCBvdmVyd3JpdGUgc3RhZ2VkIGNoYW5nZXMnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCisJY2F0IGltcG9ydGFudCA+IGMyLmMgJiYKKwlnaXQgYWRkIGMyLmMgJiYKKwlybSBjMi5jICYmCisJISBnaXQgbWVyZ2UgYzIgJiYKKwlnaXQgY2hlY2tvdXQgYzIuYyAmJgorCXRlc3RfY21wIGltcG9ydGFudCBjMi5jCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpbGwgbm90IG92ZXJ3cml0ZSByZW1vdmVkIGZpbGUnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCisJZ2l0IHJtIGMxLmMgJiYKKwlnaXQgY29tbWl0IC1tICJybSBjMS5jIiAmJgorCWNhdCBpbXBvcnRhbnQgPiBjMS5jICYmCisJISBnaXQgbWVyZ2UgYzFhICYmCisJdGVzdF9jbXAgaW1wb3J0YW50IGMxLmMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsbCBub3Qgb3ZlcndyaXRlIHJlLWFkZGVkIGZpbGUnICcKKwlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCisJZ2l0IHJtIGMxLmMgJiYKKwlnaXQgY29tbWl0IC1tICJybSBjMS5jIiAmJgorCWNhdCBpbXBvcnRhbnQgPiBjMS5jICYmCisJZ2l0IGFkZCBjMS5jICYmCisJISBnaXQgbWVyZ2UgYzFhICYmCisJdGVzdF9jbXAgaW1wb3J0YW50IGMxLmMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2lsbCBub3Qgb3ZlcndyaXRlIHJlbW92ZWQgZmlsZSB3aXRoIHN0YWdlZCBjaGFuZ2VzJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgorCWdpdCBybSBjMS5jICYmCisJZ2l0IGNvbW1pdCAtbSAicm0gYzEuYyIgJiYKKwljYXQgaW1wb3J0YW50ID4gYzEuYyAmJgorCWdpdCBhZGQgYzEuYyAmJgorCXJtIGMxLmMgJiYKKwkhIGdpdCBtZXJnZSBjMWEgJiYKKwlnaXQgY2hlY2tvdXQgYzEuYyAmJgorCXRlc3RfY21wIGltcG9ydGFudCBjMS5jCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzcwMS1yZXBhY2stdW5wYWNrLXVucmVhY2hhYmxlLnNoIGIvdC90NzcwMS1yZXBhY2stdW5wYWNrLXVucmVhY2hhYmxlLnNoCmluZGV4IDk4MTNmMTEuLjYzYTgyMjUgMTAwNzU1Ci0tLSBhL3QvdDc3MDEtcmVwYWNrLXVucGFjay11bnJlYWNoYWJsZS5zaAorKysgYi90L3Q3NzAxLXJlcGFjay11bnBhY2stdW5yZWFjaGFibGUuc2gKQEAgLTI5LDcgKzI5LDcgQEAKIAlnaXQgcmVwYWNrIC1BIC1kIC1sICYmCiAJIyB2ZXJpZnkgb2JqZWN0cyBhcmUgcGFja2VkIGluIHJlcG9zaXRvcnkKIAl0ZXN0IDMgPSAkKGdpdCB2ZXJpZnktcGFjayAtdiAtLSAuZ2l0L29iamVjdHMvcGFjay8qLmlkeCB8Ci0JCSAgIGdyZXAgLWUgIl4kZnNoYTEgIiAtZSAiXiRjc2hhMSAiIC1lICJeJHRzaGExICIgfAorCQkgICBlZ3JlcCAiXigkZnNoYTF8JGNzaGExfCR0c2hhMSkgIiB8CiAJCSAgIHNvcnQgfCB1bmlxIHwgd2MgLWwpICYmCiAJZ2l0IHNob3cgJGZzaGExICYmCiAJZ2l0IHNob3cgJGNzaGExICYmCkBAIC00MSw3ICs0MSw3IEBACiAJZ2l0IHJlcGFjayAtQSAtZCAtbCAmJgogCSMgdmVyaWZ5IG9iamVjdHMgYXJlIHJldGFpbmVkIHVucGFja2VkCiAJdGVzdCAwID0gJChnaXQgdmVyaWZ5LXBhY2sgLXYgLS0gLmdpdC9vYmplY3RzL3BhY2svKi5pZHggfAotCQkgICBncmVwIC1lICJeJGZzaGExICIgLWUgIl4kY3NoYTEgIiAtZSAiXiR0c2hhMSAiIHwKKwkJICAgZWdyZXAgIl4oJGZzaGExfCRjc2hhMXwkdHNoYTEpICIgfAogCQkgICBzb3J0IHwgdW5pcSB8IHdjIC1sKSAmJgogCWdpdCBzaG93ICRmc2hhMSAmJgogCWdpdCBzaG93ICRjc2hhMSAmJgpkaWZmIC0tZ2l0IGEvdC90ODAwMS1hbm5vdGF0ZS5zaCBiL3QvdDgwMDEtYW5ub3RhdGUuc2gKaW5kZXggZWFiZWMyZS4uNDVjYjYwZSAxMDA3NTUKLS0tIGEvdC90ODAwMS1hbm5vdGF0ZS5zaAorKysgYi90L3Q4MDAxLWFubm90YXRlLnNoCkBAIC00LDcgKzQsNyBAQAogLiAuL3Rlc3QtbGliLnNoCiAKIFBST0c9J2dpdCBhbm5vdGF0ZScKLS4gLi4vYW5ub3RhdGUtdGVzdHMuc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvYW5ub3RhdGUtdGVzdHMuc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0Fubm90YXRpbmcgYW4gb2xkIHJldmlzaW9uIHdvcmtzJyBcCmRpZmYgLS1naXQgYS90L3Q4MDAyLWJsYW1lLnNoIGIvdC90ODAwMi1ibGFtZS5zaAppbmRleCA5MmVjZTMwLi41OTdjZjA0IDEwMDc1NQotLS0gYS90L3Q4MDAyLWJsYW1lLnNoCisrKyBiL3QvdDgwMDItYmxhbWUuc2gKQEAgLTQsNiArNCw2IEBACiAuIC4vdGVzdC1saWIuc2gKIAogUFJPRz0nZ2l0IGJsYW1lIC1jJwotLiAuLi9hbm5vdGF0ZS10ZXN0cy5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9hbm5vdGF0ZS10ZXN0cy5zaAogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDgwMDUtYmxhbWUtaTE4bi5zaCBiL3QvdDgwMDUtYmxhbWUtaTE4bi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NDcwYTkyCi0tLSAvZGV2L251bGwKKysrIGIvdC90ODAwNS1ibGFtZS1pMThuLnNoCkBAIC0wLDAgKzEsOTIgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgYmxhbWUgZW5jb2RpbmcgY29udmVyc2lvbicKKy4gLi90ZXN0LWxpYi5zaAorCisuICIkVEVTVF9ESVJFQ1RPUlkiL3Q4MDA1L3V0ZjgudHh0CisuICIkVEVTVF9ESVJFQ1RPUlkiL3Q4MDA1L2NwMTI1MS50eHQKKy4gIiRURVNUX0RJUkVDVE9SWSIvdDgwMDUvc2ppcy50eHQKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdGhlIHJlcG9zaXRvcnknICcKKwkjIENyZWF0ZSB0aGUgZmlsZQorCWVjaG8gIlVURi04IExJTkUiID4gZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCBjb21taXQgLS1hdXRob3IgIiRVVEY4X05BTUUgPHV0ZjhAbG9jYWxob3N0PiIgLW0gIiRVVEY4X01TRyIgJiYKKworCWVjaG8gIkNQMTI1MSBMSU5FIiA+PiBmaWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIGNwMTI1MSAmJgorCWdpdCBjb21taXQgLS1hdXRob3IgIiRDUDEyNTFfTkFNRSA8Y3AxMjUxQGxvY2FsaG9zdD4iIC1tICIkQ1AxMjUxX01TRyIgJiYKKworCWVjaG8gIlNKSVMgTElORSIgPj4gZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBzaGlmdC1qaXMgJiYKKwlnaXQgY29tbWl0IC0tYXV0aG9yICIkU0pJU19OQU1FIDxzamlzQGxvY2FsaG9zdD4iIC1tICIkU0pJU19NU0ciCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKK2F1dGhvciAkU0pJU19OQU1FCitzdW1tYXJ5ICRTSklTX01TRworYXV0aG9yICRTSklTX05BTUUKK3N1bW1hcnkgJFNKSVNfTVNHCithdXRob3IgJFNKSVNfTkFNRQorc3VtbWFyeSAkU0pJU19NU0cKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKwknYmxhbWUgcmVzcGVjdHMgaTE4bi5jb21taXRlbmNvZGluZycgJworCWdpdCBibGFtZSAtLWluY3JlbWVudGFsIGZpbGUgfCBcCisJCWdyZXAgIl5cKGF1dGhvclx8c3VtbWFyeVwpICIgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBhY3R1YWwgZXhwZWN0ZWQKKycKKworY2F0ID5leHBlY3RlZCA8PEVPRgorYXV0aG9yICRDUDEyNTFfTkFNRQorc3VtbWFyeSAkQ1AxMjUxX01TRworYXV0aG9yICRDUDEyNTFfTkFNRQorc3VtbWFyeSAkQ1AxMjUxX01TRworYXV0aG9yICRDUDEyNTFfTkFNRQorc3VtbWFyeSAkQ1AxMjUxX01TRworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorCSdibGFtZSByZXNwZWN0cyBpMThuLmxvZ291dHB1dGVuY29kaW5nJyAnCisJZ2l0IGNvbmZpZyBpMThuLmxvZ291dHB1dGVuY29kaW5nIGNwMTI1MSAmJgorCWdpdCBibGFtZSAtLWluY3JlbWVudGFsIGZpbGUgfCBcCisJCWdyZXAgIl5cKGF1dGhvclx8c3VtbWFyeVwpICIgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBhY3R1YWwgZXhwZWN0ZWQKKycKKworY2F0ID5leHBlY3RlZCA8PEVPRgorYXV0aG9yICRVVEY4X05BTUUKK3N1bW1hcnkgJFVURjhfTVNHCithdXRob3IgJFVURjhfTkFNRQorc3VtbWFyeSAkVVRGOF9NU0cKK2F1dGhvciAkVVRGOF9OQU1FCitzdW1tYXJ5ICRVVEY4X01TRworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorCSdibGFtZSByZXNwZWN0cyAtLWVuY29kaW5nPXV0Zi04JyAnCisJZ2l0IGJsYW1lIC0taW5jcmVtZW50YWwgLS1lbmNvZGluZz11dGYtOCBmaWxlIHwgXAorCQlncmVwICJeXChhdXRob3JcfHN1bW1hcnlcKSAiID4gYWN0dWFsICYmCisJdGVzdF9jbXAgYWN0dWFsIGV4cGVjdGVkCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKK2F1dGhvciAkU0pJU19OQU1FCitzdW1tYXJ5ICRTSklTX01TRworYXV0aG9yICRDUDEyNTFfTkFNRQorc3VtbWFyeSAkQ1AxMjUxX01TRworYXV0aG9yICRVVEY4X05BTUUKK3N1bW1hcnkgJFVURjhfTVNHCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisJJ2JsYW1lIHJlc3BlY3RzIC0tZW5jb2Rpbmc9bm9uZScgJworCWdpdCBibGFtZSAtLWluY3JlbWVudGFsIC0tZW5jb2Rpbmc9bm9uZSBmaWxlIHwgXAorCQlncmVwICJeXChhdXRob3JcfHN1bW1hcnlcKSAiID4gYWN0dWFsICYmCisJdGVzdF9jbXAgYWN0dWFsIGV4cGVjdGVkCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90ODAwNS9jcDEyNTEudHh0IGIvdC90ODAwNS9jcDEyNTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNDFlOTgKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q4MDA1L2NwMTI1MS50eHQKQEAgLTAsMCArMSwyIEBACitDUDEyNTFfTkFNRT0iyOLg7SDP5fLw7uLo9yDR6OTu8O7iIgorQ1AxMjUxX01TRz0i0uXx8u7i7uUg8e7u4fnl7ejlIgpkaWZmIC0tZ2l0IGEvdC90ODAwNS9zamlzLnR4dCBiL3QvdDgwMDUvc2ppcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNjZmJhZAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDgwMDUvc2ppcy50eHQKQEAgLTAsMCArMSwyIEBACitTSklTX05BTUU9IoRJhHKEcIR+IIRQhHWEhISChICEcoR5hIkghFKEeYR0hICEgoSAhHIiCitTSklTX01TRz0ihFOEdYSDhISEgIRyhICEdSCEg4SAhICEcYSLhHWEfoR5hHUiCmRpZmYgLS1naXQgYS90L3Q4MDA1L3V0ZjgudHh0IGIvdC90ODAwNS91dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDZjZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvdC90ODAwNS91dGY4LnR4dApAQCAtMCwwICsxLDIgQEAKK1VURjhfTkFNRT0i0JjQstCw0L0g0J/QtdGC0YDQvtCy0LjRhyDQodC40LTQvtGA0L7QsiIKK1VURjhfTVNHPSLQotC10YHRgtC+0LLQvtC1INGB0L7QvtCx0YnQtdC90LjQtSIKZGlmZiAtLWdpdCBhL3QvdDkwMDEtc2VuZC1lbWFpbC5zaCBiL3QvdDkwMDEtc2VuZC1lbWFpbC5zaAppbmRleCBkMDk4YTAxLi5jYjNkMTgzIDEwMDc1NQotLS0gYS90L3Q5MDAxLXNlbmQtZW1haWwuc2gKKysrIGIvdC90OTAwMS1zZW5kLWVtYWlsLnNoCkBAIC0xMDksNyArMTA5LDcgQEAKIAkJLS1mcm9tPSJFeGFtcGxlIDxub2JvZHlAZXhhbXBsZS5jb20+IiBcCiAJCS0tdG89bm9ib2R5QGV4YW1wbGUuY29tIFwKIAkJLS1zbXRwLXNlcnZlcj0iJChwd2QpL2Zha2Uuc2VuZG1haWwiIFwKLQkJLS1uby12YWxpZGF0ZSBcCisJCS0tbm92YWxpZGF0ZSBcCiAJCSRwYXRjaGVzIGxvbmdsaW5lLnBhdGNoIFwKIAkJMj5lcnJvcnMKICcKQEAgLTI5Miw0ICsyOTIsMjUgQEAKIAlncmVwICJeU3ViamVjdDogPT91dGYtOD9xP3V0Zjgtcz1DMz1CQ2JqPUMzPUFCY3Q/PSIgbXNndHh0MQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZXRlY3RzIGFtYmlndW91cyByZWZlcmVuY2UvZmlsZSBjb25mbGljdCcgJworCWVjaG8gbWFzdGVyID4gbWFzdGVyICYmCisJZ2l0IGFkZCBtYXN0ZXIgJiYKKwlnaXQgY29tbWl0IC1tImFkZCBtYXN0ZXIiICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNlbmQtZW1haWwgLS1kcnktcnVuIG1hc3RlciAyPmVycm9ycyAmJgorCWdyZXAgZGlzYW1iaWd1YXRlIGVycm9ycworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZWVkIHR3byBmaWxlcycgJworCXJtIC1mciBvdXRkaXIgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0yIC1vIG91dGRpciAmJgorCUdJVF9TRU5EX0VNQUlMX05PVFRZPTEgZ2l0IHNlbmQtZW1haWwgXAorCS0tZHJ5LXJ1biBcCisJLS1mcm9tPSJFeGFtcGxlIDxub2JvZHlAZXhhbXBsZS5jb20+IiBcCisJLS10bz1ub2JvZHlAZXhhbXBsZS5jb20gXAorCW91dGRpci8wMDA/LSoucGF0Y2ggMj5lcnJvcnMgPm91dCAmJgorCWdyZXAgIl5TdWJqZWN0OiAiIG91dCA+c3ViamVjdHMgJiYKKwl0ZXN0ICJ6JChzZWQgLW4gLWUgMXAgc3ViamVjdHMpIiA9ICJ6U3ViamVjdDogW1BBVENIIDEvMl0gU2Vjb25kLiIgJiYKKwl0ZXN0ICJ6JChzZWQgLW4gLWUgMnAgc3ViamVjdHMpIiA9ICJ6U3ViamVjdDogW1BBVENIIDIvMl0gYWRkIG1hc3RlciIKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MTAwLWdpdC1zdm4tYmFzaWMuc2ggYi90L3Q5MTAwLWdpdC1zdm4tYmFzaWMuc2gKaW5kZXggODQzYTUwMS4uYmI5MjFhZiAxMDA3NTUKLS0tIGEvdC90OTEwMC1naXQtc3ZuLWJhc2ljLnNoCisrKyBiL3QvdDkxMDAtZ2l0LXN2bi1iYXNpYy5zaApAQCAtMyw3ICszLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA2IEVyaWMgV29uZwogIwogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGJhc2ljIHRlc3RzJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBiYXNpYyB0ZXN0cycKIEdJVF9TVk5fTENfQUxMPSR7TENfQUxMOi0kTEFOR30KIAogY2FzZSAiJEdJVF9TVk5fTENfQUxMIiBpbgpAQCAtMTcsMTAgKzE3LDEwIEBACiAKIC4gLi9saWItZ2l0LXN2bi5zaAogCi1zYXkgJ2RlZmluZSBOT19TVk5fVEVTVFMgdG8gc2tpcCBnaXQtc3ZuIHRlc3RzJworc2F5ICdkZWZpbmUgTk9fU1ZOX1RFU1RTIHRvIHNraXAgZ2l0IHN2biB0ZXN0cycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2luaXRpYWxpemUgZ2l0LXN2bicgJworICAgICdpbml0aWFsaXplIGdpdCBzdm4nICcKIAlta2RpciBpbXBvcnQgJiYKIAljZCBpbXBvcnQgJiYKIAllY2hvIGZvbyA+IGZvbyAmJgpAQCAtMzEsMjYgKzMxLDI2IEBACiAJZWNobyAienp6IiA+IGJhci96enogJiYKIAllY2hvICIjIS9iaW4vc2giID4gZXhlYy5zaCAmJgogCWNobW9kICt4IGV4ZWMuc2ggJiYKLQlzdm4gaW1wb3J0IC1tICJpbXBvcnQgZm9yIGdpdC1zdm4iIC4gIiRzdm5yZXBvIiA+L2Rldi9udWxsICYmCisJc3ZuIGltcG9ydCAtbSAiaW1wb3J0IGZvciBnaXQgc3ZuIiAuICIkc3ZucmVwbyIgPi9kZXYvbnVsbCAmJgogCWNkIC4uICYmCiAJcm0gLXJmIGltcG9ydCAmJgotCWdpdC1zdm4gaW5pdCAiJHN2bnJlcG8iJworCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnaW1wb3J0IGFuIFNWTiByZXZpc2lvbiBpbnRvIGdpdCcgXAotICAgICdnaXQtc3ZuIGZldGNoJworICAgICdnaXQgc3ZuIGZldGNoJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICJjaGVja291dCBmcm9tIHN2biIgJ3N2biBjbyAiJHN2bnJlcG8iICIkU1ZOX1RSRUUiJwogCiBuYW1lPSd0cnkgYSBkZWVwIC0tcm1kaXIgd2l0aCBhIGNvbW1pdCcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRuYW1lIiAnCi0JZ2l0IGNoZWNrb3V0IC1mIC1iIG15YnJhbmNoIHJlbW90ZXMvZ2l0LXN2biAmJgorCWdpdCBjaGVja291dCAtZiAtYiBteWJyYW5jaCAke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAltdiBkaXIvYS9iL2MvZC9lL2ZpbGUgZGlyL2ZpbGUgJiYKIAljcCBkaXIvZmlsZSBmaWxlICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAtLXJlbW92ZSBkaXIvYS9iL2MvZC9lL2ZpbGUgZGlyL2ZpbGUgZmlsZSAmJgogCWdpdCBjb21taXQgLW0gIiRuYW1lIiAmJgotCWdpdC1zdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCi0JCXJlbW90ZXMvZ2l0LXN2bi4ubXlicmFuY2ggJiYKKwlnaXQgc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAorCQkke3JlbW90ZXNfZ2l0X3N2bn0uLm15YnJhbmNoICYmCiAJc3ZuIHVwICIkU1ZOX1RSRUUiICYmCiAJdGVzdCAtZCAiJFNWTl9UUkVFIi9kaXIgJiYgdGVzdCAhIC1kICIkU1ZOX1RSRUUiL2Rpci9hJwogCkBAIC02Myw2MSArNjMsNjEgQEAKIAlnaXQgdXBkYXRlLWluZGV4IC0tcmVtb3ZlIGRpci9maWxlICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBkaXIvZmlsZS9maWxlICYmCiAJZ2l0IGNvbW1pdCAtbSAnJG5hbWUnICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0LXN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKLQkJcmVtb3Rlcy9naXQtc3ZuLi5teWJyYW5jaCIgfHwgdHJ1ZQorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCisJCSR7cmVtb3Rlc19naXRfc3ZufS4ubXlicmFuY2giIHx8IHRydWUKIAogCiBuYW1lPSdkZXRlY3Qgbm9kZSBjaGFuZ2UgZnJvbSBkaXJlY3RvcnkgdG8gZmlsZSAjMScKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRuYW1lIiAnCiAJcm0gLXJmIGRpciAiJEdJVF9ESVIiL2luZGV4ICYmCi0JZ2l0IGNoZWNrb3V0IC1mIC1iIG15YnJhbmNoMiByZW1vdGVzL2dpdC1zdm4gJiYKKwlnaXQgY2hlY2tvdXQgLWYgLWIgbXlicmFuY2gyICR7cmVtb3Rlc19naXRfc3ZufSAmJgogCW12IGJhci96enogenp6ICYmCiAJcm0gLXJmIGJhciAmJgogCW12IHp6eiBiYXIgJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tcmVtb3ZlIC0tIGJhci96enogJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tIGJhciAmJgogCWdpdCBjb21taXQgLW0gIiRuYW1lIiAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdC1zdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCi0JCXJlbW90ZXMvZ2l0LXN2bi4ubXlicmFuY2gyJyB8fCB0cnVlCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKKwkJJHtyZW1vdGVzX2dpdF9zdm59Li5teWJyYW5jaDInIHx8IHRydWUKIAogCiBuYW1lPSdkZXRlY3Qgbm9kZSBjaGFuZ2UgZnJvbSBmaWxlIHRvIGRpcmVjdG9yeSAjMicKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRuYW1lIiAnCiAJcm0gLWYgIiRHSVRfRElSIi9pbmRleCAmJgotCWdpdCBjaGVja291dCAtZiAtYiBteWJyYW5jaDMgcmVtb3Rlcy9naXQtc3ZuICYmCisJZ2l0IGNoZWNrb3V0IC1mIC1iIG15YnJhbmNoMyAke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAlybSBiYXIvenp6ICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlbW92ZSBiYXIvenp6ICYmCiAJbWtkaXIgYmFyL3p6eiAmJgogCWVjaG8geXl5ID4gYmFyL3p6ei95eXkgJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGJhci96enoveXl5ICYmCiAJZ2l0IGNvbW1pdCAtbSAiJG5hbWUiICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0LXN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKLQkJcmVtb3Rlcy9naXQtc3ZuLi5teWJyYW5jaDMnIHx8IHRydWUKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAorCQkke3JlbW90ZXNfZ2l0X3N2bn0uLm15YnJhbmNoMycgfHwgdHJ1ZQogCiAKIG5hbWU9J2RldGVjdCBub2RlIGNoYW5nZSBmcm9tIGRpcmVjdG9yeSB0byBmaWxlICMyJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAiJG5hbWUiICcKIAlybSAtZiAiJEdJVF9ESVIiL2luZGV4ICYmCi0JZ2l0IGNoZWNrb3V0IC1mIC1iIG15YnJhbmNoNCByZW1vdGVzL2dpdC1zdm4gJiYKKwlnaXQgY2hlY2tvdXQgLWYgLWIgbXlicmFuY2g0ICR7cmVtb3Rlc19naXRfc3ZufSAmJgogCXJtIC1yZiBkaXIgJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tcmVtb3ZlIC0tIGRpci9maWxlICYmCiAJdG91Y2ggZGlyICYmCiAJZWNobyBhc2RmID4gZGlyICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAtLSBkaXIgJiYKIAlnaXQgY29tbWl0IC1tICIkbmFtZSIgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQtc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAotCQlyZW1vdGVzL2dpdC1zdm4uLm15YnJhbmNoNCcgfHwgdHJ1ZQorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCisJCSR7cmVtb3Rlc19naXRfc3ZufS4ubXlicmFuY2g0JyB8fCB0cnVlCiAKIAogbmFtZT0ncmVtb3ZlIGV4ZWN1dGFibGUgYml0IGZyb20gYSBmaWxlJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAiJG5hbWUiICcKIAlybSAtZiAiJEdJVF9ESVIiL2luZGV4ICYmCi0JZ2l0IGNoZWNrb3V0IC1mIC1iIG15YnJhbmNoNSByZW1vdGVzL2dpdC1zdm4gJiYKKwlnaXQgY2hlY2tvdXQgLWYgLWIgbXlicmFuY2g1ICR7cmVtb3Rlc19naXRfc3ZufSAmJgogCWNobW9kIC14IGV4ZWMuc2ggJiYKIAlnaXQgdXBkYXRlLWluZGV4IGV4ZWMuc2ggJiYKIAlnaXQgY29tbWl0IC1tICIkbmFtZSIgJiYKLQlnaXQtc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAotCQlyZW1vdGVzL2dpdC1zdm4uLm15YnJhbmNoNSAmJgorCWdpdCBzdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCisJCSR7cmVtb3Rlc19naXRfc3ZufS4ubXlicmFuY2g1ICYmCiAJc3ZuIHVwICIkU1ZOX1RSRUUiICYmCiAJdGVzdCAhIC14ICIkU1ZOX1RSRUUiL2V4ZWMuc2gnCiAKQEAgLTEyNyw4ICsxMjcsOCBAQAogCWNobW9kICt4IGV4ZWMuc2ggJiYKIAlnaXQgdXBkYXRlLWluZGV4IGV4ZWMuc2ggJiYKIAlnaXQgY29tbWl0IC1tICIkbmFtZSIgJiYKLQlnaXQtc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAotCQlyZW1vdGVzL2dpdC1zdm4uLm15YnJhbmNoNSAmJgorCWdpdCBzdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCisJCSR7cmVtb3Rlc19naXRfc3ZufS4ubXlicmFuY2g1ICYmCiAJc3ZuIHVwICIkU1ZOX1RSRUUiICYmCiAJdGVzdCAteCAiJFNWTl9UUkVFIi9leGVjLnNoJwogCkBAIC0xMzksOCArMTM5LDggQEAKIAlsbiAtcyBiYXIvenp6IGV4ZWMuc2ggJiYKIAlnaXQgdXBkYXRlLWluZGV4IGV4ZWMuc2ggJiYKIAlnaXQgY29tbWl0IC1tICIkbmFtZSIgJiYKLQlnaXQtc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAotCQlyZW1vdGVzL2dpdC1zdm4uLm15YnJhbmNoNSAmJgorCWdpdCBzdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCisJCSR7cmVtb3Rlc19naXRfc3ZufS4ubXlicmFuY2g1ICYmCiAJc3ZuIHVwICIkU1ZOX1RSRUUiICYmCiAJdGVzdCAtTCAiJFNWTl9UUkVFIi9leGVjLnNoJwogCkBAIC0xNTEsOCArMTUxLDggQEAKIAlsbiAtcyBiYXIvenp6IGV4ZWMtMi5zaCAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgYmFyL3p6eiBleGVjLTIuc2ggJiYKIAlnaXQgY29tbWl0IC1tICIkbmFtZSIgJiYKLQlnaXQtc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAotCQlyZW1vdGVzL2dpdC1zdm4uLm15YnJhbmNoNSAmJgorCWdpdCBzdm4gc2V0LXRyZWUgLS1maW5kLWNvcGllcy1oYXJkZXIgLS1ybWRpciBcCisJCSR7cmVtb3Rlc19naXRfc3ZufS4ubXlicmFuY2g1ICYmCiAJc3ZuIHVwICIkU1ZOX1RSRUUiICYmCiAJdGVzdCAteCAiJFNWTl9UUkVFIi9iYXIvenp6ICYmCiAJdGVzdCAtTCAiJFNWTl9UUkVFIi9leGVjLTIuc2gnCkBAIC0xNjQsOCArMTY0LDggQEAKIAljcCBoZWxwIGV4ZWMtMi5zaCAmJgogCWdpdCB1cGRhdGUtaW5kZXggZXhlYy0yLnNoICYmCiAJZ2l0IGNvbW1pdCAtbSAiJG5hbWUiICYmCi0JZ2l0LXN2biBzZXQtdHJlZSAtLWZpbmQtY29waWVzLWhhcmRlciAtLXJtZGlyIFwKLQkJcmVtb3Rlcy9naXQtc3ZuLi5teWJyYW5jaDUgJiYKKwlnaXQgc3ZuIHNldC10cmVlIC0tZmluZC1jb3BpZXMtaGFyZGVyIC0tcm1kaXIgXAorCQkke3JlbW90ZXNfZ2l0X3N2bn0uLm15YnJhbmNoNSAmJgogCXN2biB1cCAiJFNWTl9UUkVFIiAmJgogCXRlc3QgLWYgIiRTVk5fVFJFRSIvZXhlYy0yLnNoICYmCiAJdGVzdCAhIC1MICIkU1ZOX1RSRUUiL2V4ZWMtMi5zaCAmJgpAQCAtMTgwLDcgKzE4MCw3IEBACiAJCWVjaG8gJyMgaGVsbG8nID4+IGV4ZWMtMi5zaCAmJgogCQlnaXQgdXBkYXRlLWluZGV4IGV4ZWMtMi5zaCAmJgogCQlnaXQgY29tbWl0IC1tICfDqcOv4oiPJyAmJgotCQlnaXQtc3ZuIHNldC10cmVlIEhFQUQiCisJCWdpdCBzdm4gc2V0LXRyZWUgSEVBRCIKIAl1bnNldCBMQ19BTEwKIGVsc2UKIAlzYXkgIlVURi04IGxvY2FsZSBub3Qgc2V0LCB0ZXN0IHNraXBwZWQgKCRHSVRfU1ZOX0xDX0FMTCkiCkBAIC0xOTAsOCArMTkwLDggQEAKIEdJVF9TVk5fSUQ9YWx0CiBleHBvcnQgR0lUX1NWTl9JRAogdGVzdF9leHBlY3Rfc3VjY2VzcyAiJG5hbWUiIFwKLSAgICAnZ2l0LXN2biBpbml0ICIkc3ZucmVwbyIgJiYgZ2l0LXN2biBmZXRjaCAmJgotICAgICBnaXQgcmV2LWxpc3QgLS1wcmV0dHk9cmF3IHJlbW90ZXMvZ2l0LXN2biB8IGdyZXAgXnRyZWUgfCB1bmlxID4gYSAmJgorICAgICdnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIiAmJiBnaXQgc3ZuIGZldGNoICYmCisgICAgIGdpdCByZXYtbGlzdCAtLXByZXR0eT1yYXcgJHtyZW1vdGVzX2dpdF9zdm59IHwgZ3JlcCBedHJlZSB8IHVuaXEgPiBhICYmCiAgICAgIGdpdCByZXYtbGlzdCAtLXByZXR0eT1yYXcgcmVtb3Rlcy9hbHQgfCBncmVwIF50cmVlIHwgdW5pcSA+IGIgJiYKICAgICAgdGVzdF9jbXAgYSBiJwogCkBAIC0yMTUsNDUgKzIxNSw0NSBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdleGl0IGlmIHJlbW90ZSByZWZzIGFyZSBhbWJpZ2lvdXMnICIKICAgICAgICAgZ2l0IGNvbmZpZyAtLWFkZCBzdm4tcmVtb3RlLnN2bi5mZXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXI6cmVmcy9yZW1vdGVzL2dpdC1zdm4gJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQtc3ZuIG1pZ3JhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcjpyZWZzLyR7cmVtb3Rlc19naXRfc3ZufSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gbWlncmF0ZQogIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdleGl0IGlmIGluaXQtaW5nIGEgd291bGQgY2xvYmJlciBhIFVSTCcgJwogICAgICAgICBzdm5hZG1pbiBjcmVhdGUgIiR7UFdEfS9zdm5yZXBvMiIgJiYKICAgICAgICAgc3ZuIG1rZGlyIC1tICJta2RpciBiYXIiICIke3N2bnJlcG99Mi9iYXIiICYmCiAgICAgICAgIGdpdCBjb25maWcgLS11bnNldCBzdm4tcmVtb3RlLnN2bi5mZXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeYmFyOnJlZnMvcmVtb3Rlcy9naXQtc3ZuJCIgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQtc3ZuIGluaXQgIiR7c3ZucmVwb30yL2JhciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5iYXI6cmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0kIiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gaW5pdCAiJHtzdm5yZXBvfTIvYmFyIgogICAgICAgICAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAnaW5pdCBhbGxvd3MgdXMgdG8gY29ubmVjdCB0byBhbm90aGVyIGRpcmVjdG9yeSBpbiB0aGUgc2FtZSByZXBvJyAnCi0gICAgICAgIGdpdC1zdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSBiYXIgIiRzdm5yZXBvL2JhciIgJiYKKyAgICAgICAgZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1pIGJhciAiJHN2bnJlcG8vYmFyIiAmJgogICAgICAgICBnaXQgY29uZmlnIC0tZ2V0IHN2bi1yZW1vdGUuc3ZuLmZldGNoIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeYmFyOnJlZnMvcmVtb3Rlcy9iYXIkIiAmJgogICAgICAgICBnaXQgY29uZmlnIC0tZ2V0IHN2bi1yZW1vdGUuc3ZuLmZldGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeOnJlZnMvcmVtb3Rlcy9naXQtc3ZuJCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeOnJlZnMvJHtyZW1vdGVzX2dpdF9zdm59JCIKICAgICAgICAgJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhYmxlIHRvIGRjb21taXQgdG8gYSBzdWJkaXJlY3RvcnknICIKLQlnaXQtc3ZuIGZldGNoIC1pIGJhciAmJgorCWdpdCBzdm4gZmV0Y2ggLWkgYmFyICYmCiAJZ2l0IGNoZWNrb3V0IC1iIG15LWJhciByZWZzL3JlbW90ZXMvYmFyICYmCiAJZWNobyBhYmMgPiBkICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBkICYmCiAJZ2l0IGNvbW1pdCAtbSAnL2Jhci9kIHNob3VsZCBiZSBpbiB0aGUgbG9nJyAmJgotCWdpdC1zdm4gZGNvbW1pdCAtaSBiYXIgJiYKKwlnaXQgc3ZuIGRjb21taXQgLWkgYmFyICYmCiAJdGVzdCAteiBcIlxgZ2l0IGRpZmYgcmVmcy9oZWFkcy9teS1iYXIgcmVmcy9yZW1vdGVzL2JhclxgXCIgJiYKIAlta2RpciBuZXdkaXIgJiYKIAllY2hvIG5ldyA+IG5ld2Rpci9kaXIgJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIG5ld2Rpci9kaXIgJiYKIAlnaXQgY29tbWl0IC1tICdhZGQgYSBuZXcgZGlyZWN0b3J5JyAmJgotCWdpdC1zdm4gZGNvbW1pdCAtaSBiYXIgJiYKKwlnaXQgc3ZuIGRjb21taXQgLWkgYmFyICYmCiAJdGVzdCAteiBcIlxgZ2l0IGRpZmYgcmVmcy9oZWFkcy9teS1iYXIgcmVmcy9yZW1vdGVzL2JhclxgXCIgJiYKIAllY2hvIGZvbyA+PiBuZXdkaXIvZGlyICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCBuZXdkaXIvZGlyICYmCiAJZ2l0IGNvbW1pdCAtbSAnbW9kaWZ5IGEgZmlsZSBpbiBuZXcgZGlyZWN0b3J5JyAmJgotCWdpdC1zdm4gZGNvbW1pdCAtaSBiYXIgJiYKKwlnaXQgc3ZuIGRjb21taXQgLWkgYmFyICYmCiAJdGVzdCAteiBcIlxgZ2l0IGRpZmYgcmVmcy9oZWFkcy9teS1iYXIgcmVmcy9yZW1vdGVzL2JhclxgXCIKIAkiCiAKQEAgLTI2MSw4ICsyNjEsMTcgQEAKIAllY2hvIGNiYSA+IGQgJiYKIAlnaXQgdXBkYXRlLWluZGV4IGQgJiYKIAlnaXQgY29tbWl0IC1tICd1cGRhdGUgL2Jhci9kJyAmJgotCWdpdC1zdm4gc2V0LXRyZWUgLWkgYmFyIEhFQUQgJiYKKwlnaXQgc3ZuIHNldC10cmVlIC1pIGJhciBIRUFEICYmCiAJdGVzdCAteiBcIlxgZ2l0IGRpZmYgcmVmcy9oZWFkcy9teS1iYXIgcmVmcy9yZW1vdGVzL2JhclxgXCIKIAkiCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdC1zdm4gd29ya3MgaW4gYSBiYXJlIHJlcG9zaXRvcnknICcKKwlta2RpciBiYXJlLXJlcG8gJiYKKwkoIGNkIGJhcmUtcmVwbyAmJgorCWdpdCBpbml0IC0tYmFyZSAmJgorCUdJVF9ESVI9LiBnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIiAmJgorCWdpdCBzdm4gZmV0Y2ggKSAmJgorCXJtIC1yZiBiYXJlLXJlcG8KKwknCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTEwMS1naXQtc3ZuLXByb3BzLnNoIGIvdC90OTEwMS1naXQtc3ZuLXByb3BzLnNoCmluZGV4IGY0MjA3OTYuLjFlMzFkNmUgMTAwNzU1Ci0tLSBhL3QvdDkxMDEtZ2l0LXN2bi1wcm9wcy5zaAorKysgYi90L3Q5MTAxLWdpdC1zdm4tcHJvcHMuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoYykgMjAwNiBFcmljIFdvbmcKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBwcm9wZXJ0eSB0ZXN0cycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gcHJvcGVydHkgdGVzdHMnCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogbWtkaXIgaW1wb3J0CkBAIC0yNiwyOSArMjYsMjkgQEAKIEVPRgogCiAJcHJpbnRmICJIZWxsb1xyXG5Xb3JsZFxyXG4iID4gY3JsZgotCWFfY3JsZj1gZ2l0LWhhc2gtb2JqZWN0IC13IGNybGZgCisJYV9jcmxmPWBnaXQgaGFzaC1vYmplY3QgLXcgY3JsZmAKIAlwcmludGYgIkhlbGxvXHJXb3JsZFxyIiA+IGNyCi0JYV9jcj1gZ2l0LWhhc2gtb2JqZWN0IC13IGNyYAorCWFfY3I9YGdpdCBoYXNoLW9iamVjdCAtdyBjcmAKIAlwcmludGYgIkhlbGxvXG5Xb3JsZFxuIiA+IGxmCi0JYV9sZj1gZ2l0LWhhc2gtb2JqZWN0IC13IGxmYAorCWFfbGY9YGdpdCBoYXNoLW9iamVjdCAtdyBsZmAKIAogCXByaW50ZiAiSGVsbG9cclxuV29ybGQiID4gbmVfY3JsZgotCWFfbmVfY3JsZj1gZ2l0LWhhc2gtb2JqZWN0IC13IG5lX2NybGZgCisJYV9uZV9jcmxmPWBnaXQgaGFzaC1vYmplY3QgLXcgbmVfY3JsZmAKIAlwcmludGYgIkhlbGxvXG5Xb3JsZCIgPiBuZV9sZgotCWFfbmVfbGY9YGdpdC1oYXNoLW9iamVjdCAtdyBuZV9sZmAKKwlhX25lX2xmPWBnaXQgaGFzaC1vYmplY3QgLXcgbmVfbGZgCiAJcHJpbnRmICJIZWxsb1xyV29ybGQiID4gbmVfY3IKLQlhX25lX2NyPWBnaXQtaGFzaC1vYmplY3QgLXcgbmVfY3JgCisJYV9uZV9jcj1gZ2l0IGhhc2gtb2JqZWN0IC13IG5lX2NyYAogCiAJdG91Y2ggZW1wdHkKLQlhX2VtcHR5PWBnaXQtaGFzaC1vYmplY3QgLXcgZW1wdHlgCisJYV9lbXB0eT1gZ2l0IGhhc2gtb2JqZWN0IC13IGVtcHR5YAogCXByaW50ZiAiXG4iID4gZW1wdHlfbGYKLQlhX2VtcHR5X2xmPWBnaXQtaGFzaC1vYmplY3QgLXcgZW1wdHlfbGZgCisJYV9lbXB0eV9sZj1gZ2l0IGhhc2gtb2JqZWN0IC13IGVtcHR5X2xmYAogCXByaW50ZiAiXHIiID4gZW1wdHlfY3IKLQlhX2VtcHR5X2NyPWBnaXQtaGFzaC1vYmplY3QgLXcgZW1wdHlfY3JgCisJYV9lbXB0eV9jcj1gZ2l0IGhhc2gtb2JqZWN0IC13IGVtcHR5X2NyYAogCXByaW50ZiAiXHJcbiIgPiBlbXB0eV9jcmxmCi0JYV9lbXB0eV9jcmxmPWBnaXQtaGFzaC1vYmplY3QgLXcgZW1wdHlfY3JsZmAKKwlhX2VtcHR5X2NybGY9YGdpdCBoYXNoLW9iamVjdCAtdyBlbXB0eV9jcmxmYAogCi0Jc3ZuIGltcG9ydCAtLW5vLWF1dG8tcHJvcHMgLW0gJ2ltcG9ydCBmb3IgZ2l0LXN2bicgLiAiJHN2bnJlcG8iID4vZGV2L251bGwKKwlzdm4gaW1wb3J0IC0tbm8tYXV0by1wcm9wcyAtbSAnaW1wb3J0IGZvciBnaXQgc3ZuJyAuICIkc3ZucmVwbyIgPi9kZXYvbnVsbAogY2QgLi4KIAogcm0gLXJmIGltcG9ydApAQCAtNjYsMTYgKzY2LDE2IEBACiAJCXN2biBjb21taXQgLW0gIlByb3BzZXQgSWQiICYmCiAJY2QgLi4nCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgZ2l0LXN2bicgJ2dpdC1zdm4gaW5pdCAiJHN2bnJlcG8iJwotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggcmV2aXNpb25zIGZyb20gc3ZuJyAnZ2l0LXN2biBmZXRjaCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgZ2l0IHN2bicgJ2dpdCBzdm4gaW5pdCAiJHN2bnJlcG8iJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggcmV2aXNpb25zIGZyb20gc3ZuJyAnZ2l0IHN2biBmZXRjaCcKIAogbmFtZT0ndGVzdCBzdm46a2V5d29yZHMgaWdub3JpbmcnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICIkbmFtZSIgXAotCSdnaXQgY2hlY2tvdXQgLWIgbXlicmFuY2ggcmVtb3Rlcy9naXQtc3ZuICYmCisJJ2dpdCBjaGVja291dCAtYiBteWJyYW5jaCAke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAllY2hvIEhpIGFnYWluID4+IGt3LmMgJiYKIAlnaXQgY29tbWl0IC1hIC1tICJ0ZXN0IGtleXdvcmRzIGlnbm9yaW5nIiAmJgotCWdpdC1zdm4gc2V0LXRyZWUgcmVtb3Rlcy9naXQtc3ZuLi5teWJyYW5jaCAmJgotCWdpdCBwdWxsIC4gcmVtb3Rlcy9naXQtc3ZuJworCWdpdCBzdm4gc2V0LXRyZWUgJHtyZW1vdGVzX2dpdF9zdm59Li5teWJyYW5jaCAmJgorCWdpdCBwdWxsIC4gJHtyZW1vdGVzX2dpdF9zdm59JwogCiBleHBlY3Q9Jy8qICRJZCQgKi8nCiBnb3Q9ImBzZWQgLW5lIDJwIGt3LmNgIgpAQCAtOTAsOCArOTAsOCBAQAogCSBjZCAuLicKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggYW5kIHB1bGwgbGF0ZXN0IGZyb20gc3ZuIGFuZCBjaGVja291dCBhIG5ldyB3YycgXAotCSdnaXQtc3ZuIGZldGNoICYmCi0JIGdpdCBwdWxsIC4gcmVtb3Rlcy9naXQtc3ZuICYmCisJJ2dpdCBzdm4gZmV0Y2ggJiYKKwkgZ2l0IHB1bGwgLiAke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAkgc3ZuIGNvICIkc3ZucmVwbyIgbmV3X3djJwogCiBmb3IgaSBpbiBjcmxmIG5lX2NybGYgbGYgbmVfbGYgY3IgbmVfY3IgZW1wdHlfY3IgZW1wdHlfbGYgZW1wdHkgZW1wdHlfY3JsZgpAQCAtMTAzLDggKzEwMyw4IEBACiBjZCB0ZXN0X3djCiAJcHJpbnRmICckSWQkXHJIZWxsb1xyV29ybGRccicgPiBjcgogCXByaW50ZiAnJElkJFxySGVsbG9ccldvcmxkJyA+IG5lX2NyCi0JYV9jcj1gcHJpbnRmICckSWQkXHJcbkhlbGxvXHJcbldvcmxkXHJcbicgfCBnaXQtaGFzaC1vYmplY3QgLS1zdGRpbmAKLQlhX25lX2NyPWBwcmludGYgJyRJZCRcclxuSGVsbG9cclxuV29ybGQnIHwgZ2l0LWhhc2gtb2JqZWN0IC0tc3RkaW5gCisJYV9jcj1gcHJpbnRmICckSWQkXHJcbkhlbGxvXHJcbldvcmxkXHJcbicgfCBnaXQgaGFzaC1vYmplY3QgLS1zdGRpbmAKKwlhX25lX2NyPWBwcmludGYgJyRJZCRcclxuSGVsbG9cclxuV29ybGQnIHwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW5gCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAnU2V0IENSTEYgb24gY3IgZmlsZXMnIFwKIAknc3ZuIHByb3BzZXQgc3ZuOmVvbC1zdHlsZSBDUkxGIGNyICYmCiAJIHN2biBwcm9wc2V0IHN2bjplb2wtc3R5bGUgQ1JMRiBuZV9jciAmJgpAQCAtMTEzLDEwICsxMTMsMTAgQEAKIAkgc3ZuIGNvbW1pdCAtbSAicHJvcHNldCBDUkxGIG9uIGNyIGZpbGVzIicKIGNkIC4uCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBhbmQgcHVsbCBsYXRlc3QgZnJvbSBzdm4nIFwKLQknZ2l0LXN2biBmZXRjaCAmJiBnaXQgcHVsbCAuIHJlbW90ZXMvZ2l0LXN2bicKKwknZ2l0IHN2biBmZXRjaCAmJiBnaXQgcHVsbCAuICR7cmVtb3Rlc19naXRfc3ZufScKIAotYl9jcj0iYGdpdC1oYXNoLW9iamVjdCBjcmAiCi1iX25lX2NyPSJgZ2l0LWhhc2gtb2JqZWN0IG5lX2NyYCIKK2JfY3I9ImBnaXQgaGFzaC1vYmplY3QgY3JgIgorYl9uZV9jcj0iYGdpdCBoYXNoLW9iamVjdCBuZV9jcmAiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0NSTEYgKyAkSWQkJyAidGVzdCAnJGFfY3InID0gJyRiX2NyJyIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0NSTEYgKyAkSWQkIChubyBuZXdsaW5lKScgInRlc3QgJyRhX25lX2NyJyA9ICckYl9uZV9jciciCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAlzdm4gcHJvcHNldCAtUiBzdm46aWdub3JlICduby1zdWNoLWZpbGUqJyAuCiAJc3ZuIGNvbW1pdCAtbSAncHJvcHNldCBzdm46aWdub3JlJwogCWNkIC4uICYmCi0JZ2l0LXN2biBzaG93LWlnbm9yZSA+IHNob3ctaWdub3JlLmdvdCAmJgorCWdpdCBzdm4gc2hvdy1pZ25vcmUgPiBzaG93LWlnbm9yZS5nb3QgJiYKIAljbXAgc2hvdy1pZ25vcmUuZXhwZWN0IHNob3ctaWdub3JlLmdvdAogCSIKIApAQCAtMTYxLDggKzE2MSw4IEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBjcmVhdGUtaWdub3JlJyAiCi0JZ2l0LXN2biBmZXRjaCAmJiBnaXQgcHVsbCAuIHJlbW90ZXMvZ2l0LXN2biAmJgotCWdpdC1zdm4gY3JlYXRlLWlnbm9yZSAmJgorCWdpdCBzdm4gZmV0Y2ggJiYgZ2l0IHB1bGwgLiAke3JlbW90ZXNfZ2l0X3N2bn0gJiYKKwlnaXQgc3ZuIGNyZWF0ZS1pZ25vcmUgJiYKIAljbXAgLi8uZ2l0aWdub3JlIGNyZWF0ZS1pZ25vcmUuZXhwZWN0ICYmCiAJY21wIC4vZGVlcGx5Ly5naXRpZ25vcmUgY3JlYXRlLWlnbm9yZS5leHBlY3QgJiYKIAljbXAgLi9kZWVwbHkvbmVzdGVkLy5naXRpZ25vcmUgY3JlYXRlLWlnbm9yZS5leHBlY3QgJiYKQEAgLTE4MiwxNSArMTgyLDE1IEBACiAjIHBhdHRlcm4sIGl0IGNhbiBwYXNzIGV2ZW4gdGhvdWdoIHRoZSBwcm9wZ2V0IGRpZCBub3QgZXhlY3V0ZSBvbiB0aGUKICMgcmlnaHQgZGlyZWN0b3J5LgogdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBwcm9wZ2V0JyAiCi0JZ2l0LXN2biBwcm9wZ2V0IHN2bjppZ25vcmUgLiB8IGNtcCAtIHByb3AuZXhwZWN0ICYmCisJZ2l0IHN2biBwcm9wZ2V0IHN2bjppZ25vcmUgLiB8IGNtcCAtIHByb3AuZXhwZWN0ICYmCiAJY2QgZGVlcGx5ICYmCi0JZ2l0LXN2biBwcm9wZ2V0IHN2bjppZ25vcmUgLiB8IGNtcCAtIC4uL3Byb3AuZXhwZWN0ICYmCi0JZ2l0LXN2biBwcm9wZ2V0IHN2bjplbnRyeTpjb21taXR0ZWQtcmV2IG5lc3RlZC9kaXJlY3RvcnkvLmtlZXAgXAorCWdpdCBzdm4gcHJvcGdldCBzdm46aWdub3JlIC4gfCBjbXAgLSAuLi9wcm9wLmV4cGVjdCAmJgorCWdpdCBzdm4gcHJvcGdldCBzdm46ZW50cnk6Y29tbWl0dGVkLXJldiBuZXN0ZWQvZGlyZWN0b3J5Ly5rZWVwIFwKIAkgIHwgY21wIC0gLi4vcHJvcDIuZXhwZWN0ICYmCi0JZ2l0LXN2biBwcm9wZ2V0IHN2bjppZ25vcmUgLi4gfCBjbXAgLSAuLi9wcm9wLmV4cGVjdCAmJgotCWdpdC1zdm4gcHJvcGdldCBzdm46aWdub3JlIG5lc3RlZC8gfCBjbXAgLSAuLi9wcm9wLmV4cGVjdCAmJgotCWdpdC1zdm4gcHJvcGdldCBzdm46aWdub3JlIC4vbmVzdGVkIHwgY21wIC0gLi4vcHJvcC5leHBlY3QgJiYKLQlnaXQtc3ZuIHByb3BnZXQgc3ZuOmlnbm9yZSAuLi8uL2RlZXBseS9uZXN0ZWQgfCBjbXAgLSAuLi9wcm9wLmV4cGVjdAorCWdpdCBzdm4gcHJvcGdldCBzdm46aWdub3JlIC4uIHwgY21wIC0gLi4vcHJvcC5leHBlY3QgJiYKKwlnaXQgc3ZuIHByb3BnZXQgc3ZuOmlnbm9yZSBuZXN0ZWQvIHwgY21wIC0gLi4vcHJvcC5leHBlY3QgJiYKKwlnaXQgc3ZuIHByb3BnZXQgc3ZuOmlnbm9yZSAuL25lc3RlZCB8IGNtcCAtIC4uL3Byb3AuZXhwZWN0ICYmCisJZ2l0IHN2biBwcm9wZ2V0IHN2bjppZ25vcmUgLi4vLi9kZWVwbHkvbmVzdGVkIHwgY21wIC0gLi4vcHJvcC5leHBlY3QKIAkiCiAKIGNhdCA+cHJvcC5leHBlY3QgPDxcRU9GCkBAIC0yMTAsOCArMjEwLDggQEAKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHByb3BsaXN0JyAiCi0JZ2l0LXN2biBwcm9wbGlzdCAuIHwgY21wIC0gcHJvcC5leHBlY3QgJiYKLQlnaXQtc3ZuIHByb3BsaXN0IG5lc3RlZC9kaXJlY3RvcnkvLmtlZXAgfCBjbXAgLSBwcm9wMi5leHBlY3QKKwlnaXQgc3ZuIHByb3BsaXN0IC4gfCBjbXAgLSBwcm9wLmV4cGVjdCAmJgorCWdpdCBzdm4gcHJvcGxpc3QgbmVzdGVkL2RpcmVjdG9yeS8ua2VlcCB8IGNtcCAtIHByb3AyLmV4cGVjdAogCSIKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MTAyLWdpdC1zdm4tZGVlcC1ybWRpci5zaCBiL3QvdDkxMDItZ2l0LXN2bi1kZWVwLXJtZGlyLnNoCmluZGV4IDBlN2NlMzQuLmUyMjMyMTggMTAwNzU1Ci0tLSBhL3QvdDkxMDItZ2l0LXN2bi1kZWVwLXJtZGlyLnNoCisrKyBiL3QvdDkxMDItZ2l0LXN2bi1kZWVwLXJtZGlyLnNoCkBAIC0xLDUgKzEsNSBAQAogIyEvYmluL3NoCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIHJtZGlyJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBybWRpcicKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIHJlcG8nICcKQEAgLTksMjAgKzksMjAgQEAKIAlta2RpciAtcCBkZWVwbHkvbmVzdGVkL2RpcmVjdG9yeS9udW1iZXIvMiAmJgogCWVjaG8gZm9vID4gZGVlcGx5L25lc3RlZC9kaXJlY3RvcnkvbnVtYmVyLzEvZmlsZSAmJgogCWVjaG8gZm9vID4gZGVlcGx5L25lc3RlZC9kaXJlY3RvcnkvbnVtYmVyLzIvYW5vdGhlciAmJgotCXN2biBpbXBvcnQgLW0gImltcG9ydCBmb3IgZ2l0LXN2biIgLiAiJHN2bnJlcG8iICYmCisJc3ZuIGltcG9ydCAtbSAiaW1wb3J0IGZvciBnaXQgc3ZuIiAuICIkc3ZucmVwbyIgJiYKIAljZCAuLgogCScKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWlycm9yIHZpYSBnaXQtc3ZuJyAnCi0JZ2l0LXN2biBpbml0ICIkc3ZucmVwbyIgJiYKLQlnaXQtc3ZuIGZldGNoICYmCi0JZ2l0IGNoZWNrb3V0IC1mIC1iIHRlc3Qtcm1kaXIgcmVtb3Rlcy9naXQtc3ZuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtaXJyb3IgdmlhIGdpdCBzdm4nICcKKwlnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIiAmJgorCWdpdCBzdm4gZmV0Y2ggJiYKKwlnaXQgY2hlY2tvdXQgLWYgLWIgdGVzdC1ybWRpciAke3JlbW90ZXNfZ2l0X3N2bn0KIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1RyeSBhIGNvbW1pdCBvbiBybWRpcicgJwogCWdpdCBybSAtZiBkZWVwbHkvbmVzdGVkL2RpcmVjdG9yeS9udW1iZXIvMi9hbm90aGVyICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSAicmVtb3ZlIGFub3RoZXIiICYmCi0JZ2l0LXN2biBzZXQtdHJlZSAtLXJtZGlyIEhFQUQgJiYKKwlnaXQgc3ZuIHNldC10cmVlIC0tcm1kaXIgSEVBRCAmJgogCXN2biBscyAtUiAiJHN2bnJlcG8iIHwgZ3JlcCBeZGVlcGx5L25lc3RlZC9kaXJlY3RvcnkvbnVtYmVyLzEKIAknCiAKZGlmZiAtLWdpdCBhL3QvdDkxMDMtZ2l0LXN2bi10cmFja2VkLWRpcmVjdG9yeS1yZW1vdmVkLnNoIGIvdC90OTEwMy1naXQtc3ZuLXRyYWNrZWQtZGlyZWN0b3J5LXJlbW92ZWQuc2gKaW5kZXggOWZmZDg0NS4uOTYzZGQ5NSAxMDA3NTUKLS0tIGEvdC90OTEwMy1naXQtc3ZuLXRyYWNrZWQtZGlyZWN0b3J5LXJlbW92ZWQuc2gKKysrIGIvdC90OTEwMy1naXQtc3ZuLXRyYWNrZWQtZGlyZWN0b3J5LXJlbW92ZWQuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoYykgMjAwNyBFcmljIFdvbmcKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biB0cmFja2luZyByZW1vdmVkIHRvcC1sZXZlbCBwYXRoJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biB0cmFja2luZyByZW1vdmVkIHRvcC1sZXZlbCBwYXRoJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21ha2UgaGlzdG9yeSBmb3IgdHJhY2tpbmcnICcKZGlmZiAtLWdpdCBhL3QvdDkxMDQtZ2l0LXN2bi1mb2xsb3ctcGFyZW50LnNoIGIvdC90OTEwNC1naXQtc3ZuLWZvbGxvdy1wYXJlbnQuc2gKaW5kZXggZDgwZWE2NC4uYWI5ZmEzMiAxMDA3NTUKLS0tIGEvdC90OTEwNC1naXQtc3ZuLWZvbGxvdy1wYXJlbnQuc2gKKysrIGIvdC90OTEwNC1naXQtc3ZuLWZvbGxvdy1wYXJlbnQuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoYykgMjAwNiBFcmljIFdvbmcKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBmZXRjaGluZycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gZmV0Y2hpbmcnCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSByZXBvJyAnCkBAIC0yNyw4ICsyNyw4IEBACiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0IGFuZCBmZXRjaCBhIG1vdmVkIGRpcmVjdG9yeScgJwotCWdpdC1zdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSB0aHVuayAiJHN2bnJlcG8iL3RodW5rICYmCi0JZ2l0LXN2biBmZXRjaCAtaSB0aHVuayAmJgorCWdpdCBzdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSB0aHVuayAiJHN2bnJlcG8iL3RodW5rICYmCisJZ2l0IHN2biBmZXRjaCAtaSB0aHVuayAmJgogCXRlc3QgImBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy90aHVua0AyYCIgXAogICAgICAgICAgICA9ICJgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvdGh1bmt+MWAiICYmCiAgICAgICAgIHRlc3QgImBnaXQgY2F0LWZpbGUgYmxvYiByZWZzL3JlbW90ZXMvdGh1bms6cmVhZG1lIHxcCkBAIC00Myw3ICs0Myw3IEBACiAgICAgICAgICAgdHJ1bms6cmVmcy9yZW1vdGVzL3N2bi90cnVuayAmJgogICAgICAgICBnaXQgY29uZmlnIC0tYWRkIHN2bi1yZW1vdGUuc3ZuLmZldGNoIFwKICAgICAgICAgICB0aHVuazpyZWZzL3JlbW90ZXMvc3ZuL3RodW5rICYmCi0gICAgICAgIGdpdC1zdm4gZmV0Y2ggLWkgc3ZuL3RodW5rICYmCisgICAgICAgIGdpdCBzdm4gZmV0Y2ggLWkgc3ZuL3RodW5rICYmCiAJdGVzdCAiYGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL3N2bi90cnVua2AiIFwKICAgICAgICAgICAgPSAiYGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL3N2bi90aHVua34xYCIgJiYKICAgICAgICAgdGVzdCAiYGdpdCBjYXQtZmlsZSBibG9iIHJlZnMvcmVtb3Rlcy9zdm4vdGh1bms6cmVhZG1lIHxcCkBAIC01Nyw4ICs1Nyw4IEBACiAgICAgICAgICAgICAgICAtcjIgIiRzdm5yZXBvIi90cnVuayAiJHN2bnJlcG8iL2p1bmspICYmCiAgICAgICAgIGdpdCBjb25maWcgLS1hZGQgc3ZuLXJlbW90ZS5zdm4uZmV0Y2ggXAogICAgICAgICAgIGp1bms6cmVmcy9yZW1vdGVzL3N2bi9qdW5rICYmCi0gICAgICAgIGdpdC1zdm4gZmV0Y2ggLWkgc3ZuL3RodW5rICYmCi0gICAgICAgIGdpdC1zdm4gZmV0Y2ggLWkgc3ZuL2p1bmsgJiYKKyAgICAgICAgZ2l0IHN2biBmZXRjaCAtaSBzdm4vdGh1bmsgJiYKKyAgICAgICAgZ2l0IHN2biBmZXRjaCAtaSBzdm4vanVuayAmJgogICAgICAgICB0ZXN0IC16ICJgZ2l0IGRpZmYgc3ZuL2p1bmsgc3ZuL3RydW5rYCIgJiYKICAgICAgICAgdGVzdCAiYGdpdCBtZXJnZS1iYXNlIHN2bi9qdW5rIHN2bi90cnVua2AiIFwKICAgICAgICAgICAgPSAiYGdpdCByZXYtcGFyc2Ugc3ZuL3RydW5rYCIKQEAgLTY5LDkgKzY5LDkgQEAKICAgICAgICAgZWNobyBoaSA+IGltcG9ydC90cnVuay90aHVuay9idW1wL3RodWQvZmlsZSAmJgogICAgICAgICBzdm4gaW1wb3J0IC1tICJpbXBvcnQgYSBsYXJnZXIgcGFyZW50IiBpbXBvcnQgIiRzdm5yZXBvIi9sYXJnZXItcGFyZW50ICYmCiAgICAgICAgIHN2biBjcCAtbSAiaGkiICIkc3ZucmVwbyIvbGFyZ2VyLXBhcmVudCAiJHN2bnJlcG8iL2Fub3RoZXItbGFyZ2VyICYmCi0gICAgICAgIGdpdC1zdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSBsYXJnZXIgXAorICAgICAgICBnaXQgc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgbGFyZ2VyIFwKICAgICAgICAgICAiJHN2bnJlcG8iL2Fub3RoZXItbGFyZ2VyL3RydW5rL3RodW5rL2J1bXAvdGh1ZCAmJgotICAgICAgICBnaXQtc3ZuIGZldGNoIC1pIGxhcmdlciAmJgorICAgICAgICBnaXQgc3ZuIGZldGNoIC1pIGxhcmdlciAmJgogICAgICAgICBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9sYXJnZXIgJiYKICAgICAgICAgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBcCiAgICAgICAgICAgIHJlZnMvcmVtb3Rlcy9sYXJnZXItcGFyZW50L3RydW5rL3RodW5rL2J1bXAvdGh1ZCAmJgpAQCAtOTIsMTUgKzkyLDE1IEBACiAgICAgICAgICAgICAgICAgY2QgLi4KICAgICAgICAgc3ZuIG1rZGlyIC1tICJuZXcgZ2xvYiBhdCB0b3AgbGV2ZWwiICIkc3ZucmVwbyIvZ2xvYiAmJgogICAgICAgICBzdm4gbXYgLW0gIm1vdmUgYmxvYiBkb3duIGEgbGV2ZWwiICIkc3ZucmVwbyIvYmxvYiAiJHN2bnJlcG8iL2dsb2IvYmxvYiAmJgotICAgICAgICBnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgYmxvYiAiJHN2bnJlcG8iL2dsb2IvYmxvYiAmJgotICAgICAgICBnaXQtc3ZuIGZldGNoIC1pIGJsb2IKKyAgICAgICAgZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1pIGJsb2IgIiRzdm5yZXBvIi9nbG9iL2Jsb2IgJiYKKyAgICAgICAgZ2l0IHN2biBmZXRjaCAtaSBibG9iCiAgICAgICAgICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9sbG93IGRlbGV0ZWQgZGlyZWN0b3J5JyAnCiAJc3ZuIG12IC1tICJieWUhIiAiJHN2bnJlcG8iL2dsb2IvYmxvYi9oaSAiJHN2bnJlcG8iL2dsb2IvYmxvYi9ieWUgJiYKIAlzdm4gcm0gLW0gInJlbW92ZSBnbG9iIiAiJHN2bnJlcG8iL2dsb2IgJiYKLQlnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgZ2xvYiAiJHN2bnJlcG8iL2dsb2IgJiYKLQlnaXQtc3ZuIGZldGNoIC1pIGdsb2IgJiYKKwlnaXQgc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLWkgZ2xvYiAiJHN2bnJlcG8iL2dsb2IgJiYKKwlnaXQgc3ZuIGZldGNoIC1pIGdsb2IgJiYKIAl0ZXN0ICJgZ2l0IGNhdC1maWxlIGJsb2IgcmVmcy9yZW1vdGVzL2dsb2I6YmxvYi9ieWVgIiA9IGhpICYmCiAJdGVzdCAiYGdpdCBscy10cmVlIHJlZnMvcmVtb3Rlcy9nbG9iIHwgd2MgLWwgYCIgLWVxIDEKIAknCkBAIC0xMjksOSArMTI5LDkgQEAKIAkgIHBva2UgbmF0aXZlL3QvYy50ICYmCiAJICBzdm4gY29tbWl0IC1tICJyZW9yZyB0ZXN0IiAmJgogCWNkIC4uICYmCi0JZ2l0LXN2biBpbml0IC0tbWluaW1pemUtdXJsIC1pIHI5MjcwLXQgXAorCWdpdCBzdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSByOTI3MC10IFwKIAkgICIkc3ZucmVwbyIvcjkyNzAvdHJ1bmsvc3VidmVyc2lvbi9iaW5kaW5ncy9zd2lnL3BlcmwvbmF0aXZlL3QgJiYKLQlnaXQtc3ZuIGZldGNoIC1pIHI5MjcwLXQgJiYKKwlnaXQgc3ZuIGZldGNoIC1pIHI5MjcwLXQgJiYKIAl0ZXN0IGBnaXQgcmV2LWxpc3QgcjkyNzAtdCB8IHdjIC1sYCAtZXEgMiAmJgogCXRlc3QgImBnaXQgbHMtdHJlZSAtLW5hbWUtb25seSByOTI3MC10fjFgIiA9IFwKIAkgICAgICJgZ2l0IGxzLXRyZWUgLS1uYW1lLW9ubHkgcjkyNzAtdGAiCkBAIC0xMzksOSArMTM5LDkgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAidHJhY2sgaW5pdGlhbCBjaGFuZ2UgaWYgaXQgd2FzIG9ubHkgbWFkZSB0byBwYXJlbnQiICcKIAlzdm4gY3AgLW0gIndoZWVlISIgIiRzdm5yZXBvIi9yOTI3MC90cnVuayAiJHN2bnJlcG8iL3I5MjcwL2RydW5rICYmCi0JZ2l0LXN2biBpbml0IC0tbWluaW1pemUtdXJsIC1pIHI5MjcwLWQgXAorCWdpdCBzdm4gaW5pdCAtLW1pbmltaXplLXVybCAtaSByOTI3MC1kIFwKIAkgICIkc3ZucmVwbyIvcjkyNzAvZHJ1bmsvc3VidmVyc2lvbi9iaW5kaW5ncy9zd2lnL3BlcmwvbmF0aXZlL3QgJiYKLQlnaXQtc3ZuIGZldGNoIC1pIHI5MjcwLWQgJiYKKwlnaXQgc3ZuIGZldGNoIC1pIHI5MjcwLWQgJiYKIAl0ZXN0IGBnaXQgcmV2LWxpc3QgcjkyNzAtZCB8IHdjIC1sYCAtZXEgMyAmJgogCXRlc3QgImBnaXQgbHMtdHJlZSAtLW5hbWUtb25seSByOTI3MC10YCIgPSBcCiAJICAgICAiYGdpdCBscy10cmVlIC0tbmFtZS1vbmx5IHI5MjcwLWRgIiAmJgpAQCAtMTkzLDE5ICsxOTMsMTkgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAidHJhY2sgbXVsdGktcGFyZW50IHBhdGhzIiAnCiAJc3ZuIGNwIC1tICJyZXN1cnJlY3QgL2dsb2IiICIkc3ZucmVwbyIvcjkyNzAgIiRzdm5yZXBvIi9nbG9iICYmCi0JZ2l0LXN2biBtdWx0aS1mZXRjaCAmJgorCWdpdCBzdm4gbXVsdGktZmV0Y2ggJiYKIAl0ZXN0IGBnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9nbG9iIHwgXAogCSAgICAgICBncmVwICJecGFyZW50ICIgfCB3YyAtbGAgLWVxIDIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIm11bHRpLWZldGNoIGNvbnRpbnVlcyB0byB3b3JrIiAiCi0JZ2l0LXN2biBtdWx0aS1mZXRjaAorCWdpdCBzdm4gbXVsdGktZmV0Y2gKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIm11bHRpLWZldGNoIHdvcmtzIG9mZiBhICdjbGVhbicgcmVwb3NpdG9yeSIgJwogCXJtIC1yICIkR0lUX0RJUi9zdm4iICIkR0lUX0RJUi9yZWZzL3JlbW90ZXMiICIkR0lUX0RJUi9sb2dzIiAmJgogCW1rZGlyICIkR0lUX0RJUi9zdm4iICYmCi0JZ2l0LXN2biBtdWx0aS1mZXRjaAorCWdpdCBzdm4gbXVsdGktZmV0Y2gKIAknCiAKIHRlc3RfZGVidWcgJ2dpdGsgLS1hbGwgJicKZGlmZiAtLWdpdCBhL3QvdDkxMDUtZ2l0LXN2bi1jb21taXQtZGlmZi5zaCBiL3QvdDkxMDUtZ2l0LXN2bi1jb21taXQtZGlmZi5zaAppbmRleCA2MzIzMDM2Li5iYTk5YWJiIDEwMDc1NQotLS0gYS90L3Q5MTA1LWdpdC1zdm4tY29tbWl0LWRpZmYuc2gKKysrIGIvdC90OTEwNS1naXQtc3ZuLWNvbW1pdC1kaWZmLnNoCkBAIC0xLDcgKzEsNyBAQAogIyEvYmluL3NoCiAjCiAjIENvcHlyaWdodCAoYykgMjAwNiBFcmljIFdvbmcKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gY29tbWl0LWRpZmYnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGNvbW1pdC1kaWZmJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgcmVwbycgJwpAQCAtMjYsMTYgKzI2LDE2IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdGhlIGNvbW1pdC1kaWZmIGNvbW1hbmQnICcKIAl0ZXN0IC1uICIkcHJldiIgJiYgdGVzdCAtbiAiJGhlYWQiICYmCi0JZ2l0LXN2biBjb21taXQtZGlmZiAtcjEgIiRwcmV2IiAiJGhlYWQiICIkc3ZucmVwbyIgJiYKKwlnaXQgc3ZuIGNvbW1pdC1kaWZmIC1yMSAiJHByZXYiICIkaGVhZCIgIiRzdm5yZXBvIiAmJgogCXN2biBjbyAiJHN2bnJlcG8iIHdjICYmCiAJY21wIHJlYWRtZSB3Yy9yZWFkbWUKIAknCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdC1kaWZmIHRvIGEgc3ViLWRpcmVjdG9yeSAod2l0aCBnaXQtc3ZuIGNvbmZpZyknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdC1kaWZmIHRvIGEgc3ViLWRpcmVjdG9yeSAod2l0aCBnaXQgc3ZuIGNvbmZpZyknICcKIAlzdm4gaW1wb3J0IC1tICJzdWItZGlyZWN0b3J5IiBpbXBvcnQgIiRzdm5yZXBvIi9zdWJkaXIgJiYKLQlnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgIiRzdm5yZXBvIi9zdWJkaXIgJiYKLQlnaXQtc3ZuIGZldGNoICYmCi0JZ2l0LXN2biBjb21taXQtZGlmZiAtcjMgIiRwcmV2IiAiJGhlYWQiICYmCisJZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsICIkc3ZucmVwbyIvc3ViZGlyICYmCisJZ2l0IHN2biBmZXRjaCAmJgorCWdpdCBzdm4gY29tbWl0LWRpZmYgLXIzICIkcHJldiIgIiRoZWFkIiAmJgogCXN2biBjYXQgIiRzdm5yZXBvIi9zdWJkaXIvcmVhZG1lID4gcmVhZG1lLjIgJiYKIAljbXAgcmVhZG1lIHJlYWRtZS4yCiAJJwpkaWZmIC0tZ2l0IGEvdC90OTEwNi1naXQtc3ZuLWNvbW1pdC1kaWZmLWNsb2JiZXIuc2ggYi90L3Q5MTA2LWdpdC1zdm4tY29tbWl0LWRpZmYtY2xvYmJlci5zaAppbmRleCA4Mzg5NmU5Li42ZWIwZmQ4IDEwMDc1NQotLS0gYS90L3Q5MTA2LWdpdC1zdm4tY29tbWl0LWRpZmYtY2xvYmJlci5zaAorKysgYi90L3Q5MTA2LWdpdC1zdm4tY29tbWl0LWRpZmYtY2xvYmJlci5zaApAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYgRXJpYyBXb25nCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGNvbW1pdC1kaWZmIGNsb2JiZXInCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGNvbW1pdC1kaWZmIGNsb2JiZXInCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSByZXBvJyAnCkBAIC0yNyw3ICsyNyw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgY29uZmxpY3RpbmcgY2hhbmdlIGZyb20gZ2l0JyAnCiAJZWNobyBzZWNvbmQgbGluZSBmcm9tIGdpdCA+PiBmaWxlICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSAic2Vjb25kIGxpbmUgZnJvbSBnaXQiICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0LXN2biBjb21taXQtZGlmZiAtcjEgSEVBRH4xIEhFQUQgIiRzdm5yZXBvIgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gY29tbWl0LWRpZmYgLXIxIEhFQUR+MSBIRUFEICIkc3ZucmVwbyIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWl0IGNvbXBsZW1lbnRpbmcgY2hhbmdlIGZyb20gZ2l0JyAnCkBAIC0zNiwxMyArMzYsMTMgQEAKIAlnaXQgY29tbWl0IC1hIC1tICJzZWNvbmQgbGluZSBmcm9tIHN2biIgJiYKIAllY2hvIHRoaXJkIGxpbmUgZnJvbSBnaXQgPj4gZmlsZSAmJgogCWdpdCBjb21taXQgLWEgLW0gInRoaXJkIGxpbmUgZnJvbSBnaXQiICYmCi0JZ2l0LXN2biBjb21taXQtZGlmZiAtcjIgSEVBRH4xIEhFQUQgIiRzdm5yZXBvIgorCWdpdCBzdm4gY29tbWl0LWRpZmYgLXIyIEhFQUR+MSBIRUFEICIkc3ZucmVwbyIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Rjb21taXQgZmFpbHMgdG8gY29tbWl0IGJlY2F1c2Ugb2YgY29uZmxpY3QnICcKLQlnaXQtc3ZuIGluaXQgIiRzdm5yZXBvIiAmJgotCWdpdC1zdm4gZmV0Y2ggJiYKLQlnaXQgcmVzZXQgLS1oYXJkIHJlZnMvcmVtb3Rlcy9naXQtc3ZuICYmCisJZ2l0IHN2biBpbml0ICIkc3ZucmVwbyIgJiYKKwlnaXQgc3ZuIGZldGNoICYmCisJZ2l0IHJlc2V0IC0taGFyZCByZWZzLyR7cmVtb3Rlc19naXRfc3ZufSAmJgogCXN2biBjbyAiJHN2bnJlcG8iIHQuc3ZuICYmCiAJY2QgdC5zdm4gJiYKIAllY2hvIGZvdXJ0aCBsaW5lIGZyb20gc3ZuID4+IGZpbGUgJiYKQEAgLTUyLDE4ICs1MiwxOCBAQAogCXJtIC1yZiB0LnN2biAmJgogCWVjaG8gImZvdXJ0aCBsaW5lIGZyb20gZ2l0IiA+PiBmaWxlICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSAiZm91cnRoIGxpbmUgZnJvbSBnaXQiICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0LXN2biBkY29tbWl0CisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBkY29tbWl0CiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkY29tbWl0IGRvZXMgdGhlIHN2biBlcXVpdmFsZW50IG9mIGFuIGluZGV4IG1lcmdlJyAiCi0JZ2l0IHJlc2V0IC0taGFyZCByZWZzL3JlbW90ZXMvZ2l0LXN2biAmJgorCWdpdCByZXNldCAtLWhhcmQgcmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0gJiYKIAllY2hvICdpbmRleCBtZXJnZScgPiBmaWxlMiAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgZmlsZTIgJiYKIAlnaXQgY29tbWl0IC1hIC1tICdpbmRleCBtZXJnZScgJiYKIAllY2hvICdtb3JlIGNoYW5nZXMnID4+IGZpbGUyICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCBmaWxlMiAmJgogCWdpdCBjb21taXQgLWEgLW0gJ21vcmUgY2hhbmdlcycgJiYKLQlnaXQtc3ZuIGRjb21taXQKKwlnaXQgc3ZuIGRjb21taXQKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCBhbm90aGVyIGNoYW5nZSBmcm9tIHN2biBzaWRlJyAnCkBAIC03Niw4ICs3Niw4IEBACiAJcm0gLXJmIHQuc3ZuCiAJJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtdWx0aXBsZSBkY29tbWl0IGZyb20gZ2l0LXN2biB3aWxsIG5vdCBjbG9iYmVyIHN2bicgIgotCWdpdCByZXNldCAtLWhhcmQgcmVmcy9yZW1vdGVzL2dpdC1zdm4gJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ211bHRpcGxlIGRjb21taXQgZnJvbSBnaXQgc3ZuIHdpbGwgbm90IGNsb2JiZXIgc3ZuJyAiCisJZ2l0IHJlc2V0IC0taGFyZCByZWZzLyR7cmVtb3Rlc19naXRfc3ZufSAmJgogCWVjaG8gbmV3IGZpbGUgPj4gbmV3LWZpbGUgJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIG5ldy1maWxlICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSAnbmV3IGZpbGUnICYmCmRpZmYgLS1naXQgYS90L3Q5MTA2LWdpdC1zdm4tZGNvbW1pdC1jbG9iYmVyLXNlcmllcy5zaCBiL3QvdDkxMDYtZ2l0LXN2bi1kY29tbWl0LWNsb2JiZXItc2VyaWVzLnNoCmluZGV4IGJjMzdkYjkuLmZkMTg1MDEgMTAwNzU1Ci0tLSBhL3QvdDkxMDYtZ2l0LXN2bi1kY29tbWl0LWNsb2JiZXItc2VyaWVzLnNoCisrKyBiL3QvdDkxMDYtZ2l0LXN2bi1kY29tbWl0LWNsb2JiZXItc2VyaWVzLnNoCkBAIC0xLDcgKzEsNyBAQAogIyEvYmluL3NoCiAjCiAjIENvcHlyaWdodCAoYykgMjAwNyBFcmljIFdvbmcKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gZGNvbW1pdCBjbG9iYmVyIHNlcmllcycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gZGNvbW1pdCBjbG9iYmVyIHNlcmllcycKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIHJlcG8nICcKZGlmZiAtLWdpdCBhL3QvdDkxMDctZ2l0LXN2bi1taWdyYXRlLnNoIGIvdC90OTEwNy1naXQtc3ZuLW1pZ3JhdGUuc2gKaW5kZXggZDliNTUzYS4uYWNhZDE2YSAxMDA3NTUKLS0tIGEvdC90OTEwNy1naXQtc3ZuLW1pZ3JhdGUuc2gKKysrIGIvdC90OTEwNy1naXQtc3ZuLW1pZ3JhdGUuc2gKQEAgLTEsNiArMSw2IEBACiAjIS9iaW4vc2gKICMgQ29weXJpZ2h0IChjKSAyMDA2IEVyaWMgV29uZwotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBtZXRhZGF0YSBtaWdyYXRpb25zIGZyb20gcHJldmlvdXMgdmVyc2lvbnMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIG1ldGFkYXRhIG1pZ3JhdGlvbnMgZnJvbSBwcmV2aW91cyB2ZXJzaW9ucycKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBvbGQtbG9va2luZyBtZXRhZGF0YScgJwpAQCAtMTQsMzQgKzE0LDM0IEBACiAJCWRvbmUgJiYgXAogCQlzdm4gaW1wb3J0IC1tIHRlc3QgLiAiJHN2bnJlcG8iCiAJCWNkIC4uICYmCi0JZ2l0LXN2biBpbml0ICIkc3ZucmVwbyIgJiYKLQlnaXQtc3ZuIGZldGNoICYmCisJZ2l0IHN2biBpbml0ICIkc3ZucmVwbyIgJiYKKwlnaXQgc3ZuIGZldGNoICYmCiAJbXYgIiRHSVRfRElSIi9zdm4vKiAiJEdJVF9ESVIiLyAmJgogCW12ICIkR0lUX0RJUiIvc3ZuLy5tZXRhZGF0YSAiJEdJVF9ESVIiLyAmJgogCXJtZGlyICIkR0lUX0RJUiIvc3ZuICYmCi0JZ2l0IHVwZGF0ZS1yZWYgcmVmcy9oZWFkcy9naXQtc3ZuLUhFQUQgcmVmcy9yZW1vdGVzL2dpdC1zdm4gJiYKLQlnaXQgdXBkYXRlLXJlZiByZWZzL2hlYWRzL3N2bi1IRUFEIHJlZnMvcmVtb3Rlcy9naXQtc3ZuICYmCi0JZ2l0IHVwZGF0ZS1yZWYgLWQgcmVmcy9yZW1vdGVzL2dpdC1zdm4gcmVmcy9yZW1vdGVzL2dpdC1zdm4KKwlnaXQgdXBkYXRlLXJlZiByZWZzL2hlYWRzL2dpdC1zdm4tSEVBRCByZWZzLyR7cmVtb3Rlc19naXRfc3ZufSAmJgorCWdpdCB1cGRhdGUtcmVmIHJlZnMvaGVhZHMvc3ZuLUhFQUQgcmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0gJiYKKwlnaXQgdXBkYXRlLXJlZiAtZCByZWZzLyR7cmVtb3Rlc19naXRfc3ZufSByZWZzLyR7cmVtb3Rlc19naXRfc3ZufQogCScKIAogaGVhZD1gZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL2dpdC1zdm4tSEVBRF4wYAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0LXN2bi1IRUFEIGlzIGEgcmVhbCBIRUFEJyAidGVzdCAtbiAnJGhlYWQnIgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIG9sZC1zdHlsZSAodjApIGdpdC1zdm4gbGF5b3V0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIG9sZC1zdHlsZSAodjApIGdpdCBzdm4gbGF5b3V0JyAnCiAJbWtkaXIgLXAgIiRHSVRfRElSIi9naXQtc3ZuL2luZm8gIiRHSVRfRElSIi9zdm4vaW5mbyAmJgogCWVjaG8gIiRzdm5yZXBvIiA+ICIkR0lUX0RJUiIvZ2l0LXN2bi9pbmZvL3VybCAmJgogCWVjaG8gIiRzdm5yZXBvIiA+ICIkR0lUX0RJUiIvc3ZuL2luZm8vdXJsICYmCi0JZ2l0LXN2biBtaWdyYXRlICYmCi0JISB0ZXN0IC1kICIkR0lUX0RJUiIvZ2l0LXN2biAmJgotCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL2dpdC1zdm5eMCAmJgorCWdpdCBzdm4gbWlncmF0ZSAmJgorCSEgdGVzdCAtZCAiJEdJVF9ESVIiL2dpdCBzdm4gJiYKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvJHtyZW1vdGVzX2dpdF9zdm59XjAgJiYKIAlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9zdm5eMCAmJgogCXRlc3QgIiQoZ2l0IGNvbmZpZyAtLWdldCBzdm4tcmVtb3RlLnN2bi51cmwpIiA9ICIkc3ZucmVwbyIgJiYKIAl0ZXN0IGBnaXQgY29uZmlnIC0tZ2V0IHN2bi1yZW1vdGUuc3ZuLmZldGNoYCA9IFwKLSAgICAgICAgICAgICAiOnJlZnMvcmVtb3Rlcy9naXQtc3ZuIgorICAgICAgICAgICAgICI6cmVmcy8ke3JlbW90ZXNfZ2l0X3N2bn0iCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIGEgbXVsdGktcmVwb3NpdG9yeSByZXBvJyAnCi0JZ2l0LXN2biBpbml0ICIkc3ZucmVwbyIgLVQgdHJ1bmsgLXQgdGFncyAtYiBicmFuY2hlcyAmJgorCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iIC1UIHRydW5rIC10IHRhZ3MgLWIgYnJhbmNoZXMgJiYKIAlnaXQgY29uZmlnIC0tZ2V0LWFsbCBzdm4tcmVtb3RlLnN2bi5mZXRjaCA+IGZldGNoLm91dCAmJgogCWdyZXAgIl50cnVuazpyZWZzL3JlbW90ZXMvdHJ1bmskIiBmZXRjaC5vdXQgJiYKIAl0ZXN0IC1uICJgZ2l0IGNvbmZpZyAtLWdldCBzdm4tcmVtb3RlLnN2bi5icmFuY2hlcyBcCkBAIC02MSw3ICs2MSw3IEBACiAKICMgcmVmcyBzaG91bGQgYWxsIGJlIGRpZmZlcmVudCwgYnV0IHRoZSB0cmVlcyBzaG91bGQgYWxsIGJlIHRoZSBzYW1lOgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbXVsdGktZmV0Y2ggd29ya3Mgb24gcGFydGlhbCB1cmxzICsgcGF0aHMnICIKLQlnaXQtc3ZuIG11bHRpLWZldGNoICYmCisJZ2l0IHN2biBtdWx0aS1mZXRjaCAmJgogCWZvciBpIGluIHRydW5rIGEgYiB0YWdzLzAuMSB0YWdzLzAuMiB0YWdzLzAuMzsgZG8KIAkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvXCRpXjAgPj4gcmVmcy5vdXQgfHwgZXhpdCAxOwogCSAgICBkb25lICYmCkBAIC04NSw3ICs4NSw3IEBACiAJCSggbWtkaXIgLXAgIiRHSVRfRElSIi9zdm4vJHJlZi9pbmZvLyAmJgogCQllY2hvICIkc3ZucmVwbyIkcGF0aCA+ICIkR0lUX0RJUiIvc3ZuLyRyZWYvaW5mby91cmwgKSB8fCBleGl0IDE7CiAJZG9uZSAmJgotCWdpdC1zdm4gbWlncmF0ZSAtLW1pbmltaXplICYmCisJZ2l0IHN2biBtaWdyYXRlIC0tbWluaW1pemUgJiYKIAl0ZXN0IC16ICJgZ2l0IGNvbmZpZyAtbCB8Z3JlcCAtdiAiXnN2bi1yZW1vdGVcLmdpdC1zdm5cLiJgIiAmJgogCWdpdCBjb25maWcgLS1nZXQtYWxsIHN2bi1yZW1vdGUuc3ZuLmZldGNoID4gZmV0Y2gub3V0ICYmCiAJZ3JlcCAiXnRydW5rOnJlZnMvcmVtb3Rlcy90cnVuayQiIGZldGNoLm91dCAmJgpAQCAtOTQsMTEgKzk0LDExIEBACiAJZ3JlcCAiXnRhZ3MvMFwuMTpyZWZzL3JlbW90ZXMvdGFncy8wXC4xJCIgZmV0Y2gub3V0ICYmCiAJZ3JlcCAiXnRhZ3MvMFwuMjpyZWZzL3JlbW90ZXMvdGFncy8wXC4yJCIgZmV0Y2gub3V0ICYmCiAJZ3JlcCAiXnRhZ3MvMFwuMzpyZWZzL3JlbW90ZXMvdGFncy8wXC4zJCIgZmV0Y2gub3V0Ci0JZ3JlcCAiXjpyZWZzL3JlbW90ZXMvZ2l0LXN2biIgZmV0Y2gub3V0CisJZ3JlcCAiXjpyZWZzLyR7cmVtb3Rlc19naXRfc3ZufSIgZmV0Y2gub3V0CiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICAiLnJldl9kYiBhdXRvLWNvbnZlcnRlZCB0byAucmV2X21hcC5VVUlEIiAnCi0JZ2l0LXN2biBmZXRjaCAtaSB0cnVuayAmJgorCWdpdCBzdm4gZmV0Y2ggLWkgdHJ1bmsgJiYKIAl0ZXN0IC16ICIkKGxzICIkR0lUX0RJUiIvc3ZuL3RydW5rLy5yZXZfZGIuKiAyPi9kZXYvbnVsbCkiICYmCiAJZXhwZWN0PSIkKGxzICIkR0lUX0RJUiIvc3ZuL3RydW5rLy5yZXZfbWFwLiopIiAmJgogCXRlc3QgLW4gIiRleHBlY3QiICYmCkBAIC0xMDYsNyArMTA2LDcgQEAKIAljb252ZXJ0X3RvX3Jldl9kYiAiJGV4cGVjdCIgIiRyZXZfZGIiICYmCiAJcm0gLWYgIiRleHBlY3QiICYmCiAJdGVzdCAtZiAiJHJldl9kYiIgJiYKLQlnaXQtc3ZuIGZldGNoIC1pIHRydW5rICYmCisJZ2l0IHN2biBmZXRjaCAtaSB0cnVuayAmJgogCXRlc3QgLXogIiQobHMgIiRHSVRfRElSIi9zdm4vdHJ1bmsvLnJldl9kYi4qIDI+L2Rldi9udWxsKSIgJiYKIAl0ZXN0ICEgLWUgIiRHSVRfRElSIi9zdm4vdHJ1bmsvLnJldl9kYiAmJgogCXRlc3QgLWYgIiRleHBlY3QiCmRpZmYgLS1naXQgYS90L3Q5MTA4LWdpdC1zdm4tZ2xvYi5zaCBiL3QvdDkxMDgtZ2l0LXN2bi1nbG9iLnNoCmluZGV4IDhiNzkyYTEuLmQ4NTgyYjEgMTAwNzU1Ci0tLSBhL3QvdDkxMDgtZ2l0LXN2bi1nbG9iLnNoCisrKyBiL3QvdDkxMDgtZ2l0LXN2bi1nbG9iLnNoCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAjIENvcHlyaWdodCAoYykgMjAwNyBFcmljIFdvbmcKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gZ2xvYmJpbmcgcmVmc3BlY3MnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGdsb2JiaW5nIHJlZnNwZWNzJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIGNhdCA+IGV4cGVjdC5lbmQgPDxFT0YKQEAgLTQ2LDcgKzQ2LDcgQEAKIAkgICAgICAgICAgICAgICAgICJicmFuY2hlcy8qL3NyYy9hOnJlZnMvcmVtb3Rlcy9icmFuY2hlcy8qIiAmJgogCWdpdCBjb25maWcgLS1hZGQgc3ZuLXJlbW90ZS5zdm4udGFnc1wKIAkgICAgICAgICAgICAgICAgICJ0YWdzLyovc3JjL2E6cmVmcy9yZW1vdGVzL3RhZ3MvKiIgJiYKLQlnaXQtc3ZuIG11bHRpLWZldGNoICYmCisJZ2l0IHN2biBtdWx0aS1mZXRjaCAmJgogCWdpdCBsb2cgLS1wcmV0dHk9b25lbGluZSByZWZzL3JlbW90ZXMvdGFncy9lbmQgfCBcCiAJICAgIHNlZCAtZSAicy9eLlx7NDFcfS8vIiA+IG91dHB1dC5lbmQgJiYKIAl0ZXN0X2NtcCBleHBlY3QuZW5kIG91dHB1dC5lbmQgJiYKQEAgLTc0LDcgKzc0LDcgQEAKIAkJcG9rZSB0YWdzL2VuZC9zcmMvYi9yZWFkbWUgJiYKIAkJc3ZuIGNvbW1pdCAtbSAidHJ5IHRvIHRyeSIKIAkpICYmCi0JZ2l0LXN2biBmZXRjaCB0d28gJiYKKwlnaXQgc3ZuIGZldGNoIHR3byAmJgogCXRlc3QgYGdpdCByZXYtbGlzdCByZWZzL3JlbW90ZXMvdHdvL3RhZ3MvZW5kIHwgd2MgLWxgIC1lcSA2ICYmCiAJdGVzdCBgZ2l0IHJldi1saXN0IHJlZnMvcmVtb3Rlcy90d28vYnJhbmNoZXMvc3RhcnQgfCB3YyAtbGAgLWVxIDMgJiYKIAl0ZXN0IGBnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy90d28vYnJhbmNoZXMvc3RhcnR+MmAgPSBcCkBAIC0xMDQsNyArMTA0LDcgQEAKIAkJcG9rZSB0YWdzL2VuZC9zcmMvYi9yZWFkbWUgJiYKIAkJc3ZuIGNvbW1pdCAtbSAidHJ5IHRvIHRyeSIKIAkpICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0LXN2biBmZXRjaCB0aHJlZSAyPiBzdGRlcnIudGhyZWUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGZldGNoIHRocmVlIDI+IHN0ZGVyci50aHJlZSAmJgogCXRlc3RfY21wIGV4cGVjdC50aHJlZSBzdGRlcnIudGhyZWUKIAknCiAKZGlmZiAtLWdpdCBhL3QvdDkxMDgtZ2l0LXN2bi1tdWx0aS1nbG9iLnNoIGIvdC90OTEwOC1naXQtc3ZuLW11bHRpLWdsb2Iuc2gKaW5kZXggMzU4MzcyMS4uOGY3OWMzZiAxMDA3NTUKLS0tIGEvdC90OTEwOC1naXQtc3ZuLW11bHRpLWdsb2Iuc2gKKysrIGIvdC90OTEwOC1naXQtc3ZuLW11bHRpLWdsb2Iuc2gKQEAgLTEsNiArMSw2IEBACiAjIS9iaW4vc2gKICMgQ29weXJpZ2h0IChjKSAyMDA3IEVyaWMgV29uZwotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBnbG9iYmluZyByZWZzcGVjcycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gZ2xvYmJpbmcgcmVmc3BlY3MnCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogY2F0ID4gZXhwZWN0LmVuZCA8PEVPRgpAQCAtNDYsNyArNDYsNyBAQAogCSAgICAgICAgICAgICAgICAgImJyYW5jaGVzLyovKi9zcmMvYTpyZWZzL3JlbW90ZXMvYnJhbmNoZXMvKi8qIiAmJgogCWdpdCBjb25maWcgLS1hZGQgc3ZuLXJlbW90ZS5zdm4udGFnc1wKIAkgICAgICAgICAgICAgICAgICJ0YWdzLyovc3JjL2E6cmVmcy9yZW1vdGVzL3RhZ3MvKiIgJiYKLQlnaXQtc3ZuIG11bHRpLWZldGNoICYmCisJZ2l0IHN2biBtdWx0aS1mZXRjaCAmJgogCWdpdCBsb2cgLS1wcmV0dHk9b25lbGluZSByZWZzL3JlbW90ZXMvdGFncy9lbmQgfCBcCiAJICAgIHNlZCAtZSAicy9eLlx7NDFcfS8vIiA+IG91dHB1dC5lbmQgJiYKIAl0ZXN0X2NtcCBleHBlY3QuZW5kIG91dHB1dC5lbmQgJiYKQEAgLTc0LDcgKzc0LDcgQEAKIAkJcG9rZSB0YWdzL2VuZC9zcmMvYi9yZWFkbWUgJiYKIAkJc3ZuIGNvbW1pdCAtbSAidHJ5IHRvIHRyeSIKIAkpICYmCi0JZ2l0LXN2biBmZXRjaCB0d28gJiYKKwlnaXQgc3ZuIGZldGNoIHR3byAmJgogCXRlc3QgYGdpdCByZXYtbGlzdCByZWZzL3JlbW90ZXMvdHdvL3RhZ3MvZW5kIHwgd2MgLWxgIC1lcSA2ICYmCiAJdGVzdCBgZ2l0IHJldi1saXN0IHJlZnMvcmVtb3Rlcy90d28vYnJhbmNoZXMvdjEvc3RhcnQgfCB3YyAtbGAgLWVxIDMgJiYKIAl0ZXN0IGBnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy90d28vYnJhbmNoZXMvdjEvc3RhcnR+MmAgPSBcCkBAIC0xMjMsNyArMTIzLDcgQEAKIAkgICAgICAgICAgICAgICAgICJicmFuY2hlcy8qLyo6cmVmcy9yZW1vdGVzL2ZvdXIvYnJhbmNoZXMvKi8qIiAmJgogCWdpdCBjb25maWcgLS1hZGQgc3ZuLXJlbW90ZS5mb3VyLnRhZ3MgXAogCSAgICAgICAgICAgICAgICAgInRhZ3MvKjpyZWZzL3JlbW90ZXMvZm91ci90YWdzLyoiICYmCi0JZ2l0LXN2biBmZXRjaCBmb3VyICYmCisJZ2l0IHN2biBmZXRjaCBmb3VyICYmCiAJdGVzdCBgZ2l0IHJldi1saXN0IHJlZnMvcmVtb3Rlcy9mb3VyL3RhZ3MvbmV4dCB8IHdjIC1sYCAtZXEgNSAmJgogCXRlc3QgYGdpdCByZXYtbGlzdCByZWZzL3JlbW90ZXMvZm91ci9icmFuY2hlcy92Mi9zdGFydCB8IHdjIC1sYCAtZXEgMyAmJgogCXRlc3QgYGdpdCByZXYtcGFyc2UgcmVmcy9yZW1vdGVzL2ZvdXIvYnJhbmNoZXMvdjIvc3RhcnR+MmAgPSBcCkBAIC0xNTMsNyArMTUzLDcgQEAKIAkJcG9rZSB0YWdzL2VuZC9zcmMvYi9yZWFkbWUgJiYKIAkJc3ZuIGNvbW1pdCAtbSAidHJ5IHRvIHRyeSIKIAkpICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0LXN2biBmZXRjaCB0aHJlZSAyPiBzdGRlcnIudGhyZWUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGZldGNoIHRocmVlIDI+IHN0ZGVyci50aHJlZSAmJgogCXRlc3RfY21wIGV4cGVjdC50aHJlZSBzdGRlcnIudGhyZWUKIAknCiAKZGlmZiAtLWdpdCBhL3QvdDkxMTAtZ2l0LXN2bi11c2Utc3ZtLXByb3BzLnNoIGIvdC90OTExMC1naXQtc3ZuLXVzZS1zdm0tcHJvcHMuc2gKaW5kZXggMDRkMmE2NS4uYTA2ZTRjNSAxMDA3NTUKLS0tIGEvdC90OTExMC1naXQtc3ZuLXVzZS1zdm0tcHJvcHMuc2gKKysrIGIvdC90OTExMC1naXQtc3ZuLXVzZS1zdm0tcHJvcHMuc2gKQEAgLTMsMTggKzMsMTggQEAKICMgQ29weXJpZ2h0IChjKSAyMDA3IEVyaWMgV29uZwogIwogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIHVzZVN2bVByb3BzIHRlc3QnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIHVzZVN2bVByb3BzIHRlc3QnCiAKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2FkIHN2bSByZXBvJyAnCi0Jc3ZuYWRtaW4gbG9hZCAtcSAiJHJhd3N2bnJlcG8iIDwgLi4vdDkxMTAvc3ZtLmR1bXAgJiYKLQlnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLVIgYXJyIC1pIGJhciAiJHN2bnJlcG8iL21pcnJvci9hcnIgJiYKLQlnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLVIgYXJnaCAtaSBkaXIgIiRzdm5yZXBvIi9taXJyb3IvYXJnaCAmJgotCWdpdC1zdm4gaW5pdCAtLW1pbmltaXplLXVybCAtUiBhcmdoIC1pIGUgXAorCXN2bmFkbWluIGxvYWQgLXEgIiRyYXdzdm5yZXBvIiA8ICIkVEVTVF9ESVJFQ1RPUlkiL3Q5MTEwL3N2bS5kdW1wICYmCisJZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1SIGFyciAtaSBiYXIgIiRzdm5yZXBvIi9taXJyb3IvYXJyICYmCisJZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1SIGFyZ2ggLWkgZGlyICIkc3ZucmVwbyIvbWlycm9yL2FyZ2ggJiYKKwlnaXQgc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLVIgYXJnaCAtaSBlIFwKIAkgICIkc3ZucmVwbyIvbWlycm9yL2FyZ2gvYS9iL2MvZC9lICYmCiAJZ2l0IGNvbmZpZyBzdm4udXNlU3ZtUHJvcHMgdHJ1ZSAmJgotCWdpdC1zdm4gZmV0Y2ggLS1hbGwKKwlnaXQgc3ZuIGZldGNoIC0tYWxsCiAJJwogCiB1dWlkPTE2MWNlNDI5LWE5ZGQtNDgyOC1hZjRhLTUyMDIzZjk2OGM4OQpAQCAtMjIsNDAgKzIyLDQwIEBACiBiYXJfdXJsPWh0dHA6Ly9tYXlvbmFpc2Uvc3ZucmVwby9iYXIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmlmeSBtZXRhZGF0YSBmb3IgL2JhcicgIgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2JhciB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGJhcl91cmxAMTIgJHV1aWQkJyAmJgorCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkYmFyX3VybEAxMiAkdXVpZCQnICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvYmFyfjEgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRiYXJfdXJsQDExICR1dWlkJCcgJiYKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGJhcl91cmxAMTEgJHV1aWQkJyAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2Jhcn4yIHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkYmFyX3VybEAxMCAkdXVpZCQnICYmCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRiYXJfdXJsQDEwICR1dWlkJCcgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9iYXJ+MyB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGJhcl91cmxAOSAkdXVpZCQnICYmCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRiYXJfdXJsQDkgJHV1aWQkJyAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2Jhcn40IHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkYmFyX3VybEA2ICR1dWlkJCcgJiYKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGJhcl91cmxANiAkdXVpZCQnICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvYmFyfjUgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRiYXJfdXJsQDEgJHV1aWQkJworCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkYmFyX3VybEAxICR1dWlkJCcKIAkiCiAKIGVfdXJsPWh0dHA6Ly9tYXlvbmFpc2Uvc3ZucmVwby9kaXIvYS9iL2MvZC9lCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgbWV0YWRhdGEgZm9yIC9kaXIvYS9iL2MvZC9lJyAiCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvZSB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGVfdXJsQDEgJHV1aWQkJworCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkZV91cmxAMSAkdXVpZCQnCiAJIgogCiBkaXJfdXJsPWh0dHA6Ly9tYXlvbmFpc2Uvc3ZucmVwby9kaXIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmlmeSBtZXRhZGF0YSBmb3IgL2RpcicgIgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2RpciB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGRpcl91cmxAMiAkdXVpZCQnICYmCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRkaXJfdXJsQDIgJHV1aWQkJyAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2Rpcn4xIHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkZGlyX3VybEAxICR1dWlkJCcKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGRpcl91cmxAMSAkdXVpZCQnCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaW5kIGNvbW1pdCBiYXNlZCBvbiBTVk4gcmV2aXNpb24gbnVtYmVyJyAiCi0gICAgICAgIGdpdC1zdm4gZmluZC1yZXYgcjEyIHwKKyAgICAgICAgZ2l0IHN2biBmaW5kLXJldiByMTIgfAogCSAgICBncmVwIGBnaXQgcmV2LXBhcnNlIEhFQURgCiAgICAgICAgICIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZW1wdHkgcmViYXNlJyAiCi0JZ2l0LXN2biByZWJhc2UKKwlnaXQgc3ZuIHJlYmFzZQogCSIKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MTExLWdpdC1zdm4tdXNlLXN2bnN5bmMtcHJvcHMuc2ggYi90L3Q5MTExLWdpdC1zdm4tdXNlLXN2bnN5bmMtcHJvcHMuc2gKaW5kZXggYThkNzRkYy4uYmQwODFjMiAxMDA3NTUKLS0tIGEvdC90OTExMS1naXQtc3ZuLXVzZS1zdm5zeW5jLXByb3BzLnNoCisrKyBiL3QvdDkxMTEtZ2l0LXN2bi11c2Utc3Zuc3luYy1wcm9wcy5zaApAQCAtMywxNyArMywxNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDcgRXJpYyBXb25nCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gdXNlU3Zuc3luY1Byb3BzIHRlc3QnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIHVzZVN2bnN5bmNQcm9wcyB0ZXN0JwogCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9hZCBzdm5zeW5jIHJlcG8nICcKLQlzdm5hZG1pbiBsb2FkIC1xICIkcmF3c3ZucmVwbyIgPCAuLi90OTExMS9zdm5zeW5jLmR1bXAgJiYKLQlnaXQtc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLVIgYXJyIC1pIGJhciAiJHN2bnJlcG8iL2JhciAmJgotCWdpdC1zdm4gaW5pdCAtLW1pbmltaXplLXVybCAtUiBhcmdoIC1pIGRpciAiJHN2bnJlcG8iL2RpciAmJgotCWdpdC1zdm4gaW5pdCAtLW1pbmltaXplLXVybCAtUiBhcmdoIC1pIGUgIiRzdm5yZXBvIi9kaXIvYS9iL2MvZC9lICYmCisJc3ZuYWRtaW4gbG9hZCAtcSAiJHJhd3N2bnJlcG8iIDwgIiRURVNUX0RJUkVDVE9SWSIvdDkxMTEvc3Zuc3luYy5kdW1wICYmCisJZ2l0IHN2biBpbml0IC0tbWluaW1pemUtdXJsIC1SIGFyciAtaSBiYXIgIiRzdm5yZXBvIi9iYXIgJiYKKwlnaXQgc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLVIgYXJnaCAtaSBkaXIgIiRzdm5yZXBvIi9kaXIgJiYKKwlnaXQgc3ZuIGluaXQgLS1taW5pbWl6ZS11cmwgLVIgYXJnaCAtaSBlICIkc3ZucmVwbyIvZGlyL2EvYi9jL2QvZSAmJgogCWdpdCBjb25maWcgc3ZuLnVzZVN2bnN5bmNQcm9wcyB0cnVlICYmCi0JZ2l0LXN2biBmZXRjaCAtLWFsbAorCWdpdCBzdm4gZmV0Y2ggLS1hbGwKIAknCiAKIHV1aWQ9MTYxY2U0MjktYTlkZC00ODI4LWFmNGEtNTIwMjNmOTY4Yzg5CkBAIC0yMSwzMSArMjEsMzEgQEAKIGJhcl91cmw9aHR0cDovL21heW9uYWlzZS9zdm5yZXBvL2JhcgogdGVzdF9leHBlY3Rfc3VjY2VzcyAndmVyaWZ5IG1ldGFkYXRhIGZvciAvYmFyJyAiCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvYmFyIHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkYmFyX3VybEAxMiAkdXVpZCQnICYmCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRiYXJfdXJsQDEyICR1dWlkJCcgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9iYXJ+MSB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGJhcl91cmxAMTEgJHV1aWQkJyAmJgorCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkYmFyX3VybEAxMSAkdXVpZCQnICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvYmFyfjIgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRiYXJfdXJsQDEwICR1dWlkJCcgJiYKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGJhcl91cmxAMTAgJHV1aWQkJyAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgcmVmcy9yZW1vdGVzL2Jhcn4zIHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkYmFyX3VybEA5ICR1dWlkJCcgJiYKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGJhcl91cmxAOSAkdXVpZCQnICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvYmFyfjQgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRiYXJfdXJsQDYgJHV1aWQkJyAmJgorCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkYmFyX3VybEA2ICR1dWlkJCcgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9iYXJ+NSB8IFwKLQkgICBncmVwICdeZ2l0LXN2bi1pZDogJGJhcl91cmxAMSAkdXVpZCQnCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRiYXJfdXJsQDEgJHV1aWQkJwogCSIKIAogZV91cmw9aHR0cDovL21heW9uYWlzZS9zdm5yZXBvL2Rpci9hL2IvYy9kL2UKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmlmeSBtZXRhZGF0YSBmb3IgL2Rpci9hL2IvYy9kL2UnICIKIAlnaXQgY2F0LWZpbGUgY29tbWl0IHJlZnMvcmVtb3Rlcy9lIHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkZV91cmxAMSAkdXVpZCQnCisJICAgZ3JlcCAnXiR7Z2l0X3N2bl9pZH06ICRlX3VybEAxICR1dWlkJCcKIAkiCiAKIGRpcl91cmw9aHR0cDovL21heW9uYWlzZS9zdm5yZXBvL2RpcgogdGVzdF9leHBlY3Rfc3VjY2VzcyAndmVyaWZ5IG1ldGFkYXRhIGZvciAvZGlyJyAiCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvZGlyIHwgXAotCSAgIGdyZXAgJ15naXQtc3ZuLWlkOiAkZGlyX3VybEAyICR1dWlkJCcgJiYKKwkgICBncmVwICdeJHtnaXRfc3ZuX2lkfTogJGRpcl91cmxAMiAkdXVpZCQnICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCByZWZzL3JlbW90ZXMvZGlyfjEgfCBcCi0JICAgZ3JlcCAnXmdpdC1zdm4taWQ6ICRkaXJfdXJsQDEgJHV1aWQkJworCSAgIGdyZXAgJ14ke2dpdF9zdm5faWR9OiAkZGlyX3VybEAxICR1dWlkJCcKIAkiCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTExMi1naXQtc3ZuLW1kNWxlc3MtZmlsZS5zaCBiL3QvdDkxMTItZ2l0LXN2bi1tZDVsZXNzLWZpbGUuc2gKaW5kZXggZDQ3MGE5Mi4uYTYxZDY3MSAxMDA3NTUKLS0tIGEvdC90OTExMi1naXQtc3ZuLW1kNWxlc3MtZmlsZS5zaAorKysgYi90L3Q5MTEyLWdpdC1zdm4tbWQ1bGVzcy1maWxlLnNoCkBAIC00Miw2ICs0Miw2IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvYWQgc3ZuIGR1bXBmaWxlJyAnc3ZuYWRtaW4gbG9hZCAiJHJhd3N2bnJlcG8iIDwgZHVtcGZpbGUuc3ZuJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIGdpdC1zdm4nICdnaXQtc3ZuIGluaXQgIiRzdm5yZXBvIicKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIHJldmlzaW9ucyBmcm9tIHN2bicgJ2dpdC1zdm4gZmV0Y2gnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0aWFsaXplIGdpdCBzdm4nICdnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIHJldmlzaW9ucyBmcm9tIHN2bicgJ2dpdCBzdm4gZmV0Y2gnCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDkxMTMtZ2l0LXN2bi1kY29tbWl0LW5ldy1maWxlLnNoIGIvdC90OTExMy1naXQtc3ZuLWRjb21taXQtbmV3LWZpbGUuc2gKaW5kZXggYzJiMjRhNC4uZTliNjEyOCAxMDA3NTUKLS0tIGEvdC90OTExMy1naXQtc3ZuLWRjb21taXQtbmV3LWZpbGUuc2gKKysrIGIvdC90OTExMy1naXQtc3ZuLWRjb21taXQtbmV3LWZpbGUuc2gKQEAgLTgsNyArOCw3IEBACiAjIGRhZW1vbiBydW5uaW5nIG9uIGEgdXNlcnMgc3lzdGVtIGlmIHRoZSB0ZXN0IGZhaWxzLgogIyBOb3QgYWxsIGdpdCB1c2VycyB3aWxsIG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCBTVk4uCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gZGNvbW1pdCBuZXcgZmlsZXMgb3ZlciBzdm46Ly8gdGVzdCcKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gZGNvbW1pdCBuZXcgZmlsZXMgb3ZlciBzdm46Ly8gdGVzdCcKIAogLiAuL2xpYi1naXQtc3ZuLnNoCiAKZGlmZiAtLWdpdCBhL3QvdDkxMTQtZ2l0LXN2bi1kY29tbWl0LW1lcmdlLnNoIGIvdC90OTExNC1naXQtc3ZuLWRjb21taXQtbWVyZ2Uuc2gKaW5kZXggNjFkNzc4MS4uMTdiMjg1NSAxMDA3NTUKLS0tIGEvdC90OTExNC1naXQtc3ZuLWRjb21taXQtbWVyZ2Uuc2gKKysrIGIvdC90OTExNC1naXQtc3ZuLWRjb21taXQtbWVyZ2Uuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoYykgMjAwNyBFcmljIFdvbmcKICMgQmFzZWQgb24gYSBzY3JpcHQgYnkgSm9ha2ltIFRqZXJubHVuZCA8am9ha2ltLnRqZXJubHVuZEB0cmFuc21vZGUuc2U+CiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gZGNvbW1pdCBoYW5kbGVzIG1lcmdlcycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gZGNvbW1pdCBoYW5kbGVzIG1lcmdlcycKIAogLiAuL2xpYi1naXQtc3ZuLnNoCiAKZGlmZiAtLWdpdCBhL3QvdDkxMTUtZ2l0LXN2bi1kY29tbWl0LWZ1bmt5LXJlbmFtZXMuc2ggYi90L3Q5MTE1LWdpdC1zdm4tZGNvbW1pdC1mdW5reS1yZW5hbWVzLnNoCmluZGV4IGYwZmJkM2EuLjliZTdhZWYgMTAwNzU1Ci0tLSBhL3QvdDkxMTUtZ2l0LXN2bi1kY29tbWl0LWZ1bmt5LXJlbmFtZXMuc2gKKysrIGIvdC90OTExNS1naXQtc3ZuLWRjb21taXQtZnVua3ktcmVuYW1lcy5zaApAQCAtMywxMiArMywxMiBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDcgRXJpYyBXb25nCiAKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBkY29tbWl0IGNhbiBjb21taXQgcmVuYW1lcyBvZiBmaWxlcyB3aXRoIHVnbHkgbmFtZXMnCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc3ZuIGRjb21taXQgY2FuIGNvbW1pdCByZW5hbWVzIG9mIGZpbGVzIHdpdGggdWdseSBuYW1lcycKIAogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvYWQgcmVwb3NpdG9yeSB3aXRoIHN0cmFuZ2UgbmFtZXMnICcKLQlzdm5hZG1pbiBsb2FkIC1xICIkcmF3c3ZucmVwbyIgPCAuLi90OTExNS9mdW5reS1uYW1lcy5kdW1wICYmCisJc3ZuYWRtaW4gbG9hZCAtcSAiJHJhd3N2bnJlcG8iIDwgIiRURVNUX0RJUkVDVE9SWSIvdDkxMTUvZnVua3ktbmFtZXMuZHVtcCAmJgogCXN0YXJ0X2h0dHBkIGd0aysKIAknCiAKQEAgLTc1LDcgKzc1LDcgQEAKIAkJZ2l0IHN2biBkY29tbWl0CiAJJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQtc3ZuIHJlYmFzZSB3b3JrcyBpbnNpZGUgYSBmcmVzaC1jbG9uZWQgcmVwb3NpdG9yeScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHN2biByZWJhc2Ugd29ya3MgaW5zaWRlIGEgZnJlc2gtY2xvbmVkIHJlcG9zaXRvcnknICcKIAljZCB0ZXN0LXJlYmFzZSAmJgogCQlnaXQgc3ZuIHJlYmFzZSAmJgogCQl0ZXN0IC1lIHRlc3QtcmViYXNlLW1haW4gJiYKZGlmZiAtLWdpdCBhL3QvdDkxMTYtZ2l0LXN2bi1sb2cuc2ggYi90L3Q5MTE2LWdpdC1zdm4tbG9nLnNoCmluZGV4IDRiMmNjODcuLmZkNmQxZDIgMTAwNzU1Ci0tLSBhL3QvdDkxMTYtZ2l0LXN2bi1sb2cuc2gKKysrIGIvdC90OTExNi1naXQtc3ZuLWxvZy5zaApAQCAtMyw3ICszLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA3IEVyaWMgV29uZwogIwogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGxvZyB0ZXN0cycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gbG9nIHRlc3RzJwogLiAuL2xpYi1naXQtc3ZuLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHJlcG9zaXRvcnkgYW5kIGltcG9ydCcgJwpAQCAtMTYsOCArMTYsOCBAQAogCQlkb25lICYmIFwKIAkJc3ZuIGltcG9ydCAtbSB0ZXN0IC4gIiRzdm5yZXBvIgogCQljZCAuLiAmJgotCWdpdC1zdm4gaW5pdCAiJHN2bnJlcG8iIC1UIHRydW5rIC1iIGJyYW5jaGVzIC10IHRhZ3MgJiYKLQlnaXQtc3ZuIGZldGNoICYmCisJZ2l0IHN2biBpbml0ICIkc3ZucmVwbyIgLVQgdHJ1bmsgLWIgYnJhbmNoZXMgLXQgdGFncyAmJgorCWdpdCBzdm4gZmV0Y2ggJiYKIAlnaXQgcmVzZXQgLS1oYXJkIHRydW5rICYmCiAJZWNobyBieWUgPj4gUkVBRE1FICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBieWUgJiYKZGlmZiAtLWdpdCBhL3QvdDkxMTctZ2l0LXN2bi1pbml0LWNsb25lLnNoIGIvdC90OTExNy1naXQtc3ZuLWluaXQtY2xvbmUuc2gKaW5kZXggN2E2ODliYi4uZGRlNDZjZCAxMDA3NTUKLS0tIGEvdC90OTExNy1naXQtc3ZuLWluaXQtY2xvbmUuc2gKKysrIGIvdC90OTExNy1naXQtc3ZuLWluaXQtY2xvbmUuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoYykgMjAwNyBFcmljIFdvbmcKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBpbml0L2Nsb25lIHRlc3RzJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBpbml0L2Nsb25lIHRlc3RzJwogCiAuIC4vbGliLWdpdC1zdm4uc2gKIApkaWZmIC0tZ2l0IGEvdC90OTExOC1naXQtc3ZuLWZ1bmt5LWJyYW5jaC1uYW1lcy5zaCBiL3QvdDkxMTgtZ2l0LXN2bi1mdW5reS1icmFuY2gtbmFtZXMuc2gKaW5kZXggNDNjZWI3NS4uN2E3YzEyOCAxMDA3NTUKLS0tIGEvdC90OTExOC1naXQtc3ZuLWZ1bmt5LWJyYW5jaC1uYW1lcy5zaAorKysgYi90L3Q5MTE4LWdpdC1zdm4tZnVua3ktYnJhbmNoLW5hbWVzLnNoCkBAIC0zLDcgKzMsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDcgRXJpYyBXb25nCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gZnVua3kgYnJhbmNoIG5hbWVzJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBmdW5reSBicmFuY2ggbmFtZXMnCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogIyBBYm8tVWViZXJuYWhtZSAoQnVnICM5OTQpCmRpZmYgLS1naXQgYS90L3Q5MTE5LWdpdC1zdm4taW5mby5zaCBiL3QvdDkxMTktZ2l0LXN2bi1pbmZvLnNoCmluZGV4IDVmZDM2YTEuLjI3ZGQ3YzIgMTAwNzU1Ci0tLSBhL3QvdDkxMTktZ2l0LXN2bi1pbmZvLnNoCisrKyBiL3QvdDkxMTktZ2l0LXN2bi1pbmZvLnNoCkBAIC0yLDE2ICsyLDE0IEBACiAjCiAjIENvcHlyaWdodCAoYykgMjAwNyBEYXZpZCBELiBLaWx6ZXIKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBpbmZvJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBpbmZvJwogCiAuIC4vbGliLWdpdC1zdm4uc2gKIAotc2V0IC1lCi0KICMgVGVzdGVkIHdpdGg6IHN2biwgdmVyc2lvbiAxLjQuNCAocjI1MTg4KQotdj1gc3ZuIC0tdmVyc2lvbiB8IHNlZCAtbiAtZSAncy9ec3ZuLCB2ZXJzaW9uIFwoMVwuNFwuWzAtOV1cKS4qJC9cMS9wJ2AKK3Y9YHN2biAtLXZlcnNpb24gfCBzZWQgLW4gLWUgJ3MvXnN2biwgdmVyc2lvbiBcKDFcLlswLTldKlwuWzAtOV0qXCkuKiQvXDEvcCdgCiBjYXNlICR2IGluCi0xLjQuKikKKzEuWzQ1XS4qKQogCTs7CiAqKQogCXNheSAic2tpcHBpbmcgc3ZuLWluZm8gdGVzdCAoU1ZOIHZlcnNpb246ICR2IG5vdCBzdXBwb3J0ZWQpIgpAQCAtMzYsNiArMzQsOCBAQAogCScgImBzdm4gaW5mbyAkMiB8IGdyZXAgJ15UZXh0IExhc3QgVXBkYXRlZDonYCIgIiQxIgogfQogCitxdW90ZWRfc3ZucmVwbz0iJChlY2hvICRzdm5yZXBvIHwgc2VkICdzLyAvJTIwLycpIgorCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZXBvc2l0b3J5IGFuZCBpbXBvcnQnICcKIAlta2RpciBpbmZvICYmCiAJY2QgaW5mbyAmJgpAQCAtNDcsODAgKzQ3LDkyIEBACiAJCWxuIC1zIGRpcmVjdG9yeSBzeW1saW5rLWRpcmVjdG9yeSAmJgogCQlzdm4gaW1wb3J0IC1tICJpbml0aWFsIiAuICIkc3ZucmVwbyIgJiYKIAljZCAuLiAmJgorCXN2biBjbyAiJHN2bnJlcG8iIHN2bndjICYmCisJY2Qgc3Zud2MgJiYKKwkJZWNobyBmb28gPiBmb28gJiYKKwkJc3ZuIGFkZCBmb28gJiYKKwkJc3ZuIGNvbW1pdCAtbSAiY2hhbmdlIG91dHNpZGUgZGlyZWN0b3J5IiAmJgorCQlzdm4gdXBkYXRlICYmCisJY2QgLi4gJiYKIAlta2RpciBnaXR3YyAmJgogCWNkIGdpdHdjICYmCi0JCWdpdC1zdm4gaW5pdCAiJHN2bnJlcG8iICYmCi0JCWdpdC1zdm4gZmV0Y2ggJiYKKwkJZ2l0IHN2biBpbml0ICIkc3ZucmVwbyIgJiYKKwkJZ2l0IHN2biBmZXRjaCAmJgogCWNkIC4uICYmCi0Jc3ZuIGNvICIkc3ZucmVwbyIgc3Zud2MgJiYKLQlwdG91Y2ggc3Zud2MvZmlsZSBnaXR3Yy9maWxlICYmCi0JcHRvdWNoIHN2bndjL2RpcmVjdG9yeSBnaXR3Yy9kaXJlY3RvcnkgJiYKLQlwdG91Y2ggc3Zud2Mvc3ltbGluay1maWxlIGdpdHdjL3N5bWxpbmstZmlsZSAmJgotCXB0b3VjaCBzdm53Yy9zeW1saW5rLWRpcmVjdG9yeSBnaXR3Yy9zeW1saW5rLWRpcmVjdG9yeQorCXB0b3VjaCBnaXR3Yy9maWxlIHN2bndjL2ZpbGUgJiYKKwlwdG91Y2ggZ2l0d2MvZGlyZWN0b3J5IHN2bndjL2RpcmVjdG9yeSAmJgorCXB0b3VjaCBnaXR3Yy9zeW1saW5rLWZpbGUgc3Zud2Mvc3ltbGluay1maWxlICYmCisJcHRvdWNoIGdpdHdjL3N5bWxpbmstZGlyZWN0b3J5IHN2bndjL3N5bWxpbmstZGlyZWN0b3J5CiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvJyAiCiAJKGNkIHN2bndjOyBzdm4gaW5mbykgPiBleHBlY3RlZC5pbmZvICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8pID4gYWN0dWFsLmluZm8gJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvIGFjdHVhbC5pbmZvCisJKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8pID4gYWN0dWFsLmluZm8gJiYKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvIGFjdHVhbC5pbmZvCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsJyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsKSIgPSAiJHN2bnJlcG8iCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsKSIgPSAiJHF1b3RlZF9zdm5yZXBvIgogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAuJyAiCiAJKGNkIHN2bndjOyBzdm4gaW5mbyAuKSA+IGV4cGVjdGVkLmluZm8tZG90ICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gLikgPiBhY3R1YWwuaW5mby1kb3QgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLWRvdCBhY3R1YWwuaW5mby1kb3QKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAuKSA+IGFjdHVhbC5pbmZvLWRvdCAmJgorCXRlc3RfY21wIGV4cGVjdGVkLmluZm8tZG90IGFjdHVhbC5pbmZvLWRvdAogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCAuJyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIC4pIiA9ICIkc3ZucmVwbyIKKwl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gLS11cmwgLikiID0gIiRxdW90ZWRfc3ZucmVwbyIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gZmlsZScgIgogCShjZCBzdm53Yzsgc3ZuIGluZm8gZmlsZSkgPiBleHBlY3RlZC5pbmZvLWZpbGUgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyBmaWxlKSA+IGFjdHVhbC5pbmZvLWZpbGUgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLWZpbGUgYWN0dWFsLmluZm8tZmlsZQorCShjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIGZpbGUpID4gYWN0dWFsLmluZm8tZmlsZSAmJgorCXRlc3RfY21wIGV4cGVjdGVkLmluZm8tZmlsZSBhY3R1YWwuaW5mby1maWxlCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIGZpbGUnICcKLQl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gLS11cmwgZmlsZSkiID0gIiRzdm5yZXBvL2ZpbGUiCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsIGZpbGUpIiA9ICIkcXVvdGVkX3N2bnJlcG8vZmlsZSIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gZGlyZWN0b3J5JyAiCiAJKGNkIHN2bndjOyBzdm4gaW5mbyBkaXJlY3RvcnkpID4gZXhwZWN0ZWQuaW5mby1kaXJlY3RvcnkgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyBkaXJlY3RvcnkpID4gYWN0dWFsLmluZm8tZGlyZWN0b3J5ICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1kaXJlY3RvcnkgYWN0dWFsLmluZm8tZGlyZWN0b3J5CisJKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gZGlyZWN0b3J5KSA+IGFjdHVhbC5pbmZvLWRpcmVjdG9yeSAmJgorCXRlc3RfY21wIGV4cGVjdGVkLmluZm8tZGlyZWN0b3J5IGFjdHVhbC5pbmZvLWRpcmVjdG9yeQorCSIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyBpbnNpZGUgZGlyZWN0b3J5JyAiCisJKGNkIHN2bndjL2RpcmVjdG9yeTsgc3ZuIGluZm8pID4gZXhwZWN0ZWQuaW5mby1pbnNpZGUtZGlyZWN0b3J5ICYmCisJKGNkIGdpdHdjL2RpcmVjdG9yeTsgZ2l0IHN2biBpbmZvKSA+IGFjdHVhbC5pbmZvLWluc2lkZS1kaXJlY3RvcnkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvLWluc2lkZS1kaXJlY3RvcnkgYWN0dWFsLmluZm8taW5zaWRlLWRpcmVjdG9yeQogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCBkaXJlY3RvcnknICcKLQl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gLS11cmwgZGlyZWN0b3J5KSIgPSAiJHN2bnJlcG8vZGlyZWN0b3J5IgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCBkaXJlY3RvcnkpIiA9ICIkcXVvdGVkX3N2bnJlcG8vZGlyZWN0b3J5IgogCScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyBzeW1saW5rLWZpbGUnICIKIAkoY2Qgc3Zud2M7IHN2biBpbmZvIHN5bWxpbmstZmlsZSkgPiBleHBlY3RlZC5pbmZvLXN5bWxpbmstZmlsZSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIHN5bWxpbmstZmlsZSkgPiBhY3R1YWwuaW5mby1zeW1saW5rLWZpbGUgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLXN5bWxpbmstZmlsZSBhY3R1YWwuaW5mby1zeW1saW5rLWZpbGUKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBzeW1saW5rLWZpbGUpID4gYWN0dWFsLmluZm8tc3ltbGluay1maWxlICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1zeW1saW5rLWZpbGUgYWN0dWFsLmluZm8tc3ltbGluay1maWxlCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIHN5bWxpbmstZmlsZScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBzeW1saW5rLWZpbGUpIiBcCi0JICAgICA9ICIkc3ZucmVwby9zeW1saW5rLWZpbGUiCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsIHN5bWxpbmstZmlsZSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9zeW1saW5rLWZpbGUiCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIHN5bWxpbmstZGlyZWN0b3J5JyAiCiAJKGNkIHN2bndjOyBzdm4gaW5mbyBzeW1saW5rLWRpcmVjdG9yeSkgXAogCQk+IGV4cGVjdGVkLmluZm8tc3ltbGluay1kaXJlY3RvcnkgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyBzeW1saW5rLWRpcmVjdG9yeSkgXAorCShjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIHN5bWxpbmstZGlyZWN0b3J5KSBcCiAJCT4gYWN0dWFsLmluZm8tc3ltbGluay1kaXJlY3RvcnkgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLXN5bWxpbmstZGlyZWN0b3J5IGFjdHVhbC5pbmZvLXN5bWxpbmstZGlyZWN0b3J5CisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1zeW1saW5rLWRpcmVjdG9yeSBhY3R1YWwuaW5mby1zeW1saW5rLWRpcmVjdG9yeQogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCBzeW1saW5rLWRpcmVjdG9yeScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBzeW1saW5rLWRpcmVjdG9yeSkiIFwKLQkgICAgID0gIiRzdm5yZXBvL3N5bWxpbmstZGlyZWN0b3J5IgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCBzeW1saW5rLWRpcmVjdG9yeSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9zeW1saW5rLWRpcmVjdG9yeSIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gYWRkZWQtZmlsZScgIgpAQCAtMTM0LDEzICsxNDYsMTMgQEAKIAkJc3ZuIGFkZCBhZGRlZC1maWxlID4gL2Rldi9udWxsICYmCiAJY2QgLi4gJiYKIAkoY2Qgc3Zud2M7IHN2biBpbmZvIGFkZGVkLWZpbGUpID4gZXhwZWN0ZWQuaW5mby1hZGRlZC1maWxlICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gYWRkZWQtZmlsZSkgPiBhY3R1YWwuaW5mby1hZGRlZC1maWxlICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1hZGRlZC1maWxlIGFjdHVhbC5pbmZvLWFkZGVkLWZpbGUKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBhZGRlZC1maWxlKSA+IGFjdHVhbC5pbmZvLWFkZGVkLWZpbGUgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvLWFkZGVkLWZpbGUgYWN0dWFsLmluZm8tYWRkZWQtZmlsZQogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCBhZGRlZC1maWxlJyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIGFkZGVkLWZpbGUpIiBcCi0JICAgICA9ICIkc3ZucmVwby9hZGRlZC1maWxlIgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCBhZGRlZC1maWxlKSIgXAorCSAgICAgPSAiJHF1b3RlZF9zdm5yZXBvL2FkZGVkLWZpbGUiCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIGFkZGVkLWRpcmVjdG9yeScgIgpAQCAtMTU1LDE0ICsxNjcsMTQgQEAKIAljZCAuLiAmJgogCShjZCBzdm53Yzsgc3ZuIGluZm8gYWRkZWQtZGlyZWN0b3J5KSBcCiAJCT4gZXhwZWN0ZWQuaW5mby1hZGRlZC1kaXJlY3RvcnkgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyBhZGRlZC1kaXJlY3RvcnkpIFwKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBhZGRlZC1kaXJlY3RvcnkpIFwKIAkJPiBhY3R1YWwuaW5mby1hZGRlZC1kaXJlY3RvcnkgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLWFkZGVkLWRpcmVjdG9yeSBhY3R1YWwuaW5mby1hZGRlZC1kaXJlY3RvcnkKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvLWFkZGVkLWRpcmVjdG9yeSBhY3R1YWwuaW5mby1hZGRlZC1kaXJlY3RvcnkKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgYWRkZWQtZGlyZWN0b3J5JyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIGFkZGVkLWRpcmVjdG9yeSkiIFwKLQkgICAgID0gIiRzdm5yZXBvL2FkZGVkLWRpcmVjdG9yeSIKKwl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gLS11cmwgYWRkZWQtZGlyZWN0b3J5KSIgXAorCSAgICAgPSAiJHF1b3RlZF9zdm5yZXBvL2FkZGVkLWRpcmVjdG9yeSIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gYWRkZWQtc3ltbGluay1maWxlJyAiCkBAIC0xNzcsMTUgKzE4OSwxNSBAQAogCXB0b3VjaCBnaXR3Yy9hZGRlZC1zeW1saW5rLWZpbGUgc3Zud2MvYWRkZWQtc3ltbGluay1maWxlICYmCiAJKGNkIHN2bndjOyBzdm4gaW5mbyBhZGRlZC1zeW1saW5rLWZpbGUpIFwKIAkJPiBleHBlY3RlZC5pbmZvLWFkZGVkLXN5bWxpbmstZmlsZSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIGFkZGVkLXN5bWxpbmstZmlsZSkgXAorCShjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIGFkZGVkLXN5bWxpbmstZmlsZSkgXAogCQk+IGFjdHVhbC5pbmZvLWFkZGVkLXN5bWxpbmstZmlsZSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tYWRkZWQtc3ltbGluay1maWxlIFwKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvLWFkZGVkLXN5bWxpbmstZmlsZSBcCiAJCSBhY3R1YWwuaW5mby1hZGRlZC1zeW1saW5rLWZpbGUKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgYWRkZWQtc3ltbGluay1maWxlJyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIGFkZGVkLXN5bWxpbmstZmlsZSkiIFwKLQkgICAgID0gIiRzdm5yZXBvL2FkZGVkLXN5bWxpbmstZmlsZSIKKwl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gLS11cmwgYWRkZWQtc3ltbGluay1maWxlKSIgXAorCSAgICAgPSAiJHF1b3RlZF9zdm5yZXBvL2FkZGVkLXN5bWxpbmstZmlsZSIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gYWRkZWQtc3ltbGluay1kaXJlY3RvcnknICIKQEAgLTIwMCwxNSArMjEyLDE1IEBACiAJcHRvdWNoIGdpdHdjL2FkZGVkLXN5bWxpbmstZGlyZWN0b3J5IHN2bndjL2FkZGVkLXN5bWxpbmstZGlyZWN0b3J5ICYmCiAJKGNkIHN2bndjOyBzdm4gaW5mbyBhZGRlZC1zeW1saW5rLWRpcmVjdG9yeSkgXAogCQk+IGV4cGVjdGVkLmluZm8tYWRkZWQtc3ltbGluay1kaXJlY3RvcnkgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyBhZGRlZC1zeW1saW5rLWRpcmVjdG9yeSkgXAorCShjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIGFkZGVkLXN5bWxpbmstZGlyZWN0b3J5KSBcCiAJCT4gYWN0dWFsLmluZm8tYWRkZWQtc3ltbGluay1kaXJlY3RvcnkgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLWFkZGVkLXN5bWxpbmstZGlyZWN0b3J5IFwKKwl0ZXN0X2NtcCBleHBlY3RlZC5pbmZvLWFkZGVkLXN5bWxpbmstZGlyZWN0b3J5IFwKIAkJIGFjdHVhbC5pbmZvLWFkZGVkLXN5bWxpbmstZGlyZWN0b3J5CiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIGFkZGVkLXN5bWxpbmstZGlyZWN0b3J5JyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIGFkZGVkLXN5bWxpbmstZGlyZWN0b3J5KSIgXAotCSAgICAgPSAiJHN2bnJlcG8vYWRkZWQtc3ltbGluay1kaXJlY3RvcnkiCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsIGFkZGVkLXN5bWxpbmstZGlyZWN0b3J5KSIgXAorCSAgICAgPSAiJHF1b3RlZF9zdm5yZXBvL2FkZGVkLXN5bWxpbmstZGlyZWN0b3J5IgogCScKIAogIyBUaGUgbmV4dCBmZXcgdGVzdHMgcmVwbGFjZSB0aGUgIlRleHQgTGFzdCBVcGRhdGVkIiB2YWx1ZSB3aXRoIGEKQEAgLTIyNiwxNSArMjM4LDE1IEBACiAJKGNkIHN2bndjOyBzdm4gaW5mbyBmaWxlKSB8CiAJc2VkIC1lICdzL15cKFRleHQgTGFzdCBVcGRhdGVkOlwpLiovXDEgVEVYVC1MQVNULVVQREFURUQtU1RSSU5HLycgXAogCQk+IGV4cGVjdGVkLmluZm8tZGVsZXRlZC1maWxlICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gZmlsZSkgfAorCShjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIGZpbGUpIHwKIAlzZWQgLWUgJ3MvXlwoVGV4dCBMYXN0IFVwZGF0ZWQ6XCkuKi9cMSBURVhULUxBU1QtVVBEQVRFRC1TVFJJTkcvJyBcCiAJCT4gYWN0dWFsLmluZm8tZGVsZXRlZC1maWxlICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby1kZWxldGVkLWZpbGUgYWN0dWFsLmluZm8tZGVsZXRlZC1maWxlCisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1kZWxldGVkLWZpbGUgYWN0dWFsLmluZm8tZGVsZXRlZC1maWxlCiAJIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIC0tdXJsIGZpbGUgKGRlbGV0ZWQpJyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIGZpbGUpIiBcCi0JICAgICA9ICIkc3ZucmVwby9maWxlIgorCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyAtLXVybCBmaWxlKSIgXAorCSAgICAgPSAiJHF1b3RlZF9zdm5yZXBvL2ZpbGUiCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIGRlbGV0ZWQtZGlyZWN0b3J5JyAiCkBAIC0yNDcsMTUgKzI1OSwxNSBAQAogCShjZCBzdm53Yzsgc3ZuIGluZm8gZGlyZWN0b3J5KSB8CiAJc2VkIC1lICdzL15cKFRleHQgTGFzdCBVcGRhdGVkOlwpLiovXDEgVEVYVC1MQVNULVVQREFURUQtU1RSSU5HLycgXAogCQk+IGV4cGVjdGVkLmluZm8tZGVsZXRlZC1kaXJlY3RvcnkgJiYKLQkoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyBkaXJlY3RvcnkpIHwKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBkaXJlY3RvcnkpIHwKIAlzZWQgLWUgJ3MvXlwoVGV4dCBMYXN0IFVwZGF0ZWQ6XCkuKi9cMSBURVhULUxBU1QtVVBEQVRFRC1TVFJJTkcvJyBcCiAJCT4gYWN0dWFsLmluZm8tZGVsZXRlZC1kaXJlY3RvcnkgJiYKLQlnaXQtZGlmZiBleHBlY3RlZC5pbmZvLWRlbGV0ZWQtZGlyZWN0b3J5IGFjdHVhbC5pbmZvLWRlbGV0ZWQtZGlyZWN0b3J5CisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1kZWxldGVkLWRpcmVjdG9yeSBhY3R1YWwuaW5mby1kZWxldGVkLWRpcmVjdG9yeQogCSIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyAtLXVybCBkaXJlY3RvcnkgKGRlbGV0ZWQpJyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIGRpcmVjdG9yeSkiIFwKLQkgICAgID0gIiRzdm5yZXBvL2RpcmVjdG9yeSIKKwl0ZXN0ICIkKGNkIGdpdHdjOyBnaXQgc3ZuIGluZm8gLS11cmwgZGlyZWN0b3J5KSIgXAorCSAgICAgPSAiJHF1b3RlZF9zdm5yZXBvL2RpcmVjdG9yeSIKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gZGVsZXRlZC1zeW1saW5rLWZpbGUnICIKQEAgLTI2OCwxNiArMjgwLDE2IEBACiAJKGNkIHN2bndjOyBzdm4gaW5mbyBzeW1saW5rLWZpbGUpIHwKIAlzZWQgLWUgJ3MvXlwoVGV4dCBMYXN0IFVwZGF0ZWQ6XCkuKi9cMSBURVhULUxBU1QtVVBEQVRFRC1TVFJJTkcvJyBcCiAJCT4gZXhwZWN0ZWQuaW5mby1kZWxldGVkLXN5bWxpbmstZmlsZSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIHN5bWxpbmstZmlsZSkgfAorCShjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIHN5bWxpbmstZmlsZSkgfAogCXNlZCAtZSAncy9eXChUZXh0IExhc3QgVXBkYXRlZDpcKS4qL1wxIFRFWFQtTEFTVC1VUERBVEVELVNUUklORy8nIFwKIAkJPiBhY3R1YWwuaW5mby1kZWxldGVkLXN5bWxpbmstZmlsZSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tZGVsZXRlZC1zeW1saW5rLWZpbGUgXAorCXRlc3RfY21wIGV4cGVjdGVkLmluZm8tZGVsZXRlZC1zeW1saW5rLWZpbGUgXAogCQkgYWN0dWFsLmluZm8tZGVsZXRlZC1zeW1saW5rLWZpbGUKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgc3ltbGluay1maWxlIChkZWxldGVkKScgJwotCXRlc3QgIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCBzeW1saW5rLWZpbGUpIiBcCi0JICAgICA9ICIkc3ZucmVwby9zeW1saW5rLWZpbGUiCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsIHN5bWxpbmstZmlsZSkiIFwKKwkgICAgID0gIiRxdW90ZWRfc3ZucmVwby9zeW1saW5rLWZpbGUiCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIGRlbGV0ZWQtc3ltbGluay1kaXJlY3RvcnknICIKQEAgLTI5MCwxNiArMzAyLDE2IEBACiAJKGNkIHN2bndjOyBzdm4gaW5mbyBzeW1saW5rLWRpcmVjdG9yeSkgfAogCXNlZCAtZSAncy9eXChUZXh0IExhc3QgVXBkYXRlZDpcKS4qL1wxIFRFWFQtTEFTVC1VUERBVEVELVNUUklORy8nIFwKIAkJID4gZXhwZWN0ZWQuaW5mby1kZWxldGVkLXN5bWxpbmstZGlyZWN0b3J5ICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gc3ltbGluay1kaXJlY3RvcnkpIHwKKwkoY2QgZ2l0d2M7IGdpdCBzdm4gaW5mbyBzeW1saW5rLWRpcmVjdG9yeSkgfAogCXNlZCAtZSAncy9eXChUZXh0IExhc3QgVXBkYXRlZDpcKS4qL1wxIFRFWFQtTEFTVC1VUERBVEVELVNUUklORy8nIFwKIAkJID4gYWN0dWFsLmluZm8tZGVsZXRlZC1zeW1saW5rLWRpcmVjdG9yeSAmJgotCWdpdC1kaWZmIGV4cGVjdGVkLmluZm8tZGVsZXRlZC1zeW1saW5rLWRpcmVjdG9yeSBcCisJdGVzdF9jbXAgZXhwZWN0ZWQuaW5mby1kZWxldGVkLXN5bWxpbmstZGlyZWN0b3J5IFwKIAkJIGFjdHVhbC5pbmZvLWRlbGV0ZWQtc3ltbGluay1kaXJlY3RvcnkKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgc3ltbGluay1kaXJlY3RvcnkgKGRlbGV0ZWQpJyAnCi0JdGVzdCAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIHN5bWxpbmstZGlyZWN0b3J5KSIgXAotCSAgICAgPSAiJHN2bnJlcG8vc3ltbGluay1kaXJlY3RvcnkiCisJdGVzdCAiJChjZCBnaXR3YzsgZ2l0IHN2biBpbmZvIC0tdXJsIHN5bWxpbmstZGlyZWN0b3J5KSIgXAorCSAgICAgPSAiJHF1b3RlZF9zdm5yZXBvL3N5bWxpbmstZGlyZWN0b3J5IgogCScKIAogIyBOT1RFOiBnaXQgZG9lcyBub3QgaGF2ZSB0aGUgY29uY2VwdCBvZiByZXBsYWNlZCBvYmplY3RzLApAQCAtMzA3LDgyICszMTksNTkgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5mbyB1bmtub3duLWZpbGUnICIKIAllY2hvIHR3byA+IGdpdHdjL3Vua25vd24tZmlsZSAmJgotCWNwIGdpdHdjL3Vua25vd24tZmlsZSBzdm53Yy91bmtub3duLWZpbGUgJiYKLQlwdG91Y2ggZ2l0d2MvdW5rbm93bi1maWxlIHN2bndjL3Vua25vd24tZmlsZSAmJgotCShjZCBzdm53Yzsgc3ZuIGluZm8gdW5rbm93bi1maWxlKSAyPiBleHBlY3RlZC5pbmZvLXVua25vd24tZmlsZSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIHVua25vd24tZmlsZSkgMj4gYWN0dWFsLmluZm8tdW5rbm93bi1maWxlICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby11bmtub3duLWZpbGUgYWN0dWFsLmluZm8tdW5rbm93bi1maWxlCisJKGNkIGdpdHdjOyB0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGluZm8gdW5rbm93bi1maWxlKSBcCisJCSAyPiBhY3R1YWwuaW5mby11bmtub3duLWZpbGUgJiYKKwlncmVwIHVua25vd24tZmlsZSBhY3R1YWwuaW5mby11bmtub3duLWZpbGUKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgdW5rbm93bi1maWxlJyAnCi0JdGVzdCAteiAiJChjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIC0tdXJsIHVua25vd24tZmlsZSBcCi0JCQkyPiAuLi9hY3R1YWwuaW5mby0tdXJsLXVua25vd24tZmlsZSkiICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby11bmtub3duLWZpbGUgYWN0dWFsLmluZm8tLXVybC11bmtub3duLWZpbGUKKwllY2hvIHR3byA+IGdpdHdjL3Vua25vd24tZmlsZSAmJgorCShjZCBnaXR3YzsgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBpbmZvIC0tdXJsIHVua25vd24tZmlsZSkgXAorCQkgMj4gYWN0dWFsLmluZm8tdXJsLXVua25vd24tZmlsZSAmJgorCWdyZXAgdW5rbm93bi1maWxlIGFjdHVhbC5pbmZvLXVybC11bmtub3duLWZpbGUKIAknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gdW5rbm93bi1kaXJlY3RvcnknICIKIAlta2RpciBnaXR3Yy91bmtub3duLWRpcmVjdG9yeSBzdm53Yy91bmtub3duLWRpcmVjdG9yeSAmJgotCXB0b3VjaCBnaXR3Yy91bmtub3duLWRpcmVjdG9yeSBzdm53Yy91bmtub3duLWRpcmVjdG9yeSAmJgotCXRvdWNoIGdpdHdjL3Vua25vd24tZGlyZWN0b3J5Ly5wbGFjZWhvbGRlciAmJgotCShjZCBzdm53Yzsgc3ZuIGluZm8gdW5rbm93bi1kaXJlY3RvcnkpIFwKLQkJMj4gZXhwZWN0ZWQuaW5mby11bmtub3duLWRpcmVjdG9yeSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIHVua25vd24tZGlyZWN0b3J5KSBcCi0JCTI+IGFjdHVhbC5pbmZvLXVua25vd24tZGlyZWN0b3J5ICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby11bmtub3duLWRpcmVjdG9yeSBhY3R1YWwuaW5mby11bmtub3duLWRpcmVjdG9yeQorCShjZCBnaXR3YzsgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBpbmZvIHVua25vd24tZGlyZWN0b3J5KSBcCisJCSAyPiBhY3R1YWwuaW5mby11bmtub3duLWRpcmVjdG9yeSAmJgorCWdyZXAgdW5rbm93bi1kaXJlY3RvcnkgYWN0dWFsLmluZm8tdW5rbm93bi1kaXJlY3RvcnkKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgdW5rbm93bi1kaXJlY3RvcnknICcKLQl0ZXN0IC16ICIkKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gLS11cmwgdW5rbm93bi1kaXJlY3RvcnkgXAotCQkJMj4gLi4vYWN0dWFsLmluZm8tLXVybC11bmtub3duLWRpcmVjdG9yeSkiICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby11bmtub3duLWRpcmVjdG9yeSBcCi0JCSBhY3R1YWwuaW5mby0tdXJsLXVua25vd24tZGlyZWN0b3J5CisJKGNkIGdpdHdjOyB0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGluZm8gLS11cmwgdW5rbm93bi1kaXJlY3RvcnkpIFwKKwkJIDI+IGFjdHVhbC5pbmZvLXVybC11bmtub3duLWRpcmVjdG9yeSAmJgorCWdyZXAgdW5rbm93bi1kaXJlY3RvcnkgYWN0dWFsLmluZm8tdXJsLXVua25vd24tZGlyZWN0b3J5CiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIHVua25vd24tc3ltbGluay1maWxlJyAiCiAJY2QgZ2l0d2MgJiYKIAkJbG4gLXMgdW5rbm93bi1maWxlIHVua25vd24tc3ltbGluay1maWxlICYmCiAJY2QgLi4gJiYKLQljZCBzdm53YyAmJgotCQlsbiAtcyB1bmtub3duLWZpbGUgdW5rbm93bi1zeW1saW5rLWZpbGUgJiYKLQljZCAuLiAmJgotCXB0b3VjaCBnaXR3Yy91bmtub3duLXN5bWxpbmstZmlsZSBzdm53Yy91bmtub3duLXN5bWxpbmstZmlsZSAmJgotCShjZCBzdm53Yzsgc3ZuIGluZm8gdW5rbm93bi1zeW1saW5rLWZpbGUpIFwKLQkJMj4gZXhwZWN0ZWQuaW5mby11bmtub3duLXN5bWxpbmstZmlsZSAmJgotCShjZCBnaXR3YzsgZ2l0LXN2biBpbmZvIHVua25vd24tc3ltbGluay1maWxlKSBcCi0JCTI+IGFjdHVhbC5pbmZvLXVua25vd24tc3ltbGluay1maWxlICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby11bmtub3duLXN5bWxpbmstZmlsZSBcCi0JCSBhY3R1YWwuaW5mby11bmtub3duLXN5bWxpbmstZmlsZQorCShjZCBnaXR3YzsgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBpbmZvIHVua25vd24tc3ltbGluay1maWxlKSBcCisJCSAyPiBhY3R1YWwuaW5mby11bmtub3duLXN5bWxpbmstZmlsZSAmJgorCWdyZXAgdW5rbm93bi1zeW1saW5rLWZpbGUgYWN0dWFsLmluZm8tdW5rbm93bi1zeW1saW5rLWZpbGUKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgdW5rbm93bi1zeW1saW5rLWZpbGUnICcKLQl0ZXN0IC16ICIkKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gLS11cmwgdW5rbm93bi1zeW1saW5rLWZpbGUgXAotCQkJMj4gLi4vYWN0dWFsLmluZm8tLXVybC11bmtub3duLXN5bWxpbmstZmlsZSkiICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby11bmtub3duLXN5bWxpbmstZmlsZSBcCi0JCSBhY3R1YWwuaW5mby0tdXJsLXVua25vd24tc3ltbGluay1maWxlCisJKGNkIGdpdHdjOyB0ZXN0X211c3RfZmFpbCBnaXQgc3ZuIGluZm8gLS11cmwgdW5rbm93bi1zeW1saW5rLWZpbGUpIFwKKwkJIDI+IGFjdHVhbC5pbmZvLXVybC11bmtub3duLXN5bWxpbmstZmlsZSAmJgorCWdyZXAgdW5rbm93bi1zeW1saW5rLWZpbGUgYWN0dWFsLmluZm8tdXJsLXVua25vd24tc3ltbGluay1maWxlCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmZvIHVua25vd24tc3ltbGluay1kaXJlY3RvcnknICIKIAljZCBnaXR3YyAmJgogCQlsbiAtcyB1bmtub3duLWRpcmVjdG9yeSB1bmtub3duLXN5bWxpbmstZGlyZWN0b3J5ICYmCiAJY2QgLi4gJiYKLQljZCBzdm53YyAmJgotCQlsbiAtcyB1bmtub3duLWRpcmVjdG9yeSB1bmtub3duLXN5bWxpbmstZGlyZWN0b3J5ICYmCi0JY2QgLi4gJiYKLQlwdG91Y2ggZ2l0d2MvdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSBcCi0JICAgICAgIHN2bndjL3Vua25vd24tc3ltbGluay1kaXJlY3RvcnkgJiYKLQkoY2Qgc3Zud2M7IHN2biBpbmZvIHVua25vd24tc3ltbGluay1kaXJlY3RvcnkpIFwKLQkJMj4gZXhwZWN0ZWQuaW5mby11bmtub3duLXN5bWxpbmstZGlyZWN0b3J5ICYmCi0JKGNkIGdpdHdjOyBnaXQtc3ZuIGluZm8gdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSkgXAotCQkyPiBhY3R1YWwuaW5mby11bmtub3duLXN5bWxpbmstZGlyZWN0b3J5ICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby11bmtub3duLXN5bWxpbmstZGlyZWN0b3J5IFwKLQkJIGFjdHVhbC5pbmZvLXVua25vd24tc3ltbGluay1kaXJlY3RvcnkKKwkoY2QgZ2l0d2M7IHRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gaW5mbyB1bmtub3duLXN5bWxpbmstZGlyZWN0b3J5KSBcCisJCSAyPiBhY3R1YWwuaW5mby11bmtub3duLXN5bWxpbmstZGlyZWN0b3J5ICYmCisJZ3JlcCB1bmtub3duLXN5bWxpbmstZGlyZWN0b3J5IGFjdHVhbC5pbmZvLXVua25vd24tc3ltbGluay1kaXJlY3RvcnkKIAkiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZm8gLS11cmwgdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeScgJwotCXRlc3QgLXogIiQoY2QgZ2l0d2M7IGdpdC1zdm4gaW5mbyAtLXVybCB1bmtub3duLXN5bWxpbmstZGlyZWN0b3J5IFwKLQkJCTI+IC4uL2FjdHVhbC5pbmZvLS11cmwtdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeSkiICYmCi0JZ2l0LWRpZmYgZXhwZWN0ZWQuaW5mby11bmtub3duLXN5bWxpbmstZGlyZWN0b3J5IFwKLQkJIGFjdHVhbC5pbmZvLS11cmwtdW5rbm93bi1zeW1saW5rLWRpcmVjdG9yeQorCShjZCBnaXR3YzsgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBpbmZvIC0tdXJsIHVua25vd24tc3ltbGluay1kaXJlY3RvcnkpIFwKKwkJIDI+IGFjdHVhbC5pbmZvLXVybC11bmtub3duLXN5bWxpbmstZGlyZWN0b3J5ICYmCisJZ3JlcCB1bmtub3duLXN5bWxpbmstZGlyZWN0b3J5IGFjdHVhbC5pbmZvLXVybC11bmtub3duLXN5bWxpbmstZGlyZWN0b3J5CiAJJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDkxMjAtZ2l0LXN2bi1jbG9uZS13aXRoLXBlcmNlbnQtZXNjYXBlcy5zaCBiL3QvdDkxMjAtZ2l0LXN2bi1jbG9uZS13aXRoLXBlcmNlbnQtZXNjYXBlcy5zaAppbmRleCA1OTc5ZTEzLi5lZjJjMDUyIDEwMDc1NQotLS0gYS90L3Q5MTIwLWdpdC1zdm4tY2xvbmUtd2l0aC1wZXJjZW50LWVzY2FwZXMuc2gKKysrIGIvdC90OTEyMC1naXQtc3ZuLWNsb25lLXdpdGgtcGVyY2VudC1lc2NhcGVzLnNoCkBAIC0zLDcgKzMsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDggS2V2aW4gQmFsbGFyZAogIwogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtc3ZuIGNsb25lIHdpdGggcGVyY2VudCBlc2NhcGVzJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBjbG9uZSB3aXRoIHBlcmNlbnQgZXNjYXBlcycKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBzdm5yZXBvJyAnCkBAIC0yMSw3ICsyMSw3IEBACiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBjbG9uZSB3aXRoIHBlcmNlbnQgZXNjYXBlcycgJwogCQlnaXQgc3ZuIGNsb25lICIkc3ZucmVwby9wciUyMGplY3QiIGNsb25lICYmCiAJCWNkIGNsb25lICYmCi0JCQlnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy9naXQtc3ZuICYmCisJCQlnaXQgcmV2LXBhcnNlIHJlZnMvJHtyZW1vdGVzX2dpdF9zdm59ICYmCiAJCWNkIC4uCiAJJwogZmkKZGlmZiAtLWdpdCBhL3QvdDkxMjEtZ2l0LXN2bi1mZXRjaC1yZW5hbWVkLWRpci5zaCBiL3QvdDkxMjEtZ2l0LXN2bi1mZXRjaC1yZW5hbWVkLWRpci5zaAppbmRleCA5OTIzMGIwLi4wMDBjYWQzIDEwMDc1NQotLS0gYS90L3Q5MTIxLWdpdC1zdm4tZmV0Y2gtcmVuYW1lZC1kaXIuc2gKKysrIGIvdC90OTEyMS1naXQtc3ZuLWZldGNoLXJlbmFtZWQtZGlyLnNoCkBAIC0zLDEyICszLDEyIEBACiAjIENvcHlyaWdodCAoYykgMjAwOCBTYW50aG9zaCBLdW1hciBNYW5pCiAKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBjYW4gZmV0Y2ggcmVuYW1lZCBkaXJlY3RvcmllcycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gY2FuIGZldGNoIHJlbmFtZWQgZGlyZWN0b3JpZXMnCiAKIC4gLi9saWItZ2l0LXN2bi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2FkIHJlcG9zaXRvcnkgd2l0aCByZW5hbWVkIGRpcmVjdG9yeScgJwotCXN2bmFkbWluIGxvYWQgLXEgIiRyYXdzdm5yZXBvIiA8IC4uL3Q5MTIxL3JlbmFtZWQtZGlyLmR1bXAKKwlzdm5hZG1pbiBsb2FkIC1xICIkcmF3c3ZucmVwbyIgPCAiJFRFU1RfRElSRUNUT1JZIi90OTEyMS9yZW5hbWVkLWRpci5kdW1wCiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0IGFuZCBmZXRjaCByZXBvc2l0b3J5JyAnCmRpZmYgLS1naXQgYS90L3Q5MTIyLWdpdC1zdm4tYXV0aG9yLnNoIGIvdC90OTEyMi1naXQtc3ZuLWF1dGhvci5zaAppbmRleCAxMTkwNTc2Li4xYjFjZjQ3IDEwMDc1NQotLS0gYS90L3Q5MTIyLWdpdC1zdm4tYXV0aG9yLnNoCisrKyBiL3QvdDkxMjItZ2l0LXN2bi1hdXRob3Iuc2gKQEAgLTEzLDcgKzEzLDcgQEAKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludGVyYWN0IHdpdGggaXQgdmlhIGdpdC1zdm4nICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludGVyYWN0IHdpdGggaXQgdmlhIGdpdCBzdm4nICcKIAlta2RpciB3b3JrLmdpdCAmJgogCSgKIAkJY2Qgd29yay5naXQgJiYKZGlmZiAtLWdpdCBhL3QvdDkxMjMtZ2l0LXN2bi1yZWJ1aWxkLXdpdGgtcmV3cml0ZXJvb3Quc2ggYi90L3Q5MTIzLWdpdC1zdm4tcmVidWlsZC13aXRoLXJld3JpdGVyb290LnNoCmluZGV4IGMxODg3OGYuLmNmMDQxNTIgMTAwNzU1Ci0tLSBhL3QvdDkxMjMtZ2l0LXN2bi1yZWJ1aWxkLXdpdGgtcmV3cml0ZXJvb3Quc2gKKysrIGIvdC90OTEyMy1naXQtc3ZuLXJlYnVpbGQtd2l0aC1yZXdyaXRlcm9vdC5zaApAQCAtMywyMSArMywyMSBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDggSmFuIEtyw7xnZXIKICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biByZXNwZWN0cyByZXdyaXRlUm9vdCBkdXJpbmcgcmVidWlsZCcKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gcmVzcGVjdHMgcmV3cml0ZVJvb3QgZHVyaW5nIHJlYnVpbGQnCiAKIC4gLi9saWItZ2l0LXN2bi5zaAogCiBta2RpciBpbXBvcnQKIGNkIGltcG9ydAogCXRvdWNoIGZvbwotCXN2biBpbXBvcnQgLW0gJ2ltcG9ydCBmb3IgZ2l0LXN2bicgLiAiJHN2bnJlcG8iID4vZGV2L251bGwKKwlzdm4gaW1wb3J0IC1tICdpbXBvcnQgZm9yIGdpdCBzdm4nIC4gIiRzdm5yZXBvIiA+L2Rldi9udWxsCiBjZCAuLgogcm0gLXJmIGltcG9ydAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0LCBmZXRjaCBhbmQgY2hlY2tvdXQgcmVwb3NpdG9yeScgJwogCWdpdCBzdm4gaW5pdCAtLXJld3JpdGUtcm9vdD1odHRwOi8vaW52YWxpZC5pbnZhbGlkLyAiJHN2bnJlcG8iICYmCiAJZ2l0IHN2biBmZXRjaAotCWdpdCBjaGVja291dCAtYiBteWJyYW5jaCByZW1vdGVzL2dpdC1zdm4KKwlnaXQgY2hlY2tvdXQgLWIgbXlicmFuY2ggJHtyZW1vdGVzX2dpdF9zdm59CiAJJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdmUgcmV2X21hcCcgJwpkaWZmIC0tZ2l0IGEvdC90OTEyNC1naXQtc3ZuLWRjb21taXQtYXV0by1wcm9wcy5zaCBiL3QvdDkxMjQtZ2l0LXN2bi1kY29tbWl0LWF1dG8tcHJvcHMuc2gKaW5kZXggODIyM2M1OS4uMjYzZGJmNSAxMDA3NTUKLS0tIGEvdC90OTEyNC1naXQtc3ZuLWRjb21taXQtYXV0by1wcm9wcy5zaAorKysgYi90L3Q5MTI0LWdpdC1zdm4tZGNvbW1pdC1hdXRvLXByb3BzLnNoCkBAIC0yLDcgKzIsNyBAQAogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDggQnJhZCBLaW5nCiAKLXRlc3RfZGVzY3JpcHRpb249J2dpdC1zdm4gZGNvbW1pdCBob25vcnMgYXV0by1wcm9wcycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gZGNvbW1pdCBob25vcnMgYXV0by1wcm9wcycKIAogLiAuL2xpYi1naXQtc3ZuLnNoCiAKQEAgLTE2LDI2ICsxNiwyNCBAQAogRU9GCiB9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgZ2l0LXN2bicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSBnaXQgc3ZuJyAnCiAJbWtkaXIgaW1wb3J0ICYmCiAJKAogCQljZCBpbXBvcnQgJiYKIAkJZWNobyBmb28gPmZvbyAmJgotCQlzdm4gaW1wb3J0IC1tICJpbXBvcnQgZm9yIGdpdC1zdm4iIC4gIiRzdm5yZXBvIgorCQlzdm4gaW1wb3J0IC1tICJpbXBvcnQgZm9yIGdpdCBzdm4iIC4gIiRzdm5yZXBvIgogCSkgJiYKIAlybSAtcmYgaW1wb3J0ICYmCi0JZ2l0LXN2biBpbml0ICIkc3ZucmVwbyIKLQlnaXQtc3ZuIGZldGNoCisJZ2l0IHN2biBpbml0ICIkc3ZucmVwbyIKKwlnaXQgc3ZuIGZldGNoCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2VuYWJsZSBhdXRvLXByb3BzIGNvbmZpZycgJwotCWNkICIkZ2l0dGVzdHJlcG8iICYmCiAJbWtkaXIgdXNlciAmJgogCWdlbmVyYXRlX2F1dG9fcHJvcHMgeWVzID51c2VyL2NvbmZpZwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgZmlsZXMgbWF0Y2hpbmcgYXV0by1wcm9wcycgJwotCWNkICIkZ2l0dGVzdHJlcG8iICYmCiAJZWNobyAiIyEkU0hFTExfUEFUSCIgPmV4ZWMxLnNoICYmCiAJY2htb2QgK3ggZXhlYzEuc2ggJiYKIAllY2hvICJoZWxsbyIgPmhlbGxvLnR4dCAmJgpAQCAtNDYsMTIgKzQ0LDEwIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Rpc2FibGUgYXV0by1wcm9wcyBjb25maWcnICcKLQljZCAiJGdpdHRlc3RyZXBvIiAmJgogCWdlbmVyYXRlX2F1dG9fcHJvcHMgbm8gPnVzZXIvY29uZmlnCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBmaWxlcyBtYXRjaGluZyBkaXNhYmxlZCBhdXRvLXByb3BzJyAnCi0JY2QgIiRnaXR0ZXN0cmVwbyIgJiYKIAllY2hvICIjJFNIRUxMX1BBVEgiID5leGVjMi5zaCAmJgogCWNobW9kICt4IGV4ZWMyLnNoICYmCiAJZWNobyAid29ybGQiID53b3JsZC50eHQgJiYKQEAgLTYyLDYgKzU4LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgcmVzdWx0aW5nIHN2biByZXBvc2l0b3J5JyAnCisoCiAJbWtkaXIgd29yayAmJgogCWNkIHdvcmsgJiYKIAlzdm4gY28gIiRzdm5yZXBvIiAmJgpAQCAtODEsNiArNzgsMjQgQEAKIAl0ZXN0ICJ4JChzdm4gcHJvcGdldCBzdm46bWltZS10eXBlIHdvcmxkLnR4dCkiID0gIngiICYmCiAJdGVzdCAieCQoc3ZuIHByb3BnZXQgc3ZuOmVvbC1zdHlsZSB3b3JsZC50eHQpIiA9ICJ4IiAmJgogCXRlc3QgIngkKHN2biBwcm9wZ2V0IHN2bjptaW1lLXR5cGUgem90KSIgPSAieCIKKykKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgcmVuYW1lZCBmaWxlJyAnCisJdGVzdCAtZCB1c2VyICYmCisJZ2VuZXJhdGVfYXV0b19wcm9wcyB5ZXMgPiB1c2VyL2NvbmZpZyAmJgorCWdpdCBtdiBmb28gZm9vLnNoICYmCisJZ2l0IGNvbW1pdCAtbSAiZm9vID0+IGZvby5zaCIgJiYKKwlnaXQgc3ZuIGRjb21taXQgLS1jb25maWctZGlyPXVzZXIgJiYKKwkoCisJCWNkIHdvcmsvc3ZucmVwbyAmJgorCQlzdm4gdXAgJiYKKwkJdGVzdCAhIC1lIGZvbyAmJgorCQl0ZXN0IC1lIGZvby5zaCAmJgorCQl0ZXN0ICJ4JChzdm4gcHJvcGdldCBzdm46bWltZS10eXBlIGZvby5zaCkiID0gXAorCQkgICAgICJ4YXBwbGljYXRpb24veC1zaGVsbHNjcmlwdCIgJiYKKwkJdGVzdCAieCQoc3ZuIHByb3BnZXQgc3ZuOmVvbC1zdHlsZSBmb28uc2gpIiA9ICJ4TEYiCisJKQogJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDkxMjUtZ2l0LXN2bi1tdWx0aS1nbG9iLWJyYW5jaC1uYW1lcy5zaCBiL3QvdDkxMjUtZ2l0LXN2bi1tdWx0aS1nbG9iLWJyYW5jaC1uYW1lcy5zaAppbmRleCA2YjYyYjUyLi40NzVjNzUxIDEwMDc1NQotLS0gYS90L3Q5MTI1LWdpdC1zdm4tbXVsdGktZ2xvYi1icmFuY2gtbmFtZXMuc2gKKysrIGIvdC90OTEyNS1naXQtc3ZuLW11bHRpLWdsb2ItYnJhbmNoLW5hbWVzLnNoCkBAIC0xLDcgKzEsNyBAQAogIyEvYmluL3NoCiAjIENvcHlyaWdodCAoYykgMjAwOCBNYXJjdXMgR3JpZXAKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LXN2biBtdWx0aS1nbG9iIGJyYW5jaCBuYW1lcycKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gbXVsdGktZ2xvYiBicmFuY2ggbmFtZXMnCiAuIC4vbGliLWdpdC1zdm4uc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgc3ZucmVwbycgJwpkaWZmIC0tZ2l0IGEvdC90OTEyNy1naXQtc3ZuLXBhcnRpYWwtcmVidWlsZC5zaCBiL3QvdDkxMjctZ2l0LXN2bi1wYXJ0aWFsLXJlYnVpbGQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODc2OTZhOQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDkxMjctZ2l0LXN2bi1wYXJ0aWFsLXJlYnVpbGQuc2gKQEAgLTAsMCArMSw1OSBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAwOCBEZXNraW4gTWlsbGVyCisjCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gcGFydGlhbC1yZWJ1aWxkIHRlc3RzJworLiAuL2xpYi1naXQtc3ZuLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgc3ZucmVwbycgJworCW1rZGlyIGltcG9ydCAmJgorCSgKKwkJY2QgaW1wb3J0ICYmCisJCW1rZGlyIHRydW5rIGJyYW5jaGVzIHRhZ3MgJiYKKwkJY2QgdHJ1bmsgJiYKKwkJZWNobyBmb28gPiBmb28gJiYKKwkJY2QgLi4gJiYKKwkJc3ZuIGltcG9ydCAtbSAiaW1wb3J0IGZvciBnaXQtc3ZuIiAuICIkc3ZucmVwbyIgPi9kZXYvbnVsbCAmJgorCQlzdm4gY29weSAiJHN2bnJlcG8iL3RydW5rICIkc3ZucmVwbyIvYnJhbmNoZXMvYSBcCisJCQktbSAiY3JlYXRlZCBicmFuY2ggYSIgJiYKKwkJY2QgLi4gJiYKKwkJcm0gLXJmIGltcG9ydCAmJgorCQlzdm4gY28gIiRzdm5yZXBvIi90cnVuayB0cnVuayAmJgorCQljZCB0cnVuayAmJgorCQllY2hvIGJhciA+PiBmb28gJiYKKwkJc3ZuIGNpIC1tICJ1cGRhdGVkIHRydW5rIiAmJgorCQljZCAuLiAmJgorCQlzdm4gY28gIiRzdm5yZXBvIi9icmFuY2hlcy9hIGEgJiYKKwkJY2QgYSAmJgorCQllY2hvIGJheiA+PiBhICYmCisJCXN2biBhZGQgYSAmJgorCQlzdm4gY2kgLW0gInVwZGF0ZWQgYSIgJiYKKwkJY2QgLi4gJiYKKwkJZ2l0IHN2biBpbml0IC0tc3RkbGF5b3V0ICIkc3ZucmVwbyIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ltcG9ydCBhbiBlYXJseSBTVk4gcmV2aXNpb24gaW50byBnaXQnICcKKwlnaXQgc3ZuIGZldGNoIC1yMToyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21ha2UgZnVsbCBnaXQgbWlycm9yIG9mIFNWTicgJworCW1rZGlyIG1pcnJvciAmJgorCSgKKwkJY2QgbWlycm9yICYmCisJCWdpdCBpbml0ICYmCisJCWdpdCBzdm4gaW5pdCAtLXN0ZGxheW91dCAiJHN2bnJlcG8iICYmCisJCWdpdCBzdm4gZmV0Y2ggJiYKKwkJY2QgLi4KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIGZyb20gZ2l0IG1pcnJvciBhbmQgcGFydGlhbC1yZWJ1aWxkJyAnCisJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUub3JpZ2luLnVybCAiZmlsZTovLyRQV0QvbWlycm9yLy5naXQiICYmCisJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUub3JpZ2luLmZldGNoIHJlZnMvcmVtb3Rlcy8qOnJlZnMvcmVtb3Rlcy8qICYmCisJZ2l0IGZldGNoIG9yaWdpbiAmJgorCWdpdCBzdm4gZmV0Y2gKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MTI4LWdpdC1zdm4tY21kLWJyYW5jaC5zaCBiL3QvdDkxMjgtZ2l0LXN2bi1jbWQtYnJhbmNoLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI1MmRhYTcKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q5MTI4LWdpdC1zdm4tY21kLWJyYW5jaC5zaApAQCAtMCwwICsxLDc4IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4IERlc2tpbiBNaWxsZXIKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBwYXJ0aWFsLXJlYnVpbGQgdGVzdHMnCisuIC4vbGliLWdpdC1zdm4uc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdGlhbGl6ZSBzdm5yZXBvJyAnCisJbWtkaXIgaW1wb3J0ICYmCisJKAorCQljZCBpbXBvcnQgJiYKKwkJbWtkaXIgdHJ1bmsgYnJhbmNoZXMgdGFncyAmJgorCQljZCB0cnVuayAmJgorCQllY2hvIGZvbyA+IGZvbyAmJgorCQljZCAuLiAmJgorCQlzdm4gaW1wb3J0IC1tICJpbXBvcnQgZm9yIGdpdC1zdm4iIC4gIiRzdm5yZXBvIiA+L2Rldi9udWxsICYmCisJCWNkIC4uICYmCisJCXJtIC1yZiBpbXBvcnQgJiYKKwkJc3ZuIGNvICIkc3ZucmVwbyIvdHJ1bmsgdHJ1bmsgJiYKKwkJY2QgdHJ1bmsgJiYKKwkJZWNobyBiYXIgPj4gZm9vICYmCisJCXN2biBjaSAtbSAidXBkYXRlZCB0cnVuayIgJiYKKwkJY2QgLi4gJiYKKwkJcm0gLXJmIHRydW5rCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbXBvcnQgaW50byBnaXQnICcKKwlnaXQgc3ZuIGluaXQgLS1zdGRsYXlvdXQgIiRzdm5yZXBvIiAmJgorCWdpdCBzdm4gZmV0Y2ggJiYKKwlnaXQgY2hlY2tvdXQgcmVtb3Rlcy90cnVuaworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgc3ZuIGJyYW5jaCB0ZXN0cycgJworCWdpdCBzdm4gYnJhbmNoIGEgJiYKKwliYXNlPSQoZ2l0IHJldi1wYXJzZSBIRUFEOikgJiYKKwl0ZXN0ICRiYXNlID0gJChnaXQgcmV2LXBhcnNlIHJlbW90ZXMvYTopICYmCisJZ2l0IHN2biBicmFuY2ggLW0gImNyZWF0ZWQgYnJhbmNoIGIgYmxhaCIgYiAmJgorCXRlc3QgJGJhc2UgPSAkKGdpdCByZXYtcGFyc2UgcmVtb3Rlcy9iOikgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC1tICJubyBicmFuY2huYW1lIiAmJgorCWdpdCBzdm4gYnJhbmNoIC1uIGMgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIHJlbW90ZXMvYyAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gYnJhbmNoIGEgJiYKKwlnaXQgc3ZuIGJyYW5jaCAtdCB0YWcxICYmCisJdGVzdCAkYmFzZSA9ICQoZ2l0IHJldi1wYXJzZSByZW1vdGVzL3RhZ3MvdGFnMTopICYmCisJZ2l0IHN2biBicmFuY2ggLS10YWcgdGFnMiAmJgorCXRlc3QgJGJhc2UgPSAkKGdpdCByZXYtcGFyc2UgcmVtb3Rlcy90YWdzL3RhZzI6KSAmJgorCWdpdCBzdm4gdGFnIHRhZzMgJiYKKwl0ZXN0ICRiYXNlID0gJChnaXQgcmV2LXBhcnNlIHJlbW90ZXMvdGFncy90YWczOikgJiYKKwlnaXQgc3ZuIHRhZyAtbSAiY3JlYXRlZCB0YWc0IGZvbyIgdGFnNCAmJgorCXRlc3QgJGJhc2UgPSAkKGdpdCByZXYtcGFyc2UgcmVtb3Rlcy90YWdzL3RhZzQ6KSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdm4gdGFnIC1tICJubyB0YWduYW1lIiAmJgorCWdpdCBzdm4gdGFnIC1uIHRhZzUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIHJlbW90ZXMvdGFncy90YWc1ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biB0YWcgdGFnMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFuY2ggdXNlcyBjb3JyZWN0IHN2bi1yZW1vdGUnICcKKwkoc3ZuIGNvICIkc3ZucmVwbyIgc3ZuICYmCisJY2Qgc3ZuICYmCisJbWtkaXIgbWlycm9yICYmCisJc3ZuIGFkZCBtaXJyb3IgJiYKKwlzdm4gY29weSB0cnVuayBtaXJyb3IvICYmCisJc3ZuIGNvcHkgdGFncyBtaXJyb3IvICYmCisJc3ZuIGNvcHkgYnJhbmNoZXMgbWlycm9yLyAmJgorCXN2biBjaSAtbSAibWFkZSBtaXJyb3IiICkgJiYKKwlybSAtcmYgc3ZuICYmCisJZ2l0IHN2biBpbml0IC1zIC1SIG1pcnJvciAtLXByZWZpeD1taXJyb3IvICIkc3ZucmVwbyIvbWlycm9yICYmCisJZ2l0IHN2biBmZXRjaCAtUiBtaXJyb3IgJiYKKwlnaXQgY2hlY2tvdXQgbWlycm9yL3RydW5rICYmCisJYmFzZT0kKGdpdCByZXYtcGFyc2UgSEVBRDopICYmCisJZ2l0IHN2biBicmFuY2ggLW0gImJyYW5jaCBpbiBtaXJyb3IiIGQgJiYKKwl0ZXN0ICRiYXNlID0gJChnaXQgcmV2LXBhcnNlIHJlbW90ZXMvbWlycm9yL2Q6KSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgcmVtb3Rlcy9kCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTEyOS1naXQtc3ZuLWkxOG4tY29tbWl0ZW5jb2Rpbmcuc2ggYi90L3Q5MTI5LWdpdC1zdm4taTE4bi1jb21taXRlbmNvZGluZy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44YTlkZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvdC90OTEyOS1naXQtc3ZuLWkxOG4tY29tbWl0ZW5jb2Rpbmcuc2gKQEAgLTAsMCArMSw4NCBAQAorIyEvYmluL3NoCisjCisjIENvcHlyaWdodCAoYykgMjAwOCBFcmljIFdvbmcKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBob25vcnMgaTE4bi5jb21taXRFbmNvZGluZyBpbiBjb25maWcnCisKKy4gLi9saWItZ2l0LXN2bi5zaAorCitjb21wYXJlX2dpdF9oZWFkX3dpdGggKCkgeworCW5yPWB3YyAtbCA8ICIkMSJgCisJYT03CisJYj0kKCgkYSArICRuciAtIDEpKQorCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgIiRhLCR7Yn1wIiA+Y3VycmVudCAmJgorCXRlc3RfY21wIGN1cnJlbnQgIiQxIgorfQorCitjb21wYXJlX3N2bl9oZWFkX3dpdGggKCkgeworCUxDX0FMTD1lbl9VUy5VVEYtOCBzdm4gbG9nIC0tbGltaXQgMSBgZ2l0IHN2biBpbmZvIC0tdXJsYCB8IFwKKwkJc2VkIC1lIDEsM2QgLWUgIi9eLVx7MSxcfVwkL2QiID5jdXJyZW50ICYmCisJdGVzdF9jbXAgY3VycmVudCAiJDEiCit9CisKK2ZvciBIIGluIElTTy04ODU5LTEgRVVDSlAgSVNPLTIwMjItSlAKK2RvCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJEggc2V0dXAiICcKKwkJbWtkaXIgJEggJiYKKwkJc3ZuIGltcG9ydCAtbSAiJEggdGVzdCIgJEggIiRzdm5yZXBvIi8kSCAmJgorCQlnaXQgc3ZuIGNsb25lICIkc3ZucmVwbyIvJEggJEgKKwknCitkb25lCisKK2ZvciBIIGluIElTTy04ODU5LTEgRVVDSlAgSVNPLTIwMjItSlAKK2RvCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJEggY29tbWl0IG9uIGdpdCBzaWRlIiAnCisJKAorCQljZCAkSCAmJgorCQlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgJEggJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIHQgcmVmcy9yZW1vdGVzL2dpdC1zdm4gJiYKKwkJZWNobyAkSCA+RiAmJgorCQlnaXQgYWRkIEYgJiYKKwkJZ2l0IGNvbW1pdCAtYSAtRiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8kSC50eHQgJiYKKwkJRT0kKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgInMvXmVuY29kaW5nIC8vcCIpICYmCisJCXRlc3QgInokRSIgPSAieiRIIgorCQljb21wYXJlX2dpdF9oZWFkX3dpdGggIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvJEgudHh0CisJKQorCScKK2RvbmUKKworZm9yIEggaW4gSVNPLTg4NTktMSBFVUNKUCBJU08tMjAyMi1KUAorZG8KKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkSCBkY29tbWl0IHRvIHN2biIgJworCSgKKwkJY2QgJEggJiYKKwkJZ2l0IHN2biBkY29tbWl0ICYmCisJCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IGdyZXAgZ2l0LXN2bi1pZDogJiYKKwkJRT0kKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgInMvXmVuY29kaW5nIC8vcCIpICYmCisJCXRlc3QgInokRSIgPSAieiRIIiAmJgorCQljb21wYXJlX2dpdF9oZWFkX3dpdGggIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvJEgudHh0CisJKQorCScKK2RvbmUKKworaWYgbG9jYWxlIC1hIHxncmVwIC1xIGVuX1VTLnV0Zjg7IHRoZW4KKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdJU08tODg1OS0xIHNob3VsZCBtYXRjaCBVVEYtOCBpbiBzdm4nICcKKwkoCisJCWNkIElTTy04ODU5LTEgJiYKKwkJY29tcGFyZV9zdm5faGVhZF93aXRoICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLzEtVVRGLTgudHh0CisJKQorCScKKworCWZvciBIIGluIEVVQ0pQIElTTy0yMDIyLUpQCisJZG8KKwkJdGVzdF9leHBlY3Rfc3VjY2VzcyAnJEggc2hvdWxkIG1hdGNoIFVURi04IGluIHN2bicgJworCQkoCisJCQljZCAkSCAmJgorCQkJY29tcGFyZV9zdm5faGVhZF93aXRoICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLzItVVRGLTgudHh0CisJCSkKKwkJJworCWRvbmUKK2Vsc2UKKwlzYXkgIlVURi04IGxvY2FsZSBub3QgYXZhaWxhYmxlLCB0ZXN0IHNraXBwZWQiCitmaQorCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDkyMDAtZ2l0LWN2c2V4cG9ydGNvbW1pdC5zaCBiL3QvdDkyMDAtZ2l0LWN2c2V4cG9ydGNvbW1pdC5zaAppbmRleCAzZTMyZTg0Li4yNDVhN2MzIDEwMDc1NQotLS0gYS90L3Q5MjAwLWdpdC1jdnNleHBvcnRjb21taXQuc2gKKysrIGIvdC90OTIwMC1naXQtY3ZzZXhwb3J0Y29tbWl0LnNoCkBAIC05LDcgKzksNyBAQAogY3ZzID4vZGV2L251bGwgMj4mMQogaWYgdGVzdCAkPyAtbmUgMQogdGhlbgotICAgIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NraXBwaW5nIGdpdC1jdnNleHBvcnRjb21taXQgdGVzdHMsIGN2cyBub3QgZm91bmQnIDoKKyAgICB0ZXN0X2V4cGVjdF9zdWNjZXNzICdza2lwcGluZyBnaXQgY3ZzZXhwb3J0Y29tbWl0IHRlc3RzLCBjdnMgbm90IGZvdW5kJyA6CiAgICAgdGVzdF9kb25lCiAgICAgZXhpdAogZmkKQEAgLTQ1LDggKzQ1LDggQEAKICAgICAnbWtkaXIgQSBCIEMgRCBFIEYgJiYKICAgICAgZWNobyBoZWxsbzEgPkEvbmV3ZmlsZTEudHh0ICYmCiAgICAgIGVjaG8gaGVsbG8yID5CL25ld2ZpbGUyLnR4dCAmJgotICAgICBjcCAuLi90ZXN0OTIwMGEucG5nIEMvbmV3ZmlsZTMucG5nICYmCi0gICAgIGNwIC4uL3Rlc3Q5MjAwYS5wbmcgRC9uZXdmaWxlNC5wbmcgJiYKKyAgICAgY3AgIiRURVNUX0RJUkVDVE9SWSIvdGVzdDkyMDBhLnBuZyBDL25ld2ZpbGUzLnBuZyAmJgorICAgICBjcCAiJFRFU1RfRElSRUNUT1JZIi90ZXN0OTIwMGEucG5nIEQvbmV3ZmlsZTQucG5nICYmCiAgICAgIGdpdCBhZGQgQS9uZXdmaWxlMS50eHQgJiYKICAgICAgZ2l0IGFkZCBCL25ld2ZpbGUyLnR4dCAmJgogICAgICBnaXQgYWRkIEMvbmV3ZmlsZTMucG5nICYmCkBAIC03MSw4ICs3MSw4IEBACiAgICAgIHJtIC1mIEIvbmV3ZmlsZTIudHh0ICYmCiAgICAgIHJtIC1mIEMvbmV3ZmlsZTMucG5nICYmCiAgICAgIGVjaG8gSGVsbG81ICA+RS9uZXdmaWxlNS50eHQgJiYKLSAgICAgY3AgLi4vdGVzdDkyMDBiLnBuZyBEL25ld2ZpbGU0LnBuZyAmJgotICAgICBjcCAuLi90ZXN0OTIwMGEucG5nIEYvbmV3ZmlsZTYucG5nICYmCisgICAgIGNwICIkVEVTVF9ESVJFQ1RPUlkiL3Rlc3Q5MjAwYi5wbmcgRC9uZXdmaWxlNC5wbmcgJiYKKyAgICAgY3AgIiRURVNUX0RJUkVDVE9SWSIvdGVzdDkyMDBhLnBuZyBGL25ld2ZpbGU2LnBuZyAmJgogICAgICBnaXQgYWRkIEUvbmV3ZmlsZTUudHh0ICYmCiAgICAgIGdpdCBhZGQgRi9uZXdmaWxlNi5wbmcgJiYKICAgICAgZ2l0IGNvbW1pdCAtYSAtbSAiVGVzdDogUmVtb3ZlLCBhZGQgYW5kIHVwZGF0ZSIgJiYKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgZGlmZiBGL25ld2ZpbGU2LnBuZyAuLi9GL25ld2ZpbGU2LnBuZwogICAgICApJwogCi0jIFNob3VsZCBmYWlsIChidXQgb25seSBvbiB0aGUgZ2l0LWN2c2V4cG9ydGNvbW1pdCBzdGFnZSkKKyMgU2hvdWxkIGZhaWwgKGJ1dCBvbmx5IG9uIHRoZSBnaXQgY3ZzZXhwb3J0Y29tbWl0IHN0YWdlKQogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0ZhaWwgdG8gY2hhbmdlIGJpbmFyeSBtb3JlIHRoYW4gb25lIGdlbmVyYXRpb24gb2xkJyBcCiAgICAgJ2NhdCBGL25ld2ZpbGU2LnBuZyA+PkQvbmV3ZmlsZTQucG5nICYmCkBAIC0xNjAsMjQgKzE2MCwyNCBAQAogICAgICAnbWtkaXIgIkcgZyIgJiYKICAgICAgIGVjaG8gb2sgdGhlbiA+IkcgZy93aXRoIHNwYWNlcy50eHQiICYmCiAgICAgICBnaXQgYWRkICJHIGcvd2l0aCBzcGFjZXMudHh0IiAmJiBcCi0gICAgICBjcCAuLi90ZXN0OTIwMGEucG5nICJHIGcvd2l0aCBzcGFjZXMucG5nIiAmJiBcCisgICAgICBjcCAiJFRFU1RfRElSRUNUT1JZIi90ZXN0OTIwMGEucG5nICJHIGcvd2l0aCBzcGFjZXMucG5nIiAmJiBcCiAgICAgICBnaXQgYWRkICJHIGcvd2l0aCBzcGFjZXMucG5nIiAmJgogICAgICAgZ2l0IGNvbW1pdCAtYSAtbSAiV2l0aCBzcGFjZXMiICYmCiAgICAgICBpZD0kKGdpdCByZXYtbGlzdCAtLW1heC1jb3VudD0xIEhFQUQpICYmCiAgICAgICAoY2QgIiRDVlNXT1JLIiAmJgotICAgICAgZ2l0LWN2c2V4cG9ydGNvbW1pdCAtYyAkaWQgJiYKKyAgICAgIGdpdCBjdnNleHBvcnRjb21taXQgLWMgJGlkICYmCiAgICAgICBjaGVja19lbnRyaWVzICJHIGciICJ3aXRoIHNwYWNlcy5wbmcvMS4xLy1rYnx3aXRoIHNwYWNlcy50eHQvMS4xLyIKICAgICAgICknCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICAnVXBkYXRlIGZpbGUgd2l0aCBzcGFjZXMgaW4gZmlsZSBuYW1lJyBcCiAgICAgICdlY2hvIE9rIHRoZW4gPj4iRyBnL3dpdGggc3BhY2VzLnR4dCIgJiYKLSAgICAgIGNhdCAuLi90ZXN0OTIwMGEucG5nID4+IkcgZy93aXRoIHNwYWNlcy5wbmciICYmIFwKKyAgICAgIGNhdCAiJFRFU1RfRElSRUNUT1JZIi90ZXN0OTIwMGEucG5nID4+IkcgZy93aXRoIHNwYWNlcy5wbmciICYmIFwKICAgICAgIGdpdCBhZGQgIkcgZy93aXRoIHNwYWNlcy5wbmciICYmCiAgICAgICBnaXQgY29tbWl0IC1hIC1tICJVcGRhdGUgd2l0aCBzcGFjZXMiICYmCiAgICAgICBpZD0kKGdpdCByZXYtbGlzdCAtLW1heC1jb3VudD0xIEhFQUQpICYmCiAgICAgICAoY2QgIiRDVlNXT1JLIiAmJgotICAgICAgZ2l0LWN2c2V4cG9ydGNvbW1pdCAtYyAkaWQKKyAgICAgIGdpdCBjdnNleHBvcnRjb21taXQgLWMgJGlkCiAgICAgICBjaGVja19lbnRyaWVzICJHIGciICJ3aXRoIHNwYWNlcy5wbmcvMS4yLy1rYnx3aXRoIHNwYWNlcy50eHQvMS4yLyIKICAgICAgICknCiAKQEAgLTE5NywxMiArMTk3LDEyIEBACiAgICAgICdta2RpciAtcCDDhS9nb28vYS9iL2MvZC9lL2YvZy9oL2kvai9rL2wvbS9uL28vcC9xL3Ivcy90L3Uvdi93L3gveS96L8OlL8OkL8O2ICYmCiAgICAgICBlY2hvIEZvbyA+w4UvZ29vL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei/DpS/DpC/Dti9nw6VyZGV0c8OlZ8OlcmRldC50eHQgJiYKICAgICAgIGdpdCBhZGQgw4UvZ29vL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei/DpS/DpC/Dti9nw6VyZGV0c8OlZ8OlcmRldC50eHQgJiYKLSAgICAgIGNwIC4uL3Rlc3Q5MjAwYS5wbmcgw4UvZ29vL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei/DpS/DpC/Dti9nw6VyZGV0c8OlZ8OlcmRldC5wbmcgJiYKKyAgICAgIGNwICIkVEVTVF9ESVJFQ1RPUlkiL3Rlc3Q5MjAwYS5wbmcgw4UvZ29vL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei/DpS/DpC/Dti9nw6VyZGV0c8OlZ8OlcmRldC5wbmcgJiYKICAgICAgIGdpdCBhZGQgw4UvZ29vL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei/DpS/DpC/Dti9nw6VyZGV0c8OlZ8OlcmRldC5wbmcgJiYKICAgICAgIGdpdCBjb21taXQgLWEgLW0gIkfDpXIgZGV0IHPDpSBnw6VyIGRldCIgJiYgXAogICAgICAgaWQ9JChnaXQgcmV2LWxpc3QgLS1tYXgtY291bnQ9MSBIRUFEKSAmJgogICAgICAgKGNkICIkQ1ZTV09SSyIgJiYKLSAgICAgIGdpdC1jdnNleHBvcnRjb21taXQgLXYgLWMgJGlkICYmCisgICAgICBnaXQgY3ZzZXhwb3J0Y29tbWl0IC12IC1jICRpZCAmJgogICAgICAgY2hlY2tfZW50cmllcyBcCiAgICAgICAiw4UvZ29vL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei/DpS/DpC/DtiIgXAogICAgICAgImfDpXJkZXRzw6Vnw6VyZGV0LnBuZy8xLjEvLWtifGfDpXJkZXRzw6Vnw6VyZGV0LnR4dC8xLjEvIgpAQCAtMjIyLDcgKzIyMiw3IEBACiAgICAgICBnaXQgY29tbWl0IC1hIC1tICJVcGRhdGUgdHdvIiAmJgogICAgICAgaWQ9JChnaXQgcmV2LWxpc3QgLS1tYXgtY291bnQ9MSBIRUFEKSAmJgogICAgICAgKGNkICIkQ1ZTV09SSyIgJiYKLSAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdC1jdnNleHBvcnRjb21taXQgLWMgJGlkCisgICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY3ZzZXhwb3J0Y29tbWl0IC1jICRpZAogICAgICAgKScKIAogY2FzZSAiJChnaXQgY29uZmlnIC0tYm9vbCBjb3JlLmZpbGVtb2RlKSIgaW4KQEAgLTIzOSw3ICsyMzksNyBAQAogICAgICAgZ2l0IGFkZCBHL29mZiAmJgogICAgICAgZ2l0IGNvbW1pdCAtYSAtbSAiRXhlY3V0ZSB0ZXN0IiAmJgogICAgICAgKGNkICIkQ1ZTV09SSyIgJiYKLSAgICAgIGdpdC1jdnNleHBvcnRjb21taXQgLWMgSEVBRAorICAgICAgZ2l0IGN2c2V4cG9ydGNvbW1pdCAtYyBIRUFECiAgICAgICB0ZXN0IC14IEcvb24gJiYKICAgICAgICEgdGVzdCAteCBHL29mZgogICAgICAgKScKZGlmZiAtLWdpdCBhL3QvdDkzMDAtZmFzdC1pbXBvcnQuc2ggYi90L3Q5MzAwLWZhc3QtaW1wb3J0LnNoCmluZGV4IDhiNzlkZTUuLjgyMWJlN2MgMTAwNzU1Ci0tLSBhL3QvdDkzMDAtZmFzdC1pbXBvcnQuc2gKKysrIGIvdC90OTMwMC1mYXN0LWltcG9ydC5zaApAQCAtMyw5ICszLDkgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA3IFNoYXduIFBlYXJjZQogIwogCi10ZXN0X2Rlc2NyaXB0aW9uPSd0ZXN0IGdpdC1mYXN0LWltcG9ydCB1dGlsaXR5JwordGVzdF9kZXNjcmlwdGlvbj0ndGVzdCBnaXQgZmFzdC1pbXBvcnQgdXRpbGl0eScKIC4gLi90ZXN0LWxpYi5zaAotLiAuLi9kaWZmLWxpYi5zaCA7IyB0ZXN0LWxpYiBjaGRpcidzIGludG8gdHJhc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2ggOyMgdGVzdC1saWIgY2hkaXIncyBpbnRvIHRyYXNoCiAKIGZpbGUyX2RhdGE9J2ZpbGUyCiBzZWNvbmQgbGluZSBvZiBFT0YnCkBAIC02NSw3ICs2NSw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdBOiBjcmVhdGUgcGFjayBmcm9tIHN0ZGluJyBcCi0gICAgJ2dpdC1mYXN0LWltcG9ydCAtLWV4cG9ydC1tYXJrcz1tYXJrcy5vdXQgPGlucHV0ICYmCisgICAgJ2dpdCBmYXN0LWltcG9ydCAtLWV4cG9ydC1tYXJrcz1tYXJrcy5vdXQgPGlucHV0ICYmCiAJIGdpdCB3aGF0Y2hhbmdlZCBtYXN0ZXInCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknQTogdmVyaWZ5IHBhY2snIFwKQEAgLTEzMSw3ICsxMzEsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknQTogdmVyaWZ5IG1hcmtzIGltcG9ydCcgXAotCSdnaXQtZmFzdC1pbXBvcnQgXAorCSdnaXQgZmFzdC1pbXBvcnQgXAogCQktLWltcG9ydC1tYXJrcz1tYXJrcy5vdXQgXAogCQktLWV4cG9ydC1tYXJrcz1tYXJrcy5uZXcgXAogCQk8L2Rldi9udWxsICYmCkBAIC0xNTEsNyArMTUxLDcgQEAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ0E6IHZlcmlmeSBtYXJrcyBpbXBvcnQgZG9lcyBub3QgY3Jhc2gnIFwKLQknZ2l0LWZhc3QtaW1wb3J0IC0taW1wb3J0LW1hcmtzPW1hcmtzLm91dCA8aW5wdXQgJiYKKwknZ2l0IGZhc3QtaW1wb3J0IC0taW1wb3J0LW1hcmtzPW1hcmtzLm91dCA8aW5wdXQgJiYKIAkgZ2l0IHdoYXRjaGFuZ2VkIHZlcmlmeS0taW1wb3J0LW1hcmtzJwogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ0E6IHZlcmlmeSBwYWNrJyBcCkBAIC0xODQsNyArMTg0LDcgQEAKIAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdCOiBmYWlsIG9uIGludmFsaWQgYmxvYiBzaGExJyAnCi0gICAgdGVzdF9tdXN0X2ZhaWwgZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dAorICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBmYXN0LWltcG9ydCA8aW5wdXQKICcKIHJtIC1mIC5naXQvb2JqZWN0cy9wYWNrXyogLmdpdC9vYmplY3RzL2luZGV4XyoKIApAQCAtMTk5LDcgKzE5OSw3IEBACiAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQjogZmFpbCBvbiBpbnZhbGlkIGJyYW5jaCBuYW1lICIuYmFkYnJhbmNobmFtZSInICcKLSAgICB0ZXN0X211c3RfZmFpbCBnaXQtZmFzdC1pbXBvcnQgPGlucHV0CisgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dAogJwogcm0gLWYgLmdpdC9vYmplY3RzL3BhY2tfKiAuZ2l0L29iamVjdHMvaW5kZXhfKgogCkBAIC0yMTQsNyArMjE0LDcgQEAKIAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdCOiBmYWlsIG9uIGludmFsaWQgYnJhbmNoIG5hbWUgImJhZFticmFuY2hdbmFtZSInICcKLSAgICB0ZXN0X211c3RfZmFpbCBnaXQtZmFzdC1pbXBvcnQgPGlucHV0CisgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dAogJwogcm0gLWYgLmdpdC9vYmplY3RzL3BhY2tfKiAuZ2l0L29iamVjdHMvaW5kZXhfKgogCkBAIC0yMzAsNyArMjMwLDcgQEAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0I6IGFjY2VwdCBicmFuY2ggbmFtZSAiVEVNUF9UQUciJyBcCi0gICAgJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKKyAgICAnZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgogCSB0ZXN0IC1mIC5naXQvVEVNUF9UQUcgJiYKIAkgdGVzdCBgZ2l0IHJldi1wYXJzZSBtYXN0ZXJgID0gYGdpdCByZXYtcGFyc2UgVEVNUF9UQUdeYCcKIHJtIC1mIC5naXQvVEVNUF9UQUcKQEAgLTIzOSw3ICsyMzksNyBAQAogIyMjIHNlcmllcyBDCiAjIyMKIAotbmV3Zj1gZWNobyBoaSBuZXdmIHwgZ2l0LWhhc2gtb2JqZWN0IC13IC0tc3RkaW5gCituZXdmPWBlY2hvIGhpIG5ld2YgfCBnaXQgaGFzaC1vYmplY3QgLXcgLS1zdGRpbmAKIG9sZGY9YGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgbWFzdGVyOmZpbGUyYAogdGVzdF90aWNrCiBjYXQgPmlucHV0IDw8SU5QVVRfRU5ECkBAIC0yNTcsNyArMjU3LDcgQEAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0M6IGluY3JlbWVudGFsIGltcG9ydCBjcmVhdGUgcGFjayBmcm9tIHN0ZGluJyBcCi0gICAgJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKKyAgICAnZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgogCSBnaXQgd2hhdGNoYW5nZWQgYnJhbmNoJwogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ0M6IHZlcmlmeSBwYWNrJyBcCkBAIC0zMTUsNyArMzE1LDcgQEAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0Q6IGlubGluZSBkYXRhIGluIGNvbW1pdCcgXAotICAgICdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCisgICAgJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKIAkgZ2l0IHdoYXRjaGFuZ2VkIGJyYW5jaCcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdEOiB2ZXJpZnkgcGFjaycgXApAQCAtMzU4LDExICszNTgsMTEgQEAKIAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdFOiByZmMyODIyIGRhdGUsIC0tZGF0ZS1mb3JtYXQ9cmF3JyAnCi0gICAgdGVzdF9tdXN0X2ZhaWwgZ2l0LWZhc3QtaW1wb3J0IC0tZGF0ZS1mb3JtYXQ9cmF3IDxpbnB1dAorICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBmYXN0LWltcG9ydCAtLWRhdGUtZm9ybWF0PXJhdyA8aW5wdXQKICcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdFOiByZmMyODIyIGRhdGUsIC0tZGF0ZS1mb3JtYXQ9cmZjMjgyMicgXAotICAgICdnaXQtZmFzdC1pbXBvcnQgLS1kYXRlLWZvcm1hdD1yZmMyODIyIDxpbnB1dCcKKyAgICAnZ2l0IGZhc3QtaW1wb3J0IC0tZGF0ZS1mb3JtYXQ9cmZjMjgyMiA8aW5wdXQnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknRTogdmVyaWZ5IHBhY2snIFwKIAknZm9yIHAgaW4gLmdpdC9vYmplY3RzL3BhY2svKi5wYWNrO2RvIGdpdCB2ZXJpZnktcGFjayAkcHx8ZXhpdDtkb25lJwpAQCAtMzk5LDcgKzM5OSw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdGOiBub24tZmFzdC1mb3J3YXJkIHVwZGF0ZSBza2lwcycgXAotICAgICdpZiBnaXQtZmFzdC1pbXBvcnQgPGlucHV0CisgICAgJ2lmIGdpdCBmYXN0LWltcG9ydCA8aW5wdXQKIAkgdGhlbgogCQllY2hvIEJBRCBnZmkgZGlkIG5vdCBmYWlsCiAJCXJldHVybiAxCkBAIC00NDksNyArNDQ5LDcgQEAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0c6IG5vbi1mYXN0LWZvcndhcmQgdXBkYXRlIGZvcmNlZCcgXAotICAgICdnaXQtZmFzdC1pbXBvcnQgLS1mb3JjZSA8aW5wdXQnCisgICAgJ2dpdCBmYXN0LWltcG9ydCAtLWZvcmNlIDxpbnB1dCcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdHOiB2ZXJpZnkgcGFjaycgXAogCSdmb3IgcCBpbiAuZ2l0L29iamVjdHMvcGFjay8qLnBhY2s7ZG8gZ2l0IHZlcmlmeS1wYWNrICRwfHxleGl0O2RvbmUnCkBAIC00ODUsNyArNDg1LDcgQEAKIElOUFVUX0VORAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0g6IGRlbGV0YWxsLCBhZGQgMScgXAotICAgICdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCisgICAgJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKIAkgZ2l0IHdoYXRjaGFuZ2VkIEgnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknSDogdmVyaWZ5IHBhY2snIFwKQEAgLTUyNSw3ICs1MjUsNyBAQAogSU5QVVRfRU5ECiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnSTogZXhwb3J0LXBhY2stZWRnZXMnIFwKLSAgICAnZ2l0LWZhc3QtaW1wb3J0IC0tZXhwb3J0LXBhY2stZWRnZXM9ZWRnZXMubGlzdCA8aW5wdXQnCisgICAgJ2dpdCBmYXN0LWltcG9ydCAtLWV4cG9ydC1wYWNrLWVkZ2VzPWVkZ2VzLmxpc3QgPGlucHV0JwogCiBjYXQgPmV4cGVjdCA8PEVPRgogLmdpdC9vYmplY3RzL3BhY2svcGFjay0ucGFjazogYGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgZXhwb3J0LWJvdW5kYXJ5YApAQCAtNTU5LDcgKzU1OSw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdKOiByZXNldCBleGlzdGluZyBicmFuY2ggY3JlYXRlcyBlbXB0eSBjb21taXQnIFwKLSAgICAnZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCcKKyAgICAnZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdKOiBicmFuY2ggaGFzIDEgY29tbWl0LCBlbXB0eSB0cmVlJyBcCiAJJ3Rlc3QgMSA9IGBnaXQgcmV2LWxpc3QgSiB8IHdjIC1sYCAmJgpAQCAtNTg5LDcgKzU4OSw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdLOiByZWluaXQgYnJhbmNoIHdpdGggZnJvbScgXAotICAgICdnaXQtZmFzdC1pbXBvcnQgPGlucHV0JworICAgICdnaXQgZmFzdC1pbXBvcnQgPGlucHV0JwogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0s6IHZlcmlmeSBLXjEgPSBicmFuY2heMScgXAogICAgICd0ZXN0IGBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IGJyYW5jaF4xYCBcCkBAIC02NDEsNyArNjQxLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ0w6IHZlcmlmeSBpbnRlcm5hbCB0cmVlIHNvcnRpbmcnIFwKLQknZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgorCSdnaXQgZmFzdC1pbXBvcnQgPGlucHV0ICYmCiAJIGdpdCBkaWZmLXRyZWUgLS1hYmJyZXYgLS1yYXcgTF4gTCA+b3V0cHV0ICYmCiAJIHRlc3RfY21wIGV4cGVjdCBvdXRwdXQnCiAKQEAgLTY2Nyw3ICs2NjcsNyBAQAogRU9GCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknTTogcmVuYW1lIGZpbGUgaW4gc2FtZSBzdWJkaXJlY3RvcnknIFwKLQknZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgorCSdnaXQgZmFzdC1pbXBvcnQgPGlucHV0ICYmCiAJIGdpdCBkaWZmLXRyZWUgLU0gLXIgTTFeIE0xID5hY3R1YWwgJiYKIAkgY29tcGFyZV9kaWZmX3JhdyBleHBlY3QgYWN0dWFsJwogCkBAIC02ODgsNyArNjg4LDcgQEAKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ006IHJlbmFtZSBmaWxlIHRvIG5ldyBzdWJkaXJlY3RvcnknIFwKLQknZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgorCSdnaXQgZmFzdC1pbXBvcnQgPGlucHV0ICYmCiAJIGdpdCBkaWZmLXRyZWUgLU0gLXIgTTJeIE0yID5hY3R1YWwgJiYKIAkgY29tcGFyZV9kaWZmX3JhdyBleHBlY3QgYWN0dWFsJwogCkBAIC03MDksNyArNzA5LDcgQEAKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ006IHJlbmFtZSBzdWJkaXJlY3RvcnkgdG8gbmV3IHN1YmRpcmVjdG9yeScgXAotCSdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCisJJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKIAkgZ2l0IGRpZmYtdHJlZSAtTSAtciBNM14gTTMgPmFjdHVhbCAmJgogCSBjb21wYXJlX2RpZmZfcmF3IGV4cGVjdCBhY3R1YWwnCiAKQEAgLTczNSw3ICs3MzUsNyBAQAogRU9GCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknTjogY29weSBmaWxlIGluIHNhbWUgc3ViZGlyZWN0b3J5JyBcCi0JJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKKwknZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgogCSBnaXQgZGlmZi10cmVlIC1DIC0tZmluZC1jb3BpZXMtaGFyZGVyIC1yIE4xXiBOMSA+YWN0dWFsICYmCiAJIGNvbXBhcmVfZGlmZl9yYXcgZXhwZWN0IGFjdHVhbCcKIApAQCAtNzY5LDcgKzc2OSw3IEBACiBFT0YKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdOOiBjb3B5IHRoZW4gbW9kaWZ5IHN1YmRpcmVjdG9yeScgXAotCSdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ICYmCisJJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKIAkgZ2l0IGRpZmYtdHJlZSAtQyAtLWZpbmQtY29waWVzLWhhcmRlciAtciBOMl5eIE4yID5hY3R1YWwgJiYKIAkgY29tcGFyZV9kaWZmX3JhdyBleHBlY3QgYWN0dWFsJwogCkBAIC03OTMsOCArNzkzLDggQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ046IGNvcHkgZGlydHkgc3ViZGlyZWN0b3J5JyBcCi0JJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKLQkgdGVzdCBgZ2l0LXJldi1wYXJzZSBOMl57dHJlZX1gID0gYGdpdC1yZXYtcGFyc2UgTjNee3RyZWV9YCcKKwknZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgorCSB0ZXN0IGBnaXQgcmV2LXBhcnNlIE4yXnt0cmVlfWAgPSBgZ2l0IHJldi1wYXJzZSBOM157dHJlZX1gJwogCiAjIyMKICMjIyBzZXJpZXMgTwpAQCAtODMzLDggKzgzMyw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdPOiBjb21tZW50cyBhcmUgYWxsIHNraXBwZWQnIFwKLQknZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgotCSB0ZXN0IGBnaXQtcmV2LXBhcnNlIE4zYCA9IGBnaXQtcmV2LXBhcnNlIE8xYCcKKwknZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgorCSB0ZXN0IGBnaXQgcmV2LXBhcnNlIE4zYCA9IGBnaXQgcmV2LXBhcnNlIE8xYCcKIAogY2F0ID5pbnB1dCA8PElOUFVUX0VORAogY29tbWl0IHJlZnMvaGVhZHMvTzIKQEAgLTg1NCw4ICs4NTQsOCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKIAknTzogYmxhbmsgbGluZXMgbm90IG5lY2Vzc2FyeSBhZnRlciBkYXRhIGNvbW1hbmRzJyBcCi0JJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKLQkgdGVzdCBgZ2l0LXJldi1wYXJzZSBOM2AgPSBgZ2l0LXJldi1wYXJzZSBPMmAnCisJJ2dpdCBmYXN0LWltcG9ydCA8aW5wdXQgJiYKKwkgdGVzdCBgZ2l0IHJldi1wYXJzZSBOM2AgPSBgZ2l0IHJldi1wYXJzZSBPMmAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdPOiByZXBhY2sgYmVmb3JlIG5leHQgdGVzdCcgXApAQCAtODk5LDcgKzg5OSw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdPOiBibGFuayBsaW5lcyBub3QgbmVjZXNzYXJ5IGFmdGVyIG90aGVyIGNvbW1hbmRzJyBcCi0JJ2dpdC1mYXN0LWltcG9ydCA8aW5wdXQgJiYKKwknZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgogCSB0ZXN0IDggPSBgZmluZCAuZ2l0L29iamVjdHMvcGFjayAtdHlwZSBmIHwgd2MgLWxgICYmCiAJIHRlc3QgYGdpdCByZXYtcGFyc2UgcmVmcy90YWdzL08zLTJuZGAgPSBgZ2l0IHJldi1wYXJzZSBPM15gICYmCiAJIGdpdCBsb2cgLS1yZXZlcnNlIC0tcHJldHR5PW9uZWxpbmUgTzMgfCBzZWQgcy9eLip6Ly8gPmFjdHVhbCAmJgpAQCAtOTMyLDcgKzkzMiw3IEBACiBJTlBVVF9FTkQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdPOiBwcm9ncmVzcyBvdXRwdXRzIGFzIHJlcXVlc3RlZCBieSBpbnB1dCcgXAotCSdnaXQtZmFzdC1pbXBvcnQgPGlucHV0ID5hY3R1YWwgJiYKKwknZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCA+YWN0dWFsICYmCiAJIGdyZXAgInByb2dyZXNzICIgPGlucHV0ID5leHBlY3QgJiYKIAkgdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCcKIApAQCAtOTk3LDcgKzk5Nyw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdQOiBzdXBlcm1vZHVsZSAmIHN1Ym1vZHVsZSBtaXgnIFwKLQknZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgorCSdnaXQgZmFzdC1pbXBvcnQgPGlucHV0ICYmCiAJIGdpdCBjaGVja291dCBzdWJ1c2UxICYmCiAJIHJtIC1yZiBzdWIgJiYgbWtkaXIgc3ViICYmIGNkIHN1YiAmJgogCSBnaXQgaW5pdCAmJgpAQCAtMTAwNyw4ICsxMDA3LDggQEAKIAkgZ2l0IHN1Ym1vZHVsZSBpbml0ICYmCiAJIGdpdCBzdWJtb2R1bGUgdXBkYXRlJwogCi1TVUJMQVNUPSQoZ2l0LXJldi1wYXJzZSAtLXZlcmlmeSBzdWIpCi1TVUJQUkVWPSQoZ2l0LXJldi1wYXJzZSAtLXZlcmlmeSBzdWJeKQorU1VCTEFTVD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgc3ViKQorU1VCUFJFVj0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgc3ViXikKIAogY2F0ID5pbnB1dCA8PElOUFVUX0VORAogYmxvYgpAQCAtMTA0Miw4ICsxMDQyLDggQEAKIAknUDogdmVyYmF0aW0gU0hBIGdpdGxpbmtzJyBcCiAJJ2dpdCBicmFuY2ggLUQgc3ViICYmCiAJIGdpdCBnYyAmJiBnaXQgcHJ1bmUgJiYKLQkgZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCAmJgotCSB0ZXN0ICQoZ2l0LXJldi1wYXJzZSAtLXZlcmlmeSBzdWJ1c2UyKSA9ICQoZ2l0LXJldi1wYXJzZSAtLXZlcmlmeSBzdWJ1c2UxKScKKwkgZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgorCSB0ZXN0ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBzdWJ1c2UyKSA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBzdWJ1c2UxKScKIAogdGVzdF90aWNrCiBjYXQgPmlucHV0IDw8SU5QVVRfRU5ECkBAIC0xMDYzLDcgKzEwNjMsNyBAQAogSU5QVVRfRU5ECiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1A6IGZhaWwgb24gaW5saW5lIGdpdGxpbmsnICcKLSAgICB0ZXN0X211c3RfZmFpbCBnaXQtZmFzdC1pbXBvcnQgPGlucHV0JworICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBmYXN0LWltcG9ydCA8aW5wdXQnCiAKIHRlc3RfdGljawogY2F0ID5pbnB1dCA8PElOUFVUX0VORApAQCAtMTA4Niw2ICsxMDg2LDYgQEAKIElOUFVUX0VORAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdQOiBmYWlsIG9uIGJsb2IgbWFyayBpbiBnaXRsaW5rJyAnCi0gICAgdGVzdF9tdXN0X2ZhaWwgZ2l0LWZhc3QtaW1wb3J0IDxpbnB1dCcKKyAgICB0ZXN0X211c3RfZmFpbCBnaXQgZmFzdC1pbXBvcnQgPGlucHV0JwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDkzMDEtZmFzdC1leHBvcnQuc2ggYi90L3Q5MzAxLWZhc3QtZXhwb3J0LnNoCmluZGV4IDNhNjUwOWEuLjk5ODU3MjEgMTAwNzU1Ci0tLSBhL3QvdDkzMDEtZmFzdC1leHBvcnQuc2gKKysrIGIvdC90OTMwMS1mYXN0LWV4cG9ydC5zaApAQCAtMyw3ICszLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA3IEpvaGFubmVzIEUuIFNjaGluZGVsaW4KICMKIAotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0LWZhc3QtZXhwb3J0JwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IGZhc3QtZXhwb3J0JwogLiAuL3Rlc3QtbGliLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCkBAIC02Nyw3ICs2Nyw3IEBACiAKIAlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgogCSMgdXNlIGF1dGhvciBhbmQgY29tbWl0dGVyIG5hbWUgaW4gSVNPLTg4NTktMSB0byBtYXRjaCBpdC4KLQkuIC4uL3QzOTAxLTg4NTktMS50eHQgJiYKKwkuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLTg4NTktMS50eHQgJiYKIAl0ZXN0X3RpY2sgJiYKIAllY2hvIHJvc3RlbiA+ZmlsZSAmJgogCWdpdCBjb21taXQgLXMgLW0gZGVuIGZpbGUgJiYKZGlmZiAtLWdpdCBhL3QvdDk0MDAtZ2l0LWN2c3NlcnZlci1zZXJ2ZXIuc2ggYi90L3Q5NDAwLWdpdC1jdnNzZXJ2ZXItc2VydmVyLnNoCmluZGV4IGMxODUwZDIuLjZhMzdmNzEgMTAwNzU1Ci0tLSBhL3QvdDk0MDAtZ2l0LWN2c3NlcnZlci1zZXJ2ZXIuc2gKKysrIGIvdC90OTQwMC1naXQtY3Zzc2VydmVyLXNlcnZlci5zaApAQCAtNDI0LDcgKzQyNCw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXBkYXRlICgtcCknICcKICAgICB0b3VjaCByZWFsbHktZW1wdHkgJiYKICAgICBlY2hvIExpbmUgMSA+IG5vLWxmICYmCi0gICAgZWNobyAtbiBMaW5lIDIgPj4gbm8tbGYgJiYKKyAgICBwcmludGYgIkxpbmUgMiIgPj4gbm8tbGYgJiYKICAgICBnaXQgYWRkIHJlYWxseS1lbXB0eSBuby1sZiAmJgogICAgIGdpdCBjb21taXQgLXEgLW0gIlVwZGF0ZSAtcCB0ZXN0IiAmJgogICAgIGdpdCBwdXNoIGdpdGN2cy5naXQgPi9kZXYvbnVsbCAmJgpkaWZmIC0tZ2l0IGEvdC90OTUwMC1naXR3ZWItc3RhbmRhbG9uZS1uby1lcnJvcnMuc2ggYi90L3Q5NTAwLWdpdHdlYi1zdGFuZGFsb25lLW5vLWVycm9ycy5zaAppbmRleCBkOGYyNzhmLi40M2NkNmVlIDEwMDc1NQotLS0gYS90L3Q5NTAwLWdpdHdlYi1zdGFuZGFsb25lLW5vLWVycm9ycy5zaAorKysgYi90L3Q5NTAwLWdpdHdlYi1zdGFuZGFsb25lLW5vLWVycm9ycy5zaApAQCAtMjUsOSArMjUsOSBAQAogb3VyIFwkc2l0ZV9oZWFkZXIgPSAiIjsKIG91ciBcJHNpdGVfZm9vdGVyID0gIiI7CiBvdXIgXCRob21lX3RleHQgPSAiaW5kZXh0ZXh0Lmh0bWwiOwotb3VyIEBzdHlsZXNoZWV0cyA9ICgiZmlsZTovLy8kc2FmZV9wd2QvLi4vLi4vZ2l0d2ViL2dpdHdlYi5jc3MiKTsKLW91ciBcJGxvZ28gPSAiZmlsZTovLy8kc2FmZV9wd2QvLi4vLi4vZ2l0d2ViL2dpdC1sb2dvLnBuZyI7Ci1vdXIgXCRmYXZpY29uID0gImZpbGU6Ly8vJHNhZmVfcHdkLy4uLy4uL2dpdHdlYi9naXQtZmF2aWNvbi5wbmciOworb3VyIEBzdHlsZXNoZWV0cyA9ICgiZmlsZTovLy8kVEVTVF9ESVJFQ1RPUlkvLi4vZ2l0d2ViL2dpdHdlYi5jc3MiKTsKK291ciBcJGxvZ28gPSAiZmlsZTovLy8kVEVTVF9ESVJFQ1RPUlkvLi4vZ2l0d2ViL2dpdC1sb2dvLnBuZyI7CitvdXIgXCRmYXZpY29uID0gImZpbGU6Ly8vJFRFU1RfRElSRUNUT1JZLy4uL2dpdHdlYi9naXQtZmF2aWNvbi5wbmciOwogb3VyIFwkcHJvamVjdHNfbGlzdCA9ICIiOwogb3VyIFwkZXhwb3J0X29rID0gIiI7CiBvdXIgXCRzdHJpY3RfZXhwb3J0ID0gIiI7CkBAIC01NCw5ICs1NCw5IEBACiAJIyB3cml0dGVuIHRvIHdlYiBzZXJ2ZXIgbG9ncywgc28gd2UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIHRoYXQ6CiAJIyB3ZSBhcmUgaW50ZXJlc3RlZCBvbmx5IGluIHByb3Blcmx5IGZvcm1hdHRlZCBlcnJvcnMvd2FybmluZ3MKIAlybSAtZiBnaXR3ZWIubG9nICYmCi0JcGVybCAtLSAiJChwd2QpLy4uLy4uL2dpdHdlYi9naXR3ZWIucGVybCIgXAorCXBlcmwgLS0gIiRURVNUX0RJUkVDVE9SWS8uLi9naXR3ZWIvZ2l0d2ViLnBlcmwiIFwKIAkJPi9kZXYvbnVsbCAyPmdpdHdlYi5sb2cgJiYKLQlpZiBncmVwIC1xIC1zICJeW1tdIiBnaXR3ZWIubG9nID4vZGV2L251bGw7IHRoZW4gZmFsc2U7IGVsc2UgdHJ1ZTsgZmkKKwlpZiBncmVwICJeW1tdIiBnaXR3ZWIubG9nID4vZGV2L251bGwgMj4mMTsgdGhlbiBmYWxzZTsgZWxzZSB0cnVlOyBmaQogCiAJIyBnaXR3ZWIubG9nIGlzIGxlZnQgZm9yIGRlYnVnZ2luZwogfQpAQCAtNTc0LDIwICs1NzQsMjAgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ2VuY29kZShjb21taXQpOiB1dGY4JyBcCi0JJy4gLi4vdDM5MDEtdXRmOC50eHQgJiYKKwknLiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMS11dGY4LnR4dCAmJgogCSBlY2hvICJVVEYtOCIgPj4gZmlsZSAmJgogCSBnaXQgYWRkIGZpbGUgJiYKLQkgZ2l0IGNvbW1pdCAtRiAuLi90MzkwMC8xLVVURi04LnR4dCAmJgorCSBnaXQgY29tbWl0IC1GICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwLzEtVVRGLTgudHh0ICYmCiAJIGdpdHdlYl9ydW4gInA9LmdpdDthPWNvbW1pdCInCiB0ZXN0X2RlYnVnICdjYXQgZ2l0d2ViLmxvZycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ2VuY29kZShjb21taXQpOiBpc28tODg1OS0xJyBcCi0JJy4gLi4vdDM5MDEtODg1OS0xLnR4dCAmJgorCScuICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAxLTg4NTktMS50eHQgJiYKIAkgZWNobyAiSVNPLTg4NTktMSIgPj4gZmlsZSAmJgogCSBnaXQgYWRkIGZpbGUgJiYKIAkgZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIElTTy04ODU5LTEgJiYKLQkgZ2l0IGNvbW1pdCAtRiAuLi90MzkwMC9JU08tODg1OS0xLnR4dCAmJgorCSBnaXQgY29tbWl0IC1GICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwL0lTTy04ODU5LTEudHh0ICYmCiAJIGdpdCBjb25maWcgLS11bnNldCBpMThuLmNvbW1pdGVuY29kaW5nICYmCiAJIGdpdHdlYl9ydW4gInA9LmdpdDthPWNvbW1pdCInCiB0ZXN0X2RlYnVnICdjYXQgZ2l0d2ViLmxvZycKQEAgLTY3Myw0ICs2NzMsMTQgQEAKIAkgZ2l0d2ViX3J1biAicD0uZ2l0O2E9dHJlZSInCiB0ZXN0X2RlYnVnICdjYXQgZ2l0d2ViLmxvZycKIAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIG5vbi1BU0NJSSBpbiBSRUFETUUuaHRtbAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKwknUkVBRE1FLmh0bWwgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyAodXRmLTgpJyBcCisJJ2VjaG8gIjxiPlVURi04IGV4YW1wbGU6PC9iPjxiciAvPiIgPiAuZ2l0L1JFQURNRS5odG1sICYmCisJIGNhdCAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC8xLVVURi04LnR4dCA+PiAuZ2l0L1JFQURNRS5odG1sICYmCisJIGdpdHdlYl9ydW4gInA9LmdpdDthPXN1bW1hcnkiJwordGVzdF9kZWJ1ZyAnY2F0IGdpdHdlYi5sb2cnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTYwMC1jdnNpbXBvcnQuc2ggYi90L3Q5NjAwLWN2c2ltcG9ydC5zaAppbmRleCAwZDc3ODZhLi5kMjM3OWU3IDEwMDc1NQotLS0gYS90L3Q5NjAwLWN2c2ltcG9ydC5zaAorKysgYi90L3Q5NjAwLWN2c2ltcG9ydC5zaApAQCAtMSw2ICsxLDYgQEAKICMhL2Jpbi9zaAogCi10ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtY3ZzaW1wb3J0IGJhc2ljIHRlc3RzJwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IGN2c2ltcG9ydCBiYXNpYyB0ZXN0cycKIC4gLi90ZXN0LWxpYi5zaAogCiBDVlNST09UPSQocHdkKS9jdnNyb290CmRpZmYgLS1naXQgYS90L3Q5NzAwLXBlcmwtZ2l0LnNoIGIvdC90OTcwMC1wZXJsLWdpdC5zaAppbmRleCA5NzA2ZWU1Li5iODFkNWRmIDEwMDc1NQotLS0gYS90L3Q5NzAwLXBlcmwtZ2l0LnNoCisrKyBiL3QvdDk3MDAtcGVybC1naXQuc2gKQEAgLTI3LDE4ICsyNywxOCBAQAogICAgICBlY2hvICJjaGFuZ2VkIGZpbGUgMSIgPiBmaWxlMSAmJgogICAgICBnaXQgY29tbWl0IC1hIC1tICJzZWNvbmQgY29tbWl0IiAmJgogCi0gICAgIGdpdC1jb25maWcgLS1hZGQgY29sb3IudGVzdC5zbG90MSBncmVlbiAmJgotICAgICBnaXQtY29uZmlnIC0tYWRkIHRlc3Quc3RyaW5nIHZhbHVlICYmCi0gICAgIGdpdC1jb25maWcgLS1hZGQgdGVzdC5kdXBzdHJpbmcgdmFsdWUxICYmCi0gICAgIGdpdC1jb25maWcgLS1hZGQgdGVzdC5kdXBzdHJpbmcgdmFsdWUyICYmCi0gICAgIGdpdC1jb25maWcgLS1hZGQgdGVzdC5ib29sdHJ1ZSB0cnVlICYmCi0gICAgIGdpdC1jb25maWcgLS1hZGQgdGVzdC5ib29sZmFsc2Ugbm8gJiYKLSAgICAgZ2l0LWNvbmZpZyAtLWFkZCB0ZXN0LmJvb2xvdGhlciBvdGhlciAmJgotICAgICBnaXQtY29uZmlnIC0tYWRkIHRlc3QuaW50IDJrCisgICAgIGdpdCBjb25maWcgLS1hZGQgY29sb3IudGVzdC5zbG90MSBncmVlbiAmJgorICAgICBnaXQgY29uZmlnIC0tYWRkIHRlc3Quc3RyaW5nIHZhbHVlICYmCisgICAgIGdpdCBjb25maWcgLS1hZGQgdGVzdC5kdXBzdHJpbmcgdmFsdWUxICYmCisgICAgIGdpdCBjb25maWcgLS1hZGQgdGVzdC5kdXBzdHJpbmcgdmFsdWUyICYmCisgICAgIGdpdCBjb25maWcgLS1hZGQgdGVzdC5ib29sdHJ1ZSB0cnVlICYmCisgICAgIGdpdCBjb25maWcgLS1hZGQgdGVzdC5ib29sZmFsc2Ugbm8gJiYKKyAgICAgZ2l0IGNvbmZpZyAtLWFkZCB0ZXN0LmJvb2xvdGhlciBvdGhlciAmJgorICAgICBnaXQgY29uZmlnIC0tYWRkIHRlc3QuaW50IDJrCiAgICAgICcKIAogdGVzdF9leHRlcm5hbF93aXRob3V0X3N0ZGVyciBcCiAgICAgJ1BlcmwgQVBJJyBcCi0gICAgcGVybCAuLi90OTcwMC90ZXN0LnBsCisgICAgcGVybCAiJFRFU1RfRElSRUNUT1JZIi90OTcwMC90ZXN0LnBsCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTcwMC90ZXN0LnBsIGIvdC90OTcwMC90ZXN0LnBsCmluZGV4IDUwNGY5NWEuLjY5N2RhZjMgMTAwNzU1Ci0tLSBhL3QvdDk3MDAvdGVzdC5wbAorKysgYi90L3Q5NzAwL3Rlc3QucGwKQEAgLTEzLDEwICsxMyw3IEBACiBCRUdJTiB7IHVzZV9vaygnR2l0JykgfQogCiAjIHNldCB1cAotb3VyICRyZXBvX2RpciA9ICJ0cmFzaCBkaXJlY3RvcnkiOwogb3VyICRhYnNfcmVwb19kaXIgPSBDd2QtPmN3ZDsKLWRpZSAidGhpcyBtdXN0IGJlIHJ1biBieSBjYWxsaW5nIHRoZSB0L3Q5Nyogc2hlbGwgc2NyaXB0KHMpXG4iCi0gICAgaWYgYmFzZW5hbWUoQ3dkLT5jd2QpIG5lICRyZXBvX2RpcjsKIG9rKG91ciAkciA9IEdpdC0+cmVwb3NpdG9yeShEaXJlY3RvcnkgPT4gIi4iKSwgIm9wZW4gcmVwb3NpdG9yeSIpOwogCiAjIGNvbmZpZwpkaWZmIC0tZ2l0IGEvdC90ZXN0LWxpYi5zaCBiL3QvdGVzdC1saWIuc2gKaW5kZXggNjg5YWMyZi4uMjJlZDQ0OCAxMDA2NDQKLS0tIGEvdC90ZXN0LWxpYi5zaAorKysgYi90L3Rlc3QtbGliLnNoCkBAIC00MDcsNyArNDA3LDcgQEAKIAllcnJvciAiYnVnIGluIHRoZSB0ZXN0IHNjcmlwdDogbm90IDEgcGFyYW1ldGVyIHRvIHRlc3QtY3JlYXRlLXJlcG8iCiAJb3dkPWBwd2RgCiAJcmVwbz0iJDEiCi0JbWtkaXIgIiRyZXBvIgorCW1rZGlyIC1wICIkcmVwbyIKIAljZCAiJHJlcG8iIHx8IGVycm9yICJDYW5ub3Qgc2V0dXAgdGVzdCBlbnZpcm9ubWVudCIKIAkiJEdJVF9FWEVDX1BBVEgvZ2l0IiBpbml0ICItLXRlbXBsYXRlPSRHSVRfRVhFQ19QQVRIL3RlbXBsYXRlcy9ibHQvIiA+JjMgMj4mNCB8fAogCWVycm9yICJjYW5ub3QgcnVuIGdpdCBpbml0IC0tIGhhdmUgeW91IGJ1aWx0IHRoaW5ncyB5ZXQ/IgpAQCAtNDUwLDYgKzQ1MCwxMSBAQAogCQkjIHdlIHdpbGwgbGVhdmUgdGhpbmdzIGFzIHRoZXkgYXJlLgogCiAJCXNheV9jb2xvciBwYXNzICJwYXNzZWQgYWxsICRtc2ciCisKKwkJdGVzdCAtZCAiJHJlbW92ZV90cmFzaCIgJiYKKwkJY2QgIiQoZGlybmFtZSAiJHJlbW92ZV90cmFzaCIpIiAmJgorCQlybSAtcmYgIiQoYmFzZW5hbWUgIiRyZW1vdmVfdHJhc2giKSIKKwogCQlleGl0IDAgOzsKIAogCSopCkBAIC00NjYsNyArNDcxLDYgQEAKIEdJVF9FWEVDX1BBVEg9JChwd2QpLy4uCiBHSVRfVEVNUExBVEVfRElSPSQocHdkKS8uLi90ZW1wbGF0ZXMvYmx0CiB1bnNldCBHSVRfQ09ORklHCi11bnNldCBHSVRfQ09ORklHX0xPQ0FMCiBHSVRfQ09ORklHX05PU1lTVEVNPTEKIEdJVF9DT05GSUdfTk9HTE9CQUw9MQogZXhwb3J0IFBBVEggR0lUX0VYRUNfUEFUSCBHSVRfVEVNUExBVEVfRElSIEdJVF9DT05GSUdfTk9TWVNURU0gR0lUX0NPTkZJR19OT0dMT0JBTApAQCAtNDg2LDcgKzQ5MCw4IEBACiAuIC4uL0dJVC1CVUlMRC1PUFRJT05TCiAKICMgVGVzdCByZXBvc2l0b3J5Ci10ZXN0PSJ0cmFzaCBkaXJlY3RvcnkiCit0ZXN0PSJ0cmFzaCBkaXJlY3RvcnkuJChiYXNlbmFtZSAiJDAiIC5zaCkiCit0ZXN0ICEgLXogIiRkZWJ1ZyIgfHwgcmVtb3ZlX3RyYXNoPSIkVEVTVF9ESVJFQ1RPUlkvJHRlc3QiCiBybSAtZnIgIiR0ZXN0IiB8fCB7CiAJdHJhcCAtIGV4aXQKIAllY2hvID4mNSAiRkFUQUw6IENhbm5vdCBwcmVwYXJlIHRlc3QgYXJlYSIKZGlmZiAtLWdpdCBhL3Rlc3Qtc2hhMS5jIGIvdGVzdC1zaGExLmMKaW5kZXggNzhkN2U5OC4uOWI5OGQwNyAxMDA2NDQKLS0tIGEvdGVzdC1zaGExLmMKKysrIGIvdGVzdC1zaGExLmMKQEAgLTIsNyArMiw3IEBACiAKIGludCBtYWluKGludCBhYywgY2hhciAqKmF2KQogewotCVNIQV9DVFggY3R4OworCWdpdF9TSEFfQ1RYIGN0eDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCXVuc2lnbmVkIGJ1ZnN6ID0gODE5MjsKIAljaGFyICpidWZmZXI7CkBAIC0yMCw3ICsyMCw3IEBACiAJCQlkaWUoIk9PUFMiKTsKIAl9CiAKLQlTSEExX0luaXQoJmN0eCk7CisJZ2l0X1NIQTFfSW5pdCgmY3R4KTsKIAogCXdoaWxlICgxKSB7CiAJCXNzaXplX3Qgc3osIHRoaXNfc3o7CkBAIC0zOSw5ICszOSw5IEBACiAJCX0KIAkJaWYgKHRoaXNfc3ogPT0gMCkKIAkJCWJyZWFrOwotCQlTSEExX1VwZGF0ZSgmY3R4LCBidWZmZXIsIHRoaXNfc3opOworCQlnaXRfU0hBMV9VcGRhdGUoJmN0eCwgYnVmZmVyLCB0aGlzX3N6KTsKIAl9Ci0JU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKKwlnaXRfU0hBMV9GaW5hbChzaGExLCAmY3R4KTsKIAlwdXRzKHNoYTFfdG9faGV4KHNoYTEpKTsKIAlleGl0KDApOwogfQpkaWZmIC0tZ2l0IGEvdHJhbnNwb3J0LmMgYi90cmFuc3BvcnQuYwppbmRleCAzNWNhYzQ0Li41NjgzMWM1IDEwMDY0NAotLS0gYS90cmFuc3BvcnQuYworKysgYi90cmFuc3BvcnQuYwpAQCAtNzUsNyArNzUsNyBAQAogCiAJCQlpZiAoZmQgPCAwKQogCQkJCWNvbnRpbnVlOwotCQkJbmV4dCA9IGFsbG9jX3JlZihwYXRoLT5sZW4gLSBuYW1lX29mZnNldCArIDEpOworCQkJbmV4dCA9IGFsbG9jX3JlZihwYXRoLT5idWYgKyBuYW1lX29mZnNldCk7CiAJCQlpZiAocmVhZF9pbl9mdWxsKGZkLCBidWZmZXIsIDQwKSAhPSA0MCB8fAogCQkJCQlnZXRfc2hhMV9oZXgoYnVmZmVyLCBuZXh0LT5vbGRfc2hhMSkpIHsKIAkJCQljbG9zZShmZCk7CkBAIC04Myw3ICs4Myw2IEBACiAJCQkJY29udGludWU7CiAJCQl9CiAJCQljbG9zZShmZCk7Ci0JCQlzdHJjcHkobmV4dC0+bmFtZSwgcGF0aC0+YnVmICsgbmFtZV9vZmZzZXQpOwogCQkJKCp0YWlsKS0+bmV4dCA9IG5leHQ7CiAJCQkqdGFpbCA9IG5leHQ7CiAJCX0KQEAgLTEyNywxNCArMTI2LDEzIEBACiAJCQkJICAgICAgKCpsaXN0KS0+bmV4dC0+bmFtZSkpID4gMCkKIAkJCWxpc3QgPSAmKCpsaXN0KS0+bmV4dDsKIAkJaWYgKCEoKmxpc3QpLT5uZXh0IHx8IGNtcCA8IDApIHsKLQkJCXN0cnVjdCByZWYgKm5leHQgPSBhbGxvY19yZWYobGVuIC0gNDApOworCQkJc3RydWN0IHJlZiAqbmV4dCA9IGFsbG9jX3JlZihidWZmZXIgKyA0MSk7CiAJCQlidWZmZXJbNDBdID0gJ1wwJzsKIAkJCWlmIChnZXRfc2hhMV9oZXgoYnVmZmVyLCBuZXh0LT5vbGRfc2hhMSkpIHsKIAkJCQl3YXJuaW5nICgiaW52YWxpZCBTSEEtMTogJXMiLCBidWZmZXIpOwogCQkJCWZyZWUobmV4dCk7CiAJCQkJY29udGludWU7CiAJCQl9Ci0JCQlzdHJjcHkobmV4dC0+bmFtZSwgYnVmZmVyICsgNDEpOwogCQkJbmV4dC0+bmV4dCA9ICgqbGlzdCktPm5leHQ7CiAJCQkoKmxpc3QpLT5uZXh0ID0gbmV4dDsKIAkJCWxpc3QgPSAmKCpsaXN0KS0+bmV4dDsKQEAgLTUwMSw3ICs0OTksNyBAQAogCiAJc3RyYnVmX3JlbGVhc2UoJmJ1ZmZlcik7CiAKLQlyZWYgPSBhbGxvY19yZWZfZnJvbV9zdHIoIkhFQUQiKTsKKwlyZWYgPSBhbGxvY19yZWYoIkhFQUQiKTsKIAlpZiAoIXdhbGtlci0+ZmV0Y2hfcmVmKHdhbGtlciwgcmVmKSAmJgogCSAgICAhcmVzb2x2ZV9yZW1vdGVfc3ltcmVmKHJlZiwgcmVmcykpIHsKIAkJcmVmLT5uZXh0ID0gcmVmczsKQEAgLTU0Miw3ICs1NDAsNyBAQAogCQlkaWUgKCJDb3VsZCBub3QgcmVhZCBidW5kbGUgJyVzJy4iLCB0cmFuc3BvcnQtPnVybCk7CiAJZm9yIChpID0gMDsgaSA8IGRhdGEtPmhlYWRlci5yZWZlcmVuY2VzLm5yOyBpKyspIHsKIAkJc3RydWN0IHJlZl9saXN0X2VudHJ5ICplID0gZGF0YS0+aGVhZGVyLnJlZmVyZW5jZXMubGlzdCArIGk7Ci0JCXN0cnVjdCByZWYgKnJlZiA9IGFsbG9jX3JlZl9mcm9tX3N0cihlLT5uYW1lKTsKKwkJc3RydWN0IHJlZiAqcmVmID0gYWxsb2NfcmVmKGUtPm5hbWUpOwogCQloYXNoY3B5KHJlZi0+b2xkX3NoYTEsIGUtPnNoYTEpOwogCQlyZWYtPm5leHQgPSByZXN1bHQ7CiAJCXJlc3VsdCA9IHJlZjsKQEAgLTYxOSw3ICs2MTcsNyBAQAogCXN0cnVjdCByZWYgKnJlZnM7CiAKIAljb25uZWN0X3NldHVwKHRyYW5zcG9ydCk7Ci0JZ2V0X3JlbW90ZV9oZWFkcyhkYXRhLT5mZFswXSwgJnJlZnMsIDAsIE5VTEwsIDApOworCWdldF9yZW1vdGVfaGVhZHMoZGF0YS0+ZmRbMF0sICZyZWZzLCAwLCBOVUxMLCAwLCBOVUxMKTsKIAogCXJldHVybiByZWZzOwogfQpAQCAtNjQ0LDcgKzY0Miw3IEBACiAJYXJncy5pbmNsdWRlX3RhZyA9IGRhdGEtPmZvbGxvd3RhZ3M7CiAJYXJncy52ZXJib3NlID0gKHRyYW5zcG9ydC0+dmVyYm9zZSA+IDApOwogCWFyZ3MucXVpZXQgPSAodHJhbnNwb3J0LT52ZXJib3NlIDwgMCk7Ci0JYXJncy5ub19wcm9ncmVzcyA9IGFyZ3MucXVpZXQgfHwgIWlzYXR0eSgxKTsKKwlhcmdzLm5vX3Byb2dyZXNzID0gYXJncy5xdWlldCB8fCAoIXRyYW5zcG9ydC0+cHJvZ3Jlc3MgJiYgIWlzYXR0eSgxKSk7CiAJYXJncy5kZXB0aCA9IGRhdGEtPmRlcHRoOwogCiAJZm9yIChpID0gMDsgaSA8IG5yX2hlYWRzOyBpKyspCkBAIC02NTIsNyArNjUwLDcgQEAKIAogCWlmICghZGF0YS0+Y29ubikgewogCQljb25uZWN0X3NldHVwKHRyYW5zcG9ydCk7Ci0JCWdldF9yZW1vdGVfaGVhZHMoZGF0YS0+ZmRbMF0sICZyZWZzX3RtcCwgMCwgTlVMTCwgMCk7CisJCWdldF9yZW1vdGVfaGVhZHMoZGF0YS0+ZmRbMF0sICZyZWZzX3RtcCwgMCwgTlVMTCwgMCwgTlVMTCk7CiAJfQogCiAJcmVmcyA9IGZldGNoX3BhY2soJmFyZ3MsIGRhdGEtPmZkLCBkYXRhLT5jb25uLApkaWZmIC0tZ2l0IGEvdHJhbnNwb3J0LmggYi90cmFuc3BvcnQuaAppbmRleCBkMGI1MjA1Li42YmJjMWE4IDEwMDY0NAotLS0gYS90cmFuc3BvcnQuaAorKysgYi90cmFuc3BvcnQuaApAQCAtMjUsNiArMjUsOCBAQAogCWludCAoKmRpc2Nvbm5lY3QpKHN0cnVjdCB0cmFuc3BvcnQgKmNvbm5lY3Rpb24pOwogCWNoYXIgKnBhY2tfbG9ja2ZpbGU7CiAJc2lnbmVkIHZlcmJvc2UgOiAyOworCS8qIEZvcmNlIHByb2dyZXNzIGV2ZW4gaWYgdGhlIG91dHB1dCBpcyBub3QgYSB0dHkgKi8KKwl1bnNpZ25lZCBwcm9ncmVzcyA6IDE7CiB9OwogCiAjZGVmaW5lIFRSQU5TUE9SVF9QVVNIX0FMTCAxCmRpZmYgLS1naXQgYS91bnBhY2stdHJlZXMuYyBiL3VucGFjay10cmVlcy5jCmluZGV4IDQyMjllZWMuLjNhNGUxODEgMTAwNjQ0Ci0tLSBhL3VucGFjay10cmVlcy5jCisrKyBiL3VucGFjay10cmVlcy5jCkBAIC00OTcsNyArNDk3LDcgQEAKIAkgKiBhbnl0aGluZyBpbiB0aGUgZXhpc3RpbmcgZGlyZWN0b3J5IHRoZXJlLgogCSAqLwogCWludCBuYW1lbGVuOwotCWludCBwb3MsIGk7CisJaW50IGk7CiAJc3RydWN0IGRpcl9zdHJ1Y3QgZDsKIAljaGFyICpwYXRoYnVmOwogCWludCBjbnQgPSAwOwpAQCAtNTE4LDI0ICs1MTgsMjAgQEAKIAkgKiBpbiB0aGF0IGRpcmVjdG9yeS4KIAkgKi8KIAluYW1lbGVuID0gc3RybGVuKGNlLT5uYW1lKTsKLQlwb3MgPSBpbmRleF9uYW1lX3BvcyhvLT5zcmNfaW5kZXgsIGNlLT5uYW1lLCBuYW1lbGVuKTsKLQlpZiAoMCA8PSBwb3MpCi0JCXJldHVybiBjbnQ7IC8qIHdlIGhhdmUgaXQgYXMgbm9uZGlyZWN0b3J5ICovCi0JcG9zID0gLXBvcyAtIDE7Ci0JZm9yIChpID0gcG9zOyBpIDwgby0+c3JjX2luZGV4LT5jYWNoZV9ucjsgaSsrKSB7Ci0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBvLT5zcmNfaW5kZXgtPmNhY2hlW2ldOwotCQlpbnQgbGVuID0gY2VfbmFtZWxlbihjZSk7CisJZm9yIChpID0gby0+cG9zOyBpIDwgby0+c3JjX2luZGV4LT5jYWNoZV9ucjsgaSsrKSB7CisJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UyID0gby0+c3JjX2luZGV4LT5jYWNoZVtpXTsKKwkJaW50IGxlbiA9IGNlX25hbWVsZW4oY2UyKTsKIAkJaWYgKGxlbiA8IG5hbWVsZW4gfHwKLQkJICAgIHN0cm5jbXAoY2UtPm5hbWUsIGNlLT5uYW1lLCBuYW1lbGVuKSB8fAotCQkgICAgY2UtPm5hbWVbbmFtZWxlbl0gIT0gJy8nKQorCQkgICAgc3RybmNtcChjZS0+bmFtZSwgY2UyLT5uYW1lLCBuYW1lbGVuKSB8fAorCQkgICAgY2UyLT5uYW1lW25hbWVsZW5dICE9ICcvJykKIAkJCWJyZWFrOwogCQkvKgotCQkgKiBjZS0+bmFtZSBpcyBhbiBlbnRyeSBpbiB0aGUgc3ViZGlyZWN0b3J5LgorCQkgKiBjZTItPm5hbWUgaXMgYW4gZW50cnkgaW4gdGhlIHN1YmRpcmVjdG9yeS4KIAkJICovCi0JCWlmICghY2Vfc3RhZ2UoY2UpKSB7Ci0JCQlpZiAodmVyaWZ5X3VwdG9kYXRlKGNlLCBvKSkKKwkJaWYgKCFjZV9zdGFnZShjZTIpKSB7CisJCQlpZiAodmVyaWZ5X3VwdG9kYXRlKGNlMiwgbykpCiAJCQkJcmV0dXJuIC0xOwotCQkJYWRkX2VudHJ5KG8sIGNlLCBDRV9SRU1PVkUsIDApOworCQkJYWRkX2VudHJ5KG8sIGNlMiwgQ0VfUkVNT1ZFLCAwKTsKIAkJfQogCQljbnQrKzsKIAl9CkBAIC01OTEsNyArNTg3LDcgQEAKIAkJcmV0dXJuIDA7CiAKIAlpZiAoIWxzdGF0KGNlLT5uYW1lLCAmc3QpKSB7Ci0JCWludCBjbnQ7CisJCWludCByZXQ7CiAJCWludCBkdHlwZSA9IGNlX3RvX2R0eXBlKGNlKTsKIAkJc3RydWN0IGNhY2hlX2VudHJ5ICpyZXN1bHQ7CiAKQEAgLTYxOSwxMyArNjE1LDE1IEBACiAJCQkgKiBmaWxlcyB0aGF0IGFyZSBpbiAiZm9vLyIgd2Ugd291bGQgbG9zZQogCQkJICogaXQuCiAJCQkgKi8KLQkJCWNudCA9IHZlcmlmeV9jbGVhbl9zdWJkaXJlY3RvcnkoY2UsIGFjdGlvbiwgbyk7CisJCQlyZXQgPSB2ZXJpZnlfY2xlYW5fc3ViZGlyZWN0b3J5KGNlLCBhY3Rpb24sIG8pOworCQkJaWYgKHJldCA8IDApCisJCQkJcmV0dXJuIHJldDsKIAogCQkJLyoKIAkJCSAqIElmIHRoaXMgcmVtb3ZlZCBlbnRyaWVzIGZyb20gdGhlIGluZGV4LAogCQkJICogd2hhdCB0aGF0IG1lYW5zIGlzOgogCQkJICoKLQkJCSAqICgxKSB0aGUgY2FsbGVyIHVucGFja190cmVlc19yZWMoKSBzYXcgcGF0aC9mb28KKwkJCSAqICgxKSB0aGUgY2FsbGVyIHVucGFja19jYWxsYmFjaygpIHNhdyBwYXRoL2ZvbwogCQkJICogaW4gdGhlIGluZGV4LCBhbmQgaXQgaGFzIG5vdCByZW1vdmVkIGl0IGJlY2F1c2UKIAkJCSAqIGl0IHRoaW5rcyBpdCBpcyBoYW5kbGluZyAncGF0aCcgYXMgYmxvYiB3aXRoCiAJCQkgKiBEL0YgY29uZmxpY3Q7CkBAIC02MzgsNyArNjM2LDcgQEAKIAkJCSAqIFdlIG5lZWQgdG8gaW5jcmVtZW50IGl0IGJ5IHRoZSBudW1iZXIgb2YKIAkJCSAqIGRlbGV0ZWQgZW50cmllcyBoZXJlLgogCQkJICovCi0JCQlvLT5wb3MgKz0gY250OworCQkJby0+cG9zICs9IHJldDsKIAkJCXJldHVybiAwOwogCQl9CiAKZGlmZiAtLWdpdCBhL3VzYWdlLmMgYi91c2FnZS5jCmluZGV4IGE1ZmM0ZWMuLjI0ZjVmYzAgMTAwNjQ0Ci0tLSBhL3VzYWdlLmMKKysrIGIvdXNhZ2UuYwpAQCAtNDEsMjcgKzQxLDExIEBACiBzdGF0aWMgdm9pZCAoKmVycm9yX3JvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpID0gZXJyb3JfYnVpbHRpbjsKIHN0YXRpYyB2b2lkICgqd2Fybl9yb3V0aW5lKShjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKSA9IHdhcm5fYnVpbHRpbjsKIAotdm9pZCBzZXRfdXNhZ2Vfcm91dGluZSh2b2lkICgqcm91dGluZSkoY29uc3QgY2hhciAqZXJyKSBOT1JFVFVSTikKLXsKLQl1c2FnZV9yb3V0aW5lID0gcm91dGluZTsKLX0KLQogdm9pZCBzZXRfZGllX3JvdXRpbmUodm9pZCAoKnJvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpIE5PUkVUVVJOKQogewogCWRpZV9yb3V0aW5lID0gcm91dGluZTsKIH0KIAotdm9pZCBzZXRfZXJyb3Jfcm91dGluZSh2b2lkICgqcm91dGluZSkoY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcykpCi17Ci0JZXJyb3Jfcm91dGluZSA9IHJvdXRpbmU7Ci19Ci0KLXZvaWQgc2V0X3dhcm5fcm91dGluZSh2b2lkICgqcm91dGluZSkoY29uc3QgY2hhciAqd2FybiwgdmFfbGlzdCBwYXJhbXMpKQotewotCXdhcm5fcm91dGluZSA9IHJvdXRpbmU7Ci19Ci0KLQogdm9pZCB1c2FnZShjb25zdCBjaGFyICplcnIpCiB7CiAJdXNhZ2Vfcm91dGluZShlcnIpOwpkaWZmIC0tZ2l0IGEvdXNlcmRpZmYuYyBiL3VzZXJkaWZmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY4MTA2MgotLS0gL2Rldi9udWxsCisrKyBiL3VzZXJkaWZmLmMKQEAgLTAsMCArMSwxNjcgQEAKKyNpbmNsdWRlICJ1c2VyZGlmZi5oIgorI2luY2x1ZGUgImNhY2hlLmgiCisjaW5jbHVkZSAiYXR0ci5oIgorCitzdGF0aWMgc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJpdmVyczsKK3N0YXRpYyBpbnQgbmRyaXZlcnM7CitzdGF0aWMgaW50IGRyaXZlcnNfYWxsb2M7CisKKyNkZWZpbmUgRlVOQ05BTUUobmFtZSwgcGF0dGVybikgXAorCXsgbmFtZSwgTlVMTCwgLTEsIHsgcGF0dGVybiwgUkVHX0VYVEVOREVEIH0gfQorc3RhdGljIHN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgYnVpbHRpbl9kcml2ZXJzW10gPSB7CitGVU5DTkFNRSgiaHRtbCIsICJeWyBcdF0qKDxbSGhdWzEtNl1bIFx0XS4qPi4qKSQiKSwKK0ZVTkNOQU1FKCJqYXZhIiwKKwkgIiFeWyBcdF0qKGNhdGNofGRvfGZvcnxpZnxpbnN0YW5jZW9mfG5ld3xyZXR1cm58c3dpdGNofHRocm93fHdoaWxlKVxuIgorCSAiXlsgXHRdKigoWyBcdF0qW0EtWmEtel9dW0EtWmEtel8wLTldKil7Mix9WyBcdF0qXFwoW147XSopJCIpLAorRlVOQ05BTUUoIm9iamMiLAorCSAvKiBOZWdhdGUgQyBzdGF0ZW1lbnRzIHRoYXQgY2FuIGxvb2sgbGlrZSBmdW5jdGlvbnMgKi8KKwkgIiFeWyBcdF0qKGRvfGZvcnxpZnxlbHNlfHJldHVybnxzd2l0Y2h8d2hpbGUpXG4iCisJIC8qIE9iamVjdGl2ZS1DIG1ldGhvZHMgKi8KKwkgIl5bIFx0XSooWy0rXVsgXHRdKlxcKFsgXHRdKltBLVphLXpfXVtBLVphLXpfMC05KiBcdF0qXFwpWyBcdF0qW0EtWmEtel9dLiopJFxuIgorCSAvKiBDIGZ1bmN0aW9ucyAqLworCSAiXlsgXHRdKigoWyBcdF0qW0EtWmEtel9dW0EtWmEtel8wLTldKil7Mix9WyBcdF0qXFwoW147XSopJFxuIgorCSAvKiBPYmplY3RpdmUtQyBjbGFzcy9wcm90b2NvbCBkZWZpbml0aW9ucyAqLworCSAiXihAKGltcGxlbWVudGF0aW9ufGludGVyZmFjZXxwcm90b2NvbClbIFx0XS4qKSQiKSwKK0ZVTkNOQU1FKCJwYXNjYWwiLAorCSAiXigocHJvY2VkdXJlfGZ1bmN0aW9ufGNvbnN0cnVjdG9yfGRlc3RydWN0b3J8aW50ZXJmYWNlfCIKKwkJImltcGxlbWVudGF0aW9ufGluaXRpYWxpemF0aW9ufGZpbmFsaXphdGlvbilbIFx0XSouKikkIgorCSAiXG4iCisJICJeKC4qPVsgXHRdKihjbGFzc3xyZWNvcmQpLiopJCIpLAorRlVOQ05BTUUoInBocCIsICJeW1x0IF0qKChmdW5jdGlvbnxjbGFzcykuKikiKSwKK0ZVTkNOQU1FKCJweXRob24iLCAiXlsgXHRdKigoY2xhc3N8ZGVmKVsgXHRdLiopJCIpLAorRlVOQ05BTUUoInJ1YnkiLCAiXlsgXHRdKigoY2xhc3N8bW9kdWxlfGRlZilbIFx0XS4qKSQiKSwKK0ZVTkNOQU1FKCJiaWJ0ZXgiLCAiKEBbYS16QS1aXXsxLH1bIFx0XSpcXHt7MCwxfVsgXHRdKlteIFx0XCJAJyxcXCN9e34lXSopLiokIiksCitGVU5DTkFNRSgidGV4IiwgIl4oXFxcXCgoc3ViKSpzZWN0aW9ufGNoYXB0ZXJ8cGFydClcXCp7MCwxfVxcey4qKSQiKSwKK3sgImRlZmF1bHQiLCBOVUxMLCAtMSwgeyBOVUxMLCAwIH0gfSwKK307CisjdW5kZWYgRlVOQ05BTUUKKworc3RhdGljIHN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgZHJpdmVyX3RydWUgPSB7CisJImRpZmY9dHJ1ZSIsCisJTlVMTCwKKwkwLAorCXsgTlVMTCwgMCB9Cit9OworCitzdGF0aWMgc3RydWN0IHVzZXJkaWZmX2RyaXZlciBkcml2ZXJfZmFsc2UgPSB7CisJIiFkaWZmIiwKKwlOVUxMLAorCTEsCisJeyBOVUxMLCAwIH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp1c2VyZGlmZl9maW5kX2J5X25hbWVsZW4oY29uc3QgY2hhciAqaywgaW50IGxlbikKK3sKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgbmRyaXZlcnM7IGkrKykgeworCQlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICpkcnYgPSBkcml2ZXJzICsgaTsKKwkJaWYgKCFzdHJuY21wKGRydi0+bmFtZSwgaywgbGVuKSAmJiAhZHJ2LT5uYW1lW2xlbl0pCisJCQlyZXR1cm4gZHJ2OworCX0KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShidWlsdGluX2RyaXZlcnMpOyBpKyspIHsKKwkJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJ2ID0gYnVpbHRpbl9kcml2ZXJzICsgaTsKKwkJaWYgKCFzdHJuY21wKGRydi0+bmFtZSwgaywgbGVuKSAmJiAhZHJ2LT5uYW1lW2xlbl0pCisJCQlyZXR1cm4gZHJ2OworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnBhcnNlX2RyaXZlcihjb25zdCBjaGFyICp2YXIsCisJCWNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBjaGFyICp0eXBlKQoreworCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKmRydjsKKwljb25zdCBjaGFyICpkb3Q7CisJY29uc3QgY2hhciAqbmFtZTsKKwlpbnQgbmFtZWxlbjsKKworCWlmIChwcmVmaXhjbXAodmFyLCAiZGlmZi4iKSkKKwkJcmV0dXJuIE5VTEw7CisJZG90ID0gc3RycmNocih2YXIsICcuJyk7CisJaWYgKGRvdCA9PSB2YXIgKyA0KQorCQlyZXR1cm4gTlVMTDsKKwlpZiAoc3RyY21wKHR5cGUsIGRvdCsxKSkKKwkJcmV0dXJuIE5VTEw7CisKKwluYW1lID0gdmFyICsgNTsKKwluYW1lbGVuID0gZG90IC0gbmFtZTsKKwlkcnYgPSB1c2VyZGlmZl9maW5kX2J5X25hbWVsZW4obmFtZSwgbmFtZWxlbik7CisJaWYgKCFkcnYpIHsKKwkJQUxMT0NfR1JPVyhkcml2ZXJzLCBuZHJpdmVycysxLCBkcml2ZXJzX2FsbG9jKTsKKwkJZHJ2ID0gJmRyaXZlcnNbbmRyaXZlcnMrK107CisJCW1lbXNldChkcnYsIDAsIHNpemVvZigqZHJ2KSk7CisJCWRydi0+bmFtZSA9IHhtZW1kdXB6KG5hbWUsIG5hbWVsZW4pOworCQlkcnYtPmJpbmFyeSA9IC0xOworCX0KKwlyZXR1cm4gZHJ2OworfQorCitzdGF0aWMgaW50IHBhcnNlX2Z1bmNuYW1lKHN0cnVjdCB1c2VyZGlmZl9mdW5jbmFtZSAqZiwgY29uc3QgY2hhciAqaywKKwkJY29uc3QgY2hhciAqdiwgaW50IGNmbGFncykKK3sKKwlpZiAoZ2l0X2NvbmZpZ19zdHJpbmcoJmYtPnBhdHRlcm4sIGssIHYpIDwgMCkKKwkJcmV0dXJuIC0xOworCWYtPmNmbGFncyA9IGNmbGFnczsKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGludCBwYXJzZV9zdHJpbmcoY29uc3QgY2hhciAqKmQsIGNvbnN0IGNoYXIgKmssIGNvbnN0IGNoYXIgKnYpCit7CisJaWYgKGdpdF9jb25maWdfc3RyaW5nKGQsIGssIHYpIDwgMCkKKwkJcmV0dXJuIC0xOworCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IHBhcnNlX3RyaXN0YXRlKGludCAqYiwgY29uc3QgY2hhciAqaywgY29uc3QgY2hhciAqdikKK3sKKwlpZiAodiAmJiAhc3RyY2FzZWNtcCh2LCAiYXV0byIpKQorCQkqYiA9IC0xOworCWVsc2UKKwkJKmIgPSBnaXRfY29uZmlnX2Jvb2woaywgdik7CisJcmV0dXJuIDE7Cit9CisKK2ludCB1c2VyZGlmZl9jb25maWcoY29uc3QgY2hhciAqaywgY29uc3QgY2hhciAqdikKK3sKKwlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICpkcnY7CisKKwlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAiZnVuY25hbWUiKSkpCisJCXJldHVybiBwYXJzZV9mdW5jbmFtZSgmZHJ2LT5mdW5jbmFtZSwgaywgdiwgMCk7CisJaWYgKChkcnYgPSBwYXJzZV9kcml2ZXIoaywgdiwgInhmdW5jbmFtZSIpKSkKKwkJcmV0dXJuIHBhcnNlX2Z1bmNuYW1lKCZkcnYtPmZ1bmNuYW1lLCBrLCB2LCBSRUdfRVhURU5ERUQpOworCWlmICgoZHJ2ID0gcGFyc2VfZHJpdmVyKGssIHYsICJiaW5hcnkiKSkpCisJCXJldHVybiBwYXJzZV90cmlzdGF0ZSgmZHJ2LT5iaW5hcnksIGssIHYpOworCWlmICgoZHJ2ID0gcGFyc2VfZHJpdmVyKGssIHYsICJjb21tYW5kIikpKQorCQlyZXR1cm4gcGFyc2Vfc3RyaW5nKCZkcnYtPmV4dGVybmFsLCBrLCB2KTsKKwlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAidGV4dGNvbnYiKSkpCisJCXJldHVybiBwYXJzZV9zdHJpbmcoJmRydi0+dGV4dGNvbnYsIGssIHYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnVzZXJkaWZmX2ZpbmRfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKSB7CisJaW50IGxlbiA9IHN0cmxlbihuYW1lKTsKKwlyZXR1cm4gdXNlcmRpZmZfZmluZF9ieV9uYW1lbGVuKG5hbWUsIGxlbik7Cit9CisKK3N0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnVzZXJkaWZmX2ZpbmRfYnlfcGF0aChjb25zdCBjaGFyICpwYXRoKQoreworCXN0YXRpYyBzdHJ1Y3QgZ2l0X2F0dHIgKmF0dHI7CisJc3RydWN0IGdpdF9hdHRyX2NoZWNrIGNoZWNrOworCisJaWYgKCFhdHRyKQorCQlhdHRyID0gZ2l0X2F0dHIoImRpZmYiLCA0KTsKKwljaGVjay5hdHRyID0gYXR0cjsKKworCWlmICghcGF0aCkKKwkJcmV0dXJuIE5VTEw7CisJaWYgKGdpdF9jaGVja2F0dHIocGF0aCwgMSwgJmNoZWNrKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoQVRUUl9UUlVFKGNoZWNrLnZhbHVlKSkKKwkJcmV0dXJuICZkcml2ZXJfdHJ1ZTsKKwlpZiAoQVRUUl9GQUxTRShjaGVjay52YWx1ZSkpCisJCXJldHVybiAmZHJpdmVyX2ZhbHNlOworCWlmIChBVFRSX1VOU0VUKGNoZWNrLnZhbHVlKSkKKwkJcmV0dXJuIE5VTEw7CisJcmV0dXJuIHVzZXJkaWZmX2ZpbmRfYnlfbmFtZShjaGVjay52YWx1ZSk7Cit9CmRpZmYgLS1naXQgYS91c2VyZGlmZi5oIGIvdXNlcmRpZmYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTI5NDU3Ci0tLSAvZGV2L251bGwKKysrIGIvdXNlcmRpZmYuaApAQCAtMCwwICsxLDIxIEBACisjaWZuZGVmIFVTRVJESUZGX0gKKyNkZWZpbmUgVVNFUkRJRkZfSAorCitzdHJ1Y3QgdXNlcmRpZmZfZnVuY25hbWUgeworCWNvbnN0IGNoYXIgKnBhdHRlcm47CisJaW50IGNmbGFnczsKK307CisKK3N0cnVjdCB1c2VyZGlmZl9kcml2ZXIgeworCWNvbnN0IGNoYXIgKm5hbWU7CisJY29uc3QgY2hhciAqZXh0ZXJuYWw7CisJaW50IGJpbmFyeTsKKwlzdHJ1Y3QgdXNlcmRpZmZfZnVuY25hbWUgZnVuY25hbWU7CisJY29uc3QgY2hhciAqdGV4dGNvbnY7Cit9OworCitpbnQgdXNlcmRpZmZfY29uZmlnKGNvbnN0IGNoYXIgKmssIGNvbnN0IGNoYXIgKnYpOworc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdXNlcmRpZmZfZmluZF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpOworc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdXNlcmRpZmZfZmluZF9ieV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOworCisjZW5kaWYgLyogVVNFUkRJRkYgKi8KZGlmZiAtLWdpdCBhL3dhbGtlci5jIGIvd2Fsa2VyLmMKaW5kZXggMGU2OGVlNi4uNjc5YWRhYiAxMDA2NDQKLS0tIGEvd2Fsa2VyLmMKKysrIGIvd2Fsa2VyLmMKQEAgLTE5MSw3ICsxOTEsNyBAQAogCWlmICghZ2V0X3NoYTFfaGV4KHRhcmdldCwgc2hhMSkpCiAJCXJldHVybiAwOwogCWlmICghY2hlY2tfcmVmX2Zvcm1hdCh0YXJnZXQpKSB7Ci0JCXN0cnVjdCByZWYgKnJlZiA9IGFsbG9jX3JlZl9mcm9tX3N0cih0YXJnZXQpOworCQlzdHJ1Y3QgcmVmICpyZWYgPSBhbGxvY19yZWYodGFyZ2V0KTsKIAkJaWYgKCF3YWxrZXItPmZldGNoX3JlZih3YWxrZXIsIHJlZikpIHsKIAkJCWhhc2hjcHkoc2hhMSwgcmVmLT5vbGRfc2hhMSk7CiAJCQlmcmVlKHJlZik7CkBAIC0yMTUsOSArMjE1LDggQEAKIGludCB3YWxrZXJfdGFyZ2V0c19zdGRpbihjaGFyICoqKnRhcmdldCwgY29uc3QgY2hhciAqKip3cml0ZV9yZWYpCiB7CiAJaW50IHRhcmdldHMgPSAwLCB0YXJnZXRzX2FsbG9jID0gMDsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCSp0YXJnZXQgPSBOVUxMOyAqd3JpdGVfcmVmID0gTlVMTDsKLQlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAl3aGlsZSAoMSkgewogCQljaGFyICpyZl9vbmUgPSBOVUxMOwogCQljaGFyICp0Z19vbmU7CmRpZmYgLS1naXQgYS93cmFwcGVyLmMgYi93cmFwcGVyLmMKaW5kZXggOTM1NjJmMC4uYzg1Y2E1MiAxMDA2NDQKLS0tIGEvd3JhcHBlci5jCisrKyBiL3dyYXBwZXIuYwpAQCAtMTk2LDMgKzE5Niw2MyBAQAogCQlkaWUoIlVuYWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAlyZXR1cm4gZmQ7CiB9CisKKy8qCisgKiB6bGliIHdyYXBwZXJzIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBzaWxlbnRseSBtaXNzIGVycm9ycworICogYXQgaW5pdCB0aW1lLgorICovCit2b2lkIGdpdF9pbmZsYXRlX2luaXQoel9zdHJlYW1wIHN0cm0pCit7CisJY29uc3QgY2hhciAqZXJyOworCisJc3dpdGNoIChpbmZsYXRlSW5pdChzdHJtKSkgeworCWNhc2UgWl9PSzoKKwkJcmV0dXJuOworCisJY2FzZSBaX01FTV9FUlJPUjoKKwkJZXJyID0gIm91dCBvZiBtZW1vcnkiOworCQlicmVhazsKKwljYXNlIFpfVkVSU0lPTl9FUlJPUjoKKwkJZXJyID0gIndyb25nIHZlcnNpb24iOworCQlicmVhazsKKwlkZWZhdWx0OgorCQllcnIgPSAiZXJyb3IiOworCX0KKwlkaWUoImluZmxhdGVJbml0OiAlcyAoJXMpIiwgZXJyLCBzdHJtLT5tc2cgPyBzdHJtLT5tc2cgOiAibm8gbWVzc2FnZSIpOworfQorCit2b2lkIGdpdF9pbmZsYXRlX2VuZCh6X3N0cmVhbXAgc3RybSkKK3sKKwlpZiAoaW5mbGF0ZUVuZChzdHJtKSAhPSBaX09LKQorCQllcnJvcigiaW5mbGF0ZUVuZDogJXMiLCBzdHJtLT5tc2cgPyBzdHJtLT5tc2cgOiAiZmFpbGVkIik7Cit9CisKK2ludCBnaXRfaW5mbGF0ZSh6X3N0cmVhbXAgc3RybSwgaW50IGZsdXNoKQoreworCWludCByZXQgPSBpbmZsYXRlKHN0cm0sIGZsdXNoKTsKKwljb25zdCBjaGFyICplcnI7CisKKwlzd2l0Y2ggKHJldCkgeworCS8qIE91dCBvZiBtZW1vcnkgaXMgZmF0YWwuICovCisJY2FzZSBaX01FTV9FUlJPUjoKKwkJZGllKCJpbmZsYXRlOiBvdXQgb2YgbWVtb3J5Iik7CisKKwkvKiBEYXRhIGNvcnJ1cHRpb24gZXJyb3JzOiB3ZSBtYXkgd2FudCB0byByZWNvdmVyIGZyb20gdGhlbSAoZnNjaykgKi8KKwljYXNlIFpfTkVFRF9ESUNUOgorCQllcnIgPSAibmVlZHMgZGljdGlvbmFyeSI7IGJyZWFrOworCWNhc2UgWl9EQVRBX0VSUk9SOgorCQllcnIgPSAiZGF0YSBzdHJlYW0gZXJyb3IiOyBicmVhazsKKwljYXNlIFpfU1RSRUFNX0VSUk9SOgorCQllcnIgPSAic3RyZWFtIGNvbnNpc3RlbmN5IGVycm9yIjsgYnJlYWs7CisJZGVmYXVsdDoKKwkJZXJyID0gInVua25vd24gZXJyb3IiOyBicmVhazsKKworCS8qIFpfQlVGX0VSUk9SOiBub3JtYWwsIG5lZWRzIG1vcmUgc3BhY2UgaW4gdGhlIG91dHB1dCBidWZmZXIgKi8KKwljYXNlIFpfQlVGX0VSUk9SOgorCWNhc2UgWl9PSzoKKwljYXNlIFpfU1RSRUFNX0VORDoKKwkJcmV0dXJuIHJldDsKKwl9CisJZXJyb3IoImluZmxhdGU6ICVzICglcykiLCBlcnIsIHN0cm0tPm1zZyA/IHN0cm0tPm1zZyA6ICJubyBtZXNzYWdlIik7CisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL3dzLmMgYi93cy5jCmluZGV4IDdhN2ZmMTMuLmIxZWZjZDkgMTAwNjQ0Ci0tLSBhL3dzLmMKKysrIGIvd3MuYwpAQCAtOTksOCArOTksNyBAQAogLyogVGhlIHJldHVybmVkIHN0cmluZyBzaG91bGQgYmUgZnJlZWQgYnkgdGhlIGNhbGxlci4gKi8KIGNoYXIgKndoaXRlc3BhY2VfZXJyb3Jfc3RyaW5nKHVuc2lnbmVkIHdzKQogewotCXN0cnVjdCBzdHJidWYgZXJyOwotCXN0cmJ1Zl9pbml0KCZlcnIsIDApOworCXN0cnVjdCBzdHJidWYgZXJyID0gU1RSQlVGX0lOSVQ7CiAJaWYgKHdzICYgV1NfVFJBSUxJTkdfU1BBQ0UpCiAJCXN0cmJ1Zl9hZGRzdHIoJmVyciwgInRyYWlsaW5nIHdoaXRlc3BhY2UiKTsKIAlpZiAod3MgJiBXU19TUEFDRV9CRUZPUkVfVEFCKSB7CmRpZmYgLS1naXQgYS93dC1zdGF0dXMuYyBiL3d0LXN0YXR1cy5jCmluZGV4IDY0Y2VkZmMuLjk2ZmYyZjggMTAwNjQ0Ci0tLSBhL3d0LXN0YXR1cy5jCisrKyBiL3d0LXN0YXR1cy5jCkBAIC0yMiwxMiArMjIsNiBAQAogCSJcMDMzWzMxbSIsIC8qIFdUX1NUQVRVU19OT0JSQU5DSDogcmVkICovCiB9OwogCi1zdGF0aWMgY29uc3QgY2hhciB1c2VfYWRkX21zZ1tdID0KLSJ1c2UgXCJnaXQgYWRkIDxmaWxlPi4uLlwiIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkIjsKLXN0YXRpYyBjb25zdCBjaGFyIHVzZV9hZGRfcm1fbXNnW10gPQotInVzZSBcImdpdCBhZGQvcm0gPGZpbGU+Li4uXCIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQiOwotc3RhdGljIGNvbnN0IGNoYXIgdXNlX2FkZF90b19pbmNsdWRlX21zZ1tdID0KLSJ1c2UgXCJnaXQgYWRkIDxmaWxlPi4uLlwiIHRvIGluY2x1ZGUgaW4gd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCI7CiBlbnVtIHVudHJhY2tlZF9zdGF0dXNfdHlwZSBzaG93X3VudHJhY2tlZF9maWxlcyA9IFNIT1dfTk9STUFMX1VOVFJBQ0tFRF9GSUxFUzsKIAogc3RhdGljIGludCBwYXJzZV9zdGF0dXNfc2xvdChjb25zdCBjaGFyICp2YXIsIGludCBvZmZzZXQpCkBAIC03NiwxMiArNzAsMjQgQEAKIAljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjLCAiIyIpOwogfQogCi1zdGF0aWMgdm9pZCB3dF9zdGF0dXNfcHJpbnRfaGVhZGVyKHN0cnVjdCB3dF9zdGF0dXMgKnMsCi0JCQkJICAgY29uc3QgY2hhciAqbWFpbiwgY29uc3QgY2hhciAqc3ViKQorc3RhdGljIHZvaWQgd3Rfc3RhdHVzX3ByaW50X2RpcnR5X2hlYWRlcihzdHJ1Y3Qgd3Rfc3RhdHVzICpzLAorCQkJCQkgaW50IGhhc19kZWxldGVkKQogewogCWNvbnN0IGNoYXIgKmMgPSBjb2xvcihXVF9TVEFUVVNfSEVBREVSKTsKLQljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjLCAiIyAlczoiLCBtYWluKTsKLQljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjLCAiIyAgICglcykiLCBzdWIpOworCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGMsICIjIENoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIpOworCWlmICghaGFzX2RlbGV0ZWQpCisJCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGMsICIjICAgKHVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIik7CisJZWxzZQorCQljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjLCAiIyAgICh1c2UgXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKSIpOworCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGMsICIjICAgKHVzZSBcImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi5cIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpIik7CisJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgYywgIiMiKTsKK30KKworc3RhdGljIHZvaWQgd3Rfc3RhdHVzX3ByaW50X3VudHJhY2tlZF9oZWFkZXIoc3RydWN0IHd0X3N0YXR1cyAqcykKK3sKKwljb25zdCBjaGFyICpjID0gY29sb3IoV1RfU1RBVFVTX0hFQURFUik7CisJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgYywgIiMgVW50cmFja2VkIGZpbGVzOiIpOworCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGMsICIjICAgKHVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gaW5jbHVkZSBpbiB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKSIpOwogCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGMsICIjIik7CiB9CiAKQEAgLTk3LDEwICsxMDMsOCBAQAogewogCWNvbnN0IGNoYXIgKmMgPSBjb2xvcih0KTsKIAljb25zdCBjaGFyICpvbmUsICp0d287Ci0Jc3RydWN0IHN0cmJ1ZiBvbmVidWYsIHR3b2J1ZjsKKwlzdHJ1Y3Qgc3RyYnVmIG9uZWJ1ZiA9IFNUUkJVRl9JTklULCB0d29idWYgPSBTVFJCVUZfSU5JVDsKIAotCXN0cmJ1Zl9pbml0KCZvbmVidWYsIDApOwotCXN0cmJ1Zl9pbml0KCZ0d29idWYsIDApOwogCW9uZSA9IHF1b3RlX3BhdGgocC0+b25lLT5wYXRoLCAtMSwgJm9uZWJ1Ziwgcy0+cHJlZml4KTsKIAl0d28gPSBxdW90ZV9wYXRoKHAtPnR3by0+cGF0aCwgLTEsICZ0d29idWYsIHMtPnByZWZpeCk7CiAKQEAgLTE2NiwxNCArMTcwLDE0IEBACiAJc3RydWN0IHd0X3N0YXR1cyAqcyA9IGRhdGE7CiAJaW50IGk7CiAJaWYgKHEtPm5yKSB7Ci0JCWNvbnN0IGNoYXIgKm1zZyA9IHVzZV9hZGRfbXNnOworCQlpbnQgaGFzX2RlbGV0ZWQgPSAwOwogCQlzLT53b3JrZGlyX2RpcnR5ID0gMTsKIAkJZm9yIChpID0gMDsgaSA8IHEtPm5yOyBpKyspCiAJCQlpZiAocS0+cXVldWVbaV0tPnN0YXR1cyA9PSBESUZGX1NUQVRVU19ERUxFVEVEKSB7Ci0JCQkJbXNnID0gdXNlX2FkZF9ybV9tc2c7CisJCQkJaGFzX2RlbGV0ZWQgPSAxOwogCQkJCWJyZWFrOwogCQkJfQotCQl3dF9zdGF0dXNfcHJpbnRfaGVhZGVyKHMsICJDaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZCIsIG1zZyk7CisJCXd0X3N0YXR1c19wcmludF9kaXJ0eV9oZWFkZXIocywgaGFzX2RlbGV0ZWQpOwogCX0KIAlmb3IgKGkgPSAwOyBpIDwgcS0+bnI7IGkrKykKIAkJd3Rfc3RhdHVzX3ByaW50X2ZpbGVwYWlyKHMsIFdUX1NUQVRVU19DSEFOR0VELCBxLT5xdWV1ZVtpXSk7CkBAIC0xODEsMzIgKzE4NSwxMiBAQAogCQl3dF9zdGF0dXNfcHJpbnRfdHJhaWxlcihzKTsKIH0KIAotc3RhdGljIHZvaWQgd3Rfc3RhdHVzX3ByaW50X2luaXRpYWwoc3RydWN0IHd0X3N0YXR1cyAqcykKLXsKLQlpbnQgaTsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKLQotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwotCWlmIChhY3RpdmVfbnIpIHsKLQkJcy0+Y29tbWl0YWJsZSA9IDE7Ci0JCXd0X3N0YXR1c19wcmludF9jYWNoZWRfaGVhZGVyKHMpOwotCX0KLQlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKLQkJY29sb3JfZnByaW50ZihzLT5mcCwgY29sb3IoV1RfU1RBVFVTX0hFQURFUiksICIjXHQiKTsKLQkJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgY29sb3IoV1RfU1RBVFVTX1VQREFURUQpLCAibmV3IGZpbGU6ICVzIiwKLQkJCQlxdW90ZV9wYXRoKGFjdGl2ZV9jYWNoZVtpXS0+bmFtZSwgLTEsCi0JCQkJCSAgICZidWYsIHMtPnByZWZpeCkpOwotCX0KLQlpZiAoYWN0aXZlX25yKQotCQl3dF9zdGF0dXNfcHJpbnRfdHJhaWxlcihzKTsKLQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLX0KLQogc3RhdGljIHZvaWQgd3Rfc3RhdHVzX3ByaW50X3VwZGF0ZWQoc3RydWN0IHd0X3N0YXR1cyAqcykKIHsKIAlzdHJ1Y3QgcmV2X2luZm8gcmV2OwogCWluaXRfcmV2aXNpb25zKCZyZXYsIE5VTEwpOwotCXNldHVwX3JldmlzaW9ucygwLCBOVUxMLCAmcmV2LCBzLT5yZWZlcmVuY2UpOworCXNldHVwX3JldmlzaW9ucygwLCBOVUxMLCAmcmV2LAorCQlzLT5pc19pbml0aWFsID8gRU1QVFlfVFJFRV9TSEExX0hFWCA6IHMtPnJlZmVyZW5jZSk7CiAJcmV2LmRpZmZvcHQub3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9DQUxMQkFDSzsKIAlyZXYuZGlmZm9wdC5mb3JtYXRfY2FsbGJhY2sgPSB3dF9zdGF0dXNfcHJpbnRfdXBkYXRlZF9jYjsKIAlyZXYuZGlmZm9wdC5mb3JtYXRfY2FsbGJhY2tfZGF0YSA9IHM7CkBAIC0yNjIsOSArMjQ2LDggQEAKIAlzdHJ1Y3QgZGlyX3N0cnVjdCBkaXI7CiAJaW50IGk7CiAJaW50IHNob3duX2hlYWRlciA9IDA7Ci0Jc3RydWN0IHN0cmJ1ZiBidWY7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAotCXN0cmJ1Zl9pbml0KCZidWYsIDApOwogCW1lbXNldCgmZGlyLCAwLCBzaXplb2YoZGlyKSk7CiAKIAlpZiAoIXMtPnVudHJhY2tlZCkgewpAQCAtMjgwLDggKzI2Myw3IEBACiAJCQljb250aW51ZTsKIAkJaWYgKCFzaG93bl9oZWFkZXIpIHsKIAkJCXMtPndvcmtkaXJfdW50cmFja2VkID0gMTsKLQkJCXd0X3N0YXR1c19wcmludF9oZWFkZXIocywgIlVudHJhY2tlZCBmaWxlcyIsCi0JCQkJCSAgICAgICB1c2VfYWRkX3RvX2luY2x1ZGVfbXNnKTsKKwkJCXd0X3N0YXR1c19wcmludF91bnRyYWNrZWRfaGVhZGVyKHMpOwogCQkJc2hvd25faGVhZGVyID0gMTsKIAkJfQogCQljb2xvcl9mcHJpbnRmKHMtPmZwLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSKSwgIiNcdCIpOwpAQCAtMjk3LDExICsyNzksMjEgQEAKIAlzdHJ1Y3QgcmV2X2luZm8gcmV2OwogCiAJaW5pdF9yZXZpc2lvbnMoJnJldiwgTlVMTCk7Ci0Jc2V0dXBfcmV2aXNpb25zKDAsIE5VTEwsICZyZXYsIHMtPnJlZmVyZW5jZSk7CisJRElGRl9PUFRfU0VUKCZyZXYuZGlmZm9wdCwgQUxMT1dfVEVYVENPTlYpOworCXNldHVwX3JldmlzaW9ucygwLCBOVUxMLCAmcmV2LAorCQlzLT5pc19pbml0aWFsID8gRU1QVFlfVFJFRV9TSEExX0hFWCA6IHMtPnJlZmVyZW5jZSk7CiAJcmV2LmRpZmZvcHQub3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9QQVRDSDsKIAlyZXYuZGlmZm9wdC5kZXRlY3RfcmVuYW1lID0gMTsKIAlyZXYuZGlmZm9wdC5maWxlID0gcy0+ZnA7CiAJcmV2LmRpZmZvcHQuY2xvc2VfZmlsZSA9IDA7CisJLyoKKwkgKiBJZiB3ZSdyZSBub3QgZ29pbmcgdG8gc3Rkb3V0LCB0aGVuIHdlIGRlZmluaXRlbHkgZG9uJ3QKKwkgKiB3YW50IGNvbG9yLCBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gdGhlIGNvbW1pdCBtZXNzYWdlCisJICogZmlsZSAoYW5kIGV2ZW4gdGhlICJhdXRvIiBzZXR0aW5nIHdvbid0IHdvcmssIHNpbmNlIGl0CisJICogd2lsbCBoYXZlIGNoZWNrZWQgaXNhdHR5IG9uIHN0ZG91dCkuCisJICovCisJaWYgKHMtPmZwICE9IHN0ZG91dCkKKwkJRElGRl9PUFRfQ0xSKCZyZXYuZGlmZm9wdCwgQ09MT1JfRElGRik7CiAJcnVuX2RpZmZfaW5kZXgoJnJldiwgMSk7CiB9CiAKQEAgLTM1MCwxMiArMzQyLDkgQEAKIAkJY29sb3JfZnByaW50Zl9sbihzLT5mcCwgY29sb3IoV1RfU1RBVFVTX0hFQURFUiksICIjIik7CiAJCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGNvbG9yKFdUX1NUQVRVU19IRUFERVIpLCAiIyBJbml0aWFsIGNvbW1pdCIpOwogCQljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSKSwgIiMiKTsKLQkJd3Rfc3RhdHVzX3ByaW50X2luaXRpYWwocyk7Ci0JfQotCWVsc2UgewotCQl3dF9zdGF0dXNfcHJpbnRfdXBkYXRlZChzKTsKIAl9CiAKKwl3dF9zdGF0dXNfcHJpbnRfdXBkYXRlZChzKTsKIAl3dF9zdGF0dXNfcHJpbnRfY2hhbmdlZChzKTsKIAlpZiAod3Rfc3RhdHVzX3N1Ym1vZHVsZV9zdW1tYXJ5KQogCQl3dF9zdGF0dXNfcHJpbnRfc3VibW9kdWxlX3N1bW1hcnkocyk7CkBAIC0zNjQsNyArMzUzLDcgQEAKIAllbHNlIGlmIChzLT5jb21taXRhYmxlKQogCQkgZnByaW50ZihzLT5mcCwgIiMgVW50cmFja2VkIGZpbGVzIG5vdCBsaXN0ZWQgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpXG4iKTsKIAotCWlmIChzLT52ZXJib3NlICYmICFzLT5pc19pbml0aWFsKQorCWlmIChzLT52ZXJib3NlKQogCQl3dF9zdGF0dXNfcHJpbnRfdmVyYm9zZShzKTsKIAlpZiAoIXMtPmNvbW1pdGFibGUpIHsKIAkJaWYgKHMtPmFtZW5kKQpAQCAtNDIxLDUgKzQxMCw1IEBACiAJCQlyZXR1cm4gZXJyb3IoIkludmFsaWQgdW50cmFja2VkIGZpbGVzIG1vZGUgJyVzJyIsIHYpOwogCQlyZXR1cm4gMDsKIAl9Ci0JcmV0dXJuIGdpdF9jb2xvcl9kZWZhdWx0X2NvbmZpZyhrLCB2LCBjYik7CisJcmV0dXJuIGdpdF9kaWZmX3VpX2NvbmZpZyhrLCB2LCBjYik7CiB9CmRpZmYgLS1naXQgYS94ZGlmZi1pbnRlcmZhY2UuYyBiL3hkaWZmLWludGVyZmFjZS5jCmluZGV4IDNiZjgzZjguLmQ3ODJmMDYgMTAwNjQ0Ci0tLSBhL3hkaWZmLWludGVyZmFjZS5jCisrKyBiL3hkaWZmLWludGVyZmFjZS5jCkBAIC0xLDUgKzEsMTUgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgInhkaWZmLWludGVyZmFjZS5oIgorI2luY2x1ZGUgInhkaWZmL3h0eXBlcy5oIgorI2luY2x1ZGUgInhkaWZmL3hkaWZmaS5oIgorI2luY2x1ZGUgInhkaWZmL3hlbWl0LmgiCisjaW5jbHVkZSAieGRpZmYveG1hY3Jvcy5oIgorCitzdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSB7CisJeGRpZmZfZW1pdF9jb25zdW1lX2ZuIGNvbnN1bWU7CisJdm9pZCAqY29uc3VtZV9jYWxsYmFja19kYXRhOworCXN0cnVjdCBzdHJidWYgcmVtYWluZGVyOworfTsKIAogc3RhdGljIGludCBwYXJzZV9udW0oY2hhciAqKmNwX3AsIGludCAqbnVtX3ApCiB7CkBAIC01NSwxMyArNjUsMTMgQEAKIAkJdW5zaWduZWQgbG9uZyB0aGlzX3NpemU7CiAJCWVwID0gbWVtY2hyKHMsICdcbicsIHNpemUpOwogCQl0aGlzX3NpemUgPSAoZXAgPT0gTlVMTCkgPyBzaXplIDogKGVwIC0gcyArIDEpOwotCQlwcml2LT5jb25zdW1lKHByaXYsIHMsIHRoaXNfc2l6ZSk7CisJCXByaXYtPmNvbnN1bWUocHJpdi0+Y29uc3VtZV9jYWxsYmFja19kYXRhLCBzLCB0aGlzX3NpemUpOwogCQlzaXplIC09IHRoaXNfc2l6ZTsKIAkJcyArPSB0aGlzX3NpemU7CiAJfQogfQogCi1pbnQgeGRpZmZfb3V0Zih2b2lkICpwcml2XywgbW1idWZmZXJfdCAqbWIsIGludCBuYnVmKQorc3RhdGljIGludCB4ZGlmZl9vdXRmKHZvaWQgKnByaXZfLCBtbWJ1ZmZlcl90ICptYiwgaW50IG5idWYpCiB7CiAJc3RydWN0IHhkaWZmX2VtaXRfc3RhdGUgKnByaXYgPSBwcml2XzsKIAlpbnQgaTsKQEAgLTY5LDM2ICs3OSwyMiBAQAogCWZvciAoaSA9IDA7IGkgPCBuYnVmOyBpKyspIHsKIAkJaWYgKG1iW2ldLnB0clttYltpXS5zaXplLTFdICE9ICdcbicpIHsKIAkJCS8qIEluY29tcGxldGUgbGluZSAqLwotCQkJcHJpdi0+cmVtYWluZGVyID0geHJlYWxsb2MocHJpdi0+cmVtYWluZGVyLAotCQkJCQkJICAgcHJpdi0+cmVtYWluZGVyX3NpemUgKwotCQkJCQkJICAgbWJbaV0uc2l6ZSk7Ci0JCQltZW1jcHkocHJpdi0+cmVtYWluZGVyICsgcHJpdi0+cmVtYWluZGVyX3NpemUsCi0JCQkgICAgICAgbWJbaV0ucHRyLCBtYltpXS5zaXplKTsKLQkJCXByaXYtPnJlbWFpbmRlcl9zaXplICs9IG1iW2ldLnNpemU7CisJCQlzdHJidWZfYWRkKCZwcml2LT5yZW1haW5kZXIsIG1iW2ldLnB0ciwgbWJbaV0uc2l6ZSk7CiAJCQljb250aW51ZTsKIAkJfQogCiAJCS8qIHdlIGhhdmUgYSBjb21wbGV0ZSBsaW5lICovCi0JCWlmICghcHJpdi0+cmVtYWluZGVyKSB7CisJCWlmICghcHJpdi0+cmVtYWluZGVyLmxlbikgewogCQkJY29uc3VtZV9vbmUocHJpdiwgbWJbaV0ucHRyLCBtYltpXS5zaXplKTsKIAkJCWNvbnRpbnVlOwogCQl9Ci0JCXByaXYtPnJlbWFpbmRlciA9IHhyZWFsbG9jKHByaXYtPnJlbWFpbmRlciwKLQkJCQkJICAgcHJpdi0+cmVtYWluZGVyX3NpemUgKwotCQkJCQkgICBtYltpXS5zaXplKTsKLQkJbWVtY3B5KHByaXYtPnJlbWFpbmRlciArIHByaXYtPnJlbWFpbmRlcl9zaXplLAotCQkgICAgICAgbWJbaV0ucHRyLCBtYltpXS5zaXplKTsKLQkJY29uc3VtZV9vbmUocHJpdiwgcHJpdi0+cmVtYWluZGVyLAotCQkJICAgIHByaXYtPnJlbWFpbmRlcl9zaXplICsgbWJbaV0uc2l6ZSk7Ci0JCWZyZWUocHJpdi0+cmVtYWluZGVyKTsKLQkJcHJpdi0+cmVtYWluZGVyID0gTlVMTDsKLQkJcHJpdi0+cmVtYWluZGVyX3NpemUgPSAwOworCQlzdHJidWZfYWRkKCZwcml2LT5yZW1haW5kZXIsIG1iW2ldLnB0ciwgbWJbaV0uc2l6ZSk7CisJCWNvbnN1bWVfb25lKHByaXYsIHByaXYtPnJlbWFpbmRlci5idWYsIHByaXYtPnJlbWFpbmRlci5sZW4pOworCQlzdHJidWZfcmVzZXQoJnByaXYtPnJlbWFpbmRlcik7CiAJfQotCWlmIChwcml2LT5yZW1haW5kZXIpIHsKLQkJY29uc3VtZV9vbmUocHJpdiwgcHJpdi0+cmVtYWluZGVyLCBwcml2LT5yZW1haW5kZXJfc2l6ZSk7Ci0JCWZyZWUocHJpdi0+cmVtYWluZGVyKTsKLQkJcHJpdi0+cmVtYWluZGVyID0gTlVMTDsKLQkJcHJpdi0+cmVtYWluZGVyX3NpemUgPSAwOworCWlmIChwcml2LT5yZW1haW5kZXIubGVuKSB7CisJCWNvbnN1bWVfb25lKHByaXYsIHByaXYtPnJlbWFpbmRlci5idWYsIHByaXYtPnJlbWFpbmRlci5sZW4pOworCQlzdHJidWZfcmVzZXQoJnByaXYtPnJlbWFpbmRlcik7CiAJfQogCXJldHVybiAwOwogfQpAQCAtMTQxLDYgKzEzNyw2OSBAQAogCXJldHVybiB4ZGxfZGlmZigmYSwgJmIsIHhwcCwgeGVjZmcsIHhlY2IpOwogfQogCitpbnQgeGRpX2RpZmZfb3V0ZihtbWZpbGVfdCAqbWYxLCBtbWZpbGVfdCAqbWYyLAorCQkgIHhkaWZmX2VtaXRfY29uc3VtZV9mbiBmbiwgdm9pZCAqY29uc3VtZV9jYWxsYmFja19kYXRhLAorCQkgIHhwcGFyYW1fdCBjb25zdCAqeHBwLAorCQkgIHhkZW1pdGNvbmZfdCBjb25zdCAqeGVjZmcsIHhkZW1pdGNiX3QgKnhlY2IpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgeGRpZmZfZW1pdF9zdGF0ZSBzdGF0ZTsKKworCW1lbXNldCgmc3RhdGUsIDAsIHNpemVvZihzdGF0ZSkpOworCXN0YXRlLmNvbnN1bWUgPSBmbjsKKwlzdGF0ZS5jb25zdW1lX2NhbGxiYWNrX2RhdGEgPSBjb25zdW1lX2NhbGxiYWNrX2RhdGE7CisJeGVjYi0+b3V0ZiA9IHhkaWZmX291dGY7CisJeGVjYi0+cHJpdiA9ICZzdGF0ZTsKKwlzdHJidWZfaW5pdCgmc3RhdGUucmVtYWluZGVyLCAwKTsKKwlyZXQgPSB4ZGlfZGlmZihtZjEsIG1mMiwgeHBwLCB4ZWNmZywgeGVjYik7CisJc3RyYnVmX3JlbGVhc2UoJnN0YXRlLnJlbWFpbmRlcik7CisJcmV0dXJuIHJldDsKK30KKworc3RydWN0IHhkaWZmX2VtaXRfaHVua19zdGF0ZSB7CisJeGRpZmZfZW1pdF9odW5rX2NvbnN1bWVfZm4gY29uc3VtZTsKKwl2b2lkICpjb25zdW1lX2NhbGxiYWNrX2RhdGE7Cit9OworCitzdGF0aWMgaW50IHByb2Nlc3NfZGlmZih4ZGZlbnZfdCAqeGUsIHhkY2hhbmdlX3QgKnhzY3IsIHhkZW1pdGNiX3QgKmVjYiwKKwkJCXhkZW1pdGNvbmZfdCBjb25zdCAqeGVjZmcpCit7CisJbG9uZyBzMSwgczIsIHNhbWUsIHBfbmV4dCwgdF9uZXh0OworCXhkY2hhbmdlX3QgKnhjaCwgKnhjaGU7CisJc3RydWN0IHhkaWZmX2VtaXRfaHVua19zdGF0ZSAqc3RhdGUgPSBlY2ItPnByaXY7CisJeGRpZmZfZW1pdF9odW5rX2NvbnN1bWVfZm4gZm4gPSBzdGF0ZS0+Y29uc3VtZTsKKwl2b2lkICpjb25zdW1lX2NhbGxiYWNrX2RhdGEgPSBzdGF0ZS0+Y29uc3VtZV9jYWxsYmFja19kYXRhOworCisJZm9yICh4Y2ggPSB4c2NyOyB4Y2g7IHhjaCA9IHhjaGUtPm5leHQpIHsKKwkJeGNoZSA9IHhkbF9nZXRfaHVuayh4Y2gsIHhlY2ZnKTsKKworCQlzMSA9IFhETF9NQVgoeGNoLT5pMSAtIHhlY2ZnLT5jdHhsZW4sIDApOworCQlzMiA9IFhETF9NQVgoeGNoLT5pMiAtIHhlY2ZnLT5jdHhsZW4sIDApOworCQlzYW1lID0gczIgKyBYRExfTUFYKHhjaC0+aTEgLSBzMSwgMCk7CisJCXBfbmV4dCA9IHhjaGUtPmkxICsgeGNoZS0+Y2hnMTsKKwkJdF9uZXh0ID0geGNoZS0+aTIgKyB4Y2hlLT5jaGcyOworCisJCWZuKGNvbnN1bWVfY2FsbGJhY2tfZGF0YSwgc2FtZSwgcF9uZXh0LCB0X25leHQpOworCX0KKwlyZXR1cm4gMDsKK30KKworaW50IHhkaV9kaWZmX2h1bmtzKG1tZmlsZV90ICptZjEsIG1tZmlsZV90ICptZjIsCisJCSAgIHhkaWZmX2VtaXRfaHVua19jb25zdW1lX2ZuIGZuLCB2b2lkICpjb25zdW1lX2NhbGxiYWNrX2RhdGEsCisJCSAgIHhwcGFyYW1fdCBjb25zdCAqeHBwLCB4ZGVtaXRjb25mX3QgKnhlY2ZnKQoreworCXN0cnVjdCB4ZGlmZl9lbWl0X2h1bmtfc3RhdGUgc3RhdGU7CisJeGRlbWl0Y2JfdCBlY2I7CisKKwltZW1zZXQoJnN0YXRlLCAwLCBzaXplb2Yoc3RhdGUpKTsKKwltZW1zZXQoJmVjYiwgMCwgc2l6ZW9mKGVjYikpOworCXN0YXRlLmNvbnN1bWUgPSBmbjsKKwlzdGF0ZS5jb25zdW1lX2NhbGxiYWNrX2RhdGEgPSBjb25zdW1lX2NhbGxiYWNrX2RhdGE7CisJeGVjZmctPmVtaXRfZnVuYyA9ICh2b2lkICgqKSgpKXByb2Nlc3NfZGlmZjsKKwllY2IucHJpdiA9ICZzdGF0ZTsKKwlyZXR1cm4geGRpX2RpZmYobWYxLCBtZjIsIHhwcCwgeGVjZmcsICZlY2IpOworfQorCiBpbnQgcmVhZF9tbWZpbGUobW1maWxlX3QgKnB0ciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAJc3RydWN0IHN0YXQgc3Q7CkBAIC0xODIsNyArMjQxLDggQEAKIAljaGFyICpsaW5lX2J1ZmZlcjsKIAlzdHJ1Y3QgZmZfcmVncyAqcmVncyA9IHByaXY7CiAJcmVnbWF0Y2hfdCBwbWF0Y2hbMl07Ci0JaW50IHJlc3VsdCA9IDAsIGk7CisJaW50IGk7CisJaW50IHJlc3VsdCA9IC0xOwogCiAJLyogRXhjbHVkZSB0ZXJtaW5hdGluZyBuZXdsaW5lIChhbmQgY3IpIGZyb20gbWF0Y2hpbmcgKi8KIAlpZiAobGVuID4gMCAmJiBsaW5lW2xlbi0xXSA9PSAnXG4nKSB7CkBAIC0xOTYsMjIgKzI1NiwyNCBAQAogCiAJZm9yIChpID0gMDsgaSA8IHJlZ3MtPm5yOyBpKyspIHsKIAkJc3RydWN0IGZmX3JlZyAqcmVnID0gcmVncy0+YXJyYXkgKyBpOwotCQlpZiAocmVnLT5uZWdhdGUgXiAhIXJlZ2V4ZWMoJnJlZy0+cmUsCi0JCQkJCWxpbmVfYnVmZmVyLCAyLCBwbWF0Y2gsIDApKSB7Ci0JCQlmcmVlKGxpbmVfYnVmZmVyKTsKLQkJCXJldHVybiAtMTsKKwkJaWYgKCFyZWdleGVjKCZyZWctPnJlLCBsaW5lX2J1ZmZlciwgMiwgcG1hdGNoLCAwKSkgeworCQkJaWYgKHJlZy0+bmVnYXRlKQorCQkJCWdvdG8gZmFpbDsKKwkJCWJyZWFrOwogCQl9CiAJfQorCWlmIChyZWdzLT5uciA8PSBpKQorCQlnb3RvIGZhaWw7CiAJaSA9IHBtYXRjaFsxXS5ybV9zbyA+PSAwID8gMSA6IDA7CiAJbGluZSArPSBwbWF0Y2hbaV0ucm1fc287CiAJcmVzdWx0ID0gcG1hdGNoW2ldLnJtX2VvIC0gcG1hdGNoW2ldLnJtX3NvOwogCWlmIChyZXN1bHQgPiBidWZmZXJfc2l6ZSkKIAkJcmVzdWx0ID0gYnVmZmVyX3NpemU7CiAJZWxzZQotCQl3aGlsZSAocmVzdWx0ID4gMCAmJiAoaXNzcGFjZShsaW5lW3Jlc3VsdCAtIDFdKSB8fAotCQkJCQlsaW5lW3Jlc3VsdCAtIDFdID09ICdcbicpKQorCQl3aGlsZSAocmVzdWx0ID4gMCAmJiAoaXNzcGFjZShsaW5lW3Jlc3VsdCAtIDFdKSkpCiAJCQlyZXN1bHQtLTsKIAltZW1jcHkoYnVmZmVyLCBsaW5lLCByZXN1bHQpOworIGZhaWw6CiAJZnJlZShsaW5lX2J1ZmZlcik7CiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI0NywzICszMDksMjIgQEAKIAkJdmFsdWUgPSBlcCArIDE7CiAJfQogfQorCitpbnQgZ2l0X3htZXJnZV9zdHlsZSA9IC0xOworCitpbnQgZ2l0X3htZXJnZV9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCit7CisJaWYgKCFzdHJjYXNlY21wKHZhciwgIm1lcmdlLmNvbmZsaWN0c3R5bGUiKSkgeworCQlpZiAoIXZhbHVlKQorCQkJZGllKCInJXMnIGlzIG5vdCBhIGJvb2xlYW4iLCB2YXIpOworCQlpZiAoIXN0cmNtcCh2YWx1ZSwgImRpZmYzIikpCisJCQlnaXRfeG1lcmdlX3N0eWxlID0gWERMX01FUkdFX0RJRkYzOworCQllbHNlIGlmICghc3RyY21wKHZhbHVlLCAibWVyZ2UiKSkKKwkJCWdpdF94bWVyZ2Vfc3R5bGUgPSAwOworCQllbHNlCisJCQlkaWUoInVua25vd24gc3R5bGUgJyVzJyBnaXZlbiBmb3IgJyVzJyIsCisJCQkgICAgdmFsdWUsIHZhcik7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKK30KZGlmZiAtLWdpdCBhL3hkaWZmLWludGVyZmFjZS5oIGIveGRpZmYtaW50ZXJmYWNlLmgKaW5kZXggMzNjYWI5ZC4uNzM1MmI5YSAxMDA2NDQKLS0tIGEveGRpZmYtaW50ZXJmYWNlLmgKKysrIGIveGRpZmYtaW50ZXJmYWNlLmgKQEAgLTMsMTggKzMsMTcgQEAKIAogI2luY2x1ZGUgInhkaWZmL3hkaWZmLmgiCiAKLXN0cnVjdCB4ZGlmZl9lbWl0X3N0YXRlOwotCiB0eXBlZGVmIHZvaWQgKCp4ZGlmZl9lbWl0X2NvbnN1bWVfZm4pKHZvaWQgKiwgY2hhciAqLCB1bnNpZ25lZCBsb25nKTsKLQotc3RydWN0IHhkaWZmX2VtaXRfc3RhdGUgewotCXhkaWZmX2VtaXRfY29uc3VtZV9mbiBjb25zdW1lOwotCWNoYXIgKnJlbWFpbmRlcjsKLQl1bnNpZ25lZCBsb25nIHJlbWFpbmRlcl9zaXplOwotfTsKK3R5cGVkZWYgdm9pZCAoKnhkaWZmX2VtaXRfaHVua19jb25zdW1lX2ZuKSh2b2lkICosIGxvbmcsIGxvbmcsIGxvbmcpOwogCiBpbnQgeGRpX2RpZmYobW1maWxlX3QgKm1mMSwgbW1maWxlX3QgKm1mMiwgeHBwYXJhbV90IGNvbnN0ICp4cHAsIHhkZW1pdGNvbmZfdCBjb25zdCAqeGVjZmcsIHhkZW1pdGNiX3QgKmVjYik7Ci1pbnQgeGRpZmZfb3V0Zih2b2lkICpwcml2XywgbW1idWZmZXJfdCAqbWIsIGludCBuYnVmKTsKK2ludCB4ZGlfZGlmZl9vdXRmKG1tZmlsZV90ICptZjEsIG1tZmlsZV90ICptZjIsCisJCSAgeGRpZmZfZW1pdF9jb25zdW1lX2ZuIGZuLCB2b2lkICpjb25zdW1lX2NhbGxiYWNrX2RhdGEsCisJCSAgeHBwYXJhbV90IGNvbnN0ICp4cHAsCisJCSAgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZywgeGRlbWl0Y2JfdCAqeGVjYik7CitpbnQgeGRpX2RpZmZfaHVua3MobW1maWxlX3QgKm1mMSwgbW1maWxlX3QgKm1mMiwKKwkJICAgeGRpZmZfZW1pdF9odW5rX2NvbnN1bWVfZm4gZm4sIHZvaWQgKmNvbnN1bWVfY2FsbGJhY2tfZGF0YSwKKwkJICAgeHBwYXJhbV90IGNvbnN0ICp4cHAsIHhkZW1pdGNvbmZfdCAqeGVjZmcpOwogaW50IHBhcnNlX2h1bmtfaGVhZGVyKGNoYXIgKmxpbmUsIGludCBsZW4sCiAJCSAgICAgIGludCAqb2IsIGludCAqb24sCiAJCSAgICAgIGludCAqbmIsIGludCAqbm4pOwpAQCAtMjIsNSArMjEsNyBAQAogaW50IGJ1ZmZlcl9pc19iaW5hcnkoY29uc3QgY2hhciAqcHRyLCB1bnNpZ25lZCBsb25nIHNpemUpOwogCiBleHRlcm4gdm9pZCB4ZGlmZl9zZXRfZmluZF9mdW5jKHhkZW1pdGNvbmZfdCAqeGVjZmcsIGNvbnN0IGNoYXIgKmxpbmUsIGludCBjZmxhZ3MpOworZXh0ZXJuIGludCBnaXRfeG1lcmdlX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYik7CitleHRlcm4gaW50IGdpdF94bWVyZ2Vfc3R5bGU7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEveGRpZmYveGRpZmYuaCBiL3hkaWZmL3hkaWZmLmgKaW5kZXggNDEzMDgyZS4uODRmZmY1OCAxMDA2NDQKLS0tIGEveGRpZmYveGRpZmYuaAorKysgYi94ZGlmZi94ZGlmZi5oCkBAIC01MCwxMCArNTAsMTYgQEAKICNkZWZpbmUgWERMX0JET1BfQ1BZIDIKICNkZWZpbmUgWERMX0JET1BfSU5TQiAzCiAKKy8qIG1lcmdlIHNpbXBsaWZpY2F0aW9uIGxldmVscyAqLwogI2RlZmluZSBYRExfTUVSR0VfTUlOSU1BTCAwCiAjZGVmaW5lIFhETF9NRVJHRV9FQUdFUiAxCiAjZGVmaW5lIFhETF9NRVJHRV9aRUFMT1VTIDIKICNkZWZpbmUgWERMX01FUkdFX1pFQUxPVVNfQUxOVU0gMworI2RlZmluZSBYRExfTUVSR0VfTEVWRUxfTUFTSyAweDBmCisKKy8qIG1lcmdlIG91dHB1dCBzdHlsZXMgKi8KKyNkZWZpbmUgWERMX01FUkdFX0RJRkYzIDB4ODAwMAorI2RlZmluZSBYRExfTUVSR0VfU1RZTEVfTUFTSyAweDgwMDAKIAogdHlwZWRlZiBzdHJ1Y3Qgc19tbWZpbGUgewogCWNoYXIgKnB0cjsKQEAgLTgxLDYgKzg3LDcgQEAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWZpbmRfZnVuY190IGZpbmRfZnVuYzsKIAl2b2lkICpmaW5kX2Z1bmNfcHJpdjsKKwl2b2lkICgqZW1pdF9mdW5jKSgpOwogfSB4ZGVtaXRjb25mX3Q7CiAKIHR5cGVkZWYgc3RydWN0IHNfYmRpZmZwYXJhbSB7CmRpZmYgLS1naXQgYS94ZGlmZi94ZGlmZmkuYyBiL3hkaWZmL3hkaWZmaS5jCmluZGV4IDFiYWQ4NDYuLjlkMDMyNGEgMTAwNjQ0Ci0tLSBhL3hkaWZmL3hkaWZmaS5jCisrKyBiL3hkaWZmL3hkaWZmaS5jCkBAIC01MzgsNiArNTM4LDggQEAKIAkgICAgIHhkZW1pdGNvbmZfdCBjb25zdCAqeGVjZmcsIHhkZW1pdGNiX3QgKmVjYikgewogCXhkY2hhbmdlX3QgKnhzY3I7CiAJeGRmZW52X3QgeGU7CisJZW1pdF9mdW5jX3QgZWYgPSB4ZWNmZy0+ZW1pdF9mdW5jID8KKwkJKGVtaXRfZnVuY190KXhlY2ZnLT5lbWl0X2Z1bmMgOiB4ZGxfZW1pdF9kaWZmOwogCiAJaWYgKHhkbF9kb19kaWZmKG1mMSwgbWYyLCB4cHAsICZ4ZSkgPCAwKSB7CiAKQEAgLTU1MSw3ICs1NTMsNyBAQAogCQlyZXR1cm4gLTE7CiAJfQogCWlmICh4c2NyKSB7Ci0JCWlmICh4ZGxfZW1pdF9kaWZmKCZ4ZSwgeHNjciwgZWNiLCB4ZWNmZykgPCAwKSB7CisJCWlmIChlZigmeGUsIHhzY3IsIGVjYiwgeGVjZmcpIDwgMCkgewogCiAJCQl4ZGxfZnJlZV9zY3JpcHQoeHNjcik7CiAJCQl4ZGxfZnJlZV9lbnYoJnhlKTsKZGlmZiAtLWdpdCBhL3hkaWZmL3hlbWl0LmMgYi94ZGlmZi94ZW1pdC5jCmluZGV4IGQzZDljODQuLjQ2MjVjMWIgMTAwNjQ0Ci0tLSBhL3hkaWZmL3hlbWl0LmMKKysrIGIveGRpZmYveGVtaXQuYwpAQCAtMjcsNyArMjcsNiBAQAogCiBzdGF0aWMgbG9uZyB4ZGxfZ2V0X3JlYyh4ZGZpbGVfdCAqeGRmLCBsb25nIHJpLCBjaGFyIGNvbnN0ICoqcmVjKTsKIHN0YXRpYyBpbnQgeGRsX2VtaXRfcmVjb3JkKHhkZmlsZV90ICp4ZGYsIGxvbmcgcmksIGNoYXIgY29uc3QgKnByZSwgeGRlbWl0Y2JfdCAqZWNiKTsKLXN0YXRpYyB4ZGNoYW5nZV90ICp4ZGxfZ2V0X2h1bmsoeGRjaGFuZ2VfdCAqeHNjciwgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZyk7CiAKIAogCkBAIC01OCw3ICs1Nyw3IEBACiAgKiBTdGFydGluZyBhdCB0aGUgcGFzc2VkIGNoYW5nZSBhdG9tLCBmaW5kIHRoZSBsYXRlc3QgY2hhbmdlIGF0b20gdG8gYmUgaW5jbHVkZWQKICAqIGluc2lkZSB0aGUgZGlmZmVyZW50aWFsIGh1bmsgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbi4KICAqLwotc3RhdGljIHhkY2hhbmdlX3QgKnhkbF9nZXRfaHVuayh4ZGNoYW5nZV90ICp4c2NyLCB4ZGVtaXRjb25mX3QgY29uc3QgKnhlY2ZnKSB7Cit4ZGNoYW5nZV90ICp4ZGxfZ2V0X2h1bmsoeGRjaGFuZ2VfdCAqeHNjciwgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZykgewogCXhkY2hhbmdlX3QgKnhjaCwgKnhjaHA7CiAKIAlmb3IgKHhjaHAgPSB4c2NyLCB4Y2ggPSB4c2NyLT5uZXh0OyB4Y2g7IHhjaHAgPSB4Y2gsIHhjaCA9IHhjaC0+bmV4dCkKZGlmZiAtLWdpdCBhL3hkaWZmL3hlbWl0LmggYi94ZGlmZi94ZW1pdC5oCmluZGV4IDQ0MGE3MzkuLmMyZTJlODMgMTAwNjQ0Ci0tLSBhL3hkaWZmL3hlbWl0LmgKKysrIGIveGRpZmYveGVtaXQuaApAQCAtMjQsNyArMjQsMTAgQEAKICNkZWZpbmUgWEVNSVRfSAogCiAKK3R5cGVkZWYgaW50ICgqZW1pdF9mdW5jX3QpKHhkZmVudl90ICp4ZSwgeGRjaGFuZ2VfdCAqeHNjciwgeGRlbWl0Y2JfdCAqZWNiLAorCQkJICAgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZyk7CiAKK3hkY2hhbmdlX3QgKnhkbF9nZXRfaHVuayh4ZGNoYW5nZV90ICp4c2NyLCB4ZGVtaXRjb25mX3QgY29uc3QgKnhlY2ZnKTsKIGludCB4ZGxfZW1pdF9kaWZmKHhkZmVudl90ICp4ZSwgeGRjaGFuZ2VfdCAqeHNjciwgeGRlbWl0Y2JfdCAqZWNiLAogCQkgIHhkZW1pdGNvbmZfdCBjb25zdCAqeGVjZmcpOwogCmRpZmYgLS1naXQgYS94ZGlmZi94bWVyZ2UuYyBiL3hkaWZmL3htZXJnZS5jCmluZGV4IDgyYjM1NzMuLmQ5NzM3ZjAgMTAwNjQ0Ci0tLSBhL3hkaWZmL3htZXJnZS5jCisrKyBiL3hkaWZmL3htZXJnZS5jCkBAIC0zMCwxNyArMzAsMzIgQEAKIAkgKiAyID0gbm8gY29uZmxpY3QsIHRha2Ugc2Vjb25kLgogCSAqLwogCWludCBtb2RlOworCS8qCisJICogVGhlc2UgcG9pbnQgYXQgdGhlIHJlc3BlY3RpdmUgcG9zdGltYWdlcy4gIEUuZy4gPGkxLGNoZzE+IGlzCisJICogaG93IHNpZGUgIzEgd2FudHMgdG8gY2hhbmdlIHRoZSBjb21tb24gYW5jZXN0b3I7IGlmIHRoZXJlIGlzIG5vCisJICogb3ZlcmxhcCwgbGluZXMgYmVmb3JlIGkxIGluIHRoZSBwb3N0aW1hZ2Ugb2Ygc2lkZSAjMSBhcHBlYXIKKwkgKiBpbiB0aGUgbWVyZ2UgcmVzdWx0IGFzIGEgcmVnaW9uIHRvdWNoZWQgYnkgbmVpdGhlciBzaWRlLgorCSAqLwogCWxvbmcgaTEsIGkyOwogCWxvbmcgY2hnMSwgY2hnMjsKKwkvKgorCSAqIFRoZXNlIHBvaW50IGF0IHRoZSBwcmVpbWFnZTsgb2YgY291cnNlIHRoZXJlIGlzIGp1c3Qgb25lCisJICogcHJlaW1hZ2UsIHRoYXQgaXMgZnJvbSB0aGUgc2hhcmVkIGNvbW1vbiBhbmNlc3Rvci4KKwkgKi8KKwlsb25nIGkwOworCWxvbmcgY2hnMDsKIH0geGRtZXJnZV90OwogCiBzdGF0aWMgaW50IHhkbF9hcHBlbmRfbWVyZ2UoeGRtZXJnZV90ICoqbWVyZ2UsIGludCBtb2RlLAotCQlsb25nIGkxLCBsb25nIGNoZzEsIGxvbmcgaTIsIGxvbmcgY2hnMikKKwkJCSAgICBsb25nIGkwLCBsb25nIGNoZzAsCisJCQkgICAgbG9uZyBpMSwgbG9uZyBjaGcxLAorCQkJICAgIGxvbmcgaTIsIGxvbmcgY2hnMikKIHsKIAl4ZG1lcmdlX3QgKm0gPSAqbWVyZ2U7CiAJaWYgKG0gJiYgKGkxIDw9IG0tPmkxICsgbS0+Y2hnMSB8fCBpMiA8PSBtLT5pMiArIG0tPmNoZzIpKSB7CiAJCWlmIChtb2RlICE9IG0tPm1vZGUpCiAJCQltLT5tb2RlID0gMDsKKwkJbS0+Y2hnMCA9IGkwICsgY2hnMCAtIG0tPmkwOwogCQltLT5jaGcxID0gaTEgKyBjaGcxIC0gbS0+aTE7CiAJCW0tPmNoZzIgPSBpMiArIGNoZzIgLSBtLT5pMjsKIAl9IGVsc2UgewpAQCAtNDksNiArNjQsOCBAQAogCQkJcmV0dXJuIC0xOwogCQltLT5uZXh0ID0gTlVMTDsKIAkJbS0+bW9kZSA9IG1vZGU7CisJCW0tPmkwID0gaTA7CisJCW0tPmNoZzAgPSBjaGcwOwogCQltLT5pMSA9IGkxOwogCQltLT5jaGcxID0gY2hnMTsKIAkJbS0+aTIgPSBpMjsKQEAgLTkxLDExICsxMDgsMTMgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB4ZGxfcmVjc19jb3B5KHhkZmVudl90ICp4ZSwgaW50IGksIGludCBjb3VudCwgaW50IGFkZF9ubCwgY2hhciAqZGVzdCkKK3N0YXRpYyBpbnQgeGRsX3JlY3NfY29weV8wKGludCB1c2Vfb3JpZywgeGRmZW52X3QgKnhlLCBpbnQgaSwgaW50IGNvdW50LCBpbnQgYWRkX25sLCBjaGFyICpkZXN0KQogewotCXhyZWNvcmRfdCAqKnJlY3MgPSB4ZS0+eGRmMi5yZWNzICsgaTsKKwl4cmVjb3JkX3QgKipyZWNzOwogCWludCBzaXplID0gMDsKIAorCXJlY3MgPSAodXNlX29yaWcgPyB4ZS0+eGRmMS5yZWNzIDogeGUtPnhkZjIucmVjcykgKyBpOworCiAJaWYgKGNvdW50IDwgMSkKIAkJcmV0dXJuIDA7CiAKQEAgLTExMyw2NSArMTMyLDEwOSBAQAogCXJldHVybiBzaXplOwogfQogCi1zdGF0aWMgaW50IHhkbF9maWxsX21lcmdlX2J1ZmZlcih4ZGZlbnZfdCAqeGUxLCBjb25zdCBjaGFyICpuYW1lMSwKLQkJeGRmZW52X3QgKnhlMiwgY29uc3QgY2hhciAqbmFtZTIsIHhkbWVyZ2VfdCAqbSwgY2hhciAqZGVzdCkKK3N0YXRpYyBpbnQgeGRsX3JlY3NfY29weSh4ZGZlbnZfdCAqeGUsIGludCBpLCBpbnQgY291bnQsIGludCBhZGRfbmwsIGNoYXIgKmRlc3QpCit7CisJcmV0dXJuIHhkbF9yZWNzX2NvcHlfMCgwLCB4ZSwgaSwgY291bnQsIGFkZF9ubCwgZGVzdCk7Cit9CisKK3N0YXRpYyBpbnQgeGRsX29yaWdfY29weSh4ZGZlbnZfdCAqeGUsIGludCBpLCBpbnQgY291bnQsIGludCBhZGRfbmwsIGNoYXIgKmRlc3QpCit7CisJcmV0dXJuIHhkbF9yZWNzX2NvcHlfMCgxLCB4ZSwgaSwgY291bnQsIGFkZF9ubCwgZGVzdCk7Cit9CisKK3N0YXRpYyBpbnQgZmlsbF9jb25mbGljdF9odW5rKHhkZmVudl90ICp4ZTEsIGNvbnN0IGNoYXIgKm5hbWUxLAorCQkJICAgICAgeGRmZW52X3QgKnhlMiwgY29uc3QgY2hhciAqbmFtZTIsCisJCQkgICAgICBpbnQgc2l6ZSwgaW50IGksIGludCBzdHlsZSwKKwkJCSAgICAgIHhkbWVyZ2VfdCAqbSwgY2hhciAqZGVzdCkKIHsKIAljb25zdCBpbnQgbWFya2VyX3NpemUgPSA3OwogCWludCBtYXJrZXIxX3NpemUgPSAobmFtZTEgPyBzdHJsZW4obmFtZTEpICsgMSA6IDApOwogCWludCBtYXJrZXIyX3NpemUgPSAobmFtZTIgPyBzdHJsZW4obmFtZTIpICsgMSA6IDApOwotCWludCBjb25mbGljdF9tYXJrZXJfc2l6ZSA9IDMgKiAobWFya2VyX3NpemUgKyAxKQotCQkrIG1hcmtlcjFfc2l6ZSArIG1hcmtlcjJfc2l6ZTsKLQlpbnQgc2l6ZSwgaTEsIGo7CisJaW50IGo7CiAKLQlmb3IgKHNpemUgPSBpMSA9IDA7IG07IG0gPSBtLT5uZXh0KSB7Ci0JCWlmIChtLT5tb2RlID09IDApIHsKLQkJCXNpemUgKz0geGRsX3JlY3NfY29weSh4ZTEsIGkxLCBtLT5pMSAtIGkxLCAwLAotCQkJCQlkZXN0ID8gZGVzdCArIHNpemUgOiBOVUxMKTsKLQkJCWlmIChkZXN0KSB7Ci0JCQkJZm9yIChqID0gMDsgaiA8IG1hcmtlcl9zaXplOyBqKyspCi0JCQkJCWRlc3Rbc2l6ZSsrXSA9ICc8JzsKLQkJCQlpZiAobWFya2VyMV9zaXplKSB7Ci0JCQkJCWRlc3Rbc2l6ZV0gPSAnICc7Ci0JCQkJCW1lbWNweShkZXN0ICsgc2l6ZSArIDEsIG5hbWUxLAotCQkJCQkJCW1hcmtlcjFfc2l6ZSAtIDEpOwotCQkJCQlzaXplICs9IG1hcmtlcjFfc2l6ZTsKLQkJCQl9Ci0JCQkJZGVzdFtzaXplKytdID0gJ1xuJzsKLQkJCX0gZWxzZQotCQkJCXNpemUgKz0gY29uZmxpY3RfbWFya2VyX3NpemU7Ci0JCQlzaXplICs9IHhkbF9yZWNzX2NvcHkoeGUxLCBtLT5pMSwgbS0+Y2hnMSwgMSwKLQkJCQkJZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7Ci0JCQlpZiAoZGVzdCkgewotCQkJCWZvciAoaiA9IDA7IGogPCBtYXJrZXJfc2l6ZTsgaisrKQotCQkJCQlkZXN0W3NpemUrK10gPSAnPSc7Ci0JCQkJZGVzdFtzaXplKytdID0gJ1xuJzsKLQkJCX0KLQkJCXNpemUgKz0geGRsX3JlY3NfY29weSh4ZTIsIG0tPmkyLCBtLT5jaGcyLCAxLAotCQkJCQlkZXN0ID8gZGVzdCArIHNpemUgOiBOVUxMKTsKLQkJCWlmIChkZXN0KSB7Ci0JCQkJZm9yIChqID0gMDsgaiA8IG1hcmtlcl9zaXplOyBqKyspCi0JCQkJCWRlc3Rbc2l6ZSsrXSA9ICc+JzsKLQkJCQlpZiAobWFya2VyMl9zaXplKSB7Ci0JCQkJCWRlc3Rbc2l6ZV0gPSAnICc7Ci0JCQkJCW1lbWNweShkZXN0ICsgc2l6ZSArIDEsIG5hbWUyLAotCQkJCQkJCW1hcmtlcjJfc2l6ZSAtIDEpOwotCQkJCQlzaXplICs9IG1hcmtlcjJfc2l6ZTsKLQkJCQl9Ci0JCQkJZGVzdFtzaXplKytdID0gJ1xuJzsKLQkJCX0KLQkJfSBlbHNlIGlmIChtLT5tb2RlID09IDEpCi0JCQlzaXplICs9IHhkbF9yZWNzX2NvcHkoeGUxLCBpMSwgbS0+aTEgKyBtLT5jaGcxIC0gaTEsIDAsCi0JCQkJCWRlc3QgPyBkZXN0ICsgc2l6ZSA6IE5VTEwpOworCS8qIEJlZm9yZSBjb25mbGljdGluZyBwYXJ0ICovCisJc2l6ZSArPSB4ZGxfcmVjc19jb3B5KHhlMSwgaSwgbS0+aTEgLSBpLCAwLAorCQkJICAgICAgZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CisKKwlpZiAoIWRlc3QpIHsKKwkJc2l6ZSArPSBtYXJrZXJfc2l6ZSArIDEgKyBtYXJrZXIxX3NpemU7CisJfSBlbHNlIHsKKwkJZm9yIChqID0gMDsgaiA8IG1hcmtlcl9zaXplOyBqKyspCisJCQlkZXN0W3NpemUrK10gPSAnPCc7CisJCWlmIChtYXJrZXIxX3NpemUpIHsKKwkJCWRlc3Rbc2l6ZV0gPSAnICc7CisJCQltZW1jcHkoZGVzdCArIHNpemUgKyAxLCBuYW1lMSwgbWFya2VyMV9zaXplIC0gMSk7CisJCQlzaXplICs9IG1hcmtlcjFfc2l6ZTsKKwkJfQorCQlkZXN0W3NpemUrK10gPSAnXG4nOworCX0KKworCS8qIFBvc3RpbWFnZSBmcm9tIHNpZGUgIzEgKi8KKwlzaXplICs9IHhkbF9yZWNzX2NvcHkoeGUxLCBtLT5pMSwgbS0+Y2hnMSwgMSwKKwkJCSAgICAgIGRlc3QgPyBkZXN0ICsgc2l6ZSA6IE5VTEwpOworCisJaWYgKHN0eWxlID09IFhETF9NRVJHRV9ESUZGMykgeworCQkvKiBTaGFyZWQgcHJlaW1hZ2UgKi8KKwkJaWYgKCFkZXN0KSB7CisJCQlzaXplICs9IG1hcmtlcl9zaXplICsgMTsKKwkJfSBlbHNlIHsKKwkJCWZvciAoaiA9IDA7IGogPCBtYXJrZXJfc2l6ZTsgaisrKQorCQkJCWRlc3Rbc2l6ZSsrXSA9ICd8JzsKKwkJCWRlc3Rbc2l6ZSsrXSA9ICdcbic7CisJCX0KKwkJc2l6ZSArPSB4ZGxfb3JpZ19jb3B5KHhlMSwgbS0+aTAsIG0tPmNoZzAsIDEsCisJCQkJICAgICAgZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CisJfQorCisJaWYgKCFkZXN0KSB7CisJCXNpemUgKz0gbWFya2VyX3NpemUgKyAxOworCX0gZWxzZSB7CisJCWZvciAoaiA9IDA7IGogPCBtYXJrZXJfc2l6ZTsgaisrKQorCQkJZGVzdFtzaXplKytdID0gJz0nOworCQlkZXN0W3NpemUrK10gPSAnXG4nOworCX0KKworCS8qIFBvc3RpbWFnZSBmcm9tIHNpZGUgIzIgKi8KKwlzaXplICs9IHhkbF9yZWNzX2NvcHkoeGUyLCBtLT5pMiwgbS0+Y2hnMiwgMSwKKwkJCSAgICAgIGRlc3QgPyBkZXN0ICsgc2l6ZSA6IE5VTEwpOworCWlmICghZGVzdCkgeworCQlzaXplICs9IG1hcmtlcl9zaXplICsgMSArIG1hcmtlcjJfc2l6ZTsKKwl9IGVsc2UgeworCQlmb3IgKGogPSAwOyBqIDwgbWFya2VyX3NpemU7IGorKykKKwkJCWRlc3Rbc2l6ZSsrXSA9ICc+JzsKKwkJaWYgKG1hcmtlcjJfc2l6ZSkgeworCQkJZGVzdFtzaXplXSA9ICcgJzsKKwkJCW1lbWNweShkZXN0ICsgc2l6ZSArIDEsIG5hbWUyLCBtYXJrZXIyX3NpemUgLSAxKTsKKwkJCXNpemUgKz0gbWFya2VyMl9zaXplOworCQl9CisJCWRlc3Rbc2l6ZSsrXSA9ICdcbic7CisJfQorCXJldHVybiBzaXplOworfQorCitzdGF0aWMgaW50IHhkbF9maWxsX21lcmdlX2J1ZmZlcih4ZGZlbnZfdCAqeGUxLCBjb25zdCBjaGFyICpuYW1lMSwKKwkJCQkgeGRmZW52X3QgKnhlMiwgY29uc3QgY2hhciAqbmFtZTIsCisJCQkJIHhkbWVyZ2VfdCAqbSwgY2hhciAqZGVzdCwgaW50IHN0eWxlKQoreworCWludCBzaXplLCBpOworCisJZm9yIChzaXplID0gaSA9IDA7IG07IG0gPSBtLT5uZXh0KSB7CisJCWlmIChtLT5tb2RlID09IDApCisJCQlzaXplID0gZmlsbF9jb25mbGljdF9odW5rKHhlMSwgbmFtZTEsIHhlMiwgbmFtZTIsCisJCQkJCQkgIHNpemUsIGksIHN0eWxlLCBtLCBkZXN0KTsKKwkJZWxzZSBpZiAobS0+bW9kZSA9PSAxKQorCQkJc2l6ZSArPSB4ZGxfcmVjc19jb3B5KHhlMSwgaSwgbS0+aTEgKyBtLT5jaGcxIC0gaSwgMCwKKwkJCQkJICAgICAgZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CiAJCWVsc2UgaWYgKG0tPm1vZGUgPT0gMikKLQkJCXNpemUgKz0geGRsX3JlY3NfY29weSh4ZTIsIG0tPmkyIC0gbS0+aTEgKyBpMSwKLQkJCQkJbS0+aTEgKyBtLT5jaGcyIC0gaTEsIDAsCi0JCQkJCWRlc3QgPyBkZXN0ICsgc2l6ZSA6IE5VTEwpOworCQkJc2l6ZSArPSB4ZGxfcmVjc19jb3B5KHhlMiwgbS0+aTIgLSBtLT5pMSArIGksCisJCQkJCSAgICAgIG0tPmkxICsgbS0+Y2hnMiAtIGksIDAsCisJCQkJCSAgICAgIGRlc3QgPyBkZXN0ICsgc2l6ZSA6IE5VTEwpOwogCQllbHNlCiAJCQljb250aW51ZTsKLQkJaTEgPSBtLT5pMSArIG0tPmNoZzE7CisJCWkgPSBtLT5pMSArIG0tPmNoZzE7CiAJfQotCXNpemUgKz0geGRsX3JlY3NfY29weSh4ZTEsIGkxLCB4ZTEtPnhkZjIubnJlYyAtIGkxLCAwLAotCQkJZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CisJc2l6ZSArPSB4ZGxfcmVjc19jb3B5KHhlMSwgaSwgeGUxLT54ZGYyLm5yZWMgLSBpLCAwLAorCQkJICAgICAgZGVzdCA/IGRlc3QgKyBzaXplIDogTlVMTCk7CiAJcmV0dXJuIHNpemU7CiB9CiAKQEAgLTMyMyw5ICszODYsMjAgQEAKICAqLwogc3RhdGljIGludCB4ZGxfZG9fbWVyZ2UoeGRmZW52X3QgKnhlMSwgeGRjaGFuZ2VfdCAqeHNjcjEsIGNvbnN0IGNoYXIgKm5hbWUxLAogCQl4ZGZlbnZfdCAqeGUyLCB4ZGNoYW5nZV90ICp4c2NyMiwgY29uc3QgY2hhciAqbmFtZTIsCi0JCWludCBsZXZlbCwgeHBwYXJhbV90IGNvbnN0ICp4cHAsIG1tYnVmZmVyX3QgKnJlc3VsdCkgeworCQlpbnQgZmxhZ3MsIHhwcGFyYW1fdCBjb25zdCAqeHBwLCBtbWJ1ZmZlcl90ICpyZXN1bHQpIHsKIAl4ZG1lcmdlX3QgKmNoYW5nZXMsICpjOwotCWludCBpMSwgaTIsIGNoZzEsIGNoZzI7CisJaW50IGkwLCBpMSwgaTIsIGNoZzAsIGNoZzEsIGNoZzI7CisJaW50IGxldmVsID0gZmxhZ3MgJiBYRExfTUVSR0VfTEVWRUxfTUFTSzsKKwlpbnQgc3R5bGUgPSBmbGFncyAmIFhETF9NRVJHRV9TVFlMRV9NQVNLOworCisJaWYgKHN0eWxlID09IFhETF9NRVJHRV9ESUZGMykgeworCQkvKgorCQkgKiAiZGlmZjMgLW0iIG91dHB1dCBkb2VzIG5vdCBtYWtlIHNlbnNlIGZvciBhbnl0aGluZworCQkgKiBtb3JlIGFnZ3Jlc3NpdmUgdGhhbiBYRExfTUVSR0VfRUFHRVIuCisJCSAqLworCQlpZiAoWERMX01FUkdFX0VBR0VSIDwgbGV2ZWwpCisJCQlsZXZlbCA9IFhETF9NRVJHRV9FQUdFUjsKKwl9CiAKIAljID0gY2hhbmdlcyA9IE5VTEw7CiAKQEAgLTMzMywxMSArNDA3LDE0IEBACiAJCWlmICghY2hhbmdlcykKIAkJCWNoYW5nZXMgPSBjOwogCQlpZiAoeHNjcjEtPmkxICsgeHNjcjEtPmNoZzEgPCB4c2NyMi0+aTEpIHsKKwkJCWkwID0geHNjcjEtPmkxOwogCQkJaTEgPSB4c2NyMS0+aTI7CiAJCQlpMiA9IHhzY3IyLT5pMiAtIHhzY3IyLT5pMSArIHhzY3IxLT5pMTsKKwkJCWNoZzAgPSB4c2NyMS0+Y2hnMTsKIAkJCWNoZzEgPSB4c2NyMS0+Y2hnMjsKIAkJCWNoZzIgPSB4c2NyMS0+Y2hnMTsKLQkJCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAxLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CisJCQlpZiAoeGRsX2FwcGVuZF9tZXJnZSgmYywgMSwKKwkJCQkJICAgICBpMCwgY2hnMCwgaTEsIGNoZzEsIGkyLCBjaGcyKSkgewogCQkJCXhkbF9jbGVhbnVwX21lcmdlKGNoYW5nZXMpOwogCQkJCXJldHVybiAtMTsKIAkJCX0KQEAgLTM0NSwxOCArNDIyLDIxIEBACiAJCQljb250aW51ZTsKIAkJfQogCQlpZiAoeHNjcjItPmkxICsgeHNjcjItPmNoZzEgPCB4c2NyMS0+aTEpIHsKKwkJCWkwID0geHNjcjItPmkxOwogCQkJaTEgPSB4c2NyMS0+aTIgLSB4c2NyMS0+aTEgKyB4c2NyMi0+aTE7CiAJCQlpMiA9IHhzY3IyLT5pMjsKKwkJCWNoZzAgPSB4c2NyMi0+Y2hnMTsKIAkJCWNoZzEgPSB4c2NyMi0+Y2hnMTsKIAkJCWNoZzIgPSB4c2NyMi0+Y2hnMjsKLQkJCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAyLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CisJCQlpZiAoeGRsX2FwcGVuZF9tZXJnZSgmYywgMiwKKwkJCQkJICAgICBpMCwgY2hnMCwgaTEsIGNoZzEsIGkyLCBjaGcyKSkgewogCQkJCXhkbF9jbGVhbnVwX21lcmdlKGNoYW5nZXMpOwogCQkJCXJldHVybiAtMTsKIAkJCX0KIAkJCXhzY3IyID0geHNjcjItPm5leHQ7CiAJCQljb250aW51ZTsKIAkJfQotCQlpZiAobGV2ZWwgPCAxIHx8IHhzY3IxLT5pMSAhPSB4c2NyMi0+aTEgfHwKKwkJaWYgKGxldmVsID09IFhETF9NRVJHRV9NSU5JTUFMIHx8IHhzY3IxLT5pMSAhPSB4c2NyMi0+aTEgfHwKIAkJCQl4c2NyMS0+Y2hnMSAhPSB4c2NyMi0+Y2hnMSB8fAogCQkJCXhzY3IxLT5jaGcyICE9IHhzY3IyLT5jaGcyIHx8CiAJCQkJeGRsX21lcmdlX2NtcF9saW5lcyh4ZTEsIHhzY3IxLT5pMiwKQEAgLTM2NiwxOSArNDQ2LDI1IEBACiAJCQlpbnQgb2ZmID0geHNjcjEtPmkxIC0geHNjcjItPmkxOwogCQkJaW50IGZmbyA9IG9mZiArIHhzY3IxLT5jaGcxIC0geHNjcjItPmNoZzE7CiAKKwkJCWkwID0geHNjcjEtPmkxOwogCQkJaTEgPSB4c2NyMS0+aTI7CiAJCQlpMiA9IHhzY3IyLT5pMjsKLQkJCWlmIChvZmYgPiAwKQorCQkJaWYgKG9mZiA+IDApIHsKKwkJCQlpMCAtPSBvZmY7CiAJCQkJaTEgLT0gb2ZmOworCQkJfQogCQkJZWxzZQogCQkJCWkyICs9IG9mZjsKKwkJCWNoZzAgPSB4c2NyMS0+aTEgKyB4c2NyMS0+Y2hnMSAtIGkwOwogCQkJY2hnMSA9IHhzY3IxLT5pMiArIHhzY3IxLT5jaGcyIC0gaTE7CiAJCQljaGcyID0geHNjcjItPmkyICsgeHNjcjItPmNoZzIgLSBpMjsKLQkJCWlmIChmZm8gPiAwKQotCQkJCWNoZzIgKz0gZmZvOwotCQkJZWxzZQorCQkJaWYgKGZmbyA8IDApIHsKKwkJCQljaGcwIC09IGZmbzsKIAkJCQljaGcxIC09IGZmbzsKLQkJCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAwLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CisJCQl9IGVsc2UKKwkJCQljaGcyICs9IGZmbzsKKwkJCWlmICh4ZGxfYXBwZW5kX21lcmdlKCZjLCAwLAorCQkJCQkgICAgIGkwLCBjaGcwLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CiAJCQkJeGRsX2NsZWFudXBfbWVyZ2UoY2hhbmdlcyk7CiAJCQkJcmV0dXJuIC0xOwogCQkJfQpAQCAtMzk1LDExICs0ODEsMTQgQEAKIAl3aGlsZSAoeHNjcjEpIHsKIAkJaWYgKCFjaGFuZ2VzKQogCQkJY2hhbmdlcyA9IGM7CisJCWkwID0geHNjcjEtPmkxOwogCQlpMSA9IHhzY3IxLT5pMjsKIAkJaTIgPSB4c2NyMS0+aTEgKyB4ZTItPnhkZjIubnJlYyAtIHhlMi0+eGRmMS5ucmVjOworCQljaGcwID0geHNjcjEtPmNoZzE7CiAJCWNoZzEgPSB4c2NyMS0+Y2hnMjsKIAkJY2hnMiA9IHhzY3IxLT5jaGcxOwotCQlpZiAoeGRsX2FwcGVuZF9tZXJnZSgmYywgMSwgaTEsIGNoZzEsIGkyLCBjaGcyKSkgeworCQlpZiAoeGRsX2FwcGVuZF9tZXJnZSgmYywgMSwKKwkJCQkgICAgIGkwLCBjaGcwLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CiAJCQl4ZGxfY2xlYW51cF9tZXJnZShjaGFuZ2VzKTsKIAkJCXJldHVybiAtMTsKIAkJfQpAQCAtNDA4LDExICs0OTcsMTQgQEAKIAl3aGlsZSAoeHNjcjIpIHsKIAkJaWYgKCFjaGFuZ2VzKQogCQkJY2hhbmdlcyA9IGM7CisJCWkwID0geHNjcjItPmkxOwogCQlpMSA9IHhzY3IyLT5pMSArIHhlMS0+eGRmMi5ucmVjIC0geGUxLT54ZGYxLm5yZWM7CiAJCWkyID0geHNjcjItPmkyOworCQljaGcwID0geHNjcjItPmNoZzE7CiAJCWNoZzEgPSB4c2NyMi0+Y2hnMTsKIAkJY2hnMiA9IHhzY3IyLT5jaGcyOwotCQlpZiAoeGRsX2FwcGVuZF9tZXJnZSgmYywgMiwgaTEsIGNoZzEsIGkyLCBjaGcyKSkgeworCQlpZiAoeGRsX2FwcGVuZF9tZXJnZSgmYywgMiwKKwkJCQkgICAgIGkwLCBjaGcwLCBpMSwgY2hnMSwgaTIsIGNoZzIpKSB7CiAJCQl4ZGxfY2xlYW51cF9tZXJnZShjaGFuZ2VzKTsKIAkJCXJldHVybiAtMTsKIAkJfQpAQCAtNDIxLDE2ICs1MTMsMTcgQEAKIAlpZiAoIWNoYW5nZXMpCiAJCWNoYW5nZXMgPSBjOwogCS8qIHJlZmluZSBjb25mbGljdHMgKi8KLQlpZiAobGV2ZWwgPiAxICYmCisJaWYgKFhETF9NRVJHRV9aRUFMT1VTIDw9IGxldmVsICYmCiAJICAgICh4ZGxfcmVmaW5lX2NvbmZsaWN0cyh4ZTEsIHhlMiwgY2hhbmdlcywgeHBwKSA8IDAgfHwKLQkgICAgIHhkbF9zaW1wbGlmeV9ub25fY29uZmxpY3RzKHhlMSwgY2hhbmdlcywgbGV2ZWwgPiAyKSA8IDApKSB7CisJICAgICB4ZGxfc2ltcGxpZnlfbm9uX2NvbmZsaWN0cyh4ZTEsIGNoYW5nZXMsCisJCQkJCVhETF9NRVJHRV9aRUFMT1VTIDwgbGV2ZWwpIDwgMCkpIHsKIAkJeGRsX2NsZWFudXBfbWVyZ2UoY2hhbmdlcyk7CiAJCXJldHVybiAtMTsKIAl9CiAJLyogb3V0cHV0ICovCiAJaWYgKHJlc3VsdCkgewogCQlpbnQgc2l6ZSA9IHhkbF9maWxsX21lcmdlX2J1ZmZlcih4ZTEsIG5hbWUxLCB4ZTIsIG5hbWUyLAotCQkJY2hhbmdlcywgTlVMTCk7CisJCQljaGFuZ2VzLCBOVUxMLCBzdHlsZSk7CiAJCXJlc3VsdC0+cHRyID0geGRsX21hbGxvYyhzaXplKTsKIAkJaWYgKCFyZXN1bHQtPnB0cikgewogCQkJeGRsX2NsZWFudXBfbWVyZ2UoY2hhbmdlcyk7CkBAIC00MzgsMTQgKzUzMSwxNCBAQAogCQl9CiAJCXJlc3VsdC0+c2l6ZSA9IHNpemU7CiAJCXhkbF9maWxsX21lcmdlX2J1ZmZlcih4ZTEsIG5hbWUxLCB4ZTIsIG5hbWUyLCBjaGFuZ2VzLAotCQkJCXJlc3VsdC0+cHRyKTsKKwkJCQkgICAgICByZXN1bHQtPnB0ciwgc3R5bGUpOwogCX0KIAlyZXR1cm4geGRsX2NsZWFudXBfbWVyZ2UoY2hhbmdlcyk7CiB9CiAKIGludCB4ZGxfbWVyZ2UobW1maWxlX3QgKm9yaWcsIG1tZmlsZV90ICptZjEsIGNvbnN0IGNoYXIgKm5hbWUxLAogCQltbWZpbGVfdCAqbWYyLCBjb25zdCBjaGFyICpuYW1lMiwKLQkJeHBwYXJhbV90IGNvbnN0ICp4cHAsIGludCBsZXZlbCwgbW1idWZmZXJfdCAqcmVzdWx0KSB7CisJCXhwcGFyYW1fdCBjb25zdCAqeHBwLCBpbnQgZmxhZ3MsIG1tYnVmZmVyX3QgKnJlc3VsdCkgewogCXhkY2hhbmdlX3QgKnhzY3IxLCAqeHNjcjI7CiAJeGRmZW52X3QgeGUxLCB4ZTI7CiAJaW50IHN0YXR1czsKQEAgLTQ4Miw3ICs1NzUsNyBAQAogCQl9IGVsc2UgewogCQkJc3RhdHVzID0geGRsX2RvX21lcmdlKCZ4ZTEsIHhzY3IxLCBuYW1lMSwKIAkJCQkJICAgICAgJnhlMiwgeHNjcjIsIG5hbWUyLAotCQkJCQkgICAgICBsZXZlbCwgeHBwLCByZXN1bHQpOworCQkJCQkgICAgICBmbGFncywgeHBwLCByZXN1bHQpOwogCQl9CiAJCXhkbF9mcmVlX3NjcmlwdCh4c2NyMSk7CiAJCXhkbF9mcmVlX3NjcmlwdCh4c2NyMik7CmRpZmYgLS1naXQgYS94ZGlmZi94dXRpbHMuYyBiL3hkaWZmL3h1dGlscy5jCmluZGV4IGQ3OTc0ZDEuLjA0YWQ0NjggMTAwNjQ0Ci0tLSBhL3hkaWZmL3h1dGlscy5jCisrKyBiL3hkaWZmL3h1dGlscy5jCkBAIC0yNDUsMTIgKzI0NSwxNCBAQAogCQkJd2hpbGUgKHB0ciArIDEgPCB0b3AgJiYgaXNzcGFjZShwdHJbMV0pCiAJCQkJCSYmIHB0clsxXSAhPSAnXG4nKQogCQkJCXB0cisrOwotCQkJaWYgKGZsYWdzICYgWERGX0lHTk9SRV9XSElURVNQQUNFX0NIQU5HRQorCQkJaWYgKGZsYWdzICYgWERGX0lHTk9SRV9XSElURVNQQUNFKQorCQkJCTsgLyogYWxyZWFkeSBoYW5kbGVkICovCisJCQllbHNlIGlmIChmbGFncyAmIFhERl9JR05PUkVfV0hJVEVTUEFDRV9DSEFOR0UKIAkJCQkJJiYgcHRyWzFdICE9ICdcbicpIHsKIAkJCQloYSArPSAoaGEgPDwgNSk7CiAJCQkJaGEgXj0gKHVuc2lnbmVkIGxvbmcpICcgJzsKIAkJCX0KLQkJCWlmIChmbGFncyAmIFhERl9JR05PUkVfV0hJVEVTUEFDRV9BVF9FT0wKKwkJCWVsc2UgaWYgKGZsYWdzICYgWERGX0lHTk9SRV9XSElURVNQQUNFX0FUX0VPTAogCQkJCQkmJiBwdHJbMV0gIT0gJ1xuJykgewogCQkJCXdoaWxlIChwdHIyICE9IHB0ciArIDEpIHsKIAkJCQkJaGEgKz0gKGhhIDw8IDUpOwo=